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 * 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 * @return {@value true} if there are services available
57 boolean hasServices();
60 * Check if service discovery is still in progress. List of services may be
61 * incomplete when the discoverer is running.
63 * @return whether the discoverer is running
68 * Check if the discoverer is done searching for services. List of services
69 * should be complete if this methods returns true.
71 * @return whether the discoverer finished
76 * Start the service discovery and return a future which will be set to the
77 * discovery result when the process is completed. This method should be
78 * called once on startup and then every time the urls list is updated.
80 * @return services list future result
82 CompletableFuture<List<WebService>> startDiscoverer();
85 * An interface for the services list observers.
90 interface ServicesChangeListener extends EventListener
93 * Called whenever the services list of the observed discoverer changes with
94 * that discoverer as the first argument and current services list as the
95 * second. The list can be empty if there are no services or the list was
96 * cleared at the beginning of the discovery.
101 public void servicesChanged(WebServiceDiscovererI discoverer,
102 List<WebService> services);
106 * Add a services list observer that will be notified of any changes to the
110 * services list change listener
112 public void addServicesChangeListener(ServicesChangeListener listener);
115 * Remove a listener from the listeners list.
118 * listener to be removed
120 public void removeServicesChangeListener(ServicesChangeListener listener);