001 /** 002 * 003 * Copyright 2004 Protique Ltd 004 * 005 * Licensed under the Apache License, Version 2.0 (the "License"); 006 * you may not use this file except in compliance with the License. 007 * You may obtain a copy of the License at 008 * 009 * http://www.apache.org/licenses/LICENSE-2.0 010 * 011 * Unless required by applicable law or agreed to in writing, software 012 * distributed under the License is distributed on an "AS IS" BASIS, 013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 014 * See the License for the specific language governing permissions and 015 * limitations under the License. 016 * 017 **/ 018 package org.activemq.transport; 019 import java.util.Iterator; 020 import EDU.oswego.cs.dl.util.concurrent.*; 021 import org.apache.commons.logging.Log; 022 import org.apache.commons.logging.LogFactory; 023 024 /** 025 * A useful base class for {@link DiscoveryAgent} implementations 026 * 027 * @version $Revision: 1.1.1.1 $ 028 */ 029 public abstract class DiscoveryAgentSupport implements DiscoveryAgent { 030 private static final transient Log log = LogFactory.getLog(DiscoveryAgentSupport.class); 031 032 protected CopyOnWriteArrayList listeners = new CopyOnWriteArrayList(); 033 034 /** 035 * Add a discovery listener 036 * @param listener 037 */ 038 public void addDiscoveryListener(DiscoveryListener listener){ 039 listeners.add(listener); 040 } 041 042 /** 043 * remove a discovery listener 044 * @param listener 045 */ 046 public void removeDiscoveryListener(DiscoveryListener listener){ 047 listeners.remove(listener); 048 } 049 050 protected void fireAddService(DiscoveryEvent event){ 051 for(Iterator i = listeners.iterator(); i.hasNext();){ 052 DiscoveryListener l = (DiscoveryListener)i.next(); 053 if (log.isDebugEnabled()) { 054 log.debug("on Add service: " + event); 055 } 056 l.addService(event); 057 } 058 } 059 060 protected void fireRemoveService(DiscoveryEvent event){ 061 for(Iterator i = listeners.iterator(); i.hasNext();){ 062 DiscoveryListener l = (DiscoveryListener)i.next(); 063 if (log.isDebugEnabled()) { 064 log.debug("on Remove service: " + event); 065 } 066 l.removeService(event); 067 } 068 } 069 070 }