X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fws%2Frest%2FRestClient.java;h=e618c3f42ea4ac7de5baf80a83c4bcf7bbfa899d;hb=a45774ee31d9f35d4eff46d54d7deab719afb092;hp=114f51a7cd69dafc847df2e4d92cd13bb36d69f9;hpb=603ec5f3d10d05a8668477ad627ac3010473b579;p=jalview.git diff --git a/src/jalview/ws/rest/RestClient.java b/src/jalview/ws/rest/RestClient.java index 114f51a..e618c3f 100644 --- a/src/jalview/ws/rest/RestClient.java +++ b/src/jalview/ws/rest/RestClient.java @@ -1,3 +1,20 @@ +/******************************************************************************* + * Jalview - A Sequence Alignment Editor and Viewer (Version 2.7) + * Copyright (C) 2011 J Procter, AM Waterhouse, G Barton, M Clamp, S Searle + * + * This file is part of Jalview. + * + * Jalview is free software: you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + * + * Jalview is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty + * of MERCHANTABILITY or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with Jalview. If not, see . + *******************************************************************************/ /** * */ @@ -7,6 +24,7 @@ import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.Collection; import java.util.Hashtable; +import java.util.Vector; import javax.swing.JMenu; import javax.swing.JMenuItem; @@ -14,6 +32,7 @@ import javax.swing.JOptionPane; import javax.swing.event.MenuEvent; import javax.swing.event.MenuListener; +import jalview.bin.Cache; import jalview.datamodel.AlignmentView; import jalview.gui.AlignFrame; import jalview.gui.AlignViewport; @@ -341,11 +360,55 @@ public class RestClient extends WSClient implements WSClientI, return true; } + protected static Vector services=null; + public static final String RSBS_SERVICES="RSBS_SERVICES"; public static RestClient[] getRestClients() { - return new RestClient[] { makeShmmrRestClient() }; + if (services==null) + { + services = new Vector(); + try { + for (RestServiceDescription descr: RestServiceDescription.parseDescriptions(jalview.bin.Cache.getDefault(RSBS_SERVICES,makeShmmrRestClient().service.toString()))) + { + services.add(descr.toString()); + } + } + catch (Exception ex) { + System.err.println("Serious - RSBS descriptions in user preferences are corrupt!"); + ex.printStackTrace(); + } + + } + RestClient[] lst = new RestClient[services.size()]; + int i=0; + for (String svc:services) { + lst[i++] = new RestClient(new RestServiceDescription(svc)); + } + return lst; + } + public static void main(String args[]) + { + try { + RestClient[] clients = getRestClients(); + System.out.println("Got "+clients.length+" clients."); + int i=0; + Vector urls=new Vector(); + for (RestClient cl:clients) { + System.out.println(""+(++i)+": "+cl.service.toString()); + urls.add(cl.service.toString()); + } + setRsbsServices(urls); + if (clients.length!=getRestClients().length) + { + System.err.println("Failed. Differing numbers of clients when stringified and parsed again."); + } + + } catch (Throwable x) + { + System.err.println("Failed. Unexpected exception."); + x.printStackTrace(); + } } - public String getAction() { return service.details.Action; @@ -356,4 +419,33 @@ public class RestClient extends WSClient implements WSClientI, return service; } + public static Vector getRsbsDescriptions() + { + Vector rsbsDescrs = new Vector(); + for (RestClient rsbs:getRestClients()) + { + rsbsDescrs.add(rsbs.getRestDescription().toString()); + } + return rsbsDescrs; + } + + public static void setRsbsServices(Vector rsbsUrls) + { + if (rsbsUrls!=null) + { + // TODO: consider validating services ? + services = new Vector(rsbsUrls); + StringBuffer sprop = new StringBuffer(); + for (String s:services) + { + sprop.append(s); + } + Cache.setProperty(RSBS_SERVICES, sprop.toString()); + } + else + { + Cache.removeProperty(RSBS_SERVICES); + } + } + }