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
{