From 888625c12e9f320a2763de770401fda5964d5de4 Mon Sep 17 00:00:00 2001 From: jprocter Date: Sun, 8 Jul 2012 15:11:08 +0100 Subject: [PATCH] JAL-976 pick an available instance of a service based on server-independent URI string --- src/jalview/ws/jws2/Jws2Discoverer.java | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) 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; + } } -- 1.7.10.2