preferences/StructureViewer fix
[jalview.git] / src / jalview / ws / SequenceFetcher.java
index 2b3b1ee..10a2b28 100644 (file)
@@ -20,7 +20,8 @@
  */
 package jalview.ws;
 
-import jalview.bin.Instance;
+import jalview.bin.ApplicationSingletonProvider;
+import jalview.bin.ApplicationSingletonProvider.ApplicationSingletonI;
 import jalview.datamodel.DBRefSource;
 import jalview.ext.ensembl.EnsemblGene;
 import jalview.ws.dbsources.Uniprot;
@@ -39,46 +40,49 @@ import java.util.List;
  * instantiated by reflection and queried for their DbRefSource and version
  * association.
  */
-public class SequenceFetcher extends ASequenceFetcher
+public class SequenceFetcher extends ASequenceFetcher implements ApplicationSingletonI
 {
+  /*
+   * set a mock fetcher here for testing only - reset to null afterwards
+   */
+  private static SequenceFetcher mockFetcher;
 
   /**
    * Returns a new SequenceFetcher singleton, or a mock object if one has been
-   * set. Used by CrossRef and java.gui.SequenceFetcher.
+   * set.
    * 
    * @return
    */
   public static SequenceFetcher getInstance()
   {
-    Instance j = Instance.getInstance();
-    return (j.sequenceFetcher == null
-            ? j.sequenceFetcher = new SequenceFetcher()
-            : j.sequenceFetcher);
+    return mockFetcher != null ? mockFetcher
+            : (SequenceFetcher) ApplicationSingletonProvider
+                    .getInstance(SequenceFetcher.class);
   }
 
   /**
+   * Set the instance object to use (intended for unit testing with mock
+   * objects).
    * 
-   * This public constructor is only is for use by testng to anonymously
-   * subclass SequenceFetcher.
-   * 
+   * Be sure to reset to null in the tearDown method of any tests!
    * 
+   * @param sf
    */
-  public SequenceFetcher()
+  public static void setSequenceFetcher(SequenceFetcher sf)
   {
-    addAllDatabases();
+    mockFetcher = sf;
   }
 
   /**
-   * Set the instance object to use (intended for unit testing with mock
-   * objects).
    * 
-   * Be sure to reset to null in the tearDown method of any tests!
+   * This public constructor is only is for use by testng to anonymously
+   * subclass SequenceFetcher.
+   * 
    * 
-   * @param sf
    */
-  public static void setSequenceFetcher(SequenceFetcher sf)
+  public SequenceFetcher()
   {
-    Instance.getInstance().sequenceFetcher = sf;
+    addAllDatabases();
   }
 
   public void addAllDatabases()