JAL-3878 Code reformatting.
[jalview.git] / src / jalview / ws2 / WebServiceDiscoverer.java
1 package jalview.ws2;
2
3 import java.net.URL;
4 import java.util.ArrayList;
5 import java.util.Collection;
6 import java.util.List;
7 import java.util.concurrent.CompletableFuture;
8 import java.util.concurrent.CopyOnWriteArrayList;
9
10 public interface WebServiceDiscoverer
11 {
12   public static final int STATUS_OK = 1;
13
14   public static final int STATUS_NO_SERVICES = 0;
15
16   public static final int STATUS_INVALID = -1;
17
18   public static final int STATUS_UNKNOWN = -2;
19
20   public List<String> getUrls();
21
22   public void setUrls(List<String> wsUrls);
23
24   public boolean testUrl(URL url);
25
26   public int getStatusForUrl(String url);
27
28   public List<WebServiceI> getServices();
29
30   public boolean hasServices();
31
32   public boolean isRunning();
33
34   public boolean isDone();
35
36   public CompletableFuture<WebServiceDiscoverer> startDiscoverer();
37
38   public String getErrorMessages();
39
40   @FunctionalInterface
41   static interface ServiceChangeListener
42   {
43     public void servicesChanged(WebServiceDiscoverer discoverer,
44             Collection<? extends WebServiceI> services);
45   }
46
47   List<ServiceChangeListener> serviceListeners = new CopyOnWriteArrayList<>();
48
49   public default void addServiceChangeListener(
50           ServiceChangeListener listener)
51   {
52     serviceListeners.add(listener);
53   }
54
55   public default void removeServiceChangeListener(
56           ServiceChangeListener listener)
57   {
58     serviceListeners.remove(listener);
59   }
60
61   default void fireServicesChanged(List<WebServiceI> services)
62   {
63     for (var listener : serviceListeners)
64     {
65       listener.servicesChanged(this, services);
66     }
67   }
68 }