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 avaiable at specified urls.
17 public interface WebServiceDiscovererI
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 * List the urls used by this discoverer.
33 * Set the list of urls where the discoverer will search for services.
35 void setUrls(List<URL> wsUrls);
38 * Test if the url is a valid url for that discoverer.
40 default boolean testUrl(URL url)
42 return getStatusForUrl(url) == STATUS_OK;
46 * Get the availability status of the services at the url. Return one of the
47 * status codes {@code STATUS_OK}, {@code STATUS_NO_SERVICES},
48 * {@code STATUS_INVALID} or {@code STATUS_UNKNOWN}.
50 * @return services availability status
52 int getStatusForUrl(URL url);
55 * Get the list of services found on the servers.
59 List<WebService> getServices();
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);