You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@archiva.apache.org by br...@apache.org on 2010/12/03 15:11:06 UTC

svn commit: r1041824 - in /archiva/branches/archiva-1.3.x: ./ archiva-cli/src/main/java/org/apache/maven/archiva/cli/ archiva-modules/archiva-base/archiva-consumers/archiva-consumer-api/src/main/java/org/apache/maven/archiva/consumers/ archiva-modules/...

Author: brett
Date: Fri Dec  3 14:11:05 2010
New Revision: 1041824

URL: http://svn.apache.org/viewvc?rev=1041824&view=rev
Log:
[MRM-1097] for deployments/proxied artifacts, create and close indexing context when indexing task is executed as compared to the original behavior where the indexing context is created before it is queued (so as the indexing task queue builds up, more indexing contexts are being opened/created which might be causing the too many open files problem) 
Updated unit tests with changes made
Did not update the indexer as it would impact the API more significantly
Merged from: r1039004

Added:
    archiva/branches/archiva-1.3.x/archiva-modules/archiva-scheduled/src/main/resources/META-INF/spring-context.xml   (with props)
Modified:
    archiva/branches/archiva-1.3.x/archiva-cli/src/main/java/org/apache/maven/archiva/cli/AbstractProgressConsumer.java
    archiva/branches/archiva-1.3.x/archiva-modules/archiva-base/archiva-consumers/archiva-consumer-api/src/main/java/org/apache/maven/archiva/consumers/RepositoryContentConsumer.java
    archiva/branches/archiva-1.3.x/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/ArtifactMissingChecksumsConsumer.java
    archiva/branches/archiva-1.3.x/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/AutoRemoveConsumer.java
    archiva/branches/archiva-1.3.x/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/AutoRenameConsumer.java
    archiva/branches/archiva-1.3.x/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/MetadataUpdaterConsumer.java
    archiva/branches/archiva-1.3.x/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/ValidateChecksumConsumer.java
    archiva/branches/archiva-1.3.x/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/repository/RepositoryPurgeConsumer.java
    archiva/branches/archiva-1.3.x/archiva-modules/archiva-base/archiva-consumers/archiva-database-consumers/src/main/java/org/apache/maven/archiva/consumers/database/ArtifactUpdateDatabaseConsumer.java
    archiva/branches/archiva-1.3.x/archiva-modules/archiva-base/archiva-consumers/archiva-dependency-tree-consumer/src/main/java/org/apache/archiva/consumers/dependencytree/DependencyTreeGeneratorConsumer.java
    archiva/branches/archiva-1.3.x/archiva-modules/archiva-base/archiva-consumers/archiva-lucene-consumers/pom.xml
    archiva/branches/archiva-1.3.x/archiva-modules/archiva-base/archiva-consumers/archiva-lucene-consumers/src/main/java/org/apache/archiva/consumers/lucene/NexusIndexerConsumer.java
    archiva/branches/archiva-1.3.x/archiva-modules/archiva-base/archiva-consumers/archiva-lucene-consumers/src/main/resources/META-INF/spring-context.xml
    archiva/branches/archiva-1.3.x/archiva-modules/archiva-base/archiva-converter/src/main/java/org/apache/maven/archiva/converter/legacy/LegacyConverterArtifactConsumer.java
    archiva/branches/archiva-1.3.x/archiva-modules/archiva-base/archiva-indexer/src/main/java/org/apache/archiva/indexer/search/NexusRepositorySearch.java
    archiva/branches/archiva-1.3.x/archiva-modules/archiva-base/archiva-indexer/src/main/resources/META-INF/spring-context.xml
    archiva/branches/archiva-1.3.x/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/scanner/functors/TriggerScanCompletedClosure.java
    archiva/branches/archiva-1.3.x/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/scanner/RepositoryContentConsumers.java
    archiva/branches/archiva-1.3.x/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/scanner/RepositoryScannerInstance.java
    archiva/branches/archiva-1.3.x/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/scanner/functors/ConsumerProcessFileClosure.java
    archiva/branches/archiva-1.3.x/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/scanner/functors/TriggerBeginScanClosure.java
    archiva/branches/archiva-1.3.x/archiva-modules/archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/scanner/InvalidScanConsumer.java
    archiva/branches/archiva-1.3.x/archiva-modules/archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/scanner/KnownScanConsumer.java
    archiva/branches/archiva-1.3.x/archiva-modules/archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/scanner/RepositoryContentConsumersTest.java
    archiva/branches/archiva-1.3.x/archiva-modules/archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/scanner/SampleKnownConsumer.java
    archiva/branches/archiva-1.3.x/archiva-modules/archiva-scheduled/src/main/java/org/apache/maven/archiva/scheduled/executors/ArchivaIndexingTaskExecutor.java
    archiva/branches/archiva-1.3.x/archiva-modules/archiva-scheduled/src/main/java/org/apache/maven/archiva/scheduled/tasks/ArtifactIndexingTask.java
    archiva/branches/archiva-1.3.x/archiva-modules/archiva-scheduled/src/test/java/org/apache/maven/archiva/scheduled/executors/ArchivaIndexingTaskExecutorTest.java
    archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/main/resources/META-INF/plexus/application.xml
    archiva/branches/archiva-1.3.x/pom.xml

Modified: archiva/branches/archiva-1.3.x/archiva-cli/src/main/java/org/apache/maven/archiva/cli/AbstractProgressConsumer.java
URL: http://svn.apache.org/viewvc/archiva/branches/archiva-1.3.x/archiva-cli/src/main/java/org/apache/maven/archiva/cli/AbstractProgressConsumer.java?rev=1041824&r1=1041823&r2=1041824&view=diff
==============================================================================
--- archiva/branches/archiva-1.3.x/archiva-cli/src/main/java/org/apache/maven/archiva/cli/AbstractProgressConsumer.java (original)
+++ archiva/branches/archiva-1.3.x/archiva-cli/src/main/java/org/apache/maven/archiva/cli/AbstractProgressConsumer.java Fri Dec  3 14:11:05 2010
@@ -43,6 +43,12 @@ public abstract class AbstractProgressCo
         this.count = 0;
     }
 
+    public void beginScan( ManagedRepositoryConfiguration repository, Date whenGathered, boolean executeOnEntireRepo )
+        throws ConsumerException
+    {
+        beginScan( repository, whenGathered );
+    }
+
     public void processFile( String path )
         throws ConsumerException
     {
@@ -54,9 +60,20 @@ public abstract class AbstractProgressCo
 
     }
 
+    public void processFile( String path, boolean executeOnEntireRepo )
+        throws ConsumerException
+    {
+        processFile( path );
+    }
+
     public void completeScan()
     {
         System.out.println( "Final Count of Artifacts processed by " + getId() + ": " + count );
     }
 
+    public void completeScan( boolean executeOnEntireRepo )
+    {
+        completeScan();
+    }
+
 }

Modified: archiva/branches/archiva-1.3.x/archiva-modules/archiva-base/archiva-consumers/archiva-consumer-api/src/main/java/org/apache/maven/archiva/consumers/RepositoryContentConsumer.java
URL: http://svn.apache.org/viewvc/archiva/branches/archiva-1.3.x/archiva-modules/archiva-base/archiva-consumers/archiva-consumer-api/src/main/java/org/apache/maven/archiva/consumers/RepositoryContentConsumer.java?rev=1041824&r1=1041823&r2=1041824&view=diff
==============================================================================
--- archiva/branches/archiva-1.3.x/archiva-modules/archiva-base/archiva-consumers/archiva-consumer-api/src/main/java/org/apache/maven/archiva/consumers/RepositoryContentConsumer.java (original)
+++ archiva/branches/archiva-1.3.x/archiva-modules/archiva-base/archiva-consumers/archiva-consumer-api/src/main/java/org/apache/maven/archiva/consumers/RepositoryContentConsumer.java Fri Dec  3 14:11:05 2010
@@ -63,6 +63,22 @@ public interface RepositoryContentConsum
 
     /**
      * <p>
+     * Event that triggers at the beginning of a scan, where you can also indicate whether the consumers will be
+     * executed on an entire repository or on a specific resource.
+     * </p>
+     *
+     * @see RepositoryContentConsumer#beginScan(org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration, java.util.Date )
+     *
+     * @param repository the repository that this consumer is being used for.
+     * @param whenGathered the start of the repository scan
+     * @param executeOnEntireRepo flags whether the consumer will be executed on an entire repository or just on a specific resource
+     * @throws ConsumerException if there was a problem with using the provided repository with the consumer.
+     */
+    public void beginScan( ManagedRepositoryConfiguration repository, Date whenGathered, boolean executeOnEntireRepo )
+        throws ConsumerException;
+
+    /**
+     * <p>
      * Event indicating a file is to be processed by this consumer.
      * </p> 
      * 
@@ -76,6 +92,14 @@ public interface RepositoryContentConsum
      * @throws ConsumerException if there was a problem processing this file.
      */
     public void processFile( String path ) throws ConsumerException;
+
+    /**
+     *
+     * @param path
+     * @param executeOnEntireRepo
+     * @throws Exception
+     */
+    public void processFile( String path, boolean executeOnEntireRepo ) throws Exception;
     
     /**
      * <p>
@@ -90,6 +114,13 @@ public interface RepositoryContentConsum
     public void completeScan();
 
     /**
+     * 
+     * @param executeOnEntireRepo
+     * @throws Exception
+     */
+    public void completeScan( boolean executeOnEntireRepo );
+
+    /**
      * Whether the consumer should process files that have not been modified since the time passed in to the scan
      * method.
      * @return whether to process the unmodified files

Modified: archiva/branches/archiva-1.3.x/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/ArtifactMissingChecksumsConsumer.java
URL: http://svn.apache.org/viewvc/archiva/branches/archiva-1.3.x/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/ArtifactMissingChecksumsConsumer.java?rev=1041824&r1=1041823&r2=1041824&view=diff
==============================================================================
--- archiva/branches/archiva-1.3.x/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/ArtifactMissingChecksumsConsumer.java (original)
+++ archiva/branches/archiva-1.3.x/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/ArtifactMissingChecksumsConsumer.java Fri Dec  3 14:11:05 2010
@@ -99,11 +99,22 @@ public class ArtifactMissingChecksumsCon
         this.repositoryDir = new File( repo.getLocation() );
     }
 
+    public void beginScan( ManagedRepositoryConfiguration repo, Date whenGathered, boolean executeOnEntireRepo )
+        throws ConsumerException
+    {
+        beginScan( repo, whenGathered );
+    }
+
     public void completeScan()
     {
         /* do nothing */
     }
 
+    public void completeScan( boolean executeOnEntireRepo )
+    {
+        completeScan();
+    }
+
     public List<String> getExcludes()
     {
         return getDefaultArtifactExclusions();
@@ -120,6 +131,12 @@ public class ArtifactMissingChecksumsCon
         createFixChecksum( path, new ChecksumAlgorithm[] { ChecksumAlgorithm.SHA1 } );
         createFixChecksum( path, new ChecksumAlgorithm[] { ChecksumAlgorithm.MD5 } );        
     }
+
+    public void processFile( String path, boolean executeOnEntireRepo )
+        throws ConsumerException
+    {
+        processFile( path );   
+    }
     
     private void createFixChecksum( String path, ChecksumAlgorithm checksumAlgorithm[] )
     {

Modified: archiva/branches/archiva-1.3.x/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/AutoRemoveConsumer.java
URL: http://svn.apache.org/viewvc/archiva/branches/archiva-1.3.x/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/AutoRemoveConsumer.java?rev=1041824&r1=1041823&r2=1041824&view=diff
==============================================================================
--- archiva/branches/archiva-1.3.x/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/AutoRemoveConsumer.java (original)
+++ archiva/branches/archiva-1.3.x/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/AutoRemoveConsumer.java Fri Dec  3 14:11:05 2010
@@ -95,11 +95,22 @@ public class AutoRemoveConsumer
         this.repositoryDir = new File( repository.getLocation() );
     }
 
+    public void beginScan( ManagedRepositoryConfiguration repository, Date whenGathered, boolean executeOnEntireRepo )
+        throws ConsumerException
+    {
+        beginScan( repository, whenGathered );
+    }
+
     public void completeScan()
     {
         /* do nothing */
     }
 
+    public void completeScan( boolean executeOnEntireRepo )
+    {
+        completeScan();
+    }
+
     public List<String> getExcludes()
     {
         return null;
@@ -121,6 +132,12 @@ public class AutoRemoveConsumer
         }
     }
 
+    public void processFile( String path, boolean executeOnEntireRepo )
+        throws ConsumerException
+    {
+        processFile( path );    
+    }
+
     public void afterConfigurationChange( Registry registry, String propertyName, Object propertyValue )
     {                
         if ( ConfigurationNames.isRepositoryScanning( propertyName ) )

Modified: archiva/branches/archiva-1.3.x/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/AutoRenameConsumer.java
URL: http://svn.apache.org/viewvc/archiva/branches/archiva-1.3.x/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/AutoRenameConsumer.java?rev=1041824&r1=1041823&r2=1041824&view=diff
==============================================================================
--- archiva/branches/archiva-1.3.x/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/AutoRenameConsumer.java (original)
+++ archiva/branches/archiva-1.3.x/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/AutoRenameConsumer.java Fri Dec  3 14:11:05 2010
@@ -96,11 +96,22 @@ public class AutoRenameConsumer
         this.repositoryDir = new File( repository.getLocation() );
     }
 
+    public void beginScan( ManagedRepositoryConfiguration repository, Date whenGathered, boolean executeOnEntireRepo )
+        throws ConsumerException
+    {
+        beginScan( repository, whenGathered );
+    }
+
     public void completeScan()
     {
         /* do nothing */
     }
 
+    public void completeScan( boolean executeOnEntireRepo )
+    {
+        completeScan();
+    }
+
     public List<String> getExcludes()
     {
         return null;
@@ -143,4 +154,10 @@ public class AutoRenameConsumer
             file.delete();
         }
     }
+
+    public void processFile( String path, boolean executeOnEntireRepo )
+        throws ConsumerException
+    {
+        processFile( path );        
+    }
 }

Modified: archiva/branches/archiva-1.3.x/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/MetadataUpdaterConsumer.java
URL: http://svn.apache.org/viewvc/archiva/branches/archiva-1.3.x/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/MetadataUpdaterConsumer.java?rev=1041824&r1=1041823&r2=1041824&view=diff
==============================================================================
--- archiva/branches/archiva-1.3.x/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/MetadataUpdaterConsumer.java (original)
+++ archiva/branches/archiva-1.3.x/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/MetadataUpdaterConsumer.java Fri Dec  3 14:11:05 2010
@@ -142,11 +142,22 @@ public class MetadataUpdaterConsumer
         }
     }
 
+    public void beginScan( ManagedRepositoryConfiguration repository, Date whenGathered, boolean executeOnEntireRepo )
+        throws ConsumerException
+    {
+        beginScan( repository, whenGathered );
+    }
+
     public void completeScan()
     {
         /* do nothing here */
     }
 
+    public void completeScan( boolean executeOnEntireRepo )
+    {
+        completeScan();
+    }
+
     public List<String> getExcludes()
     {
         return getDefaultArtifactExclusions();
@@ -176,6 +187,12 @@ public class MetadataUpdaterConsumer
         }
     }
 
+    public void processFile( String path, boolean executeOnEntireRepo )
+        throws Exception
+    {
+        processFile( path );
+    }
+
     private void updateProjectMetadata( ArtifactReference artifact, String path )
     {
         ProjectReference projectRef = new ProjectReference();

Modified: archiva/branches/archiva-1.3.x/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/ValidateChecksumConsumer.java
URL: http://svn.apache.org/viewvc/archiva/branches/archiva-1.3.x/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/ValidateChecksumConsumer.java?rev=1041824&r1=1041823&r2=1041824&view=diff
==============================================================================
--- archiva/branches/archiva-1.3.x/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/ValidateChecksumConsumer.java (original)
+++ archiva/branches/archiva-1.3.x/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/ValidateChecksumConsumer.java Fri Dec  3 14:11:05 2010
@@ -102,11 +102,22 @@ public class ValidateChecksumConsumer
         this.repositoryDir = new File( repository.getLocation() );
     }
 
+    public void beginScan( ManagedRepositoryConfiguration repository, Date whenGathered, boolean executeOnEntireRepo )
+        throws ConsumerException
+    {
+        beginScan( repository, whenGathered );
+    }
+
     public void completeScan()
     {
         /* nothing to do */
     }
 
+    public void completeScan( boolean executeOnEntireRepo )
+    {
+        completeScan();
+    }
+
     public List<String> getExcludes()
     {
         return null;
@@ -143,6 +154,12 @@ public class ValidateChecksumConsumer
         }
     }
 
+    public void processFile( String path, boolean executeOnEntireRepo )
+        throws Exception
+    {
+        processFile( path );
+    }
+
     public void initialize()
         throws InitializationException
     {

Modified: archiva/branches/archiva-1.3.x/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/repository/RepositoryPurgeConsumer.java
URL: http://svn.apache.org/viewvc/archiva/branches/archiva-1.3.x/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/repository/RepositoryPurgeConsumer.java?rev=1041824&r1=1041823&r2=1041824&view=diff
==============================================================================
--- archiva/branches/archiva-1.3.x/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/repository/RepositoryPurgeConsumer.java (original)
+++ archiva/branches/archiva-1.3.x/archiva-modules/archiva-base/archiva-consumers/archiva-core-consumers/src/main/java/org/apache/maven/archiva/consumers/core/repository/RepositoryPurgeConsumer.java Fri Dec  3 14:11:05 2010
@@ -157,6 +157,12 @@ public class RepositoryPurgeConsumer
         }
     }
 
+    public void beginScan( ManagedRepositoryConfiguration repository, Date whenGathered, boolean executeOnEntireRepo )
+        throws ConsumerException
+    {
+        beginScan( repository, whenGathered );
+    }
+
     public void processFile( String path )
         throws ConsumerException
     {
@@ -175,11 +181,22 @@ public class RepositoryPurgeConsumer
         }
     }
 
+    public void processFile( String path, boolean executeOnEntireRepo )
+        throws Exception
+    {
+        processFile( path );
+    }
+
     public void completeScan()
     {
         /* do nothing */
     }
 
+    public void completeScan( boolean executeOnEntireRepo )
+    {
+        completeScan();
+    }
+
     public void afterConfigurationChange( Registry registry, String propertyName, Object propertyValue )
     {
         if ( ConfigurationNames.isRepositoryScanning( propertyName ) )

Modified: archiva/branches/archiva-1.3.x/archiva-modules/archiva-base/archiva-consumers/archiva-database-consumers/src/main/java/org/apache/maven/archiva/consumers/database/ArtifactUpdateDatabaseConsumer.java
URL: http://svn.apache.org/viewvc/archiva/branches/archiva-1.3.x/archiva-modules/archiva-base/archiva-consumers/archiva-database-consumers/src/main/java/org/apache/maven/archiva/consumers/database/ArtifactUpdateDatabaseConsumer.java?rev=1041824&r1=1041823&r2=1041824&view=diff
==============================================================================
--- archiva/branches/archiva-1.3.x/archiva-modules/archiva-base/archiva-consumers/archiva-database-consumers/src/main/java/org/apache/maven/archiva/consumers/database/ArtifactUpdateDatabaseConsumer.java (original)
+++ archiva/branches/archiva-1.3.x/archiva-modules/archiva-base/archiva-consumers/archiva-database-consumers/src/main/java/org/apache/maven/archiva/consumers/database/ArtifactUpdateDatabaseConsumer.java Fri Dec  3 14:11:05 2010
@@ -152,6 +152,12 @@ public class ArtifactUpdateDatabaseConsu
         }
     }
 
+    public void beginScan( ManagedRepositoryConfiguration repository, Date whenGathered, boolean executeOnEntireRepo )
+        throws ConsumerException
+    {
+        beginScan( repository, whenGathered );
+    }
+
     public void processFile( String path )
         throws ConsumerException
     {
@@ -210,6 +216,12 @@ public class ArtifactUpdateDatabaseConsu
         }
     }
 
+    public void processFile( String path, boolean executeOnEntireRepo )
+        throws Exception
+    {
+        processFile( path );
+    }
+
     /**
      * Get a Live Artifact from a Path.
      * <p/>
@@ -248,6 +260,11 @@ public class ArtifactUpdateDatabaseConsu
         /* do nothing */
     }
 
+    public void completeScan( boolean executeOnEntireRepo )
+    {
+        completeScan();
+    }
+
     public void afterConfigurationChange( Registry registry, String propertyName, Object propertyValue )
     {
         if ( ConfigurationNames.isRepositoryScanning( propertyName ) )

Modified: archiva/branches/archiva-1.3.x/archiva-modules/archiva-base/archiva-consumers/archiva-dependency-tree-consumer/src/main/java/org/apache/archiva/consumers/dependencytree/DependencyTreeGeneratorConsumer.java
URL: http://svn.apache.org/viewvc/archiva/branches/archiva-1.3.x/archiva-modules/archiva-base/archiva-consumers/archiva-dependency-tree-consumer/src/main/java/org/apache/archiva/consumers/dependencytree/DependencyTreeGeneratorConsumer.java?rev=1041824&r1=1041823&r2=1041824&view=diff
==============================================================================
--- archiva/branches/archiva-1.3.x/archiva-modules/archiva-base/archiva-consumers/archiva-dependency-tree-consumer/src/main/java/org/apache/archiva/consumers/dependencytree/DependencyTreeGeneratorConsumer.java (original)
+++ archiva/branches/archiva-1.3.x/archiva-modules/archiva-base/archiva-consumers/archiva-dependency-tree-consumer/src/main/java/org/apache/archiva/consumers/dependencytree/DependencyTreeGeneratorConsumer.java Fri Dec  3 14:11:05 2010
@@ -155,10 +155,21 @@ public class DependencyTreeGeneratorCons
         }
     }
 
+    public void beginScan( ManagedRepositoryConfiguration repository, Date whenGathered, boolean executeOnEntireRepo )
+        throws ConsumerException
+    {
+        beginScan( repository, whenGathered );    
+    }
+
     public void completeScan()
     {
     }
 
+    public void completeScan( boolean executeOnEntireRepo )
+    {
+        completeScan();
+    }
+
     public List<String> getExcludes()
     {
         return null;
@@ -246,6 +257,12 @@ public class DependencyTreeGeneratorCons
         }
     }
 
+    public void processFile( String path, boolean executeOnEntireRepo )
+        throws ConsumerException
+    {
+        processFile( path );    
+    }
+
     private void flushProjectCache( MavenProjectBuilder projectBuilder )
     {
         try

Modified: archiva/branches/archiva-1.3.x/archiva-modules/archiva-base/archiva-consumers/archiva-lucene-consumers/pom.xml
URL: http://svn.apache.org/viewvc/archiva/branches/archiva-1.3.x/archiva-modules/archiva-base/archiva-consumers/archiva-lucene-consumers/pom.xml?rev=1041824&r1=1041823&r2=1041824&view=diff
==============================================================================
--- archiva/branches/archiva-1.3.x/archiva-modules/archiva-base/archiva-consumers/archiva-lucene-consumers/pom.xml (original)
+++ archiva/branches/archiva-1.3.x/archiva-modules/archiva-base/archiva-consumers/archiva-lucene-consumers/pom.xml Fri Dec  3 14:11:05 2010
@@ -66,6 +66,10 @@
     </dependency>   
     <dependency>
       <groupId>org.slf4j</groupId>
+      <artifactId>slf4j-api</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.slf4j</groupId>
       <artifactId>slf4j-simple</artifactId>
       <scope>test</scope>
     </dependency>

Modified: archiva/branches/archiva-1.3.x/archiva-modules/archiva-base/archiva-consumers/archiva-lucene-consumers/src/main/java/org/apache/archiva/consumers/lucene/NexusIndexerConsumer.java
URL: http://svn.apache.org/viewvc/archiva/branches/archiva-1.3.x/archiva-modules/archiva-base/archiva-consumers/archiva-lucene-consumers/src/main/java/org/apache/archiva/consumers/lucene/NexusIndexerConsumer.java?rev=1041824&r1=1041823&r2=1041824&view=diff
==============================================================================
--- archiva/branches/archiva-1.3.x/archiva-modules/archiva-base/archiva-consumers/archiva-lucene-consumers/src/main/java/org/apache/archiva/consumers/lucene/NexusIndexerConsumer.java (original)
+++ archiva/branches/archiva-1.3.x/archiva-modules/archiva-base/archiva-consumers/archiva-lucene-consumers/src/main/java/org/apache/archiva/consumers/lucene/NexusIndexerConsumer.java Fri Dec  3 14:11:05 2010
@@ -70,6 +70,8 @@ public class NexusIndexerConsumer
 
     private List<String> includes = new ArrayList<String>();
 
+    private ManagedRepositoryConfiguration repository;
+
     public NexusIndexerConsumer( ArchivaTaskScheduler scheduler, ArchivaConfiguration configuration, FileTypes filetypes )
     {
         this.configuration = configuration;
@@ -102,6 +104,7 @@ public class NexusIndexerConsumer
 
         try
         {
+            log.info( "Creating indexing context for repo : " + repository.getId() );
             context = TaskCreator.createContext( repository );
         }
         catch ( IOException e )
@@ -114,6 +117,20 @@ public class NexusIndexerConsumer
         }
     }
 
+    public void beginScan( ManagedRepositoryConfiguration repository, Date whenGathered, boolean executeOnEntireRepo )
+        throws ConsumerException
+    {
+        if( executeOnEntireRepo )
+        {
+            beginScan( repository, whenGathered );
+        }
+        else
+        {
+            this.repository = repository;
+            managedRepository = new File( repository.getLocation() );       
+        }
+    }
+
     public void processFile( String path )
         throws ConsumerException
     {
@@ -133,6 +150,32 @@ public class NexusIndexerConsumer
         }
     }
 
+    public void processFile( String path, boolean executeOnEntireRepo )
+        throws Exception
+    {
+        if( executeOnEntireRepo )
+        {
+            processFile( path );
+        }
+        else
+        {
+            File artifactFile = new File( managedRepository, path );
+
+            // specify in indexing task that this is not a repo scan request!
+            ArtifactIndexingTask task =
+                new ArtifactIndexingTask( repository, artifactFile, ArtifactIndexingTask.Action.ADD, context, false );
+            try
+            {
+                log.debug( "Queueing indexing task + '" + task + "' to add or update the artifact in the index." );
+                scheduler.queueIndexingTask( task );
+            }
+            catch ( TaskQueueException e )
+            {
+                throw new ConsumerException( e.getMessage(), e );
+            }
+        }
+    }
+
     public void completeScan()
     {
         ArtifactIndexingTask task =
@@ -150,6 +193,16 @@ public class NexusIndexerConsumer
         context = null;
     }
 
+    public void completeScan( boolean executeOnEntireRepo )
+    {
+        if( executeOnEntireRepo )
+        {
+            completeScan();
+        }
+
+        // else, do nothing as the context will be closed when indexing task is executed if not a repo scan request!
+    }
+
     public List<String> getExcludes()
     {
         return Collections.emptyList();

Modified: archiva/branches/archiva-1.3.x/archiva-modules/archiva-base/archiva-consumers/archiva-lucene-consumers/src/main/resources/META-INF/spring-context.xml
URL: http://svn.apache.org/viewvc/archiva/branches/archiva-1.3.x/archiva-modules/archiva-base/archiva-consumers/archiva-lucene-consumers/src/main/resources/META-INF/spring-context.xml?rev=1041824&r1=1041823&r2=1041824&view=diff
==============================================================================
--- archiva/branches/archiva-1.3.x/archiva-modules/archiva-base/archiva-consumers/archiva-lucene-consumers/src/main/resources/META-INF/spring-context.xml (original)
+++ archiva/branches/archiva-1.3.x/archiva-modules/archiva-base/archiva-consumers/archiva-lucene-consumers/src/main/resources/META-INF/spring-context.xml Fri Dec  3 14:11:05 2010
@@ -13,4 +13,8 @@
         <constructor-arg ref="repositoryContentFactory"/>
         <constructor-arg ref="archivaTaskScheduler"/>
     </bean>
+
+    <bean id="logger" class="org.apache.maven.archiva.common.utils.Slf4JPlexusLogger">
+      <constructor-arg type="java.lang.Class"><value>org.sonatype.nexus.index.DefaultNexusIndexer</value></constructor-arg>
+    </bean>
 </beans>
\ No newline at end of file

Modified: archiva/branches/archiva-1.3.x/archiva-modules/archiva-base/archiva-converter/src/main/java/org/apache/maven/archiva/converter/legacy/LegacyConverterArtifactConsumer.java
URL: http://svn.apache.org/viewvc/archiva/branches/archiva-1.3.x/archiva-modules/archiva-base/archiva-converter/src/main/java/org/apache/maven/archiva/converter/legacy/LegacyConverterArtifactConsumer.java?rev=1041824&r1=1041823&r2=1041824&view=diff
==============================================================================
--- archiva/branches/archiva-1.3.x/archiva-modules/archiva-base/archiva-converter/src/main/java/org/apache/maven/archiva/converter/legacy/LegacyConverterArtifactConsumer.java (original)
+++ archiva/branches/archiva-1.3.x/archiva-modules/archiva-base/archiva-converter/src/main/java/org/apache/maven/archiva/converter/legacy/LegacyConverterArtifactConsumer.java Fri Dec  3 14:11:05 2010
@@ -88,11 +88,22 @@ public class LegacyConverterArtifactCons
         this.managedRepository.setRepository( repository );
     }
 
+    public void beginScan( ManagedRepositoryConfiguration repository, Date whenGathered, boolean executeOnEntireRepo )
+        throws ConsumerException
+    {
+        beginScan( repository, whenGathered );
+    }
+
     public void completeScan()
     {
 
     }
 
+    public void completeScan( boolean executeOnEntireRepo )
+    {
+        completeScan();
+    }
+
     public List<String> getExcludes()
     {
         return excludes;
@@ -124,6 +135,12 @@ public class LegacyConverterArtifactCons
         }
     }
 
+    public void processFile( String path, boolean executeOnEntireRepo )
+        throws Exception
+    {
+        processFile( path );
+    }
+
     public String getDescription()
     {
         return "Legacy Artifact to Default Artifact Converter";

Modified: archiva/branches/archiva-1.3.x/archiva-modules/archiva-base/archiva-indexer/src/main/java/org/apache/archiva/indexer/search/NexusRepositorySearch.java
URL: http://svn.apache.org/viewvc/archiva/branches/archiva-1.3.x/archiva-modules/archiva-base/archiva-indexer/src/main/java/org/apache/archiva/indexer/search/NexusRepositorySearch.java?rev=1041824&r1=1041823&r2=1041824&view=diff
==============================================================================
--- archiva/branches/archiva-1.3.x/archiva-modules/archiva-base/archiva-indexer/src/main/java/org/apache/archiva/indexer/search/NexusRepositorySearch.java (original)
+++ archiva/branches/archiva-1.3.x/archiva-modules/archiva-base/archiva-indexer/src/main/java/org/apache/archiva/indexer/search/NexusRepositorySearch.java Fri Dec  3 14:11:05 2010
@@ -37,6 +37,7 @@ import org.sonatype.nexus.index.Artifact
 import org.sonatype.nexus.index.FlatSearchRequest;
 import org.sonatype.nexus.index.FlatSearchResponse;
 import org.sonatype.nexus.index.NexusIndexer;
+import org.sonatype.nexus.index.context.IndexCreator;
 import org.sonatype.nexus.index.context.IndexingContext;
 import org.sonatype.nexus.index.context.UnsupportedExistingLuceneIndexException;
 

Modified: archiva/branches/archiva-1.3.x/archiva-modules/archiva-base/archiva-indexer/src/main/resources/META-INF/spring-context.xml
URL: http://svn.apache.org/viewvc/archiva/branches/archiva-1.3.x/archiva-modules/archiva-base/archiva-indexer/src/main/resources/META-INF/spring-context.xml?rev=1041824&r1=1041823&r2=1041824&view=diff
==============================================================================
--- archiva/branches/archiva-1.3.x/archiva-modules/archiva-base/archiva-indexer/src/main/resources/META-INF/spring-context.xml (original)
+++ archiva/branches/archiva-1.3.x/archiva-modules/archiva-base/archiva-indexer/src/main/resources/META-INF/spring-context.xml Fri Dec  3 14:11:05 2010
@@ -7,6 +7,10 @@
         <constructor-arg ref="nexusIndexer"/>
         <constructor-arg ref="archivaConfiguration"/>
     </bean>
-    
+
+    <bean id="logger" class="org.apache.maven.archiva.common.utils.Slf4JPlexusLogger">
+      <constructor-arg type="java.lang.Class"><value>org.sonatype.nexus.index.DefaultNexusIndexer</value></constructor-arg>
+    </bean>
+  
    <!--  <bean id="indexingContextMap" class="org.apache.archiva.indexer.IndexingContextMap"/>  -->
 </beans>
\ No newline at end of file

Modified: archiva/branches/archiva-1.3.x/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/scanner/functors/TriggerScanCompletedClosure.java
URL: http://svn.apache.org/viewvc/archiva/branches/archiva-1.3.x/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/scanner/functors/TriggerScanCompletedClosure.java?rev=1041824&r1=1041823&r2=1041824&view=diff
==============================================================================
--- archiva/branches/archiva-1.3.x/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/scanner/functors/TriggerScanCompletedClosure.java (original)
+++ archiva/branches/archiva-1.3.x/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/archiva/repository/scanner/functors/TriggerScanCompletedClosure.java Fri Dec  3 14:11:05 2010
@@ -35,17 +35,25 @@ public class TriggerScanCompletedClosure
 
     private final ManagedRepositoryConfiguration repository;
 
+    private boolean executeOnEntireRepo = true;
+
     public TriggerScanCompletedClosure( ManagedRepositoryConfiguration repository )
     {
         this.repository = repository;
     }
 
+    public TriggerScanCompletedClosure( ManagedRepositoryConfiguration repository, boolean executeOnEntireRepo )
+    {
+        this( repository );
+        this.executeOnEntireRepo = executeOnEntireRepo;
+    }
+
     public void execute( Object input )
     {
         if ( input instanceof RepositoryContentConsumer )
         {
             RepositoryContentConsumer consumer = (RepositoryContentConsumer) input;
-            consumer.completeScan();
+            consumer.completeScan( executeOnEntireRepo );
             log.debug( "Consumer [" + consumer.getId() + "] completed for repository [" + repository.getId() + "]" );
         }
     }

Modified: archiva/branches/archiva-1.3.x/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/scanner/RepositoryContentConsumers.java
URL: http://svn.apache.org/viewvc/archiva/branches/archiva-1.3.x/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/scanner/RepositoryContentConsumers.java?rev=1041824&r1=1041823&r2=1041824&view=diff
==============================================================================
--- archiva/branches/archiva-1.3.x/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/scanner/RepositoryContentConsumers.java (original)
+++ archiva/branches/archiva-1.3.x/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/scanner/RepositoryContentConsumers.java Fri Dec  3 14:11:05 2010
@@ -236,7 +236,7 @@ public class RepositoryContentConsumers
         // Run the repository consumers
         try
         {
-            Closure triggerBeginScan = new TriggerBeginScanClosure( repository, getStartTime() );
+            Closure triggerBeginScan = new TriggerBeginScanClosure( repository, getStartTime(), false );
 
             List<KnownRepositoryContentConsumer> selectedKnownConsumers = getSelectedKnownConsumers();
             
@@ -266,9 +266,12 @@ public class RepositoryContentConsumers
             BaseFile baseFile = new BaseFile( repository.getLocation(), localFile );
             ConsumerWantsFilePredicate predicate = new ConsumerWantsFilePredicate();
             predicate.setBasefile( baseFile );
+            predicate.setCaseSensitive( false );
+
             ConsumerProcessFileClosure closure = new ConsumerProcessFileClosure();
             closure.setBasefile( baseFile );
-            predicate.setCaseSensitive( false );
+            closure.setExecuteOnEntireRepo( false );
+            
             Closure processIfWanted = IfClosure.getInstance( predicate, closure );
 
             CollectionUtils.forAllDo( selectedKnownConsumers, processIfWanted );
@@ -279,7 +282,7 @@ public class RepositoryContentConsumers
                 CollectionUtils.forAllDo( selectedInvalidConsumers, closure );
             }
 
-            TriggerScanCompletedClosure scanCompletedClosure = new TriggerScanCompletedClosure( repository );
+            TriggerScanCompletedClosure scanCompletedClosure = new TriggerScanCompletedClosure( repository, false );
 
             CollectionUtils.forAllDo( selectedKnownConsumers, scanCompletedClosure );
         }

Modified: archiva/branches/archiva-1.3.x/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/scanner/RepositoryScannerInstance.java
URL: http://svn.apache.org/viewvc/archiva/branches/archiva-1.3.x/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/scanner/RepositoryScannerInstance.java?rev=1041824&r1=1041823&r2=1041824&view=diff
==============================================================================
--- archiva/branches/archiva-1.3.x/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/scanner/RepositoryScannerInstance.java (original)
+++ archiva/branches/archiva-1.3.x/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/scanner/RepositoryScannerInstance.java Fri Dec  3 14:11:05 2010
@@ -82,7 +82,7 @@ public class RepositoryScannerInstance
         stats = new RepositoryScanStatistics();
         stats.setRepositoryId( repository.getId() );
 
-        Closure triggerBeginScan = new TriggerBeginScanClosure( repository, new Date( System.currentTimeMillis() ) );
+        Closure triggerBeginScan = new TriggerBeginScanClosure( repository, new Date( System.currentTimeMillis() ), true );
 
         CollectionUtils.forAllDo( knownConsumerList, triggerBeginScan );
         CollectionUtils.forAllDo( invalidConsumerList, triggerBeginScan );
@@ -131,6 +131,7 @@ public class RepositoryScannerInstance
         }
         
         consumerProcessFile.setBasefile( basefile );
+        consumerProcessFile.setExecuteOnEntireRepo( true );
         consumerWantsFile.setBasefile( basefile );
         
         Closure processIfWanted = IfClosure.getInstance( consumerWantsFile, consumerProcessFile );
@@ -145,7 +146,7 @@ public class RepositoryScannerInstance
 
     public void directoryWalkFinished()
     {
-        TriggerScanCompletedClosure scanCompletedClosure = new TriggerScanCompletedClosure(repository);
+        TriggerScanCompletedClosure scanCompletedClosure = new TriggerScanCompletedClosure( repository, true );
         
         CollectionUtils.forAllDo( knownConsumers, scanCompletedClosure );
         CollectionUtils.forAllDo( invalidConsumers, scanCompletedClosure );

Modified: archiva/branches/archiva-1.3.x/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/scanner/functors/ConsumerProcessFileClosure.java
URL: http://svn.apache.org/viewvc/archiva/branches/archiva-1.3.x/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/scanner/functors/ConsumerProcessFileClosure.java?rev=1041824&r1=1041823&r2=1041824&view=diff
==============================================================================
--- archiva/branches/archiva-1.3.x/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/scanner/functors/ConsumerProcessFileClosure.java (original)
+++ archiva/branches/archiva-1.3.x/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/scanner/functors/ConsumerProcessFileClosure.java Fri Dec  3 14:11:05 2010
@@ -37,6 +37,8 @@ public class ConsumerProcessFileClosure
     
     private BaseFile basefile;
 
+    private boolean executeOnEntireRepo;
+
     public void execute( Object input )
     {
         if ( input instanceof RepositoryContentConsumer )
@@ -47,7 +49,7 @@ public class ConsumerProcessFileClosure
             {
                 log.debug( "Sending to consumer: " + consumer.getId() );
 
-                consumer.processFile( basefile.getRelativePath() );
+                consumer.processFile( basefile.getRelativePath(), executeOnEntireRepo );
             }
             catch ( Exception e )
             {
@@ -70,6 +72,16 @@ public class ConsumerProcessFileClosure
         this.basefile = basefile;
     }
 
+    public boolean isExecuteOnEntireRepo()
+    {
+        return executeOnEntireRepo;
+    }
+
+    public void setExecuteOnEntireRepo( boolean executeOnEntireRepo )
+    {
+        this.executeOnEntireRepo = executeOnEntireRepo;
+    }
+
     public Logger getLogger()
     {
         return log;

Modified: archiva/branches/archiva-1.3.x/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/scanner/functors/TriggerBeginScanClosure.java
URL: http://svn.apache.org/viewvc/archiva/branches/archiva-1.3.x/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/scanner/functors/TriggerBeginScanClosure.java?rev=1041824&r1=1041823&r2=1041824&view=diff
==============================================================================
--- archiva/branches/archiva-1.3.x/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/scanner/functors/TriggerBeginScanClosure.java (original)
+++ archiva/branches/archiva-1.3.x/archiva-modules/archiva-base/archiva-repository-layer/src/main/java/org/apache/maven/archiva/repository/scanner/functors/TriggerBeginScanClosure.java Fri Dec  3 14:11:05 2010
@@ -42,6 +42,8 @@ public class TriggerBeginScanClosure
     
     private Date whenGathered;
 
+    private boolean executeOnEntireRepo = true;
+
     public TriggerBeginScanClosure( ManagedRepositoryConfiguration repository )
     {
         this.repository = repository;
@@ -53,6 +55,12 @@ public class TriggerBeginScanClosure
         this.whenGathered = whenGathered;
     }
 
+    public TriggerBeginScanClosure( ManagedRepositoryConfiguration repository, Date whenGathered, boolean executeOnEntireRepo )
+    {
+        this( repository, whenGathered );
+        this.executeOnEntireRepo = executeOnEntireRepo;
+    }
+
     public void execute( Object input )
     {
         if ( input instanceof RepositoryContentConsumer )
@@ -61,7 +69,7 @@ public class TriggerBeginScanClosure
                 
             try
             {
-                consumer.beginScan( repository, whenGathered );
+                consumer.beginScan( repository, whenGathered, executeOnEntireRepo );
             }
             catch ( ConsumerException e )
             {

Modified: archiva/branches/archiva-1.3.x/archiva-modules/archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/scanner/InvalidScanConsumer.java
URL: http://svn.apache.org/viewvc/archiva/branches/archiva-1.3.x/archiva-modules/archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/scanner/InvalidScanConsumer.java?rev=1041824&r1=1041823&r2=1041824&view=diff
==============================================================================
--- archiva/branches/archiva-1.3.x/archiva-modules/archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/scanner/InvalidScanConsumer.java (original)
+++ archiva/branches/archiva-1.3.x/archiva-modules/archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/scanner/InvalidScanConsumer.java Fri Dec  3 14:11:05 2010
@@ -49,11 +49,22 @@ public class InvalidScanConsumer
         /* do nothing */
     }
 
+    public void beginScan( ManagedRepositoryConfiguration repository, Date whenGathered, boolean executeOnEntireRepo )
+        throws ConsumerException
+    {
+        beginScan( repository, whenGathered );
+    }
+
     public void completeScan()
     {
         /* do nothing */
     }
 
+    public void completeScan( boolean executeOnEntireRepo )
+    {
+        completeScan();
+    }
+
     public List<String> getExcludes()
     {
         return null;
@@ -70,6 +81,12 @@ public class InvalidScanConsumer
         processCount++;
     }
 
+    public void processFile( String path, boolean executeOnEntireRepo )
+        throws ConsumerException
+    {
+        processFile( path );
+    }
+
     public String getDescription()
     {
         return "Bad Content Scan Consumer (for testing)";

Modified: archiva/branches/archiva-1.3.x/archiva-modules/archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/scanner/KnownScanConsumer.java
URL: http://svn.apache.org/viewvc/archiva/branches/archiva-1.3.x/archiva-modules/archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/scanner/KnownScanConsumer.java?rev=1041824&r1=1041823&r2=1041824&view=diff
==============================================================================
--- archiva/branches/archiva-1.3.x/archiva-modules/archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/scanner/KnownScanConsumer.java (original)
+++ archiva/branches/archiva-1.3.x/archiva-modules/archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/scanner/KnownScanConsumer.java Fri Dec  3 14:11:05 2010
@@ -76,17 +76,34 @@ public class KnownScanConsumer
         /* do nothing */
     }
 
+    public void beginScan( ManagedRepositoryConfiguration repository, Date whenGathered, boolean executeOnEntireRepo )
+        throws ConsumerException
+    {
+        beginScan( repository, whenGathered );
+    }
+
     public void processFile( String path )
         throws ConsumerException
     {
         this.processCount++;
     }
 
+    public void processFile( String path, boolean executeOnEntireRepo )
+        throws Exception
+    {
+        processFile( path );
+    }
+
     public void completeScan()
     {
         /* do nothing */
     }
 
+    public void completeScan( boolean executeOnEntireRepo )
+    {
+       completeScan();
+    }
+
     public int getProcessCount()
     {
         return processCount;

Modified: archiva/branches/archiva-1.3.x/archiva-modules/archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/scanner/RepositoryContentConsumersTest.java
URL: http://svn.apache.org/viewvc/archiva/branches/archiva-1.3.x/archiva-modules/archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/scanner/RepositoryContentConsumersTest.java?rev=1041824&r1=1041823&r2=1041824&view=diff
==============================================================================
--- archiva/branches/archiva-1.3.x/archiva-modules/archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/scanner/RepositoryContentConsumersTest.java (original)
+++ archiva/branches/archiva-1.3.x/archiva-modules/archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/scanner/RepositoryContentConsumersTest.java Fri Dec  3 14:11:05 2010
@@ -241,16 +241,16 @@ public class RepositoryContentConsumersT
         Date startTime = new Date( System.currentTimeMillis() );
         startTime.setTime( 12345678 );
 
-        selectedKnownConsumer.beginScan( repo, startTime );
+        selectedKnownConsumer.beginScan( repo, startTime, false );
         selectedKnownConsumer.getExcludes();
         knownControl.setReturnValue( Collections.EMPTY_LIST );
         selectedKnownConsumer.getIncludes();
         knownControl.setReturnValue( Collections.singletonList( "**/*.txt" ) );
-        selectedKnownConsumer.processFile( _OS( "path/to/test-file.txt" ) );
+        selectedKnownConsumer.processFile( _OS( "path/to/test-file.txt" ), false );
         //        knownConsumer.completeScan();
         knownControl.replay();
 
-        selectedInvalidConsumer.beginScan( repo, startTime );
+        selectedInvalidConsumer.beginScan( repo, startTime, false );
         //        invalidConsumer.completeScan();
         invalidControl.replay();
 
@@ -264,7 +264,7 @@ public class RepositoryContentConsumersT
 
         File notIncludedTestFile = getTestFile( "target/test-repo/path/to/test-file.xml" );
 
-        selectedKnownConsumer.beginScan( repo, startTime );
+        selectedKnownConsumer.beginScan( repo, startTime, false );
         selectedKnownConsumer.getExcludes();
         knownControl.setReturnValue( Collections.EMPTY_LIST );
         selectedKnownConsumer.getIncludes();
@@ -272,8 +272,8 @@ public class RepositoryContentConsumersT
         //        knownConsumer.completeScan();
         knownControl.replay();
 
-        selectedInvalidConsumer.beginScan( repo, startTime );
-        selectedInvalidConsumer.processFile( _OS( "path/to/test-file.xml" ) );
+        selectedInvalidConsumer.beginScan( repo, startTime, false );
+        selectedInvalidConsumer.processFile( _OS( "path/to/test-file.xml" ), false );
         selectedInvalidConsumer.getId();
         invalidControl.setReturnValue( "invalid" );
         //        invalidConsumer.completeScan();
@@ -289,14 +289,14 @@ public class RepositoryContentConsumersT
 
         File excludedTestFile = getTestFile( "target/test-repo/path/to/test-file.txt" );
 
-        selectedKnownConsumer.beginScan( repo, startTime );
+        selectedKnownConsumer.beginScan( repo, startTime, false );
         selectedKnownConsumer.getExcludes();
         knownControl.setReturnValue( Collections.singletonList( "**/test-file.txt" ) );
         //        knownConsumer.completeScan();
         knownControl.replay();
 
-        selectedInvalidConsumer.beginScan( repo, startTime );
-        selectedInvalidConsumer.processFile( _OS( "path/to/test-file.txt" ) );
+        selectedInvalidConsumer.beginScan( repo, startTime, false );
+        selectedInvalidConsumer.processFile( _OS( "path/to/test-file.txt" ), false );
         selectedInvalidConsumer.getId();
         invalidControl.setReturnValue( "invalid" );
         //        invalidConsumer.completeScan();

Modified: archiva/branches/archiva-1.3.x/archiva-modules/archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/scanner/SampleKnownConsumer.java
URL: http://svn.apache.org/viewvc/archiva/branches/archiva-1.3.x/archiva-modules/archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/scanner/SampleKnownConsumer.java?rev=1041824&r1=1041823&r2=1041824&view=diff
==============================================================================
--- archiva/branches/archiva-1.3.x/archiva-modules/archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/scanner/SampleKnownConsumer.java (original)
+++ archiva/branches/archiva-1.3.x/archiva-modules/archiva-base/archiva-repository-layer/src/test/java/org/apache/maven/archiva/repository/scanner/SampleKnownConsumer.java Fri Dec  3 14:11:05 2010
@@ -50,11 +50,22 @@ public class SampleKnownConsumer
         /* nothing to do */
     }
 
+    public void beginScan( ManagedRepositoryConfiguration repository, Date whenGathered, boolean executeOnEntireRepo )
+        throws ConsumerException
+    {
+        beginScan( repository, whenGathered );
+    }
+
     public void completeScan()
     {
         /* nothing to do */
     }
 
+    public void completeScan( boolean executeOnEntireRepo )
+    {
+        completeScan();
+    }
+
     public List<String> getExcludes()
     {
         return null;
@@ -71,6 +82,12 @@ public class SampleKnownConsumer
         /* nothing to do */
     }
 
+    public void processFile( String path, boolean executeOnEntireRepo )
+        throws Exception
+    {
+        processFile( path );
+    }
+
     public String getDescription()
     {
         return "Sample Known Consumer";

Modified: archiva/branches/archiva-1.3.x/archiva-modules/archiva-scheduled/src/main/java/org/apache/maven/archiva/scheduled/executors/ArchivaIndexingTaskExecutor.java
URL: http://svn.apache.org/viewvc/archiva/branches/archiva-1.3.x/archiva-modules/archiva-scheduled/src/main/java/org/apache/maven/archiva/scheduled/executors/ArchivaIndexingTaskExecutor.java?rev=1041824&r1=1041823&r2=1041824&view=diff
==============================================================================
--- archiva/branches/archiva-1.3.x/archiva-modules/archiva-scheduled/src/main/java/org/apache/maven/archiva/scheduled/executors/ArchivaIndexingTaskExecutor.java (original)
+++ archiva/branches/archiva-1.3.x/archiva-modules/archiva-scheduled/src/main/java/org/apache/maven/archiva/scheduled/executors/ArchivaIndexingTaskExecutor.java Fri Dec  3 14:11:05 2010
@@ -21,11 +21,13 @@ package org.apache.maven.archiva.schedul
 
 import java.io.File;
 import java.io.IOException;
+import java.util.List;
 
 import org.apache.lucene.document.Document;
 import org.apache.lucene.index.IndexReader;
 import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration;
 import org.apache.maven.archiva.scheduled.tasks.ArtifactIndexingTask;
+import org.apache.maven.archiva.scheduled.tasks.TaskCreator;
 import org.codehaus.plexus.personality.plexus.lifecycle.phase.Initializable;
 import org.codehaus.plexus.personality.plexus.lifecycle.phase.InitializationException;
 import org.codehaus.plexus.taskqueue.Task;
@@ -38,7 +40,9 @@ import org.sonatype.nexus.index.Artifact
 import org.sonatype.nexus.index.ArtifactInfo;
 import org.sonatype.nexus.index.DefaultArtifactContextProducer;
 import org.sonatype.nexus.index.IndexerEngine;
+import org.sonatype.nexus.index.context.IndexCreator;
 import org.sonatype.nexus.index.context.IndexingContext;
+import org.sonatype.nexus.index.context.UnsupportedExistingLuceneIndexException;
 import org.sonatype.nexus.index.packer.IndexPacker;
 import org.sonatype.nexus.index.packer.IndexPackingRequest;
 
@@ -78,44 +82,35 @@ public class ArchivaIndexingTaskExecutor
             ManagedRepositoryConfiguration repository = indexingTask.getRepository();
             IndexingContext context = indexingTask.getContext();
 
-            if ( ArtifactIndexingTask.Action.FINISH.equals( indexingTask.getAction() ) )
+            if ( ArtifactIndexingTask.Action.FINISH.equals( indexingTask.getAction() )
+                && indexingTask.isExecuteOnEntireRepo() )
             {
-                try
-                {
-                    context.optimize();
-
-                    File managedRepository = new File( repository.getLocation() );
-                    final File indexLocation = new File( managedRepository, ".index" );
-                    IndexPackingRequest request = new IndexPackingRequest( context, indexLocation );
-                    indexPacker.packIndex( request );
-
-                    log.debug( "Index file packaged at '" + indexLocation.getPath() + "'." );
-                }
-                catch ( IOException e )
-                {
-                    log.error( "Error occurred while executing indexing task '" + indexingTask + "': " + e.getMessage() );
-                    throw new TaskExecutionException( "Error occurred while executing indexing task '" + indexingTask
-                        + "'", e );
-                }
-                finally
+                log.debug( "Finishing indexing task on repo: " + repository.getId() );
+                finishIndexingTask( indexingTask, repository, context );
+            }
+            else
+            {
+                // create context if not a repo scan request
+                if( !indexingTask.isExecuteOnEntireRepo() )
                 {
-                    if ( context != null )
+                    try
                     {
-                        try
-                        {
-                            context.close( false );
-                        }
-                        catch ( IOException e )
-                        {
-                            log.error( "Error occurred while closing context: " + e.getMessage() );
-                            throw new TaskExecutionException( "Error occurred while closing context: " + e.getMessage() );
-                        }
+                        log.debug( "Creating indexing context on resource: " + indexingTask.getResourceFile().getPath() );
+                        context = TaskCreator.createContext( repository );
+                    }
+                    catch( IOException e )
+                    {
+                        log.error( "Error occurred while creating context: " + e.getMessage() );
+                        throw new TaskExecutionException( "Error occurred while creating context: " + e.getMessage() );
+                    }
+                    catch( UnsupportedExistingLuceneIndexException e )
+                    {
+                        log.error( "Error occurred while creating context: " + e.getMessage() );
+                        throw new TaskExecutionException( "Error occurred while creating context: " + e.getMessage() );    
                     }
                 }
-            }
-            else
-            {
-                if ( context.getIndexDirectory() == null )
+
+                if ( context == null || context.getIndexDirectory() == null )
                 {
                     throw new TaskExecutionException( "Trying to index an artifact but the context is already closed" );
                 }
@@ -157,6 +152,13 @@ public class ArchivaIndexingTaskExecutor
                                 indexerEngine.update( context, ac );
                                 context.getIndexWriter().commit();
                             }
+
+                            // close the context if not a repo scan request
+                            if( !indexingTask.isExecuteOnEntireRepo() )
+                            {
+                                log.debug( "Finishing indexing task on resource file : " + indexingTask.getResourceFile().getPath() );
+                                finishIndexingTask( indexingTask, repository, context );   
+                            }
                         }
                         else
                         {
@@ -176,6 +178,44 @@ public class ArchivaIndexingTaskExecutor
         }
     }
 
+    private void finishIndexingTask( ArtifactIndexingTask indexingTask, ManagedRepositoryConfiguration repository,
+                                     IndexingContext context )
+        throws TaskExecutionException
+    {
+        try
+        {
+            context.optimize();
+
+            File managedRepository = new File( repository.getLocation() );
+            final File indexLocation = new File( managedRepository, ".index" );
+            IndexPackingRequest request = new IndexPackingRequest( context, indexLocation );
+            indexPacker.packIndex( request );
+
+            log.debug( "Index file packaged at '" + indexLocation.getPath() + "'." );
+        }
+        catch ( IOException e )
+        {
+            log.error( "Error occurred while executing indexing task '" + indexingTask + "': " + e.getMessage() );
+            throw new TaskExecutionException( "Error occurred while executing indexing task '" + indexingTask
+                + "'", e );
+        }
+        finally
+        {
+            if ( context != null )
+            {
+                try
+                {
+                    context.close( false );
+                }
+                catch ( IOException e )
+                {
+                    log.error( "Error occurred while closing context: " + e.getMessage() );
+                    throw new TaskExecutionException( "Error occurred while closing context: " + e.getMessage() );
+                }
+            }
+        }
+    }
+
     public void initialize()
         throws InitializationException
     {

Modified: archiva/branches/archiva-1.3.x/archiva-modules/archiva-scheduled/src/main/java/org/apache/maven/archiva/scheduled/tasks/ArtifactIndexingTask.java
URL: http://svn.apache.org/viewvc/archiva/branches/archiva-1.3.x/archiva-modules/archiva-scheduled/src/main/java/org/apache/maven/archiva/scheduled/tasks/ArtifactIndexingTask.java?rev=1041824&r1=1041823&r2=1041824&view=diff
==============================================================================
--- archiva/branches/archiva-1.3.x/archiva-modules/archiva-scheduled/src/main/java/org/apache/maven/archiva/scheduled/tasks/ArtifactIndexingTask.java (original)
+++ archiva/branches/archiva-1.3.x/archiva-modules/archiva-scheduled/src/main/java/org/apache/maven/archiva/scheduled/tasks/ArtifactIndexingTask.java Fri Dec  3 14:11:05 2010
@@ -41,6 +41,8 @@ public class ArtifactIndexingTask
 
     private final IndexingContext context;
 
+    private boolean executeOnEntireRepo = true;
+
     public ArtifactIndexingTask( ManagedRepositoryConfiguration repository, File resourceFile, Action action,
                                  IndexingContext context )
     {
@@ -50,6 +52,23 @@ public class ArtifactIndexingTask
         this.context = context;
     }
 
+    public ArtifactIndexingTask( ManagedRepositoryConfiguration repository, File resourceFile, Action action,
+                                 IndexingContext context, boolean executeOnEntireRepo )
+    {
+        this( repository, resourceFile, action, context );
+        this.executeOnEntireRepo = executeOnEntireRepo;
+    }
+
+    public boolean isExecuteOnEntireRepo()
+    {
+        return executeOnEntireRepo;
+    }
+
+    public void setExecuteOnEntireRepo( boolean executeOnEntireRepo )
+    {
+        this.executeOnEntireRepo = executeOnEntireRepo;
+    }
+
     public long getMaxExecutionTime()
     {
         return 0;

Added: archiva/branches/archiva-1.3.x/archiva-modules/archiva-scheduled/src/main/resources/META-INF/spring-context.xml
URL: http://svn.apache.org/viewvc/archiva/branches/archiva-1.3.x/archiva-modules/archiva-scheduled/src/main/resources/META-INF/spring-context.xml?rev=1041824&view=auto
==============================================================================
--- archiva/branches/archiva-1.3.x/archiva-modules/archiva-scheduled/src/main/resources/META-INF/spring-context.xml (added)
+++ archiva/branches/archiva-1.3.x/archiva-modules/archiva-scheduled/src/main/resources/META-INF/spring-context.xml Fri Dec  3 14:11:05 2010
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
+
+    <bean id="logger" class="org.apache.maven.archiva.common.utils.Slf4JPlexusLogger">
+      <constructor-arg type="java.lang.Class"><value>org.sonatype.nexus.index.DefaultNexusIndexer</value></constructor-arg>
+    </bean>
+</beans>
\ No newline at end of file

Propchange: archiva/branches/archiva-1.3.x/archiva-modules/archiva-scheduled/src/main/resources/META-INF/spring-context.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: archiva/branches/archiva-1.3.x/archiva-modules/archiva-scheduled/src/test/java/org/apache/maven/archiva/scheduled/executors/ArchivaIndexingTaskExecutorTest.java
URL: http://svn.apache.org/viewvc/archiva/branches/archiva-1.3.x/archiva-modules/archiva-scheduled/src/test/java/org/apache/maven/archiva/scheduled/executors/ArchivaIndexingTaskExecutorTest.java?rev=1041824&r1=1041823&r2=1041824&view=diff
==============================================================================
--- archiva/branches/archiva-1.3.x/archiva-modules/archiva-scheduled/src/test/java/org/apache/maven/archiva/scheduled/executors/ArchivaIndexingTaskExecutorTest.java (original)
+++ archiva/branches/archiva-1.3.x/archiva-modules/archiva-scheduled/src/test/java/org/apache/maven/archiva/scheduled/executors/ArchivaIndexingTaskExecutorTest.java Fri Dec  3 14:11:05 2010
@@ -26,6 +26,8 @@ import java.io.FileInputStream;
 import java.io.FileNotFoundException;
 import java.io.FileOutputStream;
 import java.io.IOException;
+import java.util.Collections;
+import java.util.List;
 import java.util.Set;
 import java.util.zip.ZipEntry;
 import java.util.zip.ZipInputStream;
@@ -45,6 +47,7 @@ import org.sonatype.nexus.index.FlatSear
 import org.sonatype.nexus.index.FlatSearchResponse;
 import org.sonatype.nexus.index.IndexerEngine;
 import org.sonatype.nexus.index.NexusIndexer;
+import org.sonatype.nexus.index.context.IndexCreator;
 import org.sonatype.nexus.index.context.IndexingContext;
 import org.sonatype.nexus.index.packer.IndexPacker;
 

Modified: archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/main/resources/META-INF/plexus/application.xml
URL: http://svn.apache.org/viewvc/archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/main/resources/META-INF/plexus/application.xml?rev=1041824&r1=1041823&r2=1041824&view=diff
==============================================================================
--- archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/main/resources/META-INF/plexus/application.xml (original)
+++ archiva/branches/archiva-1.3.x/archiva-modules/archiva-web/archiva-webapp/src/main/resources/META-INF/plexus/application.xml Fri Dec  3 14:11:05 2010
@@ -188,6 +188,12 @@
       <lifecycle-handler>basic</lifecycle-handler>
     </component>
 
+    <component>
+      <role>org.codehaus.plexus.logging.Logger</role>
+      <implementation>org.apache.maven.archiva.common.utils.Slf4JPlexusLogger</implementation>
+      <role-hint>logger</role-hint>
+    </component>
+
     <!-- 
    PLXREDBACK-81 bad role hint, redefining here until redback alpha-2 is released.
     -->

Modified: archiva/branches/archiva-1.3.x/pom.xml
URL: http://svn.apache.org/viewvc/archiva/branches/archiva-1.3.x/pom.xml?rev=1041824&r1=1041823&r2=1041824&view=diff
==============================================================================
--- archiva/branches/archiva-1.3.x/pom.xml (original)
+++ archiva/branches/archiva-1.3.x/pom.xml Fri Dec  3 14:11:05 2010
@@ -557,12 +557,12 @@
       <dependency>
         <groupId>org.apache.lucene</groupId>
         <artifactId>lucene-core</artifactId>
-        <version>2.4.0</version>
+        <version>2.4.1</version>
       </dependency>
       <dependency>
         <groupId>org.apache.lucene</groupId>
         <artifactId>lucene-queries</artifactId>
-        <version>2.4.0</version>
+        <version>2.4.1</version>
       </dependency>
       <dependency>
         <groupId>javax.mail</groupId>