X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fws%2Fjws2%2FJws2Discoverer.java;h=b6e74934592b874bb1a1e0cf420b0dfc2cf1e84f;hb=888625c12e9f320a2763de770401fda5964d5de4;hp=b440de8f8909011b2fef16d31960c23bb68621d0;hpb=b2290fc7943376b99d2528c233d941d4394d261b;p=jalview.git diff --git a/src/jalview/ws/jws2/Jws2Discoverer.java b/src/jalview/ws/jws2/Jws2Discoverer.java index b440de8..b6e7493 100644 --- a/src/jalview/ws/jws2/Jws2Discoverer.java +++ b/src/jalview/ws/jws2/Jws2Discoverer.java @@ -31,6 +31,8 @@ import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.net.URL; import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashSet; import java.util.Hashtable; import java.util.List; import java.util.StringTokenizer; @@ -701,4 +703,33 @@ public class Jws2Discoverer implements Runnable, WSMenuEntryProviderI } return -2; } + + /** + * pick the user's preferred service based on a set of URLs (jaba server locations) and service URIs (specifying version and service interface class) + * + * @param serviceURL + * @return null or best match for given uri/ls. + */ + public Jws2Instance getPreferredServiceFor(String[] serviceURLs) + { + HashSet urls=new HashSet(); + urls.addAll(Arrays.asList(serviceURLs)); + Jws2Instance match=null; + for (Jws2Instance svc:services) + { + if (urls.contains(svc.getServiceTypeURI())) + { + if (match==null) { + // for moment we always pick service from server ordered first in user's preferences + match=svc; + } + if (urls.contains(svc.getUri())) + { + // stop and return - we've matched type URI and URI for service endpoint + return svc; + } + } + } + return match; + } }