1 package jalview.ws2.client.api;
4 import java.util.EventListener;
6 import java.util.concurrent.CompletableFuture;
8 import jalview.ws2.api.WebService;
11 * The discoverer and supplier of web services. The discoverer is responsible
12 * for building and storing {@link jalview.ws2.api.WebService} objects
13 * according to the data retrieved from the servers available at specified urls.
17 public interface WebServiceDiscovererI extends WebServiceProviderI
19 public static final int STATUS_OK = 1;
21 public static final int STATUS_NO_SERVICES = 0;
23 public static final int STATUS_INVALID = -1;
25 public static final int STATUS_UNKNOWN = -2;
28 * Get the short name of the discoverer.
30 * @return discoverer name
35 * List the urls used by this discoverer.
40 * Set the list of urls where the discoverer will search for services.
42 void setUrls(List<URL> wsUrls);
45 * Test if the url is a valid url for that discoverer.
47 default boolean testUrl(URL url)
49 return getStatusForUrl(url) == STATUS_OK;
53 * Get the availability status of the services at the url. Return one of the
54 * status codes {@code STATUS_OK}, {@code STATUS_NO_SERVICES},
55 * {@code STATUS_INVALID} or {@code STATUS_UNKNOWN}.
57 * @return services availability status
59 int getStatusForUrl(URL url);
62 * @return {@value true} if there are services available
64 boolean hasServices();
67 * Check if service discovery is still in progress. List of services may be
68 * incomplete when the discoverer is running.
70 * @return whether the discoverer is running
75 * Check if the discoverer is done searching for services. List of services
76 * should be complete if this methods returns true.
78 * @return whether the discoverer finished
83 * Start the service discovery and return a future which will be set to the
84 * discovery result when the process is completed. This method should be
85 * called once on startup and then every time the urls list is updated.
87 * @return services list future result
89 CompletableFuture<List<WebService<?>>> startDiscoverer();
92 * An interface for the services list observers.
97 interface ServicesChangeListener extends EventListener
100 * Called whenever the services list of the observed discoverer changes with
101 * that discoverer as the first argument and current services list as the
102 * second. The list can be empty if there are no services or the list was
103 * cleared at the beginning of the discovery.
108 public void servicesChanged(WebServiceDiscovererI discoverer,
109 List<WebService<?>> services);
113 * Add a services list observer that will be notified of any changes to the
117 * services list change listener
119 public void addServicesChangeListener(ServicesChangeListener listener);
122 * Remove a listener from the listeners list.
125 * listener to be removed
127 public void removeServicesChangeListener(ServicesChangeListener listener);