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 )