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 3459b3611a2bea6e6ec2bf1fb1a226c1026a06aa..2d44e5063c92d929b02576adb498e44345e7a69b 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 9b89d10c2805d2f4c6f6319a028954160978a35a..25e738d775f90d3db8beafc2cc38cda23deb8f82 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 976dc0918e796d928523ff094b609a3aa80ae25c..0b88e7a726a0a7030171bae28dd22f5e620687ea 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 1dc810d763b82f82832a44c4ded4c906098675af..cf32b3ced2139ed62d8815add50a2e3e3edefeb0 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 2741f2d4c3f2e440d83f0654555b6d744dca1bfa..9200c7a3bdc88a16f6feddba9a5897750089c43e 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 2fad00a1b3ad143d5a2ee64cdb763f6e1c16d3d8..e15b1188b5c7288d107a6a2727c039e8cceb6d97 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 3499ef2ace8413a0fb71a7e8ec357817eeb894ef..28728fb0e891844c6ab10f5f95415332c4621c91 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 2bcaa84f74def2600c71a33965d34edbeb6e3e25..5b53f2a124a7538accb292c6b507662610e34553 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 0437c456ca2bfe7826abaf25f64c39690deb2f2d..670b0afd3bc96027aeeb7a16a13a054e68fda20a 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 21336ee67c0c1f6c28df1de1febeff7d9c1f1e0b..59096b18f09440bc9887465c9b50d38cd1a6f2b4 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()); }