1 package org.codehaus.xfire.service;
2
3 import java.util.Collection;
4
5 import org.codehaus.xfire.service.event.RegistrationEventListener;
6
7 /***
8 * Defines the interface that for places to register, unregister, and get information about services.
9 *
10 * @author <a href="mailto:dan@envoisolutions.com">Dan Diephouse</a>
11 * @author <a href="mailto:poutsma@mac.com">Arjen Poutsma</a>
12 */
13 public interface ServiceRegistry
14 {
15 /***
16 * Constant used to define the role of service registries.
17 */
18 public static final String ROLE = ServiceRegistry.class.getName();
19
20 /***
21 * Returns the <code>ServiceEndpoint</code> with the given name, if found. Returns <code>null</code> if not found.
22 *
23 * @param name the service name.
24 * @return the service endpoint, or <code>null</code> if not found.
25 */
26 Service getService(String name);
27
28 /***
29 * Registers a given <code>ServiceEndpoint</code> with this registry.
30 *
31 * @param endpoint the endpoint.
32 */
33 void register(Service endpoint);
34
35 /***
36 * Unregisters the service endpoint with the given name, if found.
37 *
38 * @param name the service name.
39 */
40 void unregister(String name);
41
42 /***
43 * Indicates whether this registry has a service endpoint with the given name.
44 *
45 * @param name the service name.
46 * @return <code>true</code> if this registry has a service with the given name; <code>false</code> otherwise.
47 */
48 boolean hasService(String name);
49
50 /***
51 * Returns all <code>ServiceEndpoint</code> registered to this registry.
52 *
53 * @return all service endpoints.
54 */
55 Collection getServices();
56
57 /***
58 * Add a listener for registration events.
59 *
60 * @param listener the listener.
61 */
62 void addRegistrationEventListener(RegistrationEventListener listener);
63
64 /***
65 * Remove a listener for registration events.
66 *
67 * @param listener the listener.
68 */
69 void removeRegistrationEventListener(RegistrationEventListener listener);
70 }