1 package org.codehaus.xfire.service; 2 3 import java.util.ArrayList; 4 import java.util.Collection; 5 import java.util.Hashtable; 6 import java.util.Iterator; 7 import java.util.List; 8 9 import org.codehaus.xfire.AbstractXFireComponent; 10 import org.codehaus.xfire.service.event.RegistrationEventListener; 11 12 /*** 13 * @author <a href="mailto:dan@envoisolutions.com">Dan Diephouse</a> 14 * @since Feb 18, 2004 15 */ 16 public class DefaultServiceRegistry 17 extends AbstractXFireComponent 18 implements ServiceRegistry 19 { 20 private Hashtable services; 21 22 private List eventListeners; 23 24 public DefaultServiceRegistry() 25 { 26 services = new Hashtable(); 27 eventListeners = new ArrayList(); 28 } 29 30 /*** 31 * @see org.codehaus.xfire.service.ServiceRegistry#getServiceDescriptor(java.lang.String) 32 */ 33 public Service getService( String serviceName ) 34 { 35 return (Service) services.get( serviceName ); 36 } 37 38 /*** 39 * @see org.codehaus.xfire.service.ServiceRegistry#register(org.codehaus.xfire.service.ServiceDescriptor) 40 */ 41 public void register( Service service ) 42 { 43 services.put( service.getName(), service ); 44 45 for (Iterator itr = eventListeners.iterator(); itr.hasNext();) 46 { 47 RegistrationEventListener listener = (RegistrationEventListener) itr.next(); 48 listener.onRegister(service); 49 } 50 } 51 52 /*** 53 * @see org.codehaus.xfire.service.ServiceRegistry#unregister(java.lang.String) 54 */ 55 public void unregister( String serviceName ) 56 { 57 Service service = getService( serviceName ); 58 59 for (Iterator itr = eventListeners.iterator(); itr.hasNext();) 60 { 61 RegistrationEventListener listener = (RegistrationEventListener) itr.next(); 62 listener.onUnregister(service); 63 } 64 65 services.remove( service ); 66 } 67 68 /*** 69 * @see org.codehaus.xfire.service.ServiceRegistry#hasService(java.lang.String) 70 */ 71 public boolean hasService(String service) 72 { 73 return services.containsKey( service ); 74 } 75 76 /*** 77 * @see org.codehaus.xfire.service.ServiceRegistry#getServices() 78 */ 79 public Collection getServices() 80 { 81 return services.values(); 82 } 83 84 /*** 85 * @param listener 86 */ 87 public void addRegistrationEventListener(RegistrationEventListener listener) 88 { 89 eventListeners.add(listener); 90 } 91 92 /*** 93 * @param listener 94 */ 95 public void removeRegistrationEventListener(RegistrationEventListener listener) 96 { 97 eventListeners.remove(listener); 98 } 99 }