View Javadoc

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  }