You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by ep...@apache.org on 2005/12/22 07:38:08 UTC
svn commit: r358512 - in
/maven/repository-manager/trunk/maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing:
AbstractRepositoryIndexer.java ArtifactRepositoryIndexer.java
RepositoryIndexer.java
Author: epunzalan
Date: Wed Dec 21 22:37:47 2005
New Revision: 358512
URL: http://svn.apache.org/viewcvs?rev=358512&view=rev
Log:
Refactored classes and added some more interface methods
Modified:
maven/repository-manager/trunk/maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/AbstractRepositoryIndexer.java
maven/repository-manager/trunk/maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/ArtifactRepositoryIndexer.java
maven/repository-manager/trunk/maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/RepositoryIndexer.java
Modified: maven/repository-manager/trunk/maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/AbstractRepositoryIndexer.java
URL: http://svn.apache.org/viewcvs/maven/repository-manager/trunk/maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/AbstractRepositoryIndexer.java?rev=358512&r1=358511&r2=358512&view=diff
==============================================================================
--- maven/repository-manager/trunk/maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/AbstractRepositoryIndexer.java (original)
+++ maven/repository-manager/trunk/maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/AbstractRepositoryIndexer.java Wed Dec 21 22:37:47 2005
@@ -18,6 +18,7 @@
*/
import java.io.IOException;
+import java.util.Collection;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
@@ -32,8 +33,77 @@
implements RepositoryIndexer
{
protected String indexPath;
+ protected boolean indexOpen;
protected IndexReader indexReader;
protected IndexWriter indexWriter;
+
+ public void optimize()
+ throws RepositoryIndexerException
+ {
+ if ( !isOpen() )
+ {
+ throw new RepositoryIndexerException( "Unable to optimize index on a closed index" );
+ }
+
+ try
+ {
+ indexWriter.optimize();
+ }
+ catch ( IOException ioe )
+ {
+ throw new RepositoryIndexerException( "Failed to optimize index", ioe );
+ }
+ }
+
+ public boolean isOpen()
+ {
+ return indexOpen;
+ }
+
+ public void close()
+ throws RepositoryIndexerException
+ {
+ if ( indexOpen )
+ {
+ try
+ {
+ if ( indexWriter != null )
+ {
+ indexWriter.close();
+ indexWriter = null;
+ }
+
+ if ( indexReader != null )
+ {
+ indexReader.close();
+ indexReader = null;
+ }
+
+ indexOpen = false;
+ }
+ catch ( Exception e )
+ {
+ throw new RepositoryIndexerException( e );
+ }
+ }
+ }
+
+ public void open()
+ throws RepositoryIndexerException
+ {
+ try
+ {
+ if ( !indexOpen )
+ {
+ validateIndex();
+ }
+ }
+ catch ( Exception e )
+ {
+ throw new RepositoryIndexerException( e );
+ }
+ }
+
protected void getIndexWriter()
throws IOException
@@ -56,5 +126,29 @@
protected Analyzer getAnalyzer()
{
return new StandardAnalyzer();
+ }
+
+ protected void validateIndex()
+ throws RepositoryIndexerException
+ {
+ try
+ {
+ getIndexReader();
+ Collection fields = indexReader.getFieldNames();
+ String[] indexFields = getIndexFields();
+ for( int idx=0; idx<indexFields.length; idx++ )
+ {
+ if ( !fields.contains( indexFields[ idx ] ) )
+ {
+ throw new RepositoryIndexerException( "The Field " + indexFields[ idx ] + " does not exist in " +
+ "index path " + indexPath + "." );
+ }
+ }
+ indexOpen = true;
+ }
+ catch ( IOException e )
+ {
+ throw new RepositoryIndexerException( e );
+ }
}
}
Modified: maven/repository-manager/trunk/maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/ArtifactRepositoryIndexer.java
URL: http://svn.apache.org/viewcvs/maven/repository-manager/trunk/maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/ArtifactRepositoryIndexer.java?rev=358512&r1=358511&r2=358512&view=diff
==============================================================================
--- maven/repository-manager/trunk/maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/ArtifactRepositoryIndexer.java (original)
+++ maven/repository-manager/trunk/maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/ArtifactRepositoryIndexer.java Wed Dec 21 22:37:47 2005
@@ -53,7 +53,8 @@
private static final String PACKAGES = "packages";
private static final String FILES = "files";
- private static final String[] FIELDS = { NAME, GROUPID, ARTIFACTID, VERSION, SHA1, MD5, CLASSES, PACKAGES, FILES };
+ private static final String[] FIELDS = { NAME, GROUPID, ARTIFACTID, VERSION, SHA1, MD5,
+ CLASSES, PACKAGES, FILES };
private ArtifactRepository repository;
@@ -68,16 +69,42 @@
indexPath = path;
validateIndex();
}
+
+ public String[] getIndexFields()
+ {
+ return FIELDS;
+ }
+
+ public void addObjectIndex(Object obj)
+ throws RepositoryIndexerException
+ {
+ if ( obj instanceof Artifact )
+ {
+ addArtifactIndex( (Artifact) obj );
+ }
+ else
+ {
+ throw new RepositoryIndexerException( "This instance of indexer cannot index instances of " +
+ obj.getClass().getName() );
+ }
+ }
public void addArtifactIndex( Artifact artifact )
throws RepositoryIndexerException
{
+ if ( !isOpen() )
+ {
+ throw new RepositoryIndexerException( "Unable to add artifact index on a closed index" );
+ }
+
try
{
getIndexWriter();
+ initBuffers();
processArtifactContents( artifact.getFile() );
+ //@todo should some of these fields be Keyword instead of Text ?
Document doc = new Document();
doc.add( Field.Text( NAME, repository.pathOf( artifact ) ) );
doc.add( Field.Text( GROUPID, artifact.getGroupId() ) );
@@ -89,6 +116,8 @@
doc.add( Field.Text( PACKAGES, packages.toString() ) );
doc.add( Field.Text( FILES, files.toString() ) );
indexWriter.addDocument( doc );
+
+ removeBuffers();
}
catch( Exception e )
{
@@ -96,19 +125,6 @@
}
}
- public void optimize()
- throws RepositoryIndexerException
- {
- try
- {
- indexWriter.optimize();
- }
- catch ( IOException ioe )
- {
- throw new RepositoryIndexerException( "Failed to optimize index", ioe );
- }
- }
-
private String getSha1( Artifact artifact )
throws FileNotFoundException, IOException, NoSuchAlgorithmException
{
@@ -143,13 +159,23 @@
return complete.digest();
}
- private void processArtifactContents( File artifact )
- throws IOException, ZipException
+ private void initBuffers()
{
classes = new StringBuffer();
packages = new StringBuffer();
files = new StringBuffer();
-
+ }
+
+ private void removeBuffers()
+ {
+ classes = null;
+ packages = null;
+ files = null;
+ }
+
+ private void processArtifactContents( File artifact )
+ throws IOException, ZipException
+ {
ZipFile jar = new ZipFile( artifact );
for ( Enumeration entries = jar.entries(); entries.hasMoreElements(); )
{
@@ -219,27 +245,5 @@
}
return isAdded;
- }
-
- private void validateIndex()
- throws RepositoryIndexerException
- {
- try
- {
- getIndexReader();
- Collection fields = indexReader.getFieldNames();
- for( int idx=0; idx<FIELDS.length; idx++ )
- {
- if ( !fields.contains( FIELDS[ idx ] ) )
- {
- throw new RepositoryIndexerException( "The Field " + FIELDS[ idx ] + " does not exist in index" +
- " path " + indexPath + "." );
- }
- }
- }
- catch ( IOException e )
- {
- throw new RepositoryIndexerException( e );
- }
}
}
Modified: maven/repository-manager/trunk/maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/RepositoryIndexer.java
URL: http://svn.apache.org/viewcvs/maven/repository-manager/trunk/maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/RepositoryIndexer.java?rev=358512&r1=358511&r2=358512&view=diff
==============================================================================
--- maven/repository-manager/trunk/maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/RepositoryIndexer.java (original)
+++ maven/repository-manager/trunk/maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/RepositoryIndexer.java Wed Dec 21 22:37:47 2005
@@ -26,6 +26,16 @@
public interface RepositoryIndexer
{
String ROLE = RepositoryIndexer.class.getName();
+
+ String[] getIndexFields();
+
+ boolean isOpen();
+
+ void addObjectIndex( Object obj ) throws RepositoryIndexerException;
+
+ void close() throws RepositoryIndexerException;
+
+ void open() throws RepositoryIndexerException;
void optimize() throws RepositoryIndexerException;
}