From dff5a8b8c7ace1e1868de3d548ccd06cdfa24891 Mon Sep 17 00:00:00 2001
From: brinn <brinn>
Date: Mon, 4 Jun 2012 06:16:37 +0000
Subject: [PATCH] Fix Eclipse warning and ensure that
 AbstractOmniscientTopLevelDataSetRegistrator creates a DataSetInformation
 object with the correct type (which currently always is a DataSetInformation
 instance, but maybe an instance of a sub-class in the future).

SVN: 25513
---
 ...tOmniscientTopLevelDataSetRegistrator.java | 11 ++++++----
 ...aultDataSetRegistrationDetailsFactory.java | 21 ++++++++++++++-----
 .../JythonTopLevelDataSetHandler.java         | 10 +++++----
 .../v2/JythonTopLevelDataSetHandlerV2.java    |  6 +++---
 .../DataSetStorageRollbackerTest.java         |  2 +-
 .../registrator/TestingDataSetHandler.java    |  2 +-
 .../registrator/TestingDataSetHandlerV2.java  |  2 +-
 .../DataSetRegistrationTransactionTest.java   |  2 +-
 .../etl/jython/JythonPlateDataSetHandler.java |  2 +-
 .../v2/JythonPlateDataSetHandlerV2.java       |  2 +-
 10 files changed, 38 insertions(+), 22 deletions(-)

diff --git a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/AbstractOmniscientTopLevelDataSetRegistrator.java b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/AbstractOmniscientTopLevelDataSetRegistrator.java
index 3459b3611a2..2d44e5063c9 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/AbstractOmniscientTopLevelDataSetRegistrator.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/AbstractOmniscientTopLevelDataSetRegistrator.java
@@ -243,6 +243,8 @@ public abstract class AbstractOmniscientTopLevelDataSetRegistrator<T extends Dat
 
     protected final OmniscientTopLevelDataSetRegistratorState state;
 
+    private final Class<T> clazz;
+
     private boolean stopped;
 
     /**
@@ -251,10 +253,11 @@ public abstract class AbstractOmniscientTopLevelDataSetRegistrator<T extends Dat
      * @param globalState
      */
     protected AbstractOmniscientTopLevelDataSetRegistrator(
-            TopLevelDataSetRegistratorGlobalState globalState)
+            TopLevelDataSetRegistratorGlobalState globalState, Class<T> clazz)
     {
         super(globalState);
 
+        this.clazz = clazz;
         IStorageProcessorTransactional storageProcessor =
                 PropertiesBasedETLServerPlugin.create(IStorageProcessorTransactional.class,
                         globalState.getThreadParameters().getThreadProperties(),
@@ -661,10 +664,10 @@ public abstract class AbstractOmniscientTopLevelDataSetRegistrator<T extends Dat
             final IDelegatedActionWithResult<Boolean> cleanAfterwardsAction,
             ITopLevelDataSetRegistratorDelegate delegate)
     {
-        @SuppressWarnings("unchecked")
         DataSetRegistrationService<T> service =
-                new DataSetRegistrationService(this, incomingDataSetFile,
-                        new DefaultDataSetRegistrationDetailsFactory(getRegistratorState(),
+                new DataSetRegistrationService<T>(this, incomingDataSetFile,
+                        new DefaultDataSetRegistrationDetailsFactory<T>(clazz,
+                                getRegistratorState(),
                                 callerDataSetInformationOrNull), cleanAfterwardsAction, delegate);
         return service;
     }
diff --git a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/DefaultDataSetRegistrationDetailsFactory.java b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/DefaultDataSetRegistrationDetailsFactory.java
index 9b89d10c280..25e738d775f 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/DefaultDataSetRegistrationDetailsFactory.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/DefaultDataSetRegistrationDetailsFactory.java
@@ -22,24 +22,35 @@ import ch.systemsx.cisd.openbis.dss.generic.shared.dto.DataSetInformation;
 /**
  * @author Chandrasekhar Ramakrishnan
  */
-public class DefaultDataSetRegistrationDetailsFactory extends
-        AbstractDataSetRegistrationDetailsFactory<DataSetInformation>
+public class DefaultDataSetRegistrationDetailsFactory<T extends DataSetInformation> extends
+        AbstractDataSetRegistrationDetailsFactory<T>
 {
+    private final Class<T> dataSetInfoClass;
 
     /**
      * @param registratorState
      */
     public DefaultDataSetRegistrationDetailsFactory(
-            OmniscientTopLevelDataSetRegistratorState registratorState,
+            Class<T> dataSetInfoClass, OmniscientTopLevelDataSetRegistratorState registratorState,
             DataSetInformation userProvidedDataSetInformationOrNull)
     {
         super(registratorState, userProvidedDataSetInformationOrNull);
+        this.dataSetInfoClass = dataSetInfoClass;
     }
 
     @Override
-    protected DataSetInformation createDataSetInformation()
+    protected T createDataSetInformation()
     {
-        return new DataSetInformation();
+        try
+        {
+            return dataSetInfoClass.newInstance();
+        } catch (InstantiationException ex)
+        {
+            throw new Error(ex); 
+        } catch (IllegalAccessException ex)
+        {
+            throw new Error(ex); 
+        }
     }
 
 }
diff --git a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/JythonTopLevelDataSetHandler.java b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/JythonTopLevelDataSetHandler.java
index 976dc0918e7..0b88e7a726a 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/JythonTopLevelDataSetHandler.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/JythonTopLevelDataSetHandler.java
@@ -136,9 +136,10 @@ public class JythonTopLevelDataSetHandler<T extends DataSetInformation> extends
      * 
      * @param globalState
      */
-    public JythonTopLevelDataSetHandler(TopLevelDataSetRegistratorGlobalState globalState)
+    public JythonTopLevelDataSetHandler(TopLevelDataSetRegistratorGlobalState globalState,
+            Class<T> clazz)
     {
-        super(globalState);
+        super(globalState, clazz);
 
         String path =
                 PropertyUtils.getMandatoryProperty(globalState.getThreadParameters()
@@ -481,12 +482,13 @@ public class JythonTopLevelDataSetHandler<T extends DataSetInformation> extends
         invokeFunction(function, service, transaction);
     }
 
-    private void invokeTransactionFunctionWithContext(PyFunction function, DataSetRegistrationPersistentMap.IHolder persistentMapHolder,
+    private void invokeTransactionFunctionWithContext(PyFunction function,
+            DataSetRegistrationPersistentMap.IHolder persistentMapHolder,
             Object... additionalArgs)
     {
         if (additionalArgs.length > 0)
         {
-            invokeFunction(function,  persistentMapHolder.getPersistentMap(),
+            invokeFunction(function, persistentMapHolder.getPersistentMap(),
                     additionalArgs);
         } else
         {
diff --git a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v2/JythonTopLevelDataSetHandlerV2.java b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v2/JythonTopLevelDataSetHandlerV2.java
index 1dc810d763b..cf32b3ced21 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v2/JythonTopLevelDataSetHandlerV2.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/api/v2/JythonTopLevelDataSetHandlerV2.java
@@ -58,15 +58,15 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.TechId;
 public class JythonTopLevelDataSetHandlerV2<T extends DataSetInformation> extends
         ch.systemsx.cisd.etlserver.registrator.JythonTopLevelDataSetHandler<T>
 {
-
     /**
      * Constructor.
      * 
      * @param globalState
      */
-    public JythonTopLevelDataSetHandlerV2(TopLevelDataSetRegistratorGlobalState globalState)
+    public JythonTopLevelDataSetHandlerV2(TopLevelDataSetRegistratorGlobalState globalState,
+            Class<T> clazz)
     {
-        super(globalState);
+        super(globalState, clazz);
     }
 
     /**
diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/registrator/DataSetStorageRollbackerTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/registrator/DataSetStorageRollbackerTest.java
index 2741f2d4c3f..9200c7a3bdc 100644
--- a/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/registrator/DataSetStorageRollbackerTest.java
+++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/registrator/DataSetStorageRollbackerTest.java
@@ -142,7 +142,7 @@ public class DataSetStorageRollbackerTest extends AbstractFileSystemTestCase
          */
         protected TestDataSetRegistrator(TopLevelDataSetRegistratorGlobalState globalState)
         {
-            super(globalState);
+            super(globalState, DataSetInformation.class);
         }
 
         @Override
diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/registrator/TestingDataSetHandler.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/registrator/TestingDataSetHandler.java
index 2fad00a1b3a..e15b1188b5c 100644
--- a/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/registrator/TestingDataSetHandler.java
+++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/registrator/TestingDataSetHandler.java
@@ -14,7 +14,7 @@ public class TestingDataSetHandler extends JythonTopLevelDataSetHandler<DataSetI
     public TestingDataSetHandler(TopLevelDataSetRegistratorGlobalState globalState,
             boolean shouldRegistrationFail, boolean shouldReThrowRollbackException)
     {
-        super(globalState);
+        super(globalState, DataSetInformation.class);
 
         this.expectations =
                 new TestingDataSetHandlerExpectations(shouldRegistrationFail,
diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/registrator/TestingDataSetHandlerV2.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/registrator/TestingDataSetHandlerV2.java
index 3499ef2ace8..28728fb0e89 100644
--- a/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/registrator/TestingDataSetHandlerV2.java
+++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/registrator/TestingDataSetHandlerV2.java
@@ -15,7 +15,7 @@ public class TestingDataSetHandlerV2 extends JythonTopLevelDataSetHandlerV2<Data
     public TestingDataSetHandlerV2(TopLevelDataSetRegistratorGlobalState globalState,
             boolean shouldRegistrationFail, boolean shouldReThrowRollbackException)
     {
-        super(globalState);
+        super(globalState, DataSetInformation.class);
 
         this.expectations =
                 new TestingDataSetHandlerExpectations(shouldRegistrationFail,
diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/DataSetRegistrationTransactionTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/DataSetRegistrationTransactionTest.java
index 2bcaa84f74d..5b53f2a124a 100644
--- a/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/DataSetRegistrationTransactionTest.java
+++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/registrator/api/v1/impl/DataSetRegistrationTransactionTest.java
@@ -680,7 +680,7 @@ public class DataSetRegistrationTransactionTest extends AbstractFileSystemTestCa
          */
         protected TestingDataSetHandler(TopLevelDataSetRegistratorGlobalState globalState)
         {
-            super(globalState);
+            super(globalState, DataSetInformation.class);
         }
 
         @Override
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/jython/JythonPlateDataSetHandler.java b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/jython/JythonPlateDataSetHandler.java
index 0437c456ca2..670b0afd3bc 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/jython/JythonPlateDataSetHandler.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/jython/JythonPlateDataSetHandler.java
@@ -28,7 +28,7 @@ public class JythonPlateDataSetHandler extends JythonTopLevelDataSetHandler<Data
 
     public JythonPlateDataSetHandler(TopLevelDataSetRegistratorGlobalState globalState)
     {
-        super(globalState);
+        super(globalState, DataSetInformation.class);
         originalDirName =
                 JythonPlateDataSetHandlerUtils.parseOriginalDir(globalState.getThreadParameters()
                         .getThreadProperties());
diff --git a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/jython/v2/JythonPlateDataSetHandlerV2.java b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/jython/v2/JythonPlateDataSetHandlerV2.java
index 21336ee67c0..59096b18f09 100644
--- a/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/jython/v2/JythonPlateDataSetHandlerV2.java
+++ b/screening/source/java/ch/systemsx/cisd/openbis/dss/etl/jython/v2/JythonPlateDataSetHandlerV2.java
@@ -52,7 +52,7 @@ public class JythonPlateDataSetHandlerV2 extends JythonTopLevelDataSetHandlerV2<
      */
     public JythonPlateDataSetHandlerV2(TopLevelDataSetRegistratorGlobalState globalState)
     {
-        super(globalState);
+        super(globalState, DataSetInformation.class);
         originalDirName = JythonPlateDataSetHandlerUtils.parseOriginalDir(globalState.getThreadParameters().getThreadProperties());
     }
     
-- 
GitLab