Author: joakime
Date: Thu Apr  5 14:44:00 2007
New Revision: 525974

URL: http://svn.apache.org/viewvc?view=rev&rev=525974
Log:
Correcting index-content Consumer.

Removed:
    
maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-consumers/archiva-lucene-consumers/src/main/java/org/apache/maven/archiva/consumers/lucene/IndexArtifactConsumer.java
Modified:
    
maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-consumers/archiva-lucene-consumers/src/main/java/org/apache/maven/archiva/consumers/lucene/IndexContentConsumer.java

Modified: 
maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-consumers/archiva-lucene-consumers/src/main/java/org/apache/maven/archiva/consumers/lucene/IndexContentConsumer.java
URL: 
http://svn.apache.org/viewvc/maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-consumers/archiva-lucene-consumers/src/main/java/org/apache/maven/archiva/consumers/lucene/IndexContentConsumer.java?view=diff&rev=525974&r1=525973&r2=525974
==============================================================================
--- 
maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-consumers/archiva-lucene-consumers/src/main/java/org/apache/maven/archiva/consumers/lucene/IndexContentConsumer.java
 (original)
+++ 
maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-consumers/archiva-lucene-consumers/src/main/java/org/apache/maven/archiva/consumers/lucene/IndexContentConsumer.java
 Thu Apr  5 14:44:00 2007
@@ -19,17 +19,24 @@
  * under the License.
  */
 
+import org.apache.commons.io.FileUtils;
 import org.apache.maven.archiva.configuration.ArchivaConfiguration;
 import org.apache.maven.archiva.configuration.FileType;
 import org.apache.maven.archiva.consumers.AbstractMonitoredConsumer;
 import org.apache.maven.archiva.consumers.ConsumerException;
 import org.apache.maven.archiva.consumers.RepositoryContentConsumer;
+import org.apache.maven.archiva.indexer.RepositoryContentIndex;
+import org.apache.maven.archiva.indexer.RepositoryContentIndexFactory;
+import org.apache.maven.archiva.indexer.RepositoryIndexException;
+import org.apache.maven.archiva.indexer.filecontent.FileContentRecord;
 import org.apache.maven.archiva.model.ArchivaRepository;
 import org.codehaus.plexus.personality.plexus.lifecycle.phase.Initializable;
 import 
org.codehaus.plexus.personality.plexus.lifecycle.phase.InitializationException;
 import org.codehaus.plexus.registry.Registry;
 import org.codehaus.plexus.registry.RegistryListener;
 
+import java.io.File;
+import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -42,9 +49,14 @@
  * @plexus.component role-hint="index-content"
  *                   instantiation-strategy="per-lookup"
  */
-public class IndexContentConsumer extends AbstractMonitoredConsumer
+public class IndexContentConsumer
+    extends AbstractMonitoredConsumer
     implements RepositoryContentConsumer, RegistryListener, Initializable
 {
+    private static final String READ_CONTENT = "read_content";
+
+    private static final String INDEX_ERROR = "indexing_error";
+
     /**
      * @plexus.configuration default-value="index-content"
      */
@@ -60,10 +72,19 @@
      */
     private ArchivaConfiguration configuration;
 
+    /**
+     * @plexus.requirement
+     */
+    private RepositoryContentIndexFactory indexFactory;
+
     private List propertyNameTriggers = new ArrayList();
 
     private List includes = new ArrayList();
 
+    private RepositoryContentIndex index;
+
+    private File repositoryDir;
+
     public String getId()
     {
         return this.id;
@@ -89,17 +110,38 @@
         return this.includes;
     }
 
-    public void beginScan( ArchivaRepository repository ) throws 
ConsumerException
+    public void beginScan( ArchivaRepository repository )
+        throws ConsumerException
     {
         if ( !repository.isManaged() )
         {
             throw new ConsumerException( "Consumer requires managed 
repository." );
         }
+
+        this.repositoryDir = new File( repository.getUrl().getPath() );
+        this.index = indexFactory.createFileContentIndex( repository );
     }
 
-    public void processFile( String path ) throws ConsumerException
+    public void processFile( String path )
+        throws ConsumerException
     {
-        
+        FileContentRecord record = new FileContentRecord();
+        try
+        {
+            File file = new File( repositoryDir, path );
+            record.setFile( file );
+            record.setContents( FileUtils.readFileToString( file, null ) );
+
+            index.modifyRecord( record );
+        }
+        catch ( IOException e )
+        {
+            triggerConsumerError( READ_CONTENT, "Unable to read file contents: 
" + e.getMessage() );
+        }
+        catch ( RepositoryIndexException e )
+        {
+            triggerConsumerError( INDEX_ERROR, "Unable to index file contents: 
" + e.getMessage() );
+        }
     }
 
     public void completeScan()
@@ -124,15 +166,16 @@
     {
         includes.clear();
 
-        FileType artifactTypes =
-            
configuration.getConfiguration().getRepositoryScanning().getFileTypeById( 
"indexable-content" );
+        FileType artifactTypes = 
configuration.getConfiguration().getRepositoryScanning()
+            .getFileTypeById( "indexable-content" );
         if ( artifactTypes != null )
         {
             includes.addAll( artifactTypes.getPatterns() );
         }
     }
 
-    public void initialize() throws InitializationException
+    public void initialize()
+        throws InitializationException
     {
         propertyNameTriggers = new ArrayList();
         propertyNameTriggers.add( "repositoryScanning" );


Reply via email to