From b55a1575425b04c37b2e1a0608352c546a8cd77f Mon Sep 17 00:00:00 2001
From: tpylak <tpylak>
Date: Tue, 5 Apr 2011 14:29:06 +0000
Subject: [PATCH] LMS-2164 by Sekhar: remove unused code from python framework,
 use rollback_service if rollback_transaction is not defined

SVN: 20657
---
 ...tOmniscientTopLevelDataSetRegistrator.java |  19 ---
 .../DataSetRegistrationService.java           | 117 +-----------------
 .../JythonTopLevelDataSetHandler.java         |  31 ++---
 .../JythonTopLevelDataSetRegistratorTest.java |   8 --
 4 files changed, 10 insertions(+), 165 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 5865ef39ca5..2a35ab24816 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
@@ -34,8 +34,6 @@ import ch.systemsx.cisd.common.logging.LogCategory;
 import ch.systemsx.cisd.common.logging.LogFactory;
 import ch.systemsx.cisd.common.utilities.IDelegatedActionWithResult;
 import ch.systemsx.cisd.etlserver.AbstractTopLevelDataSetRegistrator;
-import ch.systemsx.cisd.etlserver.DataSetRegistrationAlgorithm;
-import ch.systemsx.cisd.etlserver.DataSetRegistrationRollbacker;
 import ch.systemsx.cisd.etlserver.DataStrategyStore;
 import ch.systemsx.cisd.etlserver.IDataStrategyStore;
 import ch.systemsx.cisd.etlserver.IPostRegistrationAction;
@@ -319,23 +317,6 @@ public abstract class AbstractOmniscientTopLevelDataSetRegistrator<T extends Dat
                 .runCheck();
     }
 
-    /**
-     * Rollback a failure when trying to register an individual data set.
-     * <p>
-     * Subclasses may override, but should call super.
-     * 
-     * @param dataSetRegistrationService
-     */
-    public void rollback(DataSetRegistrationService<T> dataSetRegistrationService,
-            DataSetRegistrationAlgorithm registrationAlgorithm, Throwable throwable)
-    {
-        updateStopped(throwable instanceof InterruptedExceptionUnchecked);
-
-        new DataSetRegistrationRollbacker(stopped, registrationAlgorithm,
-                registrationAlgorithm.getIncomingDataSetFile(), notificationLog, operationLog,
-                throwable).doRollback();
-    }
-
     /**
      * Rollback a failure when trying to commit a transaction.
      * <p>
diff --git a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/DataSetRegistrationService.java b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/DataSetRegistrationService.java
index 2f88d25b8d8..fc80fe66294 100644
--- a/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/DataSetRegistrationService.java
+++ b/datastore_server/source/java/ch/systemsx/cisd/etlserver/registrator/DataSetRegistrationService.java
@@ -25,7 +25,6 @@ import ch.systemsx.cisd.common.utilities.IDelegatedActionWithResult;
 import ch.systemsx.cisd.common.utilities.PropertyUtils;
 import ch.systemsx.cisd.etlserver.BaseDirectoryHolder;
 import ch.systemsx.cisd.etlserver.DataSetRegistrationAlgorithm;
-import ch.systemsx.cisd.etlserver.DataSetRegistrationAlgorithm.DataSetRegistrationAlgorithmState;
 import ch.systemsx.cisd.etlserver.DataSetRegistrationAlgorithmRunner;
 import ch.systemsx.cisd.etlserver.FileRenamer;
 import ch.systemsx.cisd.etlserver.IDataStoreStrategy;
@@ -33,13 +32,11 @@ import ch.systemsx.cisd.etlserver.ITopLevelDataSetRegistratorDelegate;
 import ch.systemsx.cisd.etlserver.IdentifiedDataStrategy;
 import ch.systemsx.cisd.etlserver.TopLevelDataSetRegistratorGlobalState;
 import ch.systemsx.cisd.etlserver.TransferredDataSetHandler;
-import ch.systemsx.cisd.etlserver.registrator.AbstractOmniscientTopLevelDataSetRegistrator.DoNothingDelegatedAction;
 import ch.systemsx.cisd.etlserver.registrator.AbstractOmniscientTopLevelDataSetRegistrator.OmniscientTopLevelDataSetRegistratorState;
 import ch.systemsx.cisd.etlserver.registrator.api.v1.IDataSetRegistrationTransaction;
 import ch.systemsx.cisd.etlserver.registrator.api.v1.impl.DataSetRegistrationTransaction;
 import ch.systemsx.cisd.openbis.dss.generic.shared.dto.DataSetInformation;
 import ch.systemsx.cisd.openbis.generic.shared.basic.dto.DataSetType;
-import ch.systemsx.cisd.openbis.generic.shared.dto.NewExternalData;
 import ch.systemsx.cisd.openbis.generic.shared.dto.types.DataSetTypeCode;
 
 /**
@@ -47,50 +44,9 @@ import ch.systemsx.cisd.openbis.generic.shared.dto.types.DataSetTypeCode;
  * 
  * @author Chandrasekhar Ramakrishnan
  */
-/**
- * 
- *
- * @author Chandrasekhar Ramakrishnan
- */
-/**
- * 
- *
- * @author Chandrasekhar Ramakrishnan
- */
-/**
- * 
- *
- * @author Chandrasekhar Ramakrishnan
- */
-/**
- * @author Chandrasekhar Ramakrishnan
- */
-/**
- * @author Chandrasekhar Ramakrishnan
- */
 public class DataSetRegistrationService<T extends DataSetInformation> implements
-        DataSetRegistrationAlgorithm.IRollbackDelegate, IDataSetRegistrationService
+        IDataSetRegistrationService
 {
-    /**
-     * A data set that will be created but might not yet exist.
-     * 
-     * @author Chandrasekhar Ramakrishnan
-     */
-    public static class FutureDataSet
-    {
-        private final String code;
-
-        public FutureDataSet(String code)
-        {
-            this.code = code;
-        }
-
-        public String getCode()
-        {
-            return code;
-        }
-    }
-
     static final String STAGING_DIR = "staging-dir";
 
     private final AbstractOmniscientTopLevelDataSetRegistrator<T> registrator;
@@ -158,21 +114,6 @@ public class DataSetRegistrationService<T extends DataSetInformation> implements
         return registratorContext;
     }
 
-    /**
-     * Queue registration a data set and return a future for the data set that will be created.
-     */
-    public FutureDataSet queueDataSetRegistration(File dataSetFile,
-            final DataSetRegistrationDetails<T> details)
-    {
-        DataSetRegistrationAlgorithm registration =
-                createRegistrationAlgorithm(dataSetFile, details);
-        dataSetRegistrations.add(registration);
-
-        FutureDataSet future =
-                new FutureDataSet(registration.getDataSetInformation().getDataSetCode());
-        return future;
-    }
-
     /**
      * Create a new transaction that atomically performs file operations and registers entities.
      */
@@ -365,62 +306,6 @@ public class DataSetRegistrationService<T extends DataSetInformation> implements
         }
     }
 
-    private DataSetRegistrationAlgorithm createRegistrationAlgorithm(File aDataSetFile,
-            DataSetRegistrationDetails<T> details)
-    {
-        final TopLevelDataSetRegistratorGlobalState globalState =
-                registratorContext.getGlobalState();
-        details.getDataSetInformation().setShareId(globalState.getShareId());
-        final IDelegatedActionWithResult<Boolean> cleanAfterwardsAction =
-                new DoNothingDelegatedAction();
-
-        IDataStoreStrategy dataStoreStrategy =
-                registratorContext.getDataStrategyStore().getDataStoreStrategy(
-                        details.getDataSetInformation(), aDataSetFile);
-
-        DataSetRegistrationAlgorithmState state =
-                new DataSetRegistrationAlgorithmState(aDataSetFile,
-                        globalState.getOpenBisService(), cleanAfterwardsAction,
-                        registratorContext.getPreRegistrationAction(),
-                        registratorContext.getPostRegistrationAction(),
-                        details.getDataSetInformation(), dataStoreStrategy, details,
-                        registratorContext.getStorageProcessor(),
-                        registratorContext.getFileOperations(), globalState.getDataSetValidator(),
-                        globalState.getMailClient(), globalState.isDeleteUnidentified(),
-                        registratorContext.getRegistrationLock(), globalState.getDssCode(),
-                        globalState.isNotifySuccessfulRegistration());
-        return new DataSetRegistrationAlgorithm(state, this,
-                new DefaultApplicationServerRegistrator(registrator,
-                        details.getDataSetInformation()));
-    }
-
-    private static class DefaultApplicationServerRegistrator implements
-            DataSetRegistrationAlgorithm.IDataSetInApplicationServerRegistrator
-    {
-        private final AbstractOmniscientTopLevelDataSetRegistrator<?> registrator;
-
-        private final DataSetInformation dataSetInformation;
-
-        DefaultApplicationServerRegistrator(
-                AbstractOmniscientTopLevelDataSetRegistrator<?> registrator,
-                DataSetInformation dataSetInformation)
-        {
-            this.dataSetInformation = dataSetInformation;
-            this.registrator = registrator;
-        }
-
-        public void registerDataSetInApplicationServer(NewExternalData data) throws Throwable
-        {
-            registrator.registerDataSetInApplicationServer(dataSetInformation, data);
-        }
-    }
-
-    public void rollback(DataSetRegistrationAlgorithm algorithm, Throwable ex)
-    {
-        encounteredErrors.add(ex);
-        registrator.rollback(this, algorithm, ex);
-    }
-
     protected AbstractOmniscientTopLevelDataSetRegistrator<T> getRegistrator()
     {
         return registrator;
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 b4cc428fa57..9f1422fb2d2 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
@@ -40,12 +40,6 @@ import ch.systemsx.cisd.openbis.dss.generic.shared.dto.DataSetInformation;
 public class JythonTopLevelDataSetHandler<T extends DataSetInformation> extends
         AbstractOmniscientTopLevelDataSetRegistrator<T>
 {
-    /**
-     * The name of the function to define to hook into the data set registration rollback mechanism.
-     */
-    private static final String ROLLBACK_DATA_SET_REGISTRATION_FUNCTION_NAME =
-            "rollback_data_set_registration";
-
     /**
      * The name of the function to define to hook into the service rollback mechanism.
      */
@@ -165,22 +159,6 @@ public class JythonTopLevelDataSetHandler<T extends DataSetInformation> extends
         return service;
     }
 
-    @Override
-    public void rollback(DataSetRegistrationService<T> service,
-            DataSetRegistrationAlgorithm registrationAlgorithm, Throwable throwable)
-    {
-        PythonInterpreter interpreter = getInterpreterFromService(service);
-        PyFunction function =
-                tryJythonFunction(interpreter, ROLLBACK_DATA_SET_REGISTRATION_FUNCTION_NAME);
-        if (null != function)
-        {
-            invokeRollbackDataSetRegistrationFunction(function, service, registrationAlgorithm,
-                    throwable);
-        }
-
-        super.rollback(service, registrationAlgorithm, throwable);
-    }
-
     @Override
     protected void rollback(DataSetRegistrationService<T> service, Throwable throwable)
     {
@@ -212,6 +190,15 @@ public class JythonTopLevelDataSetHandler<T extends DataSetInformation> extends
         if (null != function)
         {
             invokeRollbackTransactionFunction(function, service, transaction, algorithmRunner, ex);
+        } else
+        {
+            // No Rollback transaction function was called, see if the rollback service function was
+            // defined, and call it.
+            function = tryJythonFunction(interpreter, ROLLBACK_SERVICE_FUNCTION_NAME);
+            if (null != function)
+            {
+                invokeRollbackServiceFunction(function, service, ex);
+            }
         }
     }
 
diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/registrator/JythonTopLevelDataSetRegistratorTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/registrator/JythonTopLevelDataSetRegistratorTest.java
index 44a020b530a..758cc12161e 100644
--- a/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/registrator/JythonTopLevelDataSetRegistratorTest.java
+++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/registrator/JythonTopLevelDataSetRegistratorTest.java
@@ -986,14 +986,6 @@ public class JythonTopLevelDataSetRegistratorTest extends AbstractFileSystemTest
             }
         }
 
-        @Override
-        public void rollback(DataSetRegistrationService<DataSetInformation> service,
-                DataSetRegistrationAlgorithm registrationAlgorithm, Throwable throwable)
-        {
-            super.rollback(service, registrationAlgorithm, throwable);
-            didDataSetRollbackHappen = true;
-        }
-
         @Override
         public void rollback(DataSetRegistrationService<DataSetInformation> service,
                 Throwable throwable)
-- 
GitLab