2 * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8)
3 * Copyright (C) 2012 J Procter, AM Waterhouse, LM Lui, J Engelhardt, G Barton, M Clamp, S Searle
5 * This file is part of Jalview.
7 * Jalview is free software: you can redistribute it and/or
8 * modify it under the terms of the GNU General Public License
9 * as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
11 * Jalview is distributed in the hope that it will be useful, but
12 * WITHOUT ANY WARRANTY; without even the implied warranty
13 * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
14 * PURPOSE. See the GNU General Public License for more details.
16 * You should have received a copy of the GNU General Public License along with Jalview. If not, see <http://www.gnu.org/licenses/>.
21 package jalview.ws.jws2;
23 import jalview.bin.Cache;
24 import jalview.ws.jws2.jabaws2.Jws2Instance;
25 import jalview.ws.jws2.jabaws2.Jws2InstanceFactory;
27 import java.util.HashSet;
30 import compbio.data.msa.Category;
31 import compbio.data.msa.JABAService;
32 import compbio.ws.client.Jws2Client;
33 import compbio.ws.client.Services;
39 public class JabaWsServerQuery implements Runnable
42 Jws2Discoverer jws2Discoverer = null;
44 String jwsservers = null;
46 boolean quit = false, running = false;
51 public boolean isRunning()
60 public void setQuit(boolean quit)
65 public JabaWsServerQuery(Jws2Discoverer jws2Discoverer, String jwsservers)
67 this.jws2Discoverer = jws2Discoverer;
68 this.jwsservers = jwsservers;
71 Services[] JABAWS1SERVERS = new Services[]
72 { Services.ClustalWS, Services.MuscleWS, Services.MafftWS,
73 Services.ProbconsWS, Services.TcoffeeWS };
75 Services[] JABAWS2SERVERS = new Services[]
76 { Services.ClustalWS, Services.MuscleWS, Services.MafftWS,
77 Services.ProbconsWS, Services.TcoffeeWS, Services.AAConWS,
78 Services.DisemblWS, Services.GlobPlotWS, Services.IUPredWS,
79 Services.JronnWS, Services.RNAalifoldWS };
84 * @see java.lang.Runnable#run()
92 if (Jws2Client.validURL(jwsservers))
94 compbio.data.msa.RegistryWS registry = null;
95 Set svccategories = null;
96 boolean noservices = true;
98 boolean jabasws2 = false;
99 // If we are dealing with a JABAWS2 service, then just go and ask the
100 // JABAWS 2 service registry
101 Set<Services> srv_set = new HashSet<Services>();
103 Set<Category> categories = Category.getCategories();
108 // JBPNote: why is RegistryWS in compbio.data.msa ?
109 registry = Jws2Client.connectToRegistry(jwsservers);
110 if (registry != null)
112 // System.err.println("Test Services Output\n"
113 // + registry.testAllServices());
114 // TODO: enumerate services and test those that haven't been tested
115 // in the last n-days/hours/etc.
118 srv_set = registry.getSupportedServices();
121 System.out.println("registry.getSupportedServices: " + srv_set.toString());
123 svccategories = registry.getServiceCategories();
126 // System.out.println("registry.getServiceCategories: " + svccategories.toString());
129 } catch (Exception ex)
131 System.err.println("Exception whilst trying to get at registry:");
132 ex.printStackTrace();
133 // if that failed, then we are probably working with a JABAWS1 server.
134 // in that case, look for each service endpoint
135 System.err.println("JWS2 Discoverer: " + jwsservers
136 + " is a JABAWS1 server. Using hardwired list.");
137 for (Services srv : JABAWS1SERVERS)
142 for (Category cat : categories)
144 for (Services srv : cat.getServices())
151 if (!srv_set.contains(srv))
155 JABAService service = null;
158 service = Jws2Client.connect(jwsservers, srv);
159 } catch (Exception e)
161 System.err.println("Jws2 Discoverer: Problem on "
162 + jwsservers + " with service " + srv + ":\n"
164 if (!(e instanceof javax.xml.ws.WebServiceException))
168 // For moment, report service as a problem.
169 jws2Discoverer.addInvalidServiceUrl(jwsservers);
175 Jws2Instance svc = null;
176 if (registry != null)
179 String description = registry.getServiceDescription(srv);
181 svc = Jws2InstanceFactory.newJws2Instance(jwsservers, srv.toString(),
182 cat.name, description, service);
186 svc = Jws2InstanceFactory.newJws2Instance(jwsservers, srv.toString(),
187 cat.name, "JABAWS 1 Alignment Service", service);
189 jws2Discoverer.addService(jwsservers, svc);
197 jws2Discoverer.addUrlwithnoservices(jwsservers);
202 jws2Discoverer.addInvalidServiceUrl(jwsservers);
203 Cache.log.info("Ignoring invalid Jws2 service url " + jwsservers);
205 } catch (Exception e)
208 Cache.log.warn("Exception when discovering Jws2 services.", e);
209 jws2Discoverer.addInvalidServiceUrl(jwsservers);
212 Cache.log.error("Exception when discovering Jws2 services.", e);
213 jws2Discoverer.addInvalidServiceUrl(jwsservers);