You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@continuum.apache.org by ba...@apache.org on 2015/04/06 20:59:31 UTC

svn commit: r1671642 - /continuum/trunk/continuum-purge/continuum-purge-master/src/main/java/org/apache/continuum/purge/task/PurgeTaskExecutor.java

Author: batkinson
Date: Mon Apr  6 18:59:31 2015
New Revision: 1671642

URL: http://svn.apache.org/r1671642
Log:
Eliminated branching logic when selecting and invoking purge controller.

Modified:
    continuum/trunk/continuum-purge/continuum-purge-master/src/main/java/org/apache/continuum/purge/task/PurgeTaskExecutor.java

Modified: continuum/trunk/continuum-purge/continuum-purge-master/src/main/java/org/apache/continuum/purge/task/PurgeTaskExecutor.java
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-purge/continuum-purge-master/src/main/java/org/apache/continuum/purge/task/PurgeTaskExecutor.java?rev=1671642&r1=1671641&r2=1671642&view=diff
==============================================================================
--- continuum/trunk/continuum-purge/continuum-purge-master/src/main/java/org/apache/continuum/purge/task/PurgeTaskExecutor.java (original)
+++ continuum/trunk/continuum-purge/continuum-purge-master/src/main/java/org/apache/continuum/purge/task/PurgeTaskExecutor.java Mon Apr  6 18:59:31 2015
@@ -23,7 +23,6 @@ import org.apache.continuum.model.reposi
 import org.apache.continuum.model.repository.DirectoryPurgeConfiguration;
 import org.apache.continuum.model.repository.DistributedDirectoryPurgeConfiguration;
 import org.apache.continuum.model.repository.DistributedRepositoryPurgeConfiguration;
-import org.apache.continuum.model.repository.LocalRepository;
 import org.apache.continuum.model.repository.RepositoryPurgeConfiguration;
 import org.apache.continuum.purge.PurgeConfigurationService;
 import org.apache.continuum.purge.controller.PurgeController;
@@ -40,7 +39,8 @@ import org.codehaus.plexus.taskqueue.Tas
 import org.codehaus.plexus.taskqueue.execution.TaskExecutionException;
 import org.codehaus.plexus.taskqueue.execution.TaskExecutor;
 
-import java.io.File;
+import java.util.HashMap;
+import java.util.Map;
 
 /**
  * @author Maria Catherine Tan
@@ -50,6 +50,16 @@ public class PurgeTaskExecutor
     implements TaskExecutor, Contextualizable
 {
 
+    static final Map<Class, String> configControllerHints = new HashMap<Class, String>();
+
+    static
+    {
+        configControllerHints.put( RepositoryPurgeConfiguration.class, "purge-repository" );
+        configControllerHints.put( DirectoryPurgeConfiguration.class, "purge-directory" );
+        configControllerHints.put( DistributedRepositoryPurgeConfiguration.class, "purge-distributed-repository" );
+        configControllerHints.put( DistributedDirectoryPurgeConfiguration.class, "purge-distributed-directory" );
+    }
+
     @Requirement
     private PurgeConfigurationService purgeConfigurationService;
 
@@ -65,52 +75,10 @@ public class PurgeTaskExecutor
 
         try
         {
-            if ( purgeConfig != null && purgeConfig instanceof RepositoryPurgeConfiguration )
-            {
-                RepositoryPurgeConfiguration repoPurge = (RepositoryPurgeConfiguration) purgeConfig;
-
-                LocalRepository repository = repoPurge.getRepository();
-
-                if ( repository == null )
-                {
-                    throw new TaskExecutionException(
-                        "Error while executing purge repository task: no repository set" );
-                }
-
-                PurgeController purgeController = (PurgeController) container.lookup( PurgeController.ROLE,
-                                                                                      "purge-repository" );
-                purgeController.initializeExecutors( repoPurge );
-                purgeController.doPurge( repoPurge );
-            }
-            else if ( purgeConfig != null && purgeConfig instanceof DirectoryPurgeConfiguration )
-            {
-                DirectoryPurgeConfiguration dirPurge = (DirectoryPurgeConfiguration) purgeConfig;
-
-                PurgeController purgeController = (PurgeController) container.lookup( PurgeController.ROLE,
-                                                                                      "purge-directory" );
-                purgeController.initializeExecutors( dirPurge );
-                purgeController.doPurge( dirPurge.getLocation() );
-            }
-            else if ( purgeConfig instanceof DistributedDirectoryPurgeConfiguration )
+            if ( purgeConfig != null )
             {
-                DistributedDirectoryPurgeConfiguration dirPurge = (DistributedDirectoryPurgeConfiguration) purgeConfig;
-
-                PurgeController purgeController = (PurgeController) container.lookup( PurgeController.ROLE,
-                                                                                      "purge-distributed-directory" );
-                purgeController.initializeExecutors( dirPurge );
-                purgeController.doPurge( dirPurge );
-            }
-            else if ( purgeConfig instanceof DistributedRepositoryPurgeConfiguration )
-            {
-                DistributedRepositoryPurgeConfiguration dirPurge =
-                    (DistributedRepositoryPurgeConfiguration) purgeConfig;
-
-                PurgeController purgeController = (PurgeController) container.lookup( PurgeController.ROLE,
-                                                                                      "purge-distributed-repository" );
-                purgeController.initializeExecutors( dirPurge );
-                purgeController.doPurge( dirPurge );
+                performPurge( purgeConfig );
             }
-
         }
         catch ( ComponentLookupException e )
         {
@@ -122,6 +90,21 @@ public class PurgeTaskExecutor
         }
     }
 
+    private void performPurge( AbstractPurgeConfiguration config )
+        throws ContinuumPurgeExecutorException, ComponentLookupException
+    {
+        PurgeController controller = getController( config.getClass() );
+        controller.initializeExecutors( config );
+        controller.doPurge( config );
+    }
+
+    private PurgeController getController( Class configClass )
+        throws ComponentLookupException
+    {
+        String controllerHint = configControllerHints.get( configClass );
+        return (PurgeController) container.lookup( PurgeController.ROLE, controllerHint );
+    }
+
     public void contextualize( Context context )
         throws ContextException
     {