From 2630f524a1589f646b7b6c02751607b3b8f62cf1 Mon Sep 17 00:00:00 2001
From: brinn <brinn>
Date: Tue, 22 Jul 2008 14:24:22 +0000
Subject: [PATCH] fix: avoid breaking the layering structure by accessing Main
 from RemoteMonitoredMoverFactory

SVN: 7400
---
 .../java/ch/systemsx/cisd/datamover/Main.java | 17 ++-----
 .../filesystem/FileStoreSelfTestables.java    | 48 +++++++++++++++++++
 .../RemoteMonitoredMoverFactory.java          |  3 +-
 3 files changed, 52 insertions(+), 16 deletions(-)
 create mode 100644 datamover/source/java/ch/systemsx/cisd/datamover/filesystem/FileStoreSelfTestables.java

diff --git a/datamover/source/java/ch/systemsx/cisd/datamover/Main.java b/datamover/source/java/ch/systemsx/cisd/datamover/Main.java
index 7fe953a1286..31b376a2964 100644
--- a/datamover/source/java/ch/systemsx/cisd/datamover/Main.java
+++ b/datamover/source/java/ch/systemsx/cisd/datamover/Main.java
@@ -19,7 +19,6 @@ package ch.systemsx.cisd.datamover;
 import java.io.File;
 import java.lang.Thread.UncaughtExceptionHandler;
 import java.util.ArrayList;
-import java.util.List;
 import java.util.Timer;
 
 import org.apache.log4j.Logger;
@@ -33,11 +32,11 @@ import ch.systemsx.cisd.common.logging.LogFactory;
 import ch.systemsx.cisd.common.logging.LogInitializer;
 import ch.systemsx.cisd.common.utilities.BuildAndEnvironmentInfo;
 import ch.systemsx.cisd.common.utilities.FileUtilities;
-import ch.systemsx.cisd.common.utilities.ISelfTestable;
 import ch.systemsx.cisd.common.utilities.ITerminable;
 import ch.systemsx.cisd.common.utilities.SystemExit;
 import ch.systemsx.cisd.common.utilities.TriggeringTimerTask;
 import ch.systemsx.cisd.datamover.filesystem.FileStoreFactory;
+import ch.systemsx.cisd.datamover.filesystem.FileStoreSelfTestables;
 import ch.systemsx.cisd.datamover.filesystem.FileSysOperationsFactory;
 import ch.systemsx.cisd.datamover.filesystem.intf.IFileStore;
 import ch.systemsx.cisd.datamover.filesystem.intf.IFileSysOperationsFactory;
@@ -73,8 +72,6 @@ public final class Main
                     }
                 };
 
-    private static final List<ISelfTestable> selfTestables = new ArrayList<ISelfTestable>();
-
     private static void initLog()
     {
         LogInitializer.init();
@@ -125,8 +122,8 @@ public final class Main
                 stores.add(dummyStore);
             }
             final IPathCopier copyProcess = factory.getCopier(false);
-            SelfTest.check(copyProcess, stores.toArray(IFileStore.EMPTY_ARRAY), selfTestables
-                    .toArray(new ISelfTestable[selfTestables.size()]));
+            SelfTest.check(copyProcess, stores.toArray(IFileStore.EMPTY_ARRAY),
+                    FileStoreSelfTestables.getSelfTestables());
         } catch (final HighLevelException e)
         {
             System.err.printf(msgStart + " [%s: %s]\n", e.getClass().getSimpleName(), e
@@ -177,14 +174,6 @@ public final class Main
         return file;
     }
 
-    /**
-     * Adds a self-testable to the list.
-     */
-    public static synchronized void addSelfTestable(ISelfTestable selfTestable)
-    {
-        selfTestables.add(selfTestable);
-    }
-    
     public static void main(final String[] args)
     {
         initLog();
diff --git a/datamover/source/java/ch/systemsx/cisd/datamover/filesystem/FileStoreSelfTestables.java b/datamover/source/java/ch/systemsx/cisd/datamover/filesystem/FileStoreSelfTestables.java
new file mode 100644
index 00000000000..ba80e15c0b0
--- /dev/null
+++ b/datamover/source/java/ch/systemsx/cisd/datamover/filesystem/FileStoreSelfTestables.java
@@ -0,0 +1,48 @@
+/*
+ * Copyright 2008 ETH Zuerich, CISD
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package ch.systemsx.cisd.datamover.filesystem;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import ch.systemsx.cisd.common.utilities.ISelfTestable;
+
+/**
+ * {@link ISelfTestable}s to be tested during self test.
+ *
+ * @author Bernd Rinn
+ */
+public class FileStoreSelfTestables
+{
+    private static final List<ISelfTestable> selfTestables = new ArrayList<ISelfTestable>();
+
+    /**
+     * Add a self testable to the list.
+     */
+    static synchronized void addSelfTestable(ISelfTestable selfTestable)
+    {
+        selfTestables.add(selfTestable);
+    }
+    
+    /**
+     * Get the array of self testables to test in self test.
+     */
+    public static synchronized ISelfTestable[] getSelfTestables()
+    {
+        return selfTestables.toArray(new ISelfTestable[selfTestables.size()]); 
+    }
+}
diff --git a/datamover/source/java/ch/systemsx/cisd/datamover/filesystem/RemoteMonitoredMoverFactory.java b/datamover/source/java/ch/systemsx/cisd/datamover/filesystem/RemoteMonitoredMoverFactory.java
index dc3326dc955..1b4d9481afe 100644
--- a/datamover/source/java/ch/systemsx/cisd/datamover/filesystem/RemoteMonitoredMoverFactory.java
+++ b/datamover/source/java/ch/systemsx/cisd/datamover/filesystem/RemoteMonitoredMoverFactory.java
@@ -18,7 +18,6 @@ package ch.systemsx.cisd.datamover.filesystem;
 
 import ch.systemsx.cisd.common.exceptions.ConfigurationFailureException;
 import ch.systemsx.cisd.common.utilities.IStoreHandler;
-import ch.systemsx.cisd.datamover.Main;
 import ch.systemsx.cisd.datamover.filesystem.intf.IFileStore;
 import ch.systemsx.cisd.datamover.filesystem.intf.IStoreCopier;
 import ch.systemsx.cisd.datamover.filesystem.remote.RemotePathMover;
@@ -49,7 +48,7 @@ public final class RemoteMonitoredMoverFactory
             throws ConfigurationFailureException
     {
         final IStoreCopier copier = sourceDirectory.getCopier(destinationDirectory);
-        Main.addSelfTestable(copier);
+        FileStoreSelfTestables.addSelfTestable(copier);
         return new RemotePathMover(sourceDirectory, destinationDirectory, copier, parameters);
     }
 }
-- 
GitLab