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:25 UTC

svn commit: r1671641 - in /continuum/trunk: continuum-api/src/main/java/org/apache/continuum/purge/repository/scanner/ continuum-purge/continuum-purge-core/src/main/java/org/apache/continuum/purge/repository/scanner/ continuum-purge/continuum-purge-mas...

Author: batkinson
Date: Mon Apr  6 18:59:25 2015
New Revision: 1671641

URL: http://svn.apache.org/r1671641
Log:
Clarified responsibilities of scanner and repo purge controller.

Added:
    continuum/trunk/continuum-api/src/main/java/org/apache/continuum/purge/repository/scanner/ScannerHandler.java
      - copied, changed from r1671640, continuum/trunk/continuum-api/src/main/java/org/apache/continuum/purge/repository/scanner/RepositoryScanner.java
Modified:
    continuum/trunk/continuum-api/src/main/java/org/apache/continuum/purge/repository/scanner/RepositoryScanner.java
    continuum/trunk/continuum-purge/continuum-purge-core/src/main/java/org/apache/continuum/purge/repository/scanner/DefaultRepositoryScanner.java
    continuum/trunk/continuum-purge/continuum-purge-core/src/main/java/org/apache/continuum/purge/repository/scanner/RepositoryScannerInstance.java
    continuum/trunk/continuum-purge/continuum-purge-master/src/main/java/org/apache/continuum/purge/controller/RepositoryPurgeController.java
    continuum/trunk/continuum-purge/continuum-purge-master/src/main/java/org/apache/continuum/purge/task/PurgeTaskExecutor.java

Modified: continuum/trunk/continuum-api/src/main/java/org/apache/continuum/purge/repository/scanner/RepositoryScanner.java
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-api/src/main/java/org/apache/continuum/purge/repository/scanner/RepositoryScanner.java?rev=1671641&r1=1671640&r2=1671641&view=diff
==============================================================================
--- continuum/trunk/continuum-api/src/main/java/org/apache/continuum/purge/repository/scanner/RepositoryScanner.java (original)
+++ continuum/trunk/continuum-api/src/main/java/org/apache/continuum/purge/repository/scanner/RepositoryScanner.java Mon Apr  6 18:59:25 2015
@@ -34,9 +34,9 @@ import java.util.List;
 public interface RepositoryScanner
 {
 
-    void scan( File repoLocation, PurgeController purgeController )
+    void scan( File repoLocation, ScannerHandler handler )
         throws ContinuumPurgeExecutorException;
 
-    void scan( File repoLocation, PurgeController purgeController, List<String> ignoredContentPatterns )
+    void scan( File repoLocation, ScannerHandler handler, List<String> ignoredContentPatterns )
         throws ContinuumPurgeExecutorException;
 }
\ No newline at end of file

Copied: continuum/trunk/continuum-api/src/main/java/org/apache/continuum/purge/repository/scanner/ScannerHandler.java (from r1671640, continuum/trunk/continuum-api/src/main/java/org/apache/continuum/purge/repository/scanner/RepositoryScanner.java)
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-api/src/main/java/org/apache/continuum/purge/repository/scanner/ScannerHandler.java?p2=continuum/trunk/continuum-api/src/main/java/org/apache/continuum/purge/repository/scanner/ScannerHandler.java&p1=continuum/trunk/continuum-api/src/main/java/org/apache/continuum/purge/repository/scanner/RepositoryScanner.java&r1=1671640&r2=1671641&rev=1671641&view=diff
==============================================================================
--- continuum/trunk/continuum-api/src/main/java/org/apache/continuum/purge/repository/scanner/RepositoryScanner.java (original)
+++ continuum/trunk/continuum-api/src/main/java/org/apache/continuum/purge/repository/scanner/ScannerHandler.java Mon Apr  6 18:59:25 2015
@@ -19,24 +19,7 @@ package org.apache.continuum.purge.repos
  * under the License.
  */
 
-import org.apache.continuum.purge.controller.PurgeController;
-import org.apache.continuum.purge.executor.ContinuumPurgeExecutorException;
-
-import java.io.File;
-import java.util.List;
-
-/**
- * Codes were taken from Archiva and made some changes.
- *
- * @author Maria Catherine Tan
- * @since 25 jul 07
- */
-public interface RepositoryScanner
+public interface ScannerHandler
 {
-
-    void scan( File repoLocation, PurgeController purgeController )
-        throws ContinuumPurgeExecutorException;
-
-    void scan( File repoLocation, PurgeController purgeController, List<String> ignoredContentPatterns )
-        throws ContinuumPurgeExecutorException;
-}
\ No newline at end of file
+    void handle( String path );
+}

Modified: continuum/trunk/continuum-purge/continuum-purge-core/src/main/java/org/apache/continuum/purge/repository/scanner/DefaultRepositoryScanner.java
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-purge/continuum-purge-core/src/main/java/org/apache/continuum/purge/repository/scanner/DefaultRepositoryScanner.java?rev=1671641&r1=1671640&r2=1671641&view=diff
==============================================================================
--- continuum/trunk/continuum-purge/continuum-purge-core/src/main/java/org/apache/continuum/purge/repository/scanner/DefaultRepositoryScanner.java (original)
+++ continuum/trunk/continuum-purge/continuum-purge-core/src/main/java/org/apache/continuum/purge/repository/scanner/DefaultRepositoryScanner.java Mon Apr  6 18:59:25 2015
@@ -20,7 +20,6 @@ package org.apache.continuum.purge.repos
  */
 
 import org.apache.commons.collections.CollectionUtils;
-import org.apache.continuum.purge.controller.PurgeController;
 import org.apache.continuum.purge.executor.ContinuumPurgeExecutorException;
 import org.apache.continuum.purge.repository.utils.FileTypes;
 import org.codehaus.plexus.component.annotations.Component;
@@ -42,14 +41,14 @@ public class DefaultRepositoryScanner
     @Requirement( hint = "file-types" )
     private FileTypes filetypes;
 
-    public void scan( File repoLocation, PurgeController purgeController )
+    public void scan( File repoLocation, ScannerHandler handler )
         throws ContinuumPurgeExecutorException
     {
         List<String> ignoredPatterns = filetypes.getIgnoredFileTypePatterns();
-        scan( repoLocation, purgeController, ignoredPatterns );
+        scan( repoLocation, handler, ignoredPatterns );
     }
 
-    public void scan( File repositoryLocation, PurgeController purgeController, List<String> ignoredContentPatterns )
+    public void scan( File repositoryLocation, ScannerHandler handler, List<String> ignoredContentPatterns )
         throws ContinuumPurgeExecutorException
     {
 
@@ -87,7 +86,7 @@ public class DefaultRepositoryScanner
         dirWalker.setExcludes( allExcludes );
 
         RepositoryScannerInstance scannerInstance =
-            new RepositoryScannerInstance( repositoryLocation, purgeController );
+            new RepositoryScannerInstance( repositoryLocation, handler );
 
         dirWalker.addDirectoryWalkListener( scannerInstance );
 

Modified: continuum/trunk/continuum-purge/continuum-purge-core/src/main/java/org/apache/continuum/purge/repository/scanner/RepositoryScannerInstance.java
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-purge/continuum-purge-core/src/main/java/org/apache/continuum/purge/repository/scanner/RepositoryScannerInstance.java?rev=1671641&r1=1671640&r2=1671641&view=diff
==============================================================================
--- continuum/trunk/continuum-purge/continuum-purge-core/src/main/java/org/apache/continuum/purge/repository/scanner/RepositoryScannerInstance.java (original)
+++ continuum/trunk/continuum-purge/continuum-purge-core/src/main/java/org/apache/continuum/purge/repository/scanner/RepositoryScannerInstance.java Mon Apr  6 18:59:25 2015
@@ -19,7 +19,6 @@ package org.apache.continuum.purge.repos
  * under the License.
  */
 
-import org.apache.continuum.purge.controller.PurgeController;
 import org.apache.maven.archiva.common.utils.BaseFile;
 import org.codehaus.plexus.util.DirectoryWalkListener;
 import org.slf4j.Logger;
@@ -37,12 +36,12 @@ public class RepositoryScannerInstance
 
     private final File repository;
 
-    private final PurgeController purgeController;
+    private final ScannerHandler handler;
 
-    public RepositoryScannerInstance( File repoLocation, PurgeController purgeController )
+    public RepositoryScannerInstance( File repoLocation, ScannerHandler handler )
     {
         this.repository = repoLocation;
-        this.purgeController = purgeController;
+        this.handler = handler;
     }
 
     public void debug( String message )
@@ -63,7 +62,7 @@ public class RepositoryScannerInstance
     public void directoryWalkStep( int percentage, File file )
     {
         BaseFile basefile = new BaseFile( repository, file );
-        purgeController.doPurge( basefile.getRelativePath() );
+        handler.handle( basefile.getRelativePath() );
     }
 
 }
\ No newline at end of file

Modified: continuum/trunk/continuum-purge/continuum-purge-master/src/main/java/org/apache/continuum/purge/controller/RepositoryPurgeController.java
URL: http://svn.apache.org/viewvc/continuum/trunk/continuum-purge/continuum-purge-master/src/main/java/org/apache/continuum/purge/controller/RepositoryPurgeController.java?rev=1671641&r1=1671640&r2=1671641&view=diff
==============================================================================
--- continuum/trunk/continuum-purge/continuum-purge-master/src/main/java/org/apache/continuum/purge/controller/RepositoryPurgeController.java (original)
+++ continuum/trunk/continuum-purge/continuum-purge-master/src/main/java/org/apache/continuum/purge/controller/RepositoryPurgeController.java Mon Apr  6 18:59:25 2015
@@ -31,11 +31,15 @@ import org.apache.continuum.purge.execut
 import org.apache.continuum.purge.executor.ReleasedSnapshotsRepositoryPurgeExecutor;
 import org.apache.continuum.purge.executor.RetentionCountRepositoryPurgeExecutor;
 import org.apache.continuum.purge.repository.content.RepositoryManagedContent;
+import org.apache.continuum.purge.repository.scanner.RepositoryScanner;
+import org.apache.continuum.purge.repository.scanner.ScannerHandler;
 import org.codehaus.plexus.component.annotations.Component;
 import org.codehaus.plexus.component.annotations.Requirement;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import java.io.File;
+
 /**
  * DefaultPurgeController
  *
@@ -43,7 +47,7 @@ import org.slf4j.LoggerFactory;
  */
 @Component( role = org.apache.continuum.purge.controller.PurgeController.class, hint = "purge-repository" )
 public class RepositoryPurgeController
-    implements PurgeController
+    implements PurgeController, ScannerHandler
 {
     private static final Logger log = LoggerFactory.getLogger( RepositoryPurgeController.class );
 
@@ -54,8 +58,13 @@ public class RepositoryPurgeController
     @Requirement
     private PurgeConfigurationService purgeConfigurationService;
 
+    @Requirement( hint = "repository-scanner" )
+    private RepositoryScanner scanner;
+
     private boolean deleteReleasedSnapshots = false;
 
+    private boolean deleteAll = false;
+
     public void initializeExecutors( AbstractPurgeConfiguration purgeConfig )
         throws ContinuumPurgeExecutorException
     {
@@ -75,6 +84,7 @@ public class RepositoryPurgeController
 
         if ( repoPurge.isDeleteAll() )
         {
+            deleteAll = true;
             purgeExecutor = new CleanAllPurgeExecutor( ContinuumPurgeConstants.PURGE_REPOSITORY );
         }
         else
@@ -98,27 +108,49 @@ public class RepositoryPurgeController
     public void doPurge( AbstractPurgeConfiguration purgeConfig )
     {
         RepositoryPurgeConfiguration repoPurge = (RepositoryPurgeConfiguration) purgeConfig;
-        log.info( "--- Start: Purging repository [{}] {} ---", repoPurge.getRepository().getId(),
-                  repoPurge.getRepository().getLocation() );
         doPurge( repoPurge.getRepository().getLocation() );
-        log.info( "--- End: Purging repository [{}] {} ---", repoPurge.getRepository().getId(),
-                  repoPurge.getRepository().getLocation() );
     }
 
     public void doPurge( String path )
     {
+        log.info( "--- Start: Purging repository {} ---", path );
+        if ( deleteAll )
+        {
+            handle( path );
+        }
+        else
+        {
+            try
+            {
+                scan( path );
+            }
+            catch ( ContinuumPurgeExecutorException e )
+            {
+                log.error( "failure while scanning", e );
+            }
+        }
+        log.info( "--- End: Purging repository {} ---", path );
+    }
+
+    private void scan( String path )
+        throws ContinuumPurgeExecutorException
+    {
+        scanner.scan( new File( path ), this );
+    }
+
+    public void handle( String path )
+    {
         try
         {
-            if ( deleteReleasedSnapshots )
+            if ( !deleteAll && deleteReleasedSnapshots )
             {
                 purgeReleasedSnapshotsExecutor.purge( path );
             }
-
             purgeExecutor.purge( path );
         }
         catch ( ContinuumPurgeExecutorException e )
         {
-            log.error( e.getMessage(), e );
+            log.error( String.format( "failure handling path '%s'", path ), e );
         }
     }
 }
\ No newline at end of file

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=1671641&r1=1671640&r2=1671641&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:25 2015
@@ -28,7 +28,6 @@ import org.apache.continuum.model.reposi
 import org.apache.continuum.purge.PurgeConfigurationService;
 import org.apache.continuum.purge.controller.PurgeController;
 import org.apache.continuum.purge.executor.ContinuumPurgeExecutorException;
-import org.apache.continuum.purge.repository.scanner.RepositoryScanner;
 import org.codehaus.plexus.PlexusConstants;
 import org.codehaus.plexus.PlexusContainer;
 import org.codehaus.plexus.component.annotations.Component;
@@ -54,9 +53,6 @@ public class PurgeTaskExecutor
     @Requirement
     private PurgeConfigurationService purgeConfigurationService;
 
-    @Requirement( hint = "repository-scanner" )
-    private RepositoryScanner scanner;
-
     private PlexusContainer container;
 
     public void executeTask( Task task )
@@ -83,18 +79,8 @@ public class PurgeTaskExecutor
 
                 PurgeController purgeController = (PurgeController) container.lookup( PurgeController.ROLE,
                                                                                       "purge-repository" );
-
                 purgeController.initializeExecutors( repoPurge );
-
-                if ( repoPurge.isDeleteAll() )
-                {
-                    purgeController.doPurge( repoPurge );
-                }
-                else
-                {
-                    File repoLocation = new File( repository.getLocation() ).getAbsoluteFile();
-                    scanner.scan( repoLocation, purgeController );
-                }
+                purgeController.doPurge( repoPurge );
             }
             else if ( purgeConfig != null && purgeConfig instanceof DirectoryPurgeConfiguration )
             {
@@ -102,9 +88,7 @@ public class PurgeTaskExecutor
 
                 PurgeController purgeController = (PurgeController) container.lookup( PurgeController.ROLE,
                                                                                       "purge-directory" );
-
                 purgeController.initializeExecutors( dirPurge );
-
                 purgeController.doPurge( dirPurge.getLocation() );
             }
             else if ( purgeConfig instanceof DistributedDirectoryPurgeConfiguration )
@@ -113,9 +97,7 @@ public class PurgeTaskExecutor
 
                 PurgeController purgeController = (PurgeController) container.lookup( PurgeController.ROLE,
                                                                                       "purge-distributed-directory" );
-
                 purgeController.initializeExecutors( dirPurge );
-
                 purgeController.doPurge( dirPurge );
             }
             else if ( purgeConfig instanceof DistributedRepositoryPurgeConfiguration )
@@ -125,9 +107,7 @@ public class PurgeTaskExecutor
 
                 PurgeController purgeController = (PurgeController) container.lookup( PurgeController.ROLE,
                                                                                       "purge-distributed-repository" );
-
                 purgeController.initializeExecutors( dirPurge );
-
                 purgeController.doPurge( dirPurge );
             }