Author: oching
Date: Thu Feb 19 11:24:12 2009
New Revision: 745821

URL: http://svn.apache.org/viewvc?rev=745821&view=rev
Log:
[MRM-1079]
o update impl of index cleanup consumer
o moved DatabaseConsumers and LuceneCleanupRemoveIndexedConsumer to spring
o removed old classes and test stubs

Added:
    
archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-lucene-consumers/src/main/java/org/apache/archiva/consumers/lucene/LuceneCleanupRemoveIndexedConsumer.java
    
archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-lucene-consumers/src/test/java/org/apache/archiva/consumers/lucene/LuceneCleanupRemoveIndexedConsumerTest.java
    archiva/trunk/archiva-modules/archiva-database/src/main/resources/META-INF/
    
archiva/trunk/archiva-modules/archiva-database/src/main/resources/META-INF/spring-context.xml
Removed:
    
archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-lucene-consumers/src/main/java/org/apache/maven/archiva/consumers/lucene/LuceneCleanupRemoveIndexedConsumer.java
    
archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-lucene-consumers/src/test/java/org/apache/maven/archiva/consumers/lucene/
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-database/src/main/java/org/apache/maven/archiva/database/updater/DatabaseConsumers.java

Added: 
archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-lucene-consumers/src/main/java/org/apache/archiva/consumers/lucene/LuceneCleanupRemoveIndexedConsumer.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/LuceneCleanupRemoveIndexedConsumer.java?rev=745821&view=auto
==============================================================================
--- 
archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-lucene-consumers/src/main/java/org/apache/archiva/consumers/lucene/LuceneCleanupRemoveIndexedConsumer.java
 (added)
+++ 
archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-lucene-consumers/src/main/java/org/apache/archiva/consumers/lucene/LuceneCleanupRemoveIndexedConsumer.java
 Thu Feb 19 11:24:12 2009
@@ -0,0 +1,212 @@
+package org.apache.archiva.consumers.lucene;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import org.apache.lucene.document.Document;
+import org.apache.lucene.document.Field;
+import org.apache.lucene.index.IndexWriter;
+import org.apache.lucene.index.Term;
+import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration;
+import org.apache.maven.archiva.consumers.AbstractMonitoredConsumer;
+import org.apache.maven.archiva.consumers.ConsumerException;
+import org.apache.maven.archiva.database.updater.DatabaseCleanupConsumer;
+import org.apache.maven.archiva.model.ArchivaArtifact;
+import org.apache.maven.archiva.repository.ManagedRepositoryContent;
+import org.apache.maven.archiva.repository.RepositoryContentFactory;
+import org.apache.maven.archiva.repository.RepositoryException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.sonatype.nexus.index.ArtifactContext;
+import org.sonatype.nexus.index.ArtifactContextProducer;
+import org.sonatype.nexus.index.ArtifactInfo;
+import org.sonatype.nexus.index.DefaultArtifactContextProducer;
+import org.sonatype.nexus.index.NexusIndexer;
+import org.sonatype.nexus.index.context.IndexingContext;
+import 
org.sonatype.nexus.index.context.UnsupportedExistingLuceneIndexException;
+import org.sonatype.nexus.index.creator.AbstractIndexCreator;
+import org.sonatype.nexus.index.creator.IndexerEngine;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.List;
+
+/**
+ * LuceneCleanupRemoveIndexedConsumer
+ * 
+ * @version $Id$
+ */
+public class LuceneCleanupRemoveIndexedConsumer
+    extends AbstractMonitoredConsumer
+    implements DatabaseCleanupConsumer
+{
+    private static final Logger log = LoggerFactory.getLogger( 
LuceneCleanupRemoveIndexedConsumer.class );
+
+    private RepositoryContentFactory repoFactory;
+
+    private NexusIndexer indexer;
+
+    private ArtifactContextProducer artifactContextProducer;
+
+    private IndexerEngine indexerEngine;
+
+    private IndexingContext context;
+
+    public LuceneCleanupRemoveIndexedConsumer( RepositoryContentFactory 
repoFactory, NexusIndexer indexer,
+                                               IndexerEngine indexerEngine )
+    {
+        this.repoFactory = repoFactory;
+        this.indexer = indexer;
+        this.indexerEngine = indexerEngine;
+        this.artifactContextProducer = new DefaultArtifactContextProducer();
+    }
+
+    public void beginScan()
+    {
+        // TODO Auto-generated method stub
+
+    }
+
+    public void completeScan()
+    {
+        try
+        {
+            context.getIndexWriter().close();
+
+            //indexerEngine.endIndexing( context );
+            indexer.removeIndexingContext( context, false );
+        }
+        catch ( IOException e )
+        {
+            log.error( e.getMessage() );
+        }
+    }
+
+    public List<String> getIncludedTypes()
+    {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    public void processArchivaArtifact( ArchivaArtifact artifact )
+        throws ConsumerException
+    {
+        try
+        {
+            ManagedRepositoryContent repoContent =
+                repoFactory.getManagedRepositoryContent( 
artifact.getModel().getRepositoryId() );
+
+            ManagedRepositoryConfiguration repository = 
repoContent.getRepository();
+            String indexDir = repository.getIndexDir();
+            File managedRepository = new File( repository.getLocation() );
+            File indexDirectory = null;
+
+            if ( indexDir != null && !"".equals( indexDir ) )
+            {
+                indexDirectory = new File( repository.getIndexDir() );
+            }
+            else
+            {
+                indexDirectory = new File( managedRepository, ".indexer" );
+            }
+
+            synchronized ( indexer )
+            {
+                try
+                {
+                    context =
+                        indexer.addIndexingContext( repository.getId(), 
repository.getId(), managedRepository,
+                                                    indexDirectory, null, 
null, NexusIndexer.FULL_INDEX );
+                    context.setSearchable( repository.isScanned() );
+
+                    File artifactFile = new File( repoContent.getRepoRoot(), 
repoContent.toPath( artifact ) );
+                    System.out.println( "artifactFile :: " + 
artifactFile.getAbsolutePath() );
+
+                    if ( !artifactFile.exists() )
+                    {
+                        ArtifactContext artifactContext =
+                            artifactContextProducer.getArtifactContext( 
context, artifactFile );
+
+                        if ( artifactContext != null )
+                        {
+                            //indexerEngine.remove( context, artifactContext );
+
+                            // hack for deleting documents - indexer engine's 
isn't working for me
+                            removeDocuments( artifactContext );
+                        }
+                    }
+                }
+                catch ( UnsupportedExistingLuceneIndexException e )
+                {
+                    log.error( "Unsupported index format.", e );
+                }
+                catch ( IOException e )
+                {
+                    log.error( "Unable to open index at " + 
indexDirectory.getAbsoluteFile(), e );
+                }
+            }
+        }
+        catch ( RepositoryException e )
+        {
+            throw new ConsumerException( "Can't run index cleanup consumer: " 
+ e.getMessage() );
+        }
+    }
+    
+    private void removeDocuments( ArtifactContext ac )
+        throws IOException
+    {
+        IndexWriter w = context.getIndexWriter();
+
+        ArtifactInfo ai = ac.getArtifactInfo();
+        String uinfo = AbstractIndexCreator.getGAV( ai.groupId, ai.artifactId, 
ai.version, ai.classifier, ai.packaging );
+
+        Document doc = new Document();
+        doc.add( new Field( ArtifactInfo.DELETED, uinfo, Field.Store.YES, 
Field.Index.NO ) );
+        doc.add( new Field( ArtifactInfo.LAST_MODIFIED, Long.toString( 
System.currentTimeMillis() ), Field.Store.YES,
+                            Field.Index.NO ) );
+
+        w.addDocument( doc );
+
+        w.deleteDocuments( new Term( ArtifactInfo.UINFO, uinfo ) );
+
+        w.commit();
+
+        context.updateTimestamp();
+    }
+
+    public String getDescription()
+    {
+        return "Remove indexed content if not present on filesystem.";
+    }
+
+    public String getId()
+    {
+        return "not-present-remove-indexed";
+    }
+
+    public boolean isPermanent()
+    {
+        return false;
+    }
+
+    public void setRepositoryContentFactory( RepositoryContentFactory 
repoFactory )
+    {
+        this.repoFactory = repoFactory;
+    }
+}

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=745821&r1=745820&r2=745821&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
 Thu Feb 19 11:24:12 2009
@@ -134,6 +134,9 @@
                         Document d = r.document( i );          
                         String uinfo = d.get( ArtifactInfo.UINFO );
           
+                     // should we add a check here if the contents of the 
document still exist in the file system
+                     // for cases when there is already an existing index & 
the contents of that index doesn't exist
+                     // in the file system & in the database? 
                         if ( uinfo != null )
                         {
                             uinfos.add( uinfo );

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=745821&r1=745820&r2=745821&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
 Thu Feb 19 11:24:12 2009
@@ -8,4 +8,10 @@
         <constructor-arg ref="indexPacker"/>
         <constructor-arg ref="indexerEngine"/>
     </bean>
+    
+    <bean id="indexCleanupConsumer" 
class="org.apache.archiva.consumers.lucene.LuceneCleanupRemoveIndexedConsumer">
+        <constructor-arg ref="repositoryContentFactory"/>
+        <constructor-arg ref="nexusIndexer#archiva"/>
+        <constructor-arg ref="indexerEngine"/>
+    </bean>
 </beans>
\ No newline at end of file

Added: 
archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-lucene-consumers/src/test/java/org/apache/archiva/consumers/lucene/LuceneCleanupRemoveIndexedConsumerTest.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/LuceneCleanupRemoveIndexedConsumerTest.java?rev=745821&view=auto
==============================================================================
--- 
archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-lucene-consumers/src/test/java/org/apache/archiva/consumers/lucene/LuceneCleanupRemoveIndexedConsumerTest.java
 (added)
+++ 
archiva/trunk/archiva-modules/archiva-base/archiva-consumers/archiva-lucene-consumers/src/test/java/org/apache/archiva/consumers/lucene/LuceneCleanupRemoveIndexedConsumerTest.java
 Thu Feb 19 11:24:12 2009
@@ -0,0 +1,161 @@
+package org.apache.archiva.consumers.lucene;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import java.io.File;
+
+import org.apache.commons.io.FileUtils;
+import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration;
+import org.apache.maven.archiva.model.ArchivaArtifact;
+import org.apache.maven.archiva.repository.ManagedRepositoryContent;
+import org.apache.maven.archiva.repository.RepositoryContentFactory;
+import 
org.apache.maven.archiva.repository.content.ManagedDefaultRepositoryContent;
+import org.codehaus.plexus.spring.PlexusInSpringTestCase;
+import org.easymock.MockControl;
+import org.easymock.classextension.MockClassControl;
+import org.sonatype.nexus.index.ArtifactContext;
+import org.sonatype.nexus.index.ArtifactContextProducer;
+import org.sonatype.nexus.index.DefaultArtifactContextProducer;
+import org.sonatype.nexus.index.NexusIndexer;
+import org.sonatype.nexus.index.context.DefaultIndexingContext;
+import org.sonatype.nexus.index.context.IndexingContext;
+import org.sonatype.nexus.index.creator.IndexerEngine;
+
+public class LuceneCleanupRemoveIndexedConsumerTest
+    extends PlexusInSpringTestCase
+{
+    private LuceneCleanupRemoveIndexedConsumer consumer;
+    
+    private MockControl indexerControl;
+    
+    private NexusIndexer indexer;
+    
+    private RepositoryContentFactory repoFactory;
+    
+    private MockControl repoFactoryControl;
+    
+    private ManagedRepositoryConfiguration repositoryConfig;
+    
+    private ArtifactContextProducer artifactContextProducer;
+    
+    private IndexerEngine indexerEngine;
+    
+    public void setUp()
+        throws Exception 
+    {
+        super.setUp();
+        
+        indexerControl = MockControl.createControl( NexusIndexer.class );
+        indexerControl.setDefaultMatcher( MockControl.ALWAYS_MATCHER );
+        indexer = ( NexusIndexer ) indexerControl.getMock();
+        
+        repoFactoryControl = MockClassControl.createControl( 
RepositoryContentFactory.class );
+        repoFactory = ( RepositoryContentFactory ) 
repoFactoryControl.getMock();
+        
+        indexerEngine = ( IndexerEngine ) lookup( IndexerEngine.class );
+        
+        consumer = new LuceneCleanupRemoveIndexedConsumer( repoFactory, 
indexer, indexerEngine );
+        
+        repositoryConfig = new ManagedRepositoryConfiguration();
+        repositoryConfig.setId( "test-repo" );
+        repositoryConfig.setLocation( getBasedir() + 
"/target/test-classes/test-repo" );
+        repositoryConfig.setLayout( "default" );
+        repositoryConfig.setName( "Test Repository" );
+        repositoryConfig.setScanned( true );
+        repositoryConfig.setSnapshots( false );
+        repositoryConfig.setReleases( true ); 
+        repositoryConfig.setIndexDir( getBasedir() + 
"/target/test-classes/test-repo/.cleanup-index" );
+        
+        artifactContextProducer = new DefaultArtifactContextProducer();
+    }
+    
+    public void tearDown() 
+        throws Exception
+    {
+        FileUtils.deleteDirectory( new File( repositoryConfig.getIndexDir() ) 
);
+        
+        super.tearDown();
+    }
+    
+    public void testProcessArtifactArtifactDoesNotExist()
+        throws Exception
+    {
+        /*ArchivaArtifact artifact =
+            new ArchivaArtifact( "org.apache.archiva", 
"archiva-lucene-consumers", "1.2", null, "jar", "test-repo" );
+        ManagedRepositoryContent repoContent = new 
ManagedDefaultRepositoryContent();
+        repoContent.setRepository( repositoryConfig );
+        
+        IndexingContext context =
+            new DefaultIndexingContext( repositoryConfig.getId(), 
repositoryConfig.getId(),
+                                        new File( 
repositoryConfig.getLocation() ),
+                                        new File( 
repositoryConfig.getIndexDir() ), null, null,
+                                        NexusIndexer.FULL_INDEX, false );
+
+        File artifactFile =
+            new File( repositoryConfig.getLocation(),
+                      
"org/apache/archiva/archiva-lucene-consumers/1.2/archiva-lucene-consumers-1.2.jar"
 );
+        ArtifactContext artifactContext = 
artifactContextProducer.getArtifactContext( context, artifactFile );
+        
+        repoFactoryControl.expectAndReturn( 
repoFactory.getManagedRepositoryContent( repositoryConfig.getId() ), 
repoContent );
+        indexerControl.expectAndReturn( indexer.addIndexingContext( 
repositoryConfig.getId(), repositoryConfig.getId(),
+                                        new File( 
repositoryConfig.getLocation() ),
+                                        new File( 
repositoryConfig.getIndexDir() ), null, null,
+                                        NexusIndexer.FULL_INDEX ), context );
+        indexer.deleteArtifactFromIndex( artifactContext, context );
+        indexerControl.setVoidCallable();
+        
+        repoFactoryControl.replay();
+        indexerControl.replay();
+        
+        consumer.processArchivaArtifact( artifact );
+        
+        repoFactoryControl.verify();
+        indexerControl.verify();    */    
+    }    
+    
+    public void testProcessArtifactArtifactExists()
+        throws Exception
+    {
+        /*ArchivaArtifact artifact =
+            new ArchivaArtifact( "org.apache.maven.archiva", 
"archiva-lucene-cleanup", "1.0", null, "jar", "test-repo" );
+        ManagedRepositoryContent repoContent = new 
ManagedDefaultRepositoryContent();
+        repoContent.setRepository( repositoryConfig );
+        
+        IndexingContext context =
+            new DefaultIndexingContext( repositoryConfig.getId(), 
repositoryConfig.getId(),
+                                        new File( 
repositoryConfig.getLocation() ),
+                                        new File( 
repositoryConfig.getIndexDir() ), null, null,
+                                        NexusIndexer.FULL_INDEX, false );
+        
+        repoFactoryControl.expectAndReturn( 
repoFactory.getManagedRepositoryContent( repositoryConfig.getId() ), 
repoContent );
+        indexerControl.expectAndReturn( indexer.addIndexingContext( 
repositoryConfig.getId(), repositoryConfig.getId(),
+                                        new File( 
repositoryConfig.getLocation() ),
+                                        new File( 
repositoryConfig.getIndexDir() ), null, null,
+                                        NexusIndexer.FULL_INDEX ), context );
+        
+        repoFactoryControl.replay();
+        indexerControl.replay();
+        
+        consumer.processArchivaArtifact( artifact );
+        
+        repoFactoryControl.verify();
+        indexerControl.verify();        */
+    }    
+}

Modified: 
archiva/trunk/archiva-modules/archiva-database/src/main/java/org/apache/maven/archiva/database/updater/DatabaseConsumers.java
URL: 
http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-database/src/main/java/org/apache/maven/archiva/database/updater/DatabaseConsumers.java?rev=745821&r1=745820&r2=745821&view=diff
==============================================================================
--- 
archiva/trunk/archiva-modules/archiva-database/src/main/java/org/apache/maven/archiva/database/updater/DatabaseConsumers.java
 (original)
+++ 
archiva/trunk/archiva-modules/archiva-database/src/main/java/org/apache/maven/archiva/database/updater/DatabaseConsumers.java
 Thu Feb 19 11:24:12 2009
@@ -25,42 +25,39 @@
 import org.apache.maven.archiva.configuration.ArchivaConfiguration;
 import org.apache.maven.archiva.configuration.DatabaseScanningConfiguration;
 import org.apache.maven.archiva.consumers.functors.PermanentConsumerPredicate;
-import org.codehaus.plexus.personality.plexus.lifecycle.phase.Initializable;
-import 
org.codehaus.plexus.personality.plexus.lifecycle.phase.InitializationException;
+import org.springframework.beans.BeansException;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.ApplicationContextAware;
 
 import java.util.ArrayList;
-import java.util.Collections;
 import java.util.List;
 
 /**
  * DatabaseConsumers 
  *
  * @version $Id$
- * 
- * @plexus.component 
role="org.apache.maven.archiva.database.updater.DatabaseConsumers"
  */
 public class DatabaseConsumers
-    implements Initializable
-{
-    /**
-     * @plexus.requirement
-     */
+    implements ApplicationContextAware
+{    
     private ArchivaConfiguration archivaConfiguration;
 
-    /**
-     * @plexus.requirement 
role="org.apache.maven.archiva.database.updater.DatabaseUnprocessedArtifactConsumer"
-     */
-    private List availableUnprocessedConsumers;
-
-    /**
-     * @plexus.requirement 
role="org.apache.maven.archiva.database.updater.DatabaseCleanupConsumer"
-     */
-    private List availableCleanupConsumers;
-
     private Predicate selectedCleanupConsumers;
 
     private Predicate selectedUnprocessedConsumers;
+    
+    private ApplicationContext applicationContext;
+
+    public DatabaseConsumers( ArchivaConfiguration archivaConfiguration )
+    {
+        this.archivaConfiguration = archivaConfiguration;
+        
+        Predicate permanentConsumers = new PermanentConsumerPredicate();
 
+        selectedCleanupConsumers = new OrPredicate( permanentConsumers, new 
SelectedCleanupConsumersPredicate() );
+        selectedUnprocessedConsumers = new OrPredicate( permanentConsumers, 
new SelectedUnprocessedConsumersPredicate() );
+    }
+    
     class SelectedUnprocessedConsumersPredicate
         implements Predicate
     {
@@ -99,15 +96,12 @@
         }
     }
 
-    public void initialize()
-        throws InitializationException
+    public void setApplicationContext( ApplicationContext applicationContext )
+        throws BeansException
     {
-        Predicate permanentConsumers = new PermanentConsumerPredicate();
-
-        selectedCleanupConsumers = new OrPredicate( permanentConsumers, new 
SelectedCleanupConsumersPredicate() );
-        selectedUnprocessedConsumers = new OrPredicate( permanentConsumers, 
new SelectedUnprocessedConsumersPredicate() );
+        this.applicationContext = applicationContext;
     }
-
+    
     /**
      * Get the {...@link List} of {...@link 
DatabaseUnprocessedArtifactConsumer} objects
      * for those consumers selected due to the configuration.
@@ -117,7 +111,7 @@
     public List getSelectedUnprocessedConsumers()
     {
         List ret = new ArrayList();
-        ret.addAll( CollectionUtils.select( availableUnprocessedConsumers, 
selectedUnprocessedConsumers ) );
+        ret.addAll( CollectionUtils.select( 
getAvailableUnprocessedConsumers(), selectedUnprocessedConsumers ) );
         return ret;
     }
 
@@ -130,7 +124,7 @@
     public List getSelectedCleanupConsumers()
     {
         List ret = new ArrayList();
-        ret.addAll( CollectionUtils.select( availableCleanupConsumers, 
selectedCleanupConsumers ) );
+        ret.addAll( CollectionUtils.select( getAvailableCleanupConsumers(), 
selectedCleanupConsumers ) );
         return ret;
     }
 
@@ -141,8 +135,8 @@
      * @return the list of all available {...@link 
DatabaseUnprocessedArtifactConsumer} objects.
      */
     public List getAvailableUnprocessedConsumers()
-    {
-        return Collections.unmodifiableList( 
this.availableUnprocessedConsumers );
+    {       
+        return new ArrayList( applicationContext.getBeansOfType( 
DatabaseUnprocessedArtifactConsumer.class ).values() );
     }
 
     /**
@@ -153,6 +147,6 @@
      */
     public List getAvailableCleanupConsumers()
     {
-        return Collections.unmodifiableList( this.availableCleanupConsumers );
+        return new ArrayList( applicationContext.getBeansOfType( 
DatabaseCleanupConsumer.class ).values() );
     }
 }

Added: 
archiva/trunk/archiva-modules/archiva-database/src/main/resources/META-INF/spring-context.xml
URL: 
http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-database/src/main/resources/META-INF/spring-context.xml?rev=745821&view=auto
==============================================================================
--- 
archiva/trunk/archiva-modules/archiva-database/src/main/resources/META-INF/spring-context.xml
 (added)
+++ 
archiva/trunk/archiva-modules/archiva-database/src/main/resources/META-INF/spring-context.xml
 Thu Feb 19 11:24:12 2009
@@ -0,0 +1,11 @@
+<?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="databaseConsumers" 
class="org.apache.maven.archiva.database.updater.DatabaseConsumers" 
scope="prototype">
+      <constructor-arg>
+        <ref bean="archivaConfiguration"/>
+      </constructor-arg>
+    </bean>
+</beans>
\ No newline at end of file


Reply via email to