You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@archiva.apache.org by ol...@apache.org on 2012/01/16 23:57:04 UTC

svn commit: r1232213 - in /archiva/trunk/archiva-modules/archiva-base: archiva-consumers/archiva-lucene-consumers/src/main/java/org/apache/archiva/consumers/lucene/ archiva-repository-admin/archiva-repository-admin-default/src/main/java/org/apache/arch...

Author: olamy
Date: Mon Jan 16 22:57:03 2012
New Revision: 1232213

URL: http://svn.apache.org/viewvc?rev=1232213&view=rev
Log:
 prevent NPE on initial scan at repository creation

Modified:
    archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-lucene-consumers/src/main/java/org/apache/archiva/consumers/lucene/NexusIndexerConsumer.java
    archiva/trunk/archiva-modules/archiva-base/archiva-repository-admin/archiva-repository-admin-default/src/main/java/org/apache/archiva/admin/repository/managed/DefaultManagedRepositoryAdmin.java

Modified: archiva/trunk/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/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-lucene-consumers/src/main/java/org/apache/archiva/consumers/lucene/NexusIndexerConsumer.java?rev=1232213&r1=1232212&r2=1232213&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-lucene-consumers/src/main/java/org/apache/archiva/consumers/lucene/NexusIndexerConsumer.java (original)
+++ archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-lucene-consumers/src/main/java/org/apache/archiva/consumers/lucene/NexusIndexerConsumer.java Mon Jan 16 22:57:03 2012
@@ -72,7 +72,7 @@ public class NexusIndexerConsumer
 
     private ArchivaTaskScheduler<ArtifactIndexingTask> scheduler;
 
-    private IndexingContext context;
+    private IndexingContext indexingContext;
 
     private NexusIndexer nexusIndexer;
 
@@ -124,7 +124,7 @@ public class NexusIndexerConsumer
         try
         {
             log.info( "Creating indexing context for repo : {}", repository.getId() );
-            context = managedRepositoryAdmin.createIndexContext( repository );
+            indexingContext = managedRepositoryAdmin.createIndexContext( repository );
         }
         catch ( RepositoryAdminException e )
         {
@@ -152,7 +152,7 @@ public class NexusIndexerConsumer
         File artifactFile = new File( managedRepository, path );
 
         ArtifactIndexingTask task =
-            new ArtifactIndexingTask( repository, artifactFile, ArtifactIndexingTask.Action.ADD, context );
+            new ArtifactIndexingTask( repository, artifactFile, ArtifactIndexingTask.Action.ADD, getIndexingContext() );
         try
         {
             log.debug( "Queueing indexing task '{}' to add or update the artifact in the index.", task );
@@ -177,7 +177,8 @@ public class NexusIndexerConsumer
 
             // specify in indexing task that this is not a repo scan request!
             ArtifactIndexingTask task =
-                new ArtifactIndexingTask( repository, artifactFile, ArtifactIndexingTask.Action.ADD, context, false );
+                new ArtifactIndexingTask( repository, artifactFile, ArtifactIndexingTask.Action.ADD,
+                                          getIndexingContext(), false );
             // only update index we don't need to scan the full repo here
             task.setOnlyUpdate( true );
             try
@@ -194,6 +195,19 @@ public class NexusIndexerConsumer
 
     public void completeScan()
     {
+        IndexingContext context = this.indexingContext;
+        if ( context == null )
+        {
+            try
+            {
+                context = getIndexingContext();
+            }
+            catch ( ConsumerException e )
+            {
+                log.warn( "failed to get an IndexingContext:{}", e.getMessage() );
+                return;
+            }
+        }
         ArtifactIndexingTask task =
             new ArtifactIndexingTask( repository, null, ArtifactIndexingTask.Action.FINISH, context );
         try
@@ -205,7 +219,6 @@ public class NexusIndexerConsumer
         {
             log.error( "Error queueing task: " + task + ": " + e.getMessage(), e );
         }
-        context = null;
     }
 
     public void completeScan( boolean executeOnEntireRepo )
@@ -260,4 +273,23 @@ public class NexusIndexerConsumer
     {
         return includes;
     }
+
+
+    private IndexingContext getIndexingContext()
+        throws ConsumerException
+    {
+
+        if ( this.indexingContext == null )
+        {
+            try
+            {
+                indexingContext = managedRepositoryAdmin.createIndexContext( repository );
+            }
+            catch ( RepositoryAdminException e )
+            {
+                throw new ConsumerException( e.getMessage(), e );
+            }
+        }
+        return indexingContext;
+    }
 }

Modified: archiva/trunk/archiva-modules/archiva-base/archiva-repository-admin/archiva-repository-admin-default/src/main/java/org/apache/archiva/admin/repository/managed/DefaultManagedRepositoryAdmin.java
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-base/archiva-repository-admin/archiva-repository-admin-default/src/main/java/org/apache/archiva/admin/repository/managed/DefaultManagedRepositoryAdmin.java?rev=1232213&r1=1232212&r2=1232213&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-base/archiva-repository-admin/archiva-repository-admin-default/src/main/java/org/apache/archiva/admin/repository/managed/DefaultManagedRepositoryAdmin.java (original)
+++ archiva/trunk/archiva-modules/archiva-base/archiva-repository-admin/archiva-repository-admin-default/src/main/java/org/apache/archiva/admin/repository/managed/DefaultManagedRepositoryAdmin.java Mon Jan 16 22:57:03 2012
@@ -576,12 +576,17 @@ public class DefaultManagedRepositoryAdm
                 indexDirectory.mkdirs();
             }
 
-            context =
-                indexer.addIndexingContext( repository.getId(), repository.getId(), managedRepository, indexDirectory,
-                                            managedRepository.toURI().toURL().toExternalForm(),
-                                            indexDirectory.toURI().toURL().toString(), indexCreators );
+            context = indexer.getIndexingContexts().get( repository.getId() );
 
-            context.setSearchable( repository.isScanned() );
+            if ( context == null )
+            {
+                context = indexer.addIndexingContext( repository.getId(), repository.getId(), managedRepository,
+                                                      indexDirectory,
+                                                      managedRepository.toURI().toURL().toExternalForm(),
+                                                      indexDirectory.toURI().toURL().toString(), indexCreators );
+
+                context.setSearchable( repository.isScanned() );
+            }
             return context;
         }
         catch ( MalformedURLException e )