You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@archiva.apache.org by jo...@apache.org on 2007/04/03 17:22:01 UTC
svn commit: r525176 [4/12] - in
/maven/archiva/branches/archiva-jpox-database-refactor: ./
archiva-api/src/main/java/org/apache/maven/archiva/configuration/
archiva-api/src/main/java/org/apache/maven/archiva/consumers/
archiva-api/src/main/java/org/apa...
Copied: maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-indexer/src/main/java/org/apache/maven/archiva/indexer/lucene/LuceneRepositoryContentIndex.java (from r521491, maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-indexer/src/main/java/org/apache/maven/archiva/indexer/lucene/LuceneRepositoryArtifactIndex.java)
URL: http://svn.apache.org/viewvc/maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-indexer/src/main/java/org/apache/maven/archiva/indexer/lucene/LuceneRepositoryContentIndex.java?view=diff&rev=525176&p1=maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-indexer/src/main/java/org/apache/maven/archiva/indexer/lucene/LuceneRepositoryArtifactIndex.java&r1=521491&p2=maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-indexer/src/main/java/org/apache/maven/archiva/indexer/lucene/LuceneRepositoryContentIndex.java&r2=525176
==============================================================================
--- maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-indexer/src/main/java/org/apache/maven/archiva/indexer/lucene/LuceneRepositoryArtifactIndex.java (original)
+++ maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-indexer/src/main/java/org/apache/maven/archiva/indexer/lucene/LuceneRepositoryContentIndex.java Tue Apr 3 08:21:33 2007
@@ -19,220 +19,168 @@
* under the License.
*/
-import org.apache.lucene.analysis.Analyzer;
-import org.apache.lucene.analysis.CharTokenizer;
-import org.apache.lucene.analysis.TokenStream;
-import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.document.Document;
-import org.apache.lucene.document.Field;
import org.apache.lucene.index.IndexModifier;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.Term;
import org.apache.lucene.index.TermEnum;
-import org.apache.lucene.search.BooleanClause;
-import org.apache.lucene.search.BooleanQuery;
import org.apache.lucene.search.Hits;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.MatchAllDocsQuery;
-import org.apache.lucene.search.TermQuery;
-import org.apache.maven.archiva.indexer.RepositoryArtifactIndex;
+import org.apache.maven.archiva.indexer.RepositoryContentIndex;
import org.apache.maven.archiva.indexer.RepositoryIndexException;
import org.apache.maven.archiva.indexer.RepositoryIndexSearchException;
import org.apache.maven.archiva.indexer.query.Query;
-import org.apache.maven.archiva.indexer.record.MinimalIndexRecordFields;
-import org.apache.maven.archiva.indexer.record.RepositoryIndexRecord;
-import org.apache.maven.archiva.indexer.record.RepositoryIndexRecordFactory;
-import org.apache.maven.archiva.indexer.record.StandardIndexRecordFields;
-import org.apache.maven.artifact.Artifact;
import java.io.File;
import java.io.IOException;
-import java.io.Reader;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
-import java.util.LinkedHashSet;
import java.util.List;
-import java.util.Set;
/**
* Lucene implementation of a repository index.
*
* @author <a href="mailto:brett@apache.org">Brett Porter</a>
*/
-public class LuceneRepositoryArtifactIndex
- implements RepositoryArtifactIndex
+public class LuceneRepositoryContentIndex implements RepositoryContentIndex
{
/**
+ * The max field length for a field in a document.
+ */
+ private static final int MAX_FIELD_LENGTH = 40000;
+
+ /**
* The location of the index on the file system.
*/
private File indexLocation;
-
+
/**
- * Convert repository records to Lucene documents.
+ * The Lucene Index Handlers
*/
- private LuceneIndexRecordConverter converter;
-
- private static final String FLD_PK = "pk";
-
- private static Analyzer luceneAnalyzer = new LuceneAnalyzer();
+ private LuceneIndexHandlers indexHandlers;
- private static long lastUpdatedTime = 0;
-
- public LuceneRepositoryArtifactIndex( File indexPath, LuceneIndexRecordConverter converter )
+ public LuceneRepositoryContentIndex( File indexDir, LuceneIndexHandlers handlers )
{
- this.indexLocation = indexPath;
- this.converter = converter;
+ this.indexLocation = indexDir;
+ this.indexHandlers = handlers;
}
- public void indexRecords( Collection records )
- throws RepositoryIndexException
+ public void indexRecords( Collection records ) throws RepositoryIndexException
{
deleteRecords( records );
addRecords( records );
}
-
- private void addRecords( Collection records )
- throws RepositoryIndexException
+
+ public void modifyRecords( Collection records ) throws RepositoryIndexException
{
- IndexWriter indexWriter;
+ IndexModifier indexModifier = null;
try
{
- indexWriter = new IndexWriter( indexLocation, getAnalyzer(), !exists() );
- }
- catch ( IOException e )
- {
- throw new RepositoryIndexException( "Unable to open index", e );
- }
+ indexModifier = new IndexModifier( indexLocation, indexHandlers.getAnalyzer(), !exists() );
+ indexModifier.setMaxFieldLength( MAX_FIELD_LENGTH );
- try
- {
for ( Iterator i = records.iterator(); i.hasNext(); )
{
- RepositoryIndexRecord record = (RepositoryIndexRecord) i.next();
+ LuceneRepositoryContentRecord record = (LuceneRepositoryContentRecord) i.next();
if ( record != null )
{
- Document document = converter.convert( record );
- document.add(
- new Field( FLD_PK, record.getPrimaryKey(), Field.Store.NO, Field.Index.UN_TOKENIZED ) );
+ Term term = new Term( LuceneDocumentMaker.PRIMARY_KEY, record.getPrimaryKey() );
- indexWriter.addDocument( document );
+ indexModifier.deleteDocuments( term );
+
+ Document document = indexHandlers.getConverter().convert( record );
+
+ indexModifier.addDocument( document );
}
}
-
- indexWriter.optimize();
+ indexModifier.optimize();
}
catch ( IOException e )
{
- throw new RepositoryIndexException( "Failed to add an index document", e );
+ throw new RepositoryIndexException( "Error updating index: " + e.getMessage(), e );
}
finally
{
- closeQuietly( indexWriter );
- lastUpdatedTime = System.currentTimeMillis();
+ closeQuietly( indexModifier );
}
}
- public static Analyzer getAnalyzer()
+ public void modifyRecord( LuceneRepositoryContentRecord record ) throws RepositoryIndexException
{
- return luceneAnalyzer;
+ IndexModifier indexModifier = null;
+ try
+ {
+ indexModifier = new IndexModifier( indexLocation, indexHandlers.getAnalyzer(), !exists() );
+ indexModifier.setMaxFieldLength( MAX_FIELD_LENGTH );
+
+ if ( record != null )
+ {
+ Term term = new Term( LuceneDocumentMaker.PRIMARY_KEY, record.getPrimaryKey() );
+
+ indexModifier.deleteDocuments( term );
+
+ Document document = indexHandlers.getConverter().convert( record );
+
+ indexModifier.addDocument( document );
+ }
+ indexModifier.optimize();
+ }
+ catch ( IOException e )
+ {
+ throw new RepositoryIndexException( "Error updating index: " + e.getMessage(), e );
+ }
+ finally
+ {
+ closeQuietly( indexModifier );
+ }
}
- private static class LuceneAnalyzer
- extends Analyzer
+ private void addRecords( Collection records ) throws RepositoryIndexException
{
- private static final Analyzer STANDARD = new StandardAnalyzer();
+ IndexWriter indexWriter;
+ try
+ {
+ indexWriter = new IndexWriter( indexLocation, indexHandlers.getAnalyzer(), !exists() );
+ indexWriter.setMaxFieldLength( MAX_FIELD_LENGTH );
+ }
+ catch ( IOException e )
+ {
+ throw new RepositoryIndexException( "Unable to open index", e );
+ }
- public TokenStream tokenStream( String field, final Reader reader )
+ try
{
- // do not tokenize field called 'element'
- if ( StandardIndexRecordFields.DEPENDENCIES.equals( field ) )
- {
- return new CharTokenizer( reader )
- {
- protected boolean isTokenChar( char c )
- {
- return c != '\n';
- }
- };
- }
- else if ( StandardIndexRecordFields.FILES.equals( field ) )
- {
- return new CharTokenizer( reader )
- {
- protected boolean isTokenChar( char c )
- {
- return c != '\n' && c != '/';
- }
- };
- }
- else
- if ( StandardIndexRecordFields.CLASSES.equals( field ) || MinimalIndexRecordFields.CLASSES.equals( field ) )
+ for ( Iterator i = records.iterator(); i.hasNext(); )
{
- return new CharTokenizer( reader )
- {
- protected boolean isTokenChar( char c )
- {
- return c != '\n' && c != '.';
- }
+ LuceneRepositoryContentRecord record = (LuceneRepositoryContentRecord) i.next();
- protected char normalize( char c )
- {
- return Character.toLowerCase( c );
- }
- };
- }
- else if ( StandardIndexRecordFields.GROUPID.equals( field ) )
- {
- return new CharTokenizer( reader )
+ if ( record != null )
{
- protected boolean isTokenChar( char c )
- {
- return c != '.';
- }
+ Document document = indexHandlers.getConverter().convert( record );
- protected char normalize( char c )
- {
- return Character.toLowerCase( c );
- }
- };
- }
- else if ( StandardIndexRecordFields.VERSION.equals( field ) ||
- StandardIndexRecordFields.BASE_VERSION.equals( field ) )
- {
- return new CharTokenizer( reader )
- {
- protected boolean isTokenChar( char c )
- {
- return c != '-';
- }
- };
- }
- else if ( StandardIndexRecordFields.FILENAME.equals( field ) ||
- MinimalIndexRecordFields.FILENAME.equals( field ) )
- {
- return new CharTokenizer( reader )
- {
- protected boolean isTokenChar( char c )
- {
- return c != '-' && c != '.' && c != '/';
- }
- };
- }
- else
- {
- // use standard analyzer
- return STANDARD.tokenStream( field, reader );
+ indexWriter.addDocument( document );
+ }
}
+
+ indexWriter.optimize();
+ }
+ catch ( IOException e )
+ {
+ throw new RepositoryIndexException( "Failed to add an index document", e );
+ }
+ finally
+ {
+ closeQuietly( indexWriter );
}
}
- public void deleteRecords( Collection records )
- throws RepositoryIndexException
+ public void deleteRecords( Collection records ) throws RepositoryIndexException
{
if ( exists() )
{
@@ -243,11 +191,11 @@
for ( Iterator i = records.iterator(); i.hasNext(); )
{
- RepositoryIndexRecord record = (RepositoryIndexRecord) i.next();
+ LuceneRepositoryContentRecord record = (LuceneRepositoryContentRecord) i.next();
if ( record != null )
{
- Term term = new Term( FLD_PK, record.getPrimaryKey() );
+ Term term = new Term( LuceneDocumentMaker.PRIMARY_KEY, record.getPrimaryKey() );
indexReader.deleteDocuments( term );
}
@@ -264,20 +212,17 @@
}
}
- public Collection getAllRecords()
- throws RepositoryIndexSearchException
+ public Collection getAllRecords() throws RepositoryIndexSearchException
{
return search( new LuceneQuery( new MatchAllDocsQuery() ) );
}
- public Collection getAllRecordKeys()
- throws RepositoryIndexException
+ public Collection getAllRecordKeys() throws RepositoryIndexException
{
- return getAllFieldValues( FLD_PK );
+ return getAllFieldValues( LuceneDocumentMaker.PRIMARY_KEY );
}
- private List getAllFieldValues( String fieldName )
- throws RepositoryIndexException
+ private List getAllFieldValues( String fieldName ) throws RepositoryIndexException
{
List keys = new ArrayList();
@@ -313,147 +258,65 @@
return keys;
}
- public void indexArtifacts( List artifacts, RepositoryIndexRecordFactory factory )
- throws RepositoryIndexException
- {
- IndexModifier indexModifier = null;
- try
- {
- indexModifier = new IndexModifier( indexLocation, getAnalyzer(), !exists() );
-
- for ( Iterator i = artifacts.iterator(); i.hasNext(); )
- {
- Artifact artifact = (Artifact) i.next();
- RepositoryIndexRecord record = factory.createRecord( artifact );
-
- if ( record != null )
- {
- Term term = new Term( FLD_PK, record.getPrimaryKey() );
-
- indexModifier.deleteDocuments( term );
-
- Document document = converter.convert( record );
- document.add(
- new Field( FLD_PK, record.getPrimaryKey(), Field.Store.NO, Field.Index.UN_TOKENIZED ) );
-
- indexModifier.addDocument( document );
- }
- }
- indexModifier.optimize();
- }
- catch ( IOException e )
- {
- throw new RepositoryIndexException( "Error updating index: " + e.getMessage(), e );
- }
- finally
- {
- closeQuietly( indexModifier );
- lastUpdatedTime = System.currentTimeMillis();
- }
- }
-
- public void indexArtifact( Artifact artifact, RepositoryIndexRecordFactory factory )
- throws RepositoryIndexException
- {
- IndexModifier indexModifier = null;
- try
- {
- indexModifier = new IndexModifier( indexLocation, getAnalyzer(), !exists() );
-
- RepositoryIndexRecord record = factory.createRecord( artifact );
-
- if ( record != null )
- {
- Term term = new Term( FLD_PK, record.getPrimaryKey() );
-
- indexModifier.deleteDocuments( term );
-
- Document document = converter.convert( record );
- document.add( new Field( FLD_PK, record.getPrimaryKey(), Field.Store.NO, Field.Index.UN_TOKENIZED ) );
-
- indexModifier.addDocument( document );
- }
- indexModifier.optimize();
- }
- catch ( IOException e )
- {
- throw new RepositoryIndexException( "Error updating index: " + e.getMessage(), e );
- }
- finally
- {
- closeQuietly( indexModifier );
- lastUpdatedTime = System.currentTimeMillis();
- }
- }
-
- public List getAllGroupIds()
- throws RepositoryIndexException
- {
- return getAllFieldValues( StandardIndexRecordFields.GROUPID_EXACT );
- }
-
- public List getArtifactIds( String groupId )
- throws RepositoryIndexSearchException
- {
- return searchField( new TermQuery( new Term( StandardIndexRecordFields.GROUPID_EXACT, groupId ) ),
- StandardIndexRecordFields.ARTIFACTID );
- }
-
- public List getVersions( String groupId, String artifactId )
- throws RepositoryIndexSearchException
- {
- BooleanQuery query = new BooleanQuery();
- query.add( new TermQuery( new Term( StandardIndexRecordFields.GROUPID_EXACT, groupId ) ),
- BooleanClause.Occur.MUST );
- query.add( new TermQuery( new Term( StandardIndexRecordFields.ARTIFACTID_EXACT, artifactId ) ),
- BooleanClause.Occur.MUST );
-
- return searchField( query, StandardIndexRecordFields.VERSION );
- }
+// public List getAllGroupIds() throws RepositoryIndexException
+// {
+// return getAllFieldValues( StandardIndexRecordFields.GROUPID_EXACT );
+// }
+//
+// public List getArtifactIds( String groupId ) throws RepositoryIndexSearchException
+// {
+// return searchField( new TermQuery( new Term( StandardIndexRecordFields.GROUPID_EXACT, groupId ) ),
+// StandardIndexRecordFields.ARTIFACTID );
+// }
+//
+// public List getVersions( String groupId, String artifactId ) throws RepositoryIndexSearchException
+// {
+// BooleanQuery query = new BooleanQuery();
+// query.add( new TermQuery( new Term( StandardIndexRecordFields.GROUPID_EXACT, groupId ) ),
+// BooleanClause.Occur.MUST );
+// query.add( new TermQuery( new Term( StandardIndexRecordFields.ARTIFACTID_EXACT, artifactId ) ),
+// BooleanClause.Occur.MUST );
+//
+// return searchField( query, StandardIndexRecordFields.VERSION );
+// }
+
+// private List searchField( org.apache.lucene.search.Query luceneQuery, String fieldName )
+// throws RepositoryIndexSearchException
+// {
+// Set results = new LinkedHashSet();
+//
+// IndexSearcher searcher;
+// try
+// {
+// searcher = new IndexSearcher( indexLocation.getAbsolutePath() );
+// }
+// catch ( IOException e )
+// {
+// throw new RepositoryIndexSearchException( "Unable to open index: " + e.getMessage(), e );
+// }
+//
+// try
+// {
+// Hits hits = searcher.search( luceneQuery );
+// for ( int i = 0; i < hits.length(); i++ )
+// {
+// Document doc = hits.doc( i );
+//
+// results.add( doc.get( fieldName ) );
+// }
+// }
+// catch ( IOException e )
+// {
+// throw new RepositoryIndexSearchException( "Unable to search index: " + e.getMessage(), e );
+// }
+// finally
+// {
+// closeQuietly( searcher );
+// }
+// return new ArrayList( results );
+// }
- public long getLastUpdatedTime()
- {
- return lastUpdatedTime;
- }
-
- private List searchField( org.apache.lucene.search.Query luceneQuery, String fieldName )
- throws RepositoryIndexSearchException
- {
- Set results = new LinkedHashSet();
-
- IndexSearcher searcher;
- try
- {
- searcher = new IndexSearcher( indexLocation.getAbsolutePath() );
- }
- catch ( IOException e )
- {
- throw new RepositoryIndexSearchException( "Unable to open index: " + e.getMessage(), e );
- }
-
- try
- {
- Hits hits = searcher.search( luceneQuery );
- for ( int i = 0; i < hits.length(); i++ )
- {
- Document doc = hits.doc( i );
-
- results.add( doc.get( fieldName ) );
- }
- }
- catch ( IOException e )
- {
- throw new RepositoryIndexSearchException( "Unable to search index: " + e.getMessage(), e );
- }
- finally
- {
- closeQuietly( searcher );
- }
- return new ArrayList( results );
- }
-
- public boolean exists()
- throws RepositoryIndexException
+ public boolean exists() throws RepositoryIndexException
{
if ( IndexReader.indexExists( indexLocation ) )
{
@@ -480,8 +343,7 @@
}
}
- public List search( Query query )
- throws RepositoryIndexSearchException
+ public List search( Query query ) throws RepositoryIndexSearchException
{
LuceneQuery lQuery = (LuceneQuery) query;
@@ -505,7 +367,7 @@
{
Document doc = hits.doc( i );
- records.add( converter.convert( doc ) );
+ records.add( indexHandlers.getConverter().convert( doc ) );
}
}
catch ( IOException e )
@@ -523,7 +385,7 @@
return records;
}
-
+
private static void closeQuietly( IndexSearcher searcher )
{
try
@@ -539,8 +401,7 @@
}
}
- private static void closeQuietly( TermEnum terms )
- throws RepositoryIndexException
+ private static void closeQuietly( TermEnum terms ) throws RepositoryIndexException
{
if ( terms != null )
{
@@ -555,8 +416,7 @@
}
}
- private static void closeQuietly( IndexWriter indexWriter )
- throws RepositoryIndexException
+ private static void closeQuietly( IndexWriter indexWriter ) throws RepositoryIndexException
{
try
{
@@ -600,5 +460,10 @@
{
// ignore
}
+ }
+
+ public File getIndexDirectory()
+ {
+ return this.indexLocation;
}
}
Copied: maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-indexer/src/main/java/org/apache/maven/archiva/indexer/lucene/LuceneRepositoryContentIndexFactory.java (from r521491, maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-indexer/src/main/java/org/apache/maven/archiva/indexer/lucene/LuceneRepositoryArtifactIndexFactory.java)
URL: http://svn.apache.org/viewvc/maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-indexer/src/main/java/org/apache/maven/archiva/indexer/lucene/LuceneRepositoryContentIndexFactory.java?view=diff&rev=525176&p1=maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-indexer/src/main/java/org/apache/maven/archiva/indexer/lucene/LuceneRepositoryArtifactIndexFactory.java&r1=521491&p2=maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-indexer/src/main/java/org/apache/maven/archiva/indexer/lucene/LuceneRepositoryContentIndexFactory.java&r2=525176
==============================================================================
--- maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-indexer/src/main/java/org/apache/maven/archiva/indexer/lucene/LuceneRepositoryArtifactIndexFactory.java (original)
+++ maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-indexer/src/main/java/org/apache/maven/archiva/indexer/lucene/LuceneRepositoryContentIndexFactory.java Tue Apr 3 08:21:33 2007
@@ -19,27 +19,81 @@
* under the License.
*/
-import org.apache.maven.archiva.indexer.RepositoryArtifactIndex;
-import org.apache.maven.archiva.indexer.RepositoryArtifactIndexFactory;
+import org.apache.maven.archiva.configuration.ArchivaConfiguration;
+import org.apache.maven.archiva.configuration.RepositoryConfiguration;
+import org.apache.maven.archiva.indexer.RepositoryContentIndex;
+import org.apache.maven.archiva.indexer.RepositoryContentIndexFactory;
+import org.apache.maven.archiva.indexer.bytecode.BytecodeHandlers;
+import org.apache.maven.archiva.indexer.filecontent.FileContentHandlers;
+import org.apache.maven.archiva.indexer.hashcodes.HashcodesHandlers;
+import org.apache.maven.archiva.model.ArchivaRepository;
import java.io.File;
/**
- * Factory for Lucene artifact index instances.
+ * Factory for Lucene repository content index instances.
*
* @author <a href="mailto:brett@apache.org">Brett Porter</a>
- * @plexus.component role="org.apache.maven.archiva.indexer.RepositoryArtifactIndexFactory" role-hint="lucene"
+ * @author <a href="mailto:joakime@apache.org">Joakim Erdfelt</a>
+ *
+ * @plexus.component role="org.apache.maven.archiva.indexer.RepositoryContentIndexFactory" role-hint="lucene"
*/
-public class LuceneRepositoryArtifactIndexFactory
- implements RepositoryArtifactIndexFactory
+public class LuceneRepositoryContentIndexFactory implements RepositoryContentIndexFactory
{
- public RepositoryArtifactIndex createStandardIndex( File indexPath )
+ /**
+ * @plexus.requirement
+ */
+ private ArchivaConfiguration configuration;
+
+ public RepositoryContentIndex createBytecodeIndex( ArchivaRepository repository )
+ {
+ File indexDir = toIndexDir( repository, "bytecode" );
+ return new LuceneRepositoryContentIndex( indexDir, new BytecodeHandlers() );
+ }
+
+ public RepositoryContentIndex createFileContentIndex( ArchivaRepository repository )
+ {
+ File indexDir = toIndexDir( repository, "filecontent" );
+ return new LuceneRepositoryContentIndex( indexDir, new FileContentHandlers() );
+ }
+
+ public RepositoryContentIndex createHashcodeIndex( ArchivaRepository repository )
{
- return new LuceneRepositoryArtifactIndex( indexPath, new LuceneStandardIndexRecordConverter() );
+ File indexDir = toIndexDir( repository, "hashcodes" );
+ return new LuceneRepositoryContentIndex( indexDir, new HashcodesHandlers() );
}
- public RepositoryArtifactIndex createMinimalIndex( File indexPath )
+ /**
+ * Obtain the index directory for the provided repository.
+ *
+ * @param repository the repository to obtain the index directory from.
+ * @param indexId the id of the index
+ * @return the directory to put the index into.
+ */
+ private File toIndexDir( ArchivaRepository repository, String indexId )
{
- return new LuceneRepositoryArtifactIndex( indexPath, new LuceneMinimalIndexRecordConverter() );
+ if ( !repository.isManaged() )
+ {
+ throw new IllegalArgumentException( "Only supports managed repositories." );
+ }
+
+ // Attempt to get the specified indexDir in the configuration first.
+ RepositoryConfiguration repoConfig = configuration.getConfiguration().findRepositoryById( repository.getId() );
+ File indexDir;
+
+ if ( repoConfig == null )
+ {
+ // No configured index dir, use the repository path instead.
+ String repoPath = repository.getUrl().getPath();
+ indexDir = new File( repoPath, ".index/" + indexId + "/" );
+ }
+ else
+ {
+ // Use configured index dir.
+ String repoPath = repoConfig.getIndexDir();
+ indexDir = new File( repoPath, "/" + indexId + "/" );
+ }
+
+ return indexDir;
}
}
Added: maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-indexer/src/main/java/org/apache/maven/archiva/indexer/lucene/LuceneRepositoryContentRecord.java
URL: http://svn.apache.org/viewvc/maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-indexer/src/main/java/org/apache/maven/archiva/indexer/lucene/LuceneRepositoryContentRecord.java?view=auto&rev=525176
==============================================================================
--- maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-indexer/src/main/java/org/apache/maven/archiva/indexer/lucene/LuceneRepositoryContentRecord.java (added)
+++ maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-indexer/src/main/java/org/apache/maven/archiva/indexer/lucene/LuceneRepositoryContentRecord.java Tue Apr 3 08:21:33 2007
@@ -0,0 +1,35 @@
+package org.apache.maven.archiva.indexer.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.
+ */
+
+/**
+ * A repository content index record.
+ *
+ * @author <a href="mailto:brett@apache.org">Brett Porter</a>
+ */
+public interface LuceneRepositoryContentRecord
+{
+ /**
+ * Get the primary key used to identify the record uniquely in the index.
+ *
+ * @return the primary key
+ */
+ public String getPrimaryKey();
+}
Propchange: maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-indexer/src/main/java/org/apache/maven/archiva/indexer/lucene/LuceneRepositoryContentRecord.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-indexer/src/main/java/org/apache/maven/archiva/indexer/lucene/LuceneRepositoryContentRecord.java
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
Propchange: maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-indexer/src/main/java/org/apache/maven/archiva/indexer/lucene/LuceneRepositoryContentRecord.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-indexer/src/main/java/org/apache/maven/archiva/indexer/lucene/analyzers/ClassnameTokenizer.java
URL: http://svn.apache.org/viewvc/maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-indexer/src/main/java/org/apache/maven/archiva/indexer/lucene/analyzers/ClassnameTokenizer.java?view=auto&rev=525176
==============================================================================
--- maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-indexer/src/main/java/org/apache/maven/archiva/indexer/lucene/analyzers/ClassnameTokenizer.java (added)
+++ maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-indexer/src/main/java/org/apache/maven/archiva/indexer/lucene/analyzers/ClassnameTokenizer.java Tue Apr 3 08:21:33 2007
@@ -0,0 +1,59 @@
+package org.apache.maven.archiva.indexer.lucene.analyzers;
+
+/*
+ * 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.analysis.CharTokenizer;
+import org.apache.maven.archiva.indexer.bytecode.BytecodeKeys;
+
+import java.io.Reader;
+
+/**
+ * Lucene Tokenizer for {@link BytecodeKeys#CLASSES} fields.
+ *
+ * @author <a href="mailto:joakim@erdfelt.com">Joakim Erdfelt</a>
+ * @version $Id$
+ */
+public class ClassnameTokenizer extends CharTokenizer
+{
+ public ClassnameTokenizer( Reader reader )
+ {
+ super( reader );
+ }
+
+ /**
+ * Determine Token Character.
+ *
+ * The field is a list of full classnames "com.foo.Object" seperated by
+ * newline characters. "\n".
+ *
+ * Identify newline "\n" and "." as the token delimiters.
+ */
+ protected boolean isTokenChar( char c )
+ {
+ return ( ( c != '\n' ) && ( c != '.' ) );
+ }
+
+ /*
+ protected char normalize( char c )
+ {
+ return Character.toLowerCase( c );
+ }
+ */
+}
Propchange: maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-indexer/src/main/java/org/apache/maven/archiva/indexer/lucene/analyzers/ClassnameTokenizer.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-indexer/src/main/java/org/apache/maven/archiva/indexer/lucene/analyzers/ClassnameTokenizer.java
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
Propchange: maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-indexer/src/main/java/org/apache/maven/archiva/indexer/lucene/analyzers/ClassnameTokenizer.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-indexer/src/main/java/org/apache/maven/archiva/indexer/lucene/analyzers/FilenamesTokenizer.java
URL: http://svn.apache.org/viewvc/maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-indexer/src/main/java/org/apache/maven/archiva/indexer/lucene/analyzers/FilenamesTokenizer.java?view=auto&rev=525176
==============================================================================
--- maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-indexer/src/main/java/org/apache/maven/archiva/indexer/lucene/analyzers/FilenamesTokenizer.java (added)
+++ maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-indexer/src/main/java/org/apache/maven/archiva/indexer/lucene/analyzers/FilenamesTokenizer.java Tue Apr 3 08:21:33 2007
@@ -0,0 +1,52 @@
+package org.apache.maven.archiva.indexer.lucene.analyzers;
+
+/*
+ * 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.analysis.CharTokenizer;
+import org.apache.maven.archiva.indexer.bytecode.BytecodeKeys;
+
+import java.io.Reader;
+
+/**
+ * Lucene Tokenizer for {@link BytecodeKeys#FILES} fields.
+ *
+ * @author <a href="mailto:joakim@erdfelt.com">Joakim Erdfelt</a>
+ * @version $Id$
+ */
+public class FilenamesTokenizer extends CharTokenizer
+{
+ public FilenamesTokenizer( Reader reader )
+ {
+ super( reader );
+ }
+
+ /**
+ * Determine Token Character.
+ *
+ * The field is a list of full filenames "/home/archiva/foo/readme.txt" seperated by
+ * newline characters. "\n".
+ *
+ * Identify newline "\n" and "/" as the token delimiters.
+ */
+ protected boolean isTokenChar( char c )
+ {
+ return ( ( c != '\n' ) && ( c != '/' ) );
+ }
+}
Propchange: maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-indexer/src/main/java/org/apache/maven/archiva/indexer/lucene/analyzers/FilenamesTokenizer.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-indexer/src/main/java/org/apache/maven/archiva/indexer/lucene/analyzers/FilenamesTokenizer.java
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
Propchange: maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-indexer/src/main/java/org/apache/maven/archiva/indexer/lucene/analyzers/FilenamesTokenizer.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-indexer/src/main/java/org/apache/maven/archiva/indexer/lucene/analyzers/GroupIdTokenizer.java
URL: http://svn.apache.org/viewvc/maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-indexer/src/main/java/org/apache/maven/archiva/indexer/lucene/analyzers/GroupIdTokenizer.java?view=auto&rev=525176
==============================================================================
--- maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-indexer/src/main/java/org/apache/maven/archiva/indexer/lucene/analyzers/GroupIdTokenizer.java (added)
+++ maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-indexer/src/main/java/org/apache/maven/archiva/indexer/lucene/analyzers/GroupIdTokenizer.java Tue Apr 3 08:21:33 2007
@@ -0,0 +1,52 @@
+package org.apache.maven.archiva.indexer.lucene.analyzers;
+
+/*
+ * 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.analysis.CharTokenizer;
+import org.apache.maven.archiva.indexer.ArtifactKeys;
+
+import java.io.Reader;
+
+/**
+ * Lucene Tokenizer for {@link ArtifactKeys#GROUPID} fields.
+ *
+ * @author <a href="mailto:joakim@erdfelt.com">Joakim Erdfelt</a>
+ * @version $Id$
+ */
+public class GroupIdTokenizer extends CharTokenizer
+{
+ public GroupIdTokenizer( Reader reader )
+ {
+ super( reader );
+ }
+
+ /**
+ * Determine Token Character.
+ *
+ * The field is a groupId "com.foo.project".
+ *
+ * Identify "." as the token delimiter.
+ */
+ protected boolean isTokenChar( char c )
+ {
+ return ( c != '.' );
+ }
+
+}
Propchange: maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-indexer/src/main/java/org/apache/maven/archiva/indexer/lucene/analyzers/GroupIdTokenizer.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-indexer/src/main/java/org/apache/maven/archiva/indexer/lucene/analyzers/GroupIdTokenizer.java
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
Propchange: maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-indexer/src/main/java/org/apache/maven/archiva/indexer/lucene/analyzers/GroupIdTokenizer.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-indexer/src/main/java/org/apache/maven/archiva/indexer/lucene/analyzers/VersionTokenizer.java
URL: http://svn.apache.org/viewvc/maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-indexer/src/main/java/org/apache/maven/archiva/indexer/lucene/analyzers/VersionTokenizer.java?view=auto&rev=525176
==============================================================================
--- maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-indexer/src/main/java/org/apache/maven/archiva/indexer/lucene/analyzers/VersionTokenizer.java (added)
+++ maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-indexer/src/main/java/org/apache/maven/archiva/indexer/lucene/analyzers/VersionTokenizer.java Tue Apr 3 08:21:33 2007
@@ -0,0 +1,51 @@
+package org.apache.maven.archiva.indexer.lucene.analyzers;
+
+/*
+ * 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.analysis.CharTokenizer;
+import org.apache.maven.archiva.indexer.ArtifactKeys;
+
+import java.io.Reader;
+
+/**
+ * Lucene Tokenizer for {@link ArtifactKeys#VERSION} fields.
+ *
+ * @author <a href="mailto:joakim@erdfelt.com">Joakim Erdfelt</a>
+ * @version $Id$
+ */
+public class VersionTokenizer extends CharTokenizer
+{
+ public VersionTokenizer( Reader reader )
+ {
+ super( reader );
+ }
+
+ /**
+ * Determine Token Character.
+ *
+ * The field is a version id in the form "1.0-alpha-4-SNAPSHOT".
+ *
+ * Identify "-" as the token delimiter.
+ */
+ protected boolean isTokenChar( char c )
+ {
+ return ( c != '.' ) && ( c != '-' );
+ }
+}
Propchange: maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-indexer/src/main/java/org/apache/maven/archiva/indexer/lucene/analyzers/VersionTokenizer.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-indexer/src/main/java/org/apache/maven/archiva/indexer/lucene/analyzers/VersionTokenizer.java
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
Propchange: maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-indexer/src/main/java/org/apache/maven/archiva/indexer/lucene/analyzers/VersionTokenizer.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-indexer/src/test/artifact-dumps/archiva-common-1.0.jar.txt
URL: http://svn.apache.org/viewvc/maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-indexer/src/test/artifact-dumps/archiva-common-1.0.jar.txt?view=auto&rev=525176
==============================================================================
--- maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-indexer/src/test/artifact-dumps/archiva-common-1.0.jar.txt (added)
+++ maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-indexer/src/test/artifact-dumps/archiva-common-1.0.jar.txt Tue Apr 3 08:21:33 2007
@@ -0,0 +1,56 @@
+FILENAME|archiva-common-1.0-SNAPSHOT.jar
+SIZE|8516
+HASH_MD5|a5d0d280ce83133432d8fed8f2ce3474
+HASH_SHA1|c2635a1b38bd4520a6604664c04b2b3c32330864
+HASH_BYTECODE|2868f6661c55afda5a3b62859fbc8b1beb021b6e
+JDK|1.4
+CLASS|org.apache.maven.archiva.common.ArchivaException
+CLASS|org.apache.maven.archiva.common.utils.BaseFile
+CLASS|org.apache.maven.archiva.common.utils.DateUtil
+CLASS|org.apache.maven.archiva.common.utils.PathUtil
+CLASS|org.apache.maven.archiva.common.utils.VersionUtil
+METHOD|org.apache.maven.archiva.common.ArchivaException.<init>(Ljava/lang/String;Ljava/lang/Throwable;)V
+METHOD|org.apache.maven.archiva.common.ArchivaException.<init>(Ljava/lang/String;)V
+METHOD|org.apache.maven.archiva.common.utils.BaseFile.<init>(Ljava/io/File;)V
+METHOD|org.apache.maven.archiva.common.utils.BaseFile.<init>(Ljava/io/File;Ljava/io/File;)V
+METHOD|org.apache.maven.archiva.common.utils.BaseFile.<init>(Ljava/io/File;Ljava/lang/String;)V
+METHOD|org.apache.maven.archiva.common.utils.BaseFile.<init>(Ljava/lang/String;)V
+METHOD|org.apache.maven.archiva.common.utils.BaseFile.<init>(Ljava/lang/String;Ljava/io/File;)V
+METHOD|org.apache.maven.archiva.common.utils.BaseFile.<init>(Ljava/lang/String;Ljava/lang/String;)V
+METHOD|org.apache.maven.archiva.common.utils.BaseFile.<init>(Ljava/net/URI;)V
+METHOD|org.apache.maven.archiva.common.utils.BaseFile.getBaseDir()Ljava/io/File;
+METHOD|org.apache.maven.archiva.common.utils.BaseFile.getRelativePath()Ljava/lang/String;
+METHOD|org.apache.maven.archiva.common.utils.BaseFile.setBaseDir(Ljava/io/File;)V
+METHOD|org.apache.maven.archiva.common.utils.BaseFile.setBaseDir(Ljava/lang/String;)V
+METHOD|org.apache.maven.archiva.common.utils.BaseFile.class$(Ljava/lang/String;)Ljava/lang/Class;
+METHOD|org.apache.maven.archiva.common.utils.DateUtil.<init>()V
+METHOD|org.apache.maven.archiva.common.utils.DateUtil.getDuration(J)Ljava/lang/String;
+METHOD|org.apache.maven.archiva.common.utils.DateUtil.getDuration(JJ)Ljava/lang/String;
+METHOD|org.apache.maven.archiva.common.utils.DateUtil.getDuration(Ljava/util/Date;Ljava/util/Date;)Ljava/lang/String;
+METHOD|org.apache.maven.archiva.common.utils.DateUtil.getDuration(Ljava/util/Calendar;Ljava/util/Calendar;)Ljava/lang/String;
+METHOD|org.apache.maven.archiva.common.utils.DateUtil.appendInterval(Ljava/lang/StringBuffer;ILjava/lang/String;)V
+METHOD|org.apache.maven.archiva.common.utils.PathUtil.<init>()V
+METHOD|org.apache.maven.archiva.common.utils.PathUtil.getRelative(Ljava/lang/String;Ljava/io/File;)Ljava/lang/String;
+METHOD|org.apache.maven.archiva.common.utils.PathUtil.getRelative(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
+METHOD|org.apache.maven.archiva.common.utils.VersionUtil.<init>()V
+METHOD|org.apache.maven.archiva.common.utils.VersionUtil.isSnapshot(Ljava/lang/String;)Z
+METHOD|org.apache.maven.archiva.common.utils.VersionUtil.getBaseVersion(Ljava/lang/String;)Ljava/lang/String;
+METHOD|org.apache.maven.archiva.common.utils.VersionUtil.<clinit>()V
+FILE|META-INF/
+FILE|META-INF/MANIFEST.MF
+FILE|META-INF/maven/
+FILE|META-INF/maven/org.apache.maven.archiva/
+FILE|META-INF/maven/org.apache.maven.archiva/archiva-common/
+FILE|META-INF/maven/org.apache.maven.archiva/archiva-common/pom.properties
+FILE|META-INF/maven/org.apache.maven.archiva/archiva-common/pom.xml
+FILE|org/
+FILE|org/apache/
+FILE|org/apache/maven/
+FILE|org/apache/maven/archiva/
+FILE|org/apache/maven/archiva/common/
+FILE|org/apache/maven/archiva/common/ArchivaException.class
+FILE|org/apache/maven/archiva/common/utils/
+FILE|org/apache/maven/archiva/common/utils/BaseFile.class
+FILE|org/apache/maven/archiva/common/utils/DateUtil.class
+FILE|org/apache/maven/archiva/common/utils/PathUtil.class
+FILE|org/apache/maven/archiva/common/utils/VersionUtil.class
Propchange: maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-indexer/src/test/artifact-dumps/archiva-common-1.0.jar.txt
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/archiva/branches/archiva-jpox-database-refactor/archiva-base/archiva-indexer/src/test/artifact-dumps/archiva-common-1.0.jar.txt
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"