Author: olamy
Date: Mon Jun 27 07:45:16 2011
New Revision: 1140035
URL: http://svn.apache.org/viewvc?rev=1140035&view=rev
Log:
only pass tru NexusIndexer to create IndexingContext, this entry point take
care of lucene locks : still some changes to do in junit to prevent lock
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-consumers/archiva-lucene-consumers/src/main/resources/META-INF/spring-context.xml
archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-lucene-consumers/src/test/java/org/apache/archiva/consumers/lucene/NexusIndexerConsumerTest.java
archiva/trunk/archiva-modules/archiva-scheduler/archiva-scheduler-indexing/src/main/java/org/apache/archiva/scheduler/indexing/ArchivaIndexingTaskExecutor.java
archiva/trunk/archiva-modules/archiva-scheduler/archiva-scheduler-indexing/src/main/java/org/apache/archiva/scheduler/indexing/ArtifactIndexingTask.java
archiva/trunk/archiva-modules/archiva-scheduler/archiva-scheduler-indexing/src/test/java/org/apache/archiva/scheduler/indexing/ArchivaIndexingTaskExecutorTest.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=1140035&r1=1140034&r2=1140035&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 Jun 27 07:45:16 2011
@@ -26,6 +26,8 @@ import java.util.Collections;
import java.util.Date;
import java.util.List;
+import org.apache.archiva.common.plexusbridge.PlexusSisuBridge;
+import org.apache.archiva.common.plexusbridge.PlexusSisuBridgeException;
import org.apache.archiva.scheduler.ArchivaTaskScheduler;
import org.apache.archiva.scheduler.indexing.ArtifactIndexingTask;
import org.apache.maven.archiva.configuration.ArchivaConfiguration;
@@ -35,6 +37,7 @@ import org.apache.maven.archiva.configur
import org.apache.maven.archiva.consumers.AbstractMonitoredConsumer;
import org.apache.maven.archiva.consumers.ConsumerException;
import org.apache.maven.archiva.consumers.KnownRepositoryContentConsumer;
+import org.apache.maven.index.NexusIndexer;
import org.apache.maven.index.context.IndexingContext;
import org.apache.maven.index.context.UnsupportedExistingLuceneIndexException;
import org.codehaus.plexus.personality.plexus.lifecycle.phase.Initializable;
@@ -64,16 +67,20 @@ public class NexusIndexerConsumer
private IndexingContext context;
+ private NexusIndexer nexusIndexer;
+
private List<String> includes = new ArrayList<String>();
private ManagedRepositoryConfiguration repository;
public NexusIndexerConsumer( ArchivaTaskScheduler<ArtifactIndexingTask>
scheduler,
- ArchivaConfiguration configuration, FileTypes
filetypes )
+ ArchivaConfiguration configuration, FileTypes
filetypes, PlexusSisuBridge plexusSisuBridge )
+ throws PlexusSisuBridgeException
{
this.configuration = configuration;
this.filetypes = filetypes;
this.scheduler = scheduler;
+ this.nexusIndexer = plexusSisuBridge.lookup( NexusIndexer.class );
}
public String getDescription()
@@ -100,7 +107,7 @@ public class NexusIndexerConsumer
try
{
log.info( "Creating indexing context for repo : " +
repository.getId() );
- context = ArtifactIndexingTask.createContext( repository );
+ context = ArtifactIndexingTask.createContext( repository,
nexusIndexer );
}
catch ( IOException e )
{
Modified:
archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-lucene-consumers/src/main/resources/META-INF/spring-context.xml
URL:
http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-lucene-consumers/src/main/resources/META-INF/spring-context.xml?rev=1140035&r1=1140034&r2=1140035&view=diff
==============================================================================
---
archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-lucene-consumers/src/main/resources/META-INF/spring-context.xml
(original)
+++
archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-lucene-consumers/src/main/resources/META-INF/spring-context.xml
Mon Jun 27 07:45:16 2011
@@ -28,9 +28,10 @@
default-lazy-init="true">
<bean id="indexerConsumer"
class="org.apache.archiva.consumers.lucene.NexusIndexerConsumer"
lazy-init="true">
- <constructor-arg ref="archivaTaskScheduler#indexing"/>
- <constructor-arg ref="archivaConfiguration"/>
- <constructor-arg ref="fileTypes"/>
+ <constructor-arg ref="archivaTaskScheduler#indexing"/>
+ <constructor-arg ref="archivaConfiguration"/>
+ <constructor-arg ref="fileTypes"/>
+ <constructor-arg ref="plexusSisuBridge"/>
</bean>
<bean id="logger"
class="org.apache.maven.archiva.common.utils.Slf4JPlexusLogger">
Modified:
archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-lucene-consumers/src/test/java/org/apache/archiva/consumers/lucene/NexusIndexerConsumerTest.java
URL:
http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-lucene-consumers/src/test/java/org/apache/archiva/consumers/lucene/NexusIndexerConsumerTest.java?rev=1140035&r1=1140034&r2=1140035&view=diff
==============================================================================
---
archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-lucene-consumers/src/test/java/org/apache/archiva/consumers/lucene/NexusIndexerConsumerTest.java
(original)
+++
archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-lucene-consumers/src/test/java/org/apache/archiva/consumers/lucene/NexusIndexerConsumerTest.java
Mon Jun 27 07:45:16 2011
@@ -28,6 +28,7 @@ import java.util.List;
import java.util.Set;
import junit.framework.TestCase;
+import org.apache.archiva.common.plexusbridge.PlexusSisuBridge;
import org.apache.archiva.scheduler.ArchivaTaskScheduler;
import org.apache.archiva.scheduler.indexing.ArtifactIndexingTask;
import org.apache.commons.io.FileUtils;
@@ -35,6 +36,7 @@ import org.apache.maven.archiva.configur
import org.apache.maven.archiva.configuration.FileTypes;
import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration;
import org.apache.maven.archiva.consumers.KnownRepositoryContentConsumer;
+import org.apache.maven.index.NexusIndexer;
import org.codehaus.plexus.personality.plexus.lifecycle.phase.Initializable;
import org.codehaus.plexus.taskqueue.TaskQueueException;
import org.junit.After;
@@ -94,6 +96,9 @@ public class NexusIndexerConsumerTest
@Inject
private ApplicationContext applicationContext;
+ @Inject
+ private PlexusSisuBridge plexusSisuBridge;
+
@Override
@Before
@@ -108,7 +113,7 @@ public class NexusIndexerConsumerTest
FileTypes filetypes = applicationContext.getBean( FileTypes.class );
- nexusIndexerConsumer = new NexusIndexerConsumer( scheduler,
configuration, filetypes );
+ nexusIndexerConsumer = new NexusIndexerConsumer( scheduler,
configuration, filetypes, plexusSisuBridge );
// initialize to set the file types to be processed
( (Initializable) nexusIndexerConsumer ).initialize();
Modified:
archiva/trunk/archiva-modules/archiva-scheduler/archiva-scheduler-indexing/src/main/java/org/apache/archiva/scheduler/indexing/ArchivaIndexingTaskExecutor.java
URL:
http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-scheduler/archiva-scheduler-indexing/src/main/java/org/apache/archiva/scheduler/indexing/ArchivaIndexingTaskExecutor.java?rev=1140035&r1=1140034&r2=1140035&view=diff
==============================================================================
---
archiva/trunk/archiva-modules/archiva-scheduler/archiva-scheduler-indexing/src/main/java/org/apache/archiva/scheduler/indexing/ArchivaIndexingTaskExecutor.java
(original)
+++
archiva/trunk/archiva-modules/archiva-scheduler/archiva-scheduler-indexing/src/main/java/org/apache/archiva/scheduler/indexing/ArchivaIndexingTaskExecutor.java
Mon Jun 27 07:45:16 2011
@@ -31,6 +31,7 @@ import org.apache.maven.index.ArtifactCo
import org.apache.maven.index.ArtifactInfo;
import org.apache.maven.index.DefaultArtifactContextProducer;
import org.apache.maven.index.IndexerEngine;
+import org.apache.maven.index.NexusIndexer;
import org.apache.maven.index.artifact.IllegalArtifactCoordinateException;
import org.apache.maven.index.context.IndexingContext;
import org.apache.maven.index.context.UnsupportedExistingLuceneIndexException;
@@ -77,6 +78,8 @@ public class ArchivaIndexingTaskExecutor
@Inject
private PlexusSisuBridge plexusSisuBridge;
+ private NexusIndexer nexusIndexer;
+
@PostConstruct
public void initialize()
throws PlexusSisuBridgeException
@@ -115,7 +118,7 @@ public class ArchivaIndexingTaskExecutor
{
log.debug(
"Creating indexing context on resource: {}",
indexingTask.getResourceFile().getPath() );
- context = ArtifactIndexingTask.createContext(
repository );
+ context = ArtifactIndexingTask.createContext(
repository, nexusIndexer );
}
catch ( IOException e )
{
Modified:
archiva/trunk/archiva-modules/archiva-scheduler/archiva-scheduler-indexing/src/main/java/org/apache/archiva/scheduler/indexing/ArtifactIndexingTask.java
URL:
http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-scheduler/archiva-scheduler-indexing/src/main/java/org/apache/archiva/scheduler/indexing/ArtifactIndexingTask.java?rev=1140035&r1=1140034&r2=1140035&view=diff
==============================================================================
---
archiva/trunk/archiva-modules/archiva-scheduler/archiva-scheduler-indexing/src/main/java/org/apache/archiva/scheduler/indexing/ArtifactIndexingTask.java
(original)
+++
archiva/trunk/archiva-modules/archiva-scheduler/archiva-scheduler-indexing/src/main/java/org/apache/archiva/scheduler/indexing/ArtifactIndexingTask.java
Mon Jun 27 07:45:16 2011
@@ -19,22 +19,25 @@ package org.apache.archiva.scheduler.ind
* under the License.
*/
-import java.io.File;
-import java.io.IOException;
-
import org.apache.maven.archiva.common.utils.ArchivaNexusIndexerUtil;
import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration;
-import org.apache.maven.index.context.DefaultIndexingContext;
+import org.apache.maven.index.NexusIndexer;
import org.apache.maven.index.context.IndexingContext;
import org.apache.maven.index.context.UnsupportedExistingLuceneIndexException;
import org.codehaus.plexus.taskqueue.Task;
+import org.slf4j.LoggerFactory;
+
+import java.io.File;
+import java.io.IOException;
public class ArtifactIndexingTask
implements Task
{
public enum Action
{
- ADD, DELETE, FINISH
+ ADD,
+ DELETE,
+ FINISH
}
private final ManagedRepositoryConfiguration repository;
@@ -120,27 +123,41 @@ public class ArtifactIndexingTask
public boolean equals( Object obj )
{
if ( this == obj )
+ {
return true;
+ }
if ( obj == null )
+ {
return false;
+ }
if ( getClass() != obj.getClass() )
+ {
return false;
+ }
ArtifactIndexingTask other = (ArtifactIndexingTask) obj;
if ( !action.equals( other.action ) )
+ {
return false;
+ }
if ( !repository.getId().equals( other.repository.getId() ) )
+ {
return false;
+ }
if ( resourceFile == null )
{
if ( other.resourceFile != null )
+ {
return false;
+ }
}
else if ( !resourceFile.equals( other.resourceFile ) )
+ {
return false;
+ }
return true;
}
- public static IndexingContext createContext(
ManagedRepositoryConfiguration repository )
+ public static IndexingContext createContext(
ManagedRepositoryConfiguration repository, NexusIndexer indexer )
throws IOException, UnsupportedExistingLuceneIndexException
{
String indexDir = repository.getIndexDir();
@@ -156,9 +173,20 @@ public class ArtifactIndexingTask
indexDirectory = new File( managedRepository, ".indexer" );
}
+ if ( indexer.getIndexingContexts().containsKey( repository.getId() ) )
+ {
+ LoggerFactory.getLogger( ArtifactIndexingTask.class ).warn(
+ "skip adding repository with id {} as already exists",
repository.getId() );
+ }
+
IndexingContext context =
- new DefaultIndexingContext( repository.getId(),
repository.getId(), managedRepository, indexDirectory,
- null, null,
ArchivaNexusIndexerUtil.FULL_INDEX, false );
+ indexer.addIndexingContext( repository.getId(),
repository.getId(), managedRepository, indexDirectory,
+
managedRepository.toURI().toURL().toString(),
+
indexDirectory.toURI().toURL().toString(), ArchivaNexusIndexerUtil.FULL_INDEX );
+
+ //IndexingContext context =
+ // new DefaultIndexingContext( repository.getId(),
repository.getId(), managedRepository, indexDirectory,
+ // null, null,
ArchivaNexusIndexerUtil.FULL_INDEX, false );
context.setSearchable( repository.isScanned() );
return context;
}
Modified:
archiva/trunk/archiva-modules/archiva-scheduler/archiva-scheduler-indexing/src/test/java/org/apache/archiva/scheduler/indexing/ArchivaIndexingTaskExecutorTest.java
URL:
http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-scheduler/archiva-scheduler-indexing/src/test/java/org/apache/archiva/scheduler/indexing/ArchivaIndexingTaskExecutorTest.java?rev=1140035&r1=1140034&r2=1140035&view=diff
==============================================================================
---
archiva/trunk/archiva-modules/archiva-scheduler/archiva-scheduler-indexing/src/test/java/org/apache/archiva/scheduler/indexing/ArchivaIndexingTaskExecutorTest.java
(original)
+++
archiva/trunk/archiva-modules/archiva-scheduler/archiva-scheduler-indexing/src/test/java/org/apache/archiva/scheduler/indexing/ArchivaIndexingTaskExecutorTest.java
Mon Jun 27 07:45:16 2011
@@ -81,6 +81,8 @@ public class ArchivaIndexingTaskExecutor
private IndexingContext context;
+ private NexusIndexer nexusIndexer;
+
@Inject
PlexusSisuBridge plexusSisuBridge;
@@ -113,7 +115,11 @@ public class ArchivaIndexingTaskExecutor
indexingExecutor.setIndexerEngine( indexerEngine );
indexingExecutor.setIndexPacker( indexPacker );
- context = ArtifactIndexingTask.createContext( repositoryConfig );
+ nexusIndexer = plexusSisuBridge.lookup( NexusIndexer.class );
+
+ context = ArtifactIndexingTask.createContext( repositoryConfig,
nexusIndexer );
+
+
}
@After
@@ -245,7 +251,7 @@ public class ArchivaIndexingTaskExecutor
searcher.close();
- context = ArtifactIndexingTask.createContext( repositoryConfig );
+ context = ArtifactIndexingTask.createContext( repositoryConfig,
nexusIndexer );
// remove added artifact from index
task = new ArtifactIndexingTask( repositoryConfig, artifactFile,
ArtifactIndexingTask.Action.DELETE, context );