[tor-commits] [onionoo/master] Use factory instead of passing around references.

karsten at torproject.org karsten at torproject.org
Mon Apr 14 13:29:25 UTC 2014


commit f2e453070bd5e7bf2023a639178734adb5d8b022
Author: Karsten Loesing <karsten.loesing at gmx.net>
Date:   Fri Mar 21 20:41:33 2014 +0100

    Use factory instead of passing around references.
---
 src/org/torproject/onionoo/ApplicationFactory.java |   40 ++++++++++++++++++++
 .../onionoo/BandwidthDocumentWriter.java           |    9 ++---
 .../torproject/onionoo/BandwidthStatusUpdater.java |    9 ++---
 .../torproject/onionoo/ClientsDocumentWriter.java  |    9 ++---
 .../torproject/onionoo/ClientsStatusUpdater.java   |    9 ++---
 src/org/torproject/onionoo/DescriptorSource.java   |    8 ++--
 .../torproject/onionoo/DetailsDocumentWriter.java  |    9 ++---
 src/org/torproject/onionoo/DocumentStore.java      |   21 +++++-----
 src/org/torproject/onionoo/LockFile.java           |   12 ++----
 src/org/torproject/onionoo/Logger.java             |    4 +-
 src/org/torproject/onionoo/Main.java               |   35 ++++++++---------
 .../onionoo/NodeDetailsStatusUpdater.java          |   11 +++---
 src/org/torproject/onionoo/RequestHandler.java     |    7 ++--
 src/org/torproject/onionoo/ResourceServlet.java    |   13 +++----
 src/org/torproject/onionoo/ResponseBuilder.java    |    4 +-
 .../onionoo/ReverseDomainNameResolver.java         |    4 +-
 .../torproject/onionoo/UptimeDocumentWriter.java   |    9 ++---
 .../torproject/onionoo/UptimeStatusUpdater.java    |    7 ++--
 .../torproject/onionoo/WeightsDocumentWriter.java  |    9 ++---
 .../torproject/onionoo/WeightsStatusUpdater.java   |    9 ++---
 .../org/torproject/onionoo/DummyDocumentStore.java |    4 +-
 .../torproject/onionoo/ResourceServletTest.java    |   23 +++++++----
 22 files changed, 142 insertions(+), 123 deletions(-)

diff --git a/src/org/torproject/onionoo/ApplicationFactory.java b/src/org/torproject/onionoo/ApplicationFactory.java
new file mode 100644
index 0000000..98952df
--- /dev/null
+++ b/src/org/torproject/onionoo/ApplicationFactory.java
@@ -0,0 +1,40 @@
+/* Copyright 2014 The Tor Project
+ * See LICENSE for licensing information */
+package org.torproject.onionoo;
+
+public class ApplicationFactory {
+
+  private static Time timeInstance;
+  public static void setTime(Time time) {
+    timeInstance = time;
+  }
+  public static Time getTime() {
+    if (timeInstance == null) {
+      timeInstance = new Time();
+    }
+    return timeInstance;
+  }
+
+  private static DescriptorSource descriptorSourceInstance;
+  public static void setDescriptorSource(
+      DescriptorSource descriptorSource) {
+    descriptorSourceInstance = descriptorSource;
+  }
+  public static DescriptorSource getDescriptorSource() {
+    if (descriptorSourceInstance == null) {
+      descriptorSourceInstance = new DescriptorSource();
+    }
+    return descriptorSourceInstance;
+  }
+
+  private static DocumentStore documentStoreInstance;
+  public static void setDocumentStore(DocumentStore documentStore) {
+    documentStoreInstance = documentStore;
+  }
+  public static DocumentStore getDocumentStore() {
+    if (documentStoreInstance == null) {
+      documentStoreInstance = new DocumentStore();
+    }
+    return documentStoreInstance;
+  }
+}
diff --git a/src/org/torproject/onionoo/BandwidthDocumentWriter.java b/src/org/torproject/onionoo/BandwidthDocumentWriter.java
index 8e9b93c..0bc8387 100644
--- a/src/org/torproject/onionoo/BandwidthDocumentWriter.java
+++ b/src/org/torproject/onionoo/BandwidthDocumentWriter.java
@@ -19,11 +19,10 @@ public class BandwidthDocumentWriter implements FingerprintListener,
 
   private long now;
 
-  public BandwidthDocumentWriter(DescriptorSource descriptorSource,
-      DocumentStore documentStore, Time time) {
-    this.descriptorSource = descriptorSource;
-    this.documentStore = documentStore;
-    this.now = time.currentTimeMillis();
+  public BandwidthDocumentWriter() {
+    this.descriptorSource = ApplicationFactory.getDescriptorSource();
+    this.documentStore = ApplicationFactory.getDocumentStore();
+    this.now = ApplicationFactory.getTime().currentTimeMillis();
     this.registerFingerprintListeners();
   }
 
diff --git a/src/org/torproject/onionoo/BandwidthStatusUpdater.java b/src/org/torproject/onionoo/BandwidthStatusUpdater.java
index 7633e9f..6320f6e 100644
--- a/src/org/torproject/onionoo/BandwidthStatusUpdater.java
+++ b/src/org/torproject/onionoo/BandwidthStatusUpdater.java
@@ -17,11 +17,10 @@ public class BandwidthStatusUpdater implements DescriptorListener,
 
   private long now;
 
-  public BandwidthStatusUpdater(DescriptorSource descriptorSource,
-      DocumentStore documentStore, Time time) {
-    this.descriptorSource = descriptorSource;
-    this.documentStore = documentStore;
-    this.now = time.currentTimeMillis();
+  public BandwidthStatusUpdater() {
+    this.descriptorSource = ApplicationFactory.getDescriptorSource();
+    this.documentStore = ApplicationFactory.getDocumentStore();
+    this.now = ApplicationFactory.getTime().currentTimeMillis();
     this.registerDescriptorListeners();
   }
 
diff --git a/src/org/torproject/onionoo/ClientsDocumentWriter.java b/src/org/torproject/onionoo/ClientsDocumentWriter.java
index 34047b5..bab78e9 100644
--- a/src/org/torproject/onionoo/ClientsDocumentWriter.java
+++ b/src/org/torproject/onionoo/ClientsDocumentWriter.java
@@ -43,11 +43,10 @@ public class ClientsDocumentWriter implements FingerprintListener,
 
   private long now;
 
-  public ClientsDocumentWriter(DescriptorSource descriptorSource,
-      DocumentStore documentStore, Time time) {
-    this.descriptorSource = descriptorSource;
-    this.documentStore = documentStore;
-    this.now = time.currentTimeMillis();
+  public ClientsDocumentWriter() {
+    this.descriptorSource = ApplicationFactory.getDescriptorSource();
+    this.documentStore = ApplicationFactory.getDocumentStore();
+    this.now = ApplicationFactory.getTime().currentTimeMillis();
     this.registerFingerprintListeners();
   }
 
diff --git a/src/org/torproject/onionoo/ClientsStatusUpdater.java b/src/org/torproject/onionoo/ClientsStatusUpdater.java
index 56803d4..ed4390e 100644
--- a/src/org/torproject/onionoo/ClientsStatusUpdater.java
+++ b/src/org/torproject/onionoo/ClientsStatusUpdater.java
@@ -38,11 +38,10 @@ public class ClientsStatusUpdater implements DescriptorListener,
 
   private long now;
 
-  public ClientsStatusUpdater(DescriptorSource descriptorSource,
-      DocumentStore documentStore, Time time) {
-    this.descriptorSource = descriptorSource;
-    this.documentStore = documentStore;
-    this.now = time.currentTimeMillis();
+  public ClientsStatusUpdater() {
+    this.descriptorSource = ApplicationFactory.getDescriptorSource();
+    this.documentStore = ApplicationFactory.getDocumentStore();
+    this.now = ApplicationFactory.getTime().currentTimeMillis();
     this.registerDescriptorListeners();
   }
 
diff --git a/src/org/torproject/onionoo/DescriptorSource.java b/src/org/torproject/onionoo/DescriptorSource.java
index 86fba25..f5adf56 100644
--- a/src/org/torproject/onionoo/DescriptorSource.java
+++ b/src/org/torproject/onionoo/DescriptorSource.java
@@ -267,15 +267,13 @@ class DescriptorQueue {
 
 public class DescriptorSource {
 
-  private File inDir;
+  private final File inDir = new File("in");
 
-  private File statusDir;
+  private final File statusDir = new File("status");
 
   private List<DescriptorQueue> descriptorQueues;
 
-  public DescriptorSource(File inDir, File statusDir) {
-    this.inDir = inDir;
-    this.statusDir = statusDir;
+  public DescriptorSource() {
     this.descriptorQueues = new ArrayList<DescriptorQueue>();
     this.descriptorListeners =
         new HashMap<DescriptorType, Set<DescriptorListener>>();
diff --git a/src/org/torproject/onionoo/DetailsDocumentWriter.java b/src/org/torproject/onionoo/DetailsDocumentWriter.java
index 309b80d..c1ae9d0 100644
--- a/src/org/torproject/onionoo/DetailsDocumentWriter.java
+++ b/src/org/torproject/onionoo/DetailsDocumentWriter.java
@@ -24,11 +24,10 @@ public class DetailsDocumentWriter implements DescriptorListener,
 
   private long now;
 
-  public DetailsDocumentWriter(DescriptorSource descriptorSource,
-      DocumentStore documentStore, Time time) {
-    this.descriptorSource = descriptorSource;
-    this.documentStore = documentStore;
-    this.now = time.currentTimeMillis();
+  public DetailsDocumentWriter() {
+    this.descriptorSource = ApplicationFactory.getDescriptorSource();
+    this.documentStore = ApplicationFactory.getDocumentStore();
+    this.now = ApplicationFactory.getTime().currentTimeMillis();
     this.registerDescriptorListeners();
     this.registerFingerprintListeners();
   }
diff --git a/src/org/torproject/onionoo/DocumentStore.java b/src/org/torproject/onionoo/DocumentStore.java
index 95f8f93..e8b35b5 100644
--- a/src/org/torproject/onionoo/DocumentStore.java
+++ b/src/org/torproject/onionoo/DocumentStore.java
@@ -29,12 +29,19 @@ import com.google.gson.JsonParseException;
 // TODO Also look into simple key-value stores instead of real databases.
 public class DocumentStore {
 
-  private File statusDir;
+  private final File statusDir = new File("status");
 
-  private File outDir;
+  private File outDir = new File("out");
+  public void setOutDir(File outDir) {
+    this.outDir = outDir;
+  }
 
   private Time time;
 
+  public DocumentStore() {
+    this.time = ApplicationFactory.getTime();
+  }
+
   private boolean listedArchivedNodeStatuses = false,
       listedCurrentNodeStatuses = false;
 
@@ -48,16 +55,6 @@ public class DocumentStore {
    * operations depend on which NodeStatus documents were listed. */
   private SortedMap<String, NodeStatus> cachedNodeStatuses;
 
-  public DocumentStore(File outDir, Time time) {
-    this(null, outDir, time);
-  }
-
-  public DocumentStore(File statusDir, File outDir, Time time) {
-    this.statusDir = statusDir;
-    this.outDir = outDir;
-    this.time = time;
-  }
-
   public <T extends Document> SortedSet<String> list(
       Class<T> documentType, boolean includeArchive) {
     if (documentType.equals(NodeStatus.class)) {
diff --git a/src/org/torproject/onionoo/LockFile.java b/src/org/torproject/onionoo/LockFile.java
index acf2dc2..768db53 100644
--- a/src/org/torproject/onionoo/LockFile.java
+++ b/src/org/torproject/onionoo/LockFile.java
@@ -9,16 +9,10 @@ import java.io.IOException;
 
 public class LockFile {
 
-  private File lockFile;
-
-  private Time time;
-
-  public LockFile(File lockFile, Time time) {
-    this.lockFile = lockFile;
-    this.time = time;
-  }
+  private final File lockFile = new File("lock");
 
   public boolean acquireLock() {
+    Time time = ApplicationFactory.getTime();
     try {
       if (this.lockFile.exists()) {
         return false;
@@ -28,7 +22,7 @@ public class LockFile {
       }
       BufferedWriter bw = new BufferedWriter(new FileWriter(
           this.lockFile));
-      bw.append("" + this.time.currentTimeMillis() + "\n");
+      bw.append("" + time.currentTimeMillis() + "\n");
       bw.close();
       return true;
     } catch (IOException e) {
diff --git a/src/org/torproject/onionoo/Logger.java b/src/org/torproject/onionoo/Logger.java
index 5ae9be1..d84adf2 100644
--- a/src/org/torproject/onionoo/Logger.java
+++ b/src/org/torproject/onionoo/Logger.java
@@ -11,8 +11,8 @@ public class Logger {
 
   private static Time time;
 
-  public static void setTime(Time timeParam) {
-    time = timeParam;
+  public static void setTime() {
+    time = ApplicationFactory.getTime();
   }
 
   private static long currentTimeMillis() {
diff --git a/src/org/torproject/onionoo/Main.java b/src/org/torproject/onionoo/Main.java
index a4e2d92..141e44b 100644
--- a/src/org/torproject/onionoo/Main.java
+++ b/src/org/torproject/onionoo/Main.java
@@ -12,9 +12,8 @@ public class Main {
 
   public static void main(String[] args) {
 
-    Time t = new Time();
-    LockFile lf = new LockFile(new File("lock"), t);
-    Logger.setTime(t);
+    LockFile lf = new LockFile();
+    Logger.setTime();
     Logger.printStatus("Initializing.");
     if (lf.acquireLock()) {
       Logger.printStatusTime("Acquired lock");
@@ -24,39 +23,37 @@ public class Main {
       return;
     }
 
-    DescriptorSource dso = new DescriptorSource(new File("in"),
-        new File("status"));
+    DescriptorSource dso = ApplicationFactory.getDescriptorSource();
     Logger.printStatusTime("Initialized descriptor source");
-    DocumentStore ds = new DocumentStore(new File("status"),
-        new File("out"), t);
+    DocumentStore ds = ApplicationFactory.getDocumentStore();
     Logger.printStatusTime("Initialized document store");
     LookupService ls = new LookupService(new File("geoip"));
     Logger.printStatusTime("Initialized Geoip lookup service");
-    ReverseDomainNameResolver rdnr = new ReverseDomainNameResolver(t);
+    ReverseDomainNameResolver rdnr = new ReverseDomainNameResolver();
     Logger.printStatusTime("Initialized reverse domain name resolver");
-    NodeDetailsStatusUpdater ndsu = new NodeDetailsStatusUpdater(dso,
-        rdnr, ls, ds, t);
+    NodeDetailsStatusUpdater ndsu = new NodeDetailsStatusUpdater(rdnr,
+        ls);
     Logger.printStatusTime("Initialized node data writer");
-    BandwidthStatusUpdater bsu = new BandwidthStatusUpdater(dso, ds, t);
+    BandwidthStatusUpdater bsu = new BandwidthStatusUpdater();
     Logger.printStatusTime("Initialized bandwidth status updater");
-    WeightsStatusUpdater wsu = new WeightsStatusUpdater(dso, ds, t);
+    WeightsStatusUpdater wsu = new WeightsStatusUpdater();
     Logger.printStatusTime("Initialized weights status updater");
-    ClientsStatusUpdater csu = new ClientsStatusUpdater(dso, ds, t);
+    ClientsStatusUpdater csu = new ClientsStatusUpdater();
     Logger.printStatusTime("Initialized clients status updater");
-    UptimeStatusUpdater usu = new UptimeStatusUpdater(dso, ds);
+    UptimeStatusUpdater usu = new UptimeStatusUpdater();
     Logger.printStatusTime("Initialized uptime status updater");
     StatusUpdater[] sus = new StatusUpdater[] { ndsu, bsu, wsu, csu,
         usu };
 
-    DetailsDocumentWriter ddw = new DetailsDocumentWriter(dso, ds, t);
+    DetailsDocumentWriter ddw = new DetailsDocumentWriter();
     Logger.printStatusTime("Initialized details document writer");
-    BandwidthDocumentWriter bdw = new BandwidthDocumentWriter(dso, ds, t);
+    BandwidthDocumentWriter bdw = new BandwidthDocumentWriter();
     Logger.printStatusTime("Initialized bandwidth document writer");
-    WeightsDocumentWriter wdw = new WeightsDocumentWriter(dso, ds, t);
+    WeightsDocumentWriter wdw = new WeightsDocumentWriter();
     Logger.printStatusTime("Initialized weights document writer");
-    ClientsDocumentWriter cdw = new ClientsDocumentWriter(dso, ds, t);
+    ClientsDocumentWriter cdw = new ClientsDocumentWriter();
     Logger.printStatusTime("Initialized clients document writer");
-    UptimeDocumentWriter udw = new UptimeDocumentWriter(dso, ds, t);
+    UptimeDocumentWriter udw = new UptimeDocumentWriter();
     Logger.printStatusTime("Initialized uptime document writer");
     DocumentWriter[] dws = new DocumentWriter[] { ddw, bdw, wdw, cdw,
         udw };
diff --git a/src/org/torproject/onionoo/NodeDetailsStatusUpdater.java b/src/org/torproject/onionoo/NodeDetailsStatusUpdater.java
index 2cf5061..4d32b2c 100644
--- a/src/org/torproject/onionoo/NodeDetailsStatusUpdater.java
+++ b/src/org/torproject/onionoo/NodeDetailsStatusUpdater.java
@@ -49,15 +49,14 @@ public class NodeDetailsStatusUpdater implements DescriptorListener,
 
   private int relayConsensusesProcessed = 0, bridgeStatusesProcessed = 0;
 
-  public NodeDetailsStatusUpdater(DescriptorSource descriptorSource,
+  public NodeDetailsStatusUpdater(
       ReverseDomainNameResolver reverseDomainNameResolver,
-      LookupService lookupService, DocumentStore documentStore,
-      Time time) {
-    this.descriptorSource = descriptorSource;
+      LookupService lookupService) {
+    this.descriptorSource = ApplicationFactory.getDescriptorSource();
     this.reverseDomainNameResolver = reverseDomainNameResolver;
     this.lookupService = lookupService;
-    this.documentStore = documentStore;
-    this.now = time.currentTimeMillis();
+    this.documentStore = ApplicationFactory.getDocumentStore();
+    this.now = ApplicationFactory.getTime().currentTimeMillis();
     this.registerDescriptorListeners();
   }
 
diff --git a/src/org/torproject/onionoo/RequestHandler.java b/src/org/torproject/onionoo/RequestHandler.java
index 6a25549..89871ae 100644
--- a/src/org/torproject/onionoo/RequestHandler.java
+++ b/src/org/torproject/onionoo/RequestHandler.java
@@ -31,10 +31,9 @@ public class RequestHandler {
       relaysByLastSeenDays = null, bridgesByLastSeenDays = null;
   private static final long SUMMARY_MAX_AGE = DateTimeHelper.SIX_HOURS;
 
-  public static void initialize(DocumentStore documentStoreParam,
-      Time timeParam) {
-    documentStore = documentStoreParam;
-    time = timeParam;
+  public static void initialize() {
+    documentStore = ApplicationFactory.getDocumentStore();
+    time = ApplicationFactory.getTime();
     readSummaryFile();
   }
 
diff --git a/src/org/torproject/onionoo/ResourceServlet.java b/src/org/torproject/onionoo/ResourceServlet.java
index 0c01d9f..dcfefc5 100644
--- a/src/org/torproject/onionoo/ResourceServlet.java
+++ b/src/org/torproject/onionoo/ResourceServlet.java
@@ -31,19 +31,18 @@ public class ResourceServlet extends HttpServlet {
         config.getInitParameter("maintenance") != null
         && config.getInitParameter("maintenance").equals("1");
     File outDir = new File(config.getInitParameter("outDir"));
-    Time time = new Time();
-    DocumentStore documentStore = new DocumentStore(outDir, time);
-    this.init(maintenanceMode, documentStore, time);
+    DocumentStore documentStore = ApplicationFactory.getDocumentStore();
+    documentStore.setOutDir(outDir);
+    this.init(maintenanceMode);
   }
 
   /* Called (indirectly) by servlet container and (directly) by test
    * class. */
-  protected void init(boolean maintenanceMode,
-      DocumentStore documentStore, Time time) {
+  protected void init(boolean maintenanceMode) {
     this.maintenanceMode = maintenanceMode;
     if (!maintenanceMode) {
-      RequestHandler.initialize(documentStore, time);
-      ResponseBuilder.initialize(documentStore);
+      RequestHandler.initialize();
+      ResponseBuilder.initialize();
     }
   }
 
diff --git a/src/org/torproject/onionoo/ResponseBuilder.java b/src/org/torproject/onionoo/ResponseBuilder.java
index 69b5c62..a841d29 100644
--- a/src/org/torproject/onionoo/ResponseBuilder.java
+++ b/src/org/torproject/onionoo/ResponseBuilder.java
@@ -11,8 +11,8 @@ public class ResponseBuilder {
 
   private static DocumentStore documentStore;
 
-  public static void initialize(DocumentStore documentStoreParam) {
-    documentStore = documentStoreParam;
+  public static void initialize() {
+    documentStore = ApplicationFactory.getDocumentStore();
   }
 
   private String resourceType;
diff --git a/src/org/torproject/onionoo/ReverseDomainNameResolver.java b/src/org/torproject/onionoo/ReverseDomainNameResolver.java
index e762811..3dbf9d1 100644
--- a/src/org/torproject/onionoo/ReverseDomainNameResolver.java
+++ b/src/org/torproject/onionoo/ReverseDomainNameResolver.java
@@ -85,8 +85,8 @@ public class ReverseDomainNameResolver {
 
   private Time time;
 
-  public ReverseDomainNameResolver(Time time) {
-    this.time = time;
+  public ReverseDomainNameResolver() {
+    this.time = ApplicationFactory.getTime();
   }
 
   private static final long RDNS_LOOKUP_MAX_REQUEST_MILLIS =
diff --git a/src/org/torproject/onionoo/UptimeDocumentWriter.java b/src/org/torproject/onionoo/UptimeDocumentWriter.java
index a7b1bba..6b44b24 100644
--- a/src/org/torproject/onionoo/UptimeDocumentWriter.java
+++ b/src/org/torproject/onionoo/UptimeDocumentWriter.java
@@ -17,11 +17,10 @@ public class UptimeDocumentWriter implements FingerprintListener,
 
   private long now;
 
-  public UptimeDocumentWriter(DescriptorSource descriptorSource,
-      DocumentStore documentStore, Time time) {
-    this.descriptorSource = descriptorSource;
-    this.documentStore = documentStore;
-    this.now = time.currentTimeMillis();
+  public UptimeDocumentWriter() {
+    this.descriptorSource = ApplicationFactory.getDescriptorSource();
+    this.documentStore = ApplicationFactory.getDocumentStore();
+    this.now = ApplicationFactory.getTime().currentTimeMillis();
     this.registerFingerprintListeners();
   }
 
diff --git a/src/org/torproject/onionoo/UptimeStatusUpdater.java b/src/org/torproject/onionoo/UptimeStatusUpdater.java
index 97a6be1..4430387 100644
--- a/src/org/torproject/onionoo/UptimeStatusUpdater.java
+++ b/src/org/torproject/onionoo/UptimeStatusUpdater.java
@@ -20,10 +20,9 @@ public class UptimeStatusUpdater implements DescriptorListener,
 
   private DocumentStore documentStore;
 
-  public UptimeStatusUpdater(DescriptorSource descriptorSource,
-      DocumentStore documentStore) {
-    this.descriptorSource = descriptorSource;
-    this.documentStore = documentStore;
+  public UptimeStatusUpdater() {
+    this.descriptorSource = ApplicationFactory.getDescriptorSource();
+    this.documentStore = ApplicationFactory.getDocumentStore();
     this.registerDescriptorListeners();
   }
 
diff --git a/src/org/torproject/onionoo/WeightsDocumentWriter.java b/src/org/torproject/onionoo/WeightsDocumentWriter.java
index 8dcca0a..d2f2a67 100644
--- a/src/org/torproject/onionoo/WeightsDocumentWriter.java
+++ b/src/org/torproject/onionoo/WeightsDocumentWriter.java
@@ -20,11 +20,10 @@ public class WeightsDocumentWriter implements FingerprintListener,
 
   private long now;
 
-  public WeightsDocumentWriter(DescriptorSource descriptorSource,
-      DocumentStore documentStore, Time time) {
-    this.descriptorSource = descriptorSource;
-    this.documentStore = documentStore;
-    this.now = time.currentTimeMillis();
+  public WeightsDocumentWriter() {
+    this.descriptorSource = ApplicationFactory.getDescriptorSource();
+    this.documentStore = ApplicationFactory.getDocumentStore();
+    this.now = ApplicationFactory.getTime().currentTimeMillis();
     this.registerFingerprintListeners();
   }
 
diff --git a/src/org/torproject/onionoo/WeightsStatusUpdater.java b/src/org/torproject/onionoo/WeightsStatusUpdater.java
index 1e5d559..d3ddff1 100644
--- a/src/org/torproject/onionoo/WeightsStatusUpdater.java
+++ b/src/org/torproject/onionoo/WeightsStatusUpdater.java
@@ -26,11 +26,10 @@ public class WeightsStatusUpdater implements DescriptorListener,
 
   private long now;
 
-  public WeightsStatusUpdater(DescriptorSource descriptorSource,
-      DocumentStore documentStore, Time time) {
-    this.descriptorSource = descriptorSource;
-    this.documentStore = documentStore;
-    this.now = time.currentTimeMillis();
+  public WeightsStatusUpdater() {
+    this.descriptorSource = ApplicationFactory.getDescriptorSource();
+    this.documentStore = ApplicationFactory.getDocumentStore();
+    this.now = ApplicationFactory.getTime().currentTimeMillis();
     this.registerDescriptorListeners();
   }
 
diff --git a/test/org/torproject/onionoo/DummyDocumentStore.java b/test/org/torproject/onionoo/DummyDocumentStore.java
index 2f32833..c7ca7ff 100644
--- a/test/org/torproject/onionoo/DummyDocumentStore.java
+++ b/test/org/torproject/onionoo/DummyDocumentStore.java
@@ -1,6 +1,5 @@
 package org.torproject.onionoo;
 
-import java.io.File;
 import java.util.SortedMap;
 import java.util.SortedSet;
 import java.util.TreeMap;
@@ -10,8 +9,7 @@ public class DummyDocumentStore extends DocumentStore {
 
   private long lastModified;
 
-  public DummyDocumentStore(long lastModified, Time time) {
-    super((File) null, time);
+  public DummyDocumentStore(long lastModified) {
     this.lastModified = lastModified;
   }
 
diff --git a/test/org/torproject/onionoo/ResourceServletTest.java b/test/org/torproject/onionoo/ResourceServletTest.java
index 37963c8..3b8b5ae 100644
--- a/test/org/torproject/onionoo/ResourceServletTest.java
+++ b/test/org/torproject/onionoo/ResourceServletTest.java
@@ -32,21 +32,21 @@ public class ResourceServletTest {
 
   private SortedMap<String, String> relays, bridges;
 
-  private DummyDocumentStore documentStore;
-
   // 2013-04-24 12:22:22
   private static long lastModified = 1366806142000L;
 
   private long currentTimeMillis = 1366806142000L;
 
   private class TestingTime extends Time {
+    private long currentTimeMillis;
+    public TestingTime(long currentTimeMillis) {
+      this.currentTimeMillis = currentTimeMillis;
+    }
     public long currentTimeMillis() {
-      return currentTimeMillis;
+      return this.currentTimeMillis;
     }
   }
 
-  private Time testingTime = new TestingTime();
-
   private boolean maintenanceMode = false;
 
   private class TestingHttpServletRequestWrapper
@@ -155,6 +155,7 @@ public class ResourceServletTest {
   private void runTest(String requestURI,
       Map<String, String[]> parameterMap) {
     try {
+      this.createDummyTime();
       this.createDummyDocumentStore();
       this.makeRequest(requestURI, parameterMap);
       this.parseResponse();
@@ -163,25 +164,31 @@ public class ResourceServletTest {
     }
   }
 
+  private void createDummyTime() {
+    Time dummyTime = new TestingTime(this.currentTimeMillis);
+    ApplicationFactory.setTime(dummyTime);
+  }
+
   private void createDummyDocumentStore() {
     /* TODO Incrementing static lastModified is necessary for
      * ResponseBuilder to read state from the newly created DocumentStore.
      * Otherwise, ResponseBuilder would use data from the previous test
      * run.  This is bad design and should be fixed. */
-    this.documentStore = new DummyDocumentStore(lastModified++,
-        this.testingTime);
+    DummyDocumentStore documentStore = new DummyDocumentStore(
+        lastModified++);
     for (String relay : relays.values()) {
       documentStore.addNodeStatus(relay);
     }
     for (String bridge : bridges.values()) {
       documentStore.addNodeStatus(bridge);
     }
+    ApplicationFactory.setDocumentStore(documentStore);
   }
 
   private void makeRequest(String requestURI,
       Map<String, String[]> parameterMap) throws IOException {
     ResourceServlet rs = new ResourceServlet();
-    rs.init(maintenanceMode, this.documentStore, this.testingTime);
+    rs.init(this.maintenanceMode);
     this.request = new TestingHttpServletRequestWrapper(requestURI,
        parameterMap);
     this.response = new TestingHttpServletResponseWrapper();





More information about the tor-commits mailing list