summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrett Porter <brett@apache.org>2006-06-08 03:54:06 +0000
committerBrett Porter <brett@apache.org>2006-06-08 03:54:06 +0000
commiteba7bf274a9560283fe56d5f7e53e244ae6e655b (patch)
tree595ee21660fef8e26e6e9a96f75373ea618022d8
parent2ace38a72fa19f20d1c196eccbbe12bc66cad29d (diff)
downloadarchiva-eba7bf274a9560283fe56d5f7e53e244ae6e655b.tar.gz
archiva-eba7bf274a9560283fe56d5f7e53e244ae6e655b.zip
[MRM-118] refactor the searchers into components any make them thread safe
git-svn-id: https://svn.apache.org/repos/asf/maven/repository-manager/trunk@412642 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r--maven-repository-application/src/main/java/org/apache/maven/repository/manager/cli/IndexSearcherCli.java6
-rw-r--r--maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/AbstractRepositoryIndex.java8
-rw-r--r--maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/DefaultRepositoryIndexSearchLayer.java412
-rw-r--r--maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/DefaultRepositoryIndexSearcher.java88
-rw-r--r--maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/DefaultRepositoryIndexingFactory.java17
-rw-r--r--maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/RepositoryIndexSearchLayer.java497
-rw-r--r--maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/RepositoryIndexSearcher.java8
-rw-r--r--maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/RepositoryIndexingFactory.java15
-rw-r--r--maven-repository-indexer/src/test/java/org/apache/maven/repository/indexing/ArtifactRepositoryIndexingTest.java51
-rw-r--r--maven-repository-indexer/src/test/java/org/apache/maven/repository/indexing/MetadataRepositoryIndexingTest.java18
-rw-r--r--maven-repository-indexer/src/test/java/org/apache/maven/repository/indexing/PomRepositoryIndexingTest.java48
-rw-r--r--maven-repository-indexer/src/test/java/org/apache/maven/repository/indexing/RepositoryIndexSearchLayerTest.java23
-rw-r--r--maven-repository-webapp/src/main/java/org/apache/maven/repository/manager/web/action/GeneralSearchAction.java9
-rw-r--r--maven-repository-webapp/src/main/java/org/apache/maven/repository/manager/web/action/PackageSearchAction.java9
14 files changed, 598 insertions, 611 deletions
diff --git a/maven-repository-application/src/main/java/org/apache/maven/repository/manager/cli/IndexSearcherCli.java b/maven-repository-application/src/main/java/org/apache/maven/repository/manager/cli/IndexSearcherCli.java
index 97470feff..b7e410bb3 100644
--- a/maven-repository-application/src/main/java/org/apache/maven/repository/manager/cli/IndexSearcherCli.java
+++ b/maven-repository-application/src/main/java/org/apache/maven/repository/manager/cli/IndexSearcherCli.java
@@ -20,9 +20,9 @@ import org.apache.maven.artifact.repository.ArtifactRepository;
import org.apache.maven.artifact.repository.ArtifactRepositoryFactory;
import org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout;
import org.apache.maven.repository.indexing.ArtifactRepositoryIndex;
-import org.apache.maven.repository.indexing.DefaultRepositoryIndexSearcher;
import org.apache.maven.repository.indexing.RepositoryIndexException;
import org.apache.maven.repository.indexing.RepositoryIndexSearchException;
+import org.apache.maven.repository.indexing.RepositoryIndexSearcher;
import org.apache.maven.repository.indexing.RepositoryIndexingFactory;
import org.apache.maven.repository.indexing.query.SinglePhraseQuery;
import org.codehaus.classworlds.ClassWorld;
@@ -67,11 +67,11 @@ public class IndexSearcherCli
ArtifactRepositoryIndex index =
indexFactory.createArtifactRepositoryIndex( new File( args[0], ".index" ).getAbsolutePath(), repository );
- DefaultRepositoryIndexSearcher searcher = indexFactory.createDefaultRepositoryIndexSearcher( index );
+ RepositoryIndexSearcher searcher = (RepositoryIndexSearcher) embedder.lookup( RepositoryIndexSearcher.ROLE );
try
{
- System.out.println( searcher.search( new SinglePhraseQuery( args[1], args[2] ) ) );
+ System.out.println( searcher.search( new SinglePhraseQuery( args[1], args[2] ), index ) );
}
finally
{
diff --git a/maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/AbstractRepositoryIndex.java b/maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/AbstractRepositoryIndex.java
index 32f514a05..5617dc85d 100644
--- a/maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/AbstractRepositoryIndex.java
+++ b/maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/AbstractRepositoryIndex.java
@@ -32,21 +32,24 @@ import java.util.Collection;
import java.util.zip.ZipEntry;
/**
- * Abstract class for RepositoryIndexers
+ * Abstract class for RepositoryIndexers.
*
* @author Edwin Punzalan
*/
public abstract class AbstractRepositoryIndex
implements RepositoryIndex
{
+ // TODO [!] can this be derived from the repository?
private String indexPath;
private boolean indexOpen;
+ // TODO [!] why is the writer open for the life, but not the reader? why keep them open that length of time anyway? investigate best practices in Lucene
private IndexWriter indexWriter;
protected ArtifactRepository repository;
+ // TODO [!] is this really needed externally?
private Analyzer analyzer;
/**
@@ -155,6 +158,7 @@ public abstract class AbstractRepositoryIndex
protected IndexWriter getIndexWriter()
throws IOException
{
+ // TODO [!] why is this allowed to be called before open()?
if ( indexWriter == null )
{
indexWriter = new IndexWriter( indexPath, getAnalyzer(), false );
@@ -220,7 +224,7 @@ public abstract class AbstractRepositoryIndex
}
catch ( IOException ie )
{
- throw new RepositoryIndexException( indexPath + "is not a valid directory." );
+ throw new RepositoryIndexException( indexPath + " is not a valid directory." );
}
finally
{
diff --git a/maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/DefaultRepositoryIndexSearchLayer.java b/maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/DefaultRepositoryIndexSearchLayer.java
new file mode 100644
index 000000000..da6bd6bb1
--- /dev/null
+++ b/maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/DefaultRepositoryIndexSearchLayer.java
@@ -0,0 +1,412 @@
+package org.apache.maven.repository.indexing;
+
+/*
+ * Copyright 2005-2006 The Apache Software Foundation.
+ *
+ * Licensed 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.maven.artifact.Artifact;
+import org.apache.maven.artifact.factory.ArtifactFactory;
+import org.apache.maven.model.Dependency;
+import org.apache.maven.model.License;
+import org.apache.maven.model.Model;
+import org.apache.maven.model.Plugin;
+import org.apache.maven.model.ReportPlugin;
+import org.apache.maven.repository.indexing.query.Query;
+import org.apache.maven.repository.indexing.query.SinglePhraseQuery;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.StringTokenizer;
+
+/**
+ * This class is to be invoked or called by the action class for
+ * general and advanced searching. It uses the DefaultRepositoryIndexSearcher
+ * to perform the search and constructs the search result objects to be
+ * returned to tha webapp action class.
+ *
+ * @plexus.component role="org.apache.maven.repository.indexing.RepositoryIndexSearchLayer"
+ */
+public class DefaultRepositoryIndexSearchLayer
+ implements RepositoryIndexSearchLayer
+{
+ /**
+ * @plexus.requirement
+ */
+ private ArtifactFactory factory;
+
+ /**
+ * @plexus.requirement
+ */
+ private RepositoryIndexSearcher searcher;
+
+ public List searchGeneral( String keyword, RepositoryIndex index )
+ throws RepositoryIndexSearchException
+ {
+ List generalSearchResults = new ArrayList();
+ for ( int i = 0; i < RepositoryIndex.FIELDS.length; i++ )
+ {
+ Query qry = new SinglePhraseQuery( RepositoryIndex.FIELDS[i], keyword );
+ List results = searchAdvanced( qry, index );
+ for ( Iterator iter = results.iterator(); iter.hasNext(); )
+ {
+ SearchResult result = (SearchResult) iter.next();
+ Map map = result.getFieldMatches();
+ Set entrySet = map.entrySet();
+ for ( Iterator it = entrySet.iterator(); it.hasNext(); )
+ {
+ Map.Entry entry = (Map.Entry) it.next();
+ SearchResult result2 = createSearchResult( result.getArtifact(), map, keyword,
+ (String) entry.getKey(), generalSearchResults );
+ generalSearchResults.add( result2 );
+ }
+ }
+ }
+
+ return generalSearchResults;
+ }
+
+ public List searchAdvanced( Query qry, RepositoryIndex index )
+ throws RepositoryIndexSearchException
+ {
+ List searchResults = new ArrayList();
+
+ List hits = searcher.search( qry, index );
+ for ( Iterator it = hits.iterator(); it.hasNext(); )
+ {
+ RepositoryIndexSearchHit hit = (RepositoryIndexSearchHit) it.next();
+ SearchResult result = new SearchResult();
+ if ( hit.isHashMap() )
+ {
+ Map map = (Map) hit.getObject();
+ result.setArtifact( (Artifact) map.get( RepositoryIndex.ARTIFACT ) );
+
+ Map fields = new HashMap();
+ fields.put( RepositoryIndex.FLD_CLASSES, map.get( RepositoryIndex.FLD_CLASSES ) );
+ fields.put( RepositoryIndex.FLD_PACKAGES, map.get( RepositoryIndex.FLD_PACKAGES ) );
+ fields.put( RepositoryIndex.FLD_FILES, map.get( RepositoryIndex.FLD_FILES ) );
+ fields.put( RepositoryIndex.FLD_PACKAGING, map.get( RepositoryIndex.FLD_PACKAGING ) );
+ fields.put( RepositoryIndex.FLD_SHA1, map.get( RepositoryIndex.FLD_SHA1 ) );
+ fields.put( RepositoryIndex.FLD_MD5, map.get( RepositoryIndex.FLD_MD5 ) );
+
+ result.setFieldMatches( fields );
+ searchResults.add( result );
+ }
+ else if ( hit.isModel() )
+ {
+ Model model = (Model) hit.getObject();
+ for ( int i = 0; i < RepositoryIndex.MODEL_FIELDS.length; i++ )
+ {
+ result = createSearchResult( model, RepositoryIndex.MODEL_FIELDS[i], searchResults );
+ searchResults.add( result );
+ }
+ }
+ else if ( hit.isMetadata() )
+ {
+ //@todo what about metadata objects?
+// RepositoryMetadata metadata = (RepositoryMetadata) hit.getObject();
+ }
+ }
+
+ return searchResults;
+ }
+
+ /**
+ * Method for checking if the artifact already exists in the search result list.
+ *
+ * @param groupId the group id of the artifact
+ * @param artifactId the artifact id of the artifact
+ * @param version the version of the artifact
+ * @return the int index number of the artifact in the search result
+ */
+ private int getListIndex( String groupId, String artifactId, String version, List list )
+ {
+ int index = 0;
+ for ( Iterator iter = list.iterator(); iter.hasNext(); )
+ {
+ SearchResult result = (SearchResult) iter.next();
+ Artifact artifact = result.getArtifact();
+ if ( artifact.getGroupId().equals( groupId ) && artifact.getArtifactId().equals( artifactId ) &&
+ artifact.getVersion().equals( version ) )
+ {
+ return index;
+ }
+ index++;
+ }
+ return -1;
+ }
+
+ /**
+ * Method to create the unique artifact id to represent the artifact in the repository
+ *
+ * @param groupId the artifact groupId
+ * @param artifactId the artifact artifactId
+ * @param version the artifact version
+ * @return the String id to uniquely represent the artifact
+ */
+ private String getId( String groupId, String artifactId, String version )
+ {
+ return groupId + ":" + artifactId + ":" + version;
+ }
+
+ /**
+ * Method to get the matching values (packages, classes and files) in the
+ * given string to be tokenized.
+ *
+ * @param tokenizeStr the string to be tokenized
+ * @param key the map key
+ * @param resultMap the map to be populated
+ * @param keyword the value to be matched
+ * @return the map that contains the matched values
+ */
+ private Map getArtifactHits( String tokenizeStr, String key, Map resultMap, String keyword )
+ {
+ List values = new ArrayList();
+ StringTokenizer st = new StringTokenizer( tokenizeStr, "\n" );
+ while ( st.hasMoreTokens() )
+ {
+ String str = st.nextToken();
+ if ( str.toLowerCase().indexOf( keyword.toLowerCase() ) != -1 )
+ {
+ values.add( str );
+ }
+ }
+
+ if ( !values.isEmpty() )
+ {
+ resultMap.put( key, values );
+ }
+
+ return resultMap;
+ }
+
+ /**
+ * Method to create SearchResult object from a given HashMap. Used for general search results
+ *
+ * @param artifact the retrieved artifact from the index
+ * @param map the HashMap object that contains the values for the search result
+ * @param keyword the query term
+ * @return the SearchResult object
+ */
+ private SearchResult createSearchResult( Artifact artifact, Map map, String keyword, String field,
+ List generalSearchResults )
+ {
+ int index = getListIndex( artifact.getGroupId(), artifact.getArtifactId(), artifact.getVersion(),
+ generalSearchResults );
+ SearchResult result;
+ Map resultMap;
+
+ if ( index > -1 )
+ {
+ result = (SearchResult) generalSearchResults.remove( index );
+ resultMap = result.getFieldMatches();
+ }
+ else
+ {
+ result = new SearchResult();
+ result.setArtifact( artifact );
+ resultMap = new HashMap();
+ }
+
+ // the searched field is either the class, package or file field
+ if ( field.equals( RepositoryIndex.FLD_CLASSES ) || field.equals( RepositoryIndex.FLD_PACKAGES ) ||
+ field.equals( RepositoryIndex.FLD_FILES ) )
+ {
+ resultMap = getArtifactHits( (String) map.get( field ), field, resultMap, keyword );
+ }
+ else if ( field.equals( RepositoryIndex.FLD_SHA1 ) ||
+ ( field.equals( RepositoryIndex.FLD_MD5 ) || field.equals( RepositoryIndex.FLD_PACKAGING ) ) )
+ {
+ if ( map.get( field ) != null )
+ {
+ // the searched field is either the md5, sha1 or packaging field
+ if ( ( (String) map.get( field ) ).toLowerCase().equals( keyword.toLowerCase() ) ||
+ ( (String) map.get( field ) ).toLowerCase().indexOf( keyword.toLowerCase() ) != -1 )
+ {
+ resultMap.put( field, map.get( field ) );
+ }
+ }
+ }
+ else if ( field.equals( RepositoryIndex.FLD_DEPENDENCIES ) ||
+ field.equals( RepositoryIndex.FLD_PLUGINS_BUILD ) || field.equals( RepositoryIndex.FLD_PLUGINS_REPORT ) ||
+ field.equals( RepositoryIndex.FLD_LICENSE_URLS ) )
+ {
+ List contents = (List) map.get( field );
+ List values = new ArrayList();
+ for ( Iterator it = contents.iterator(); it.hasNext(); )
+ {
+ String str = (String) it.next();
+ if ( str.toLowerCase().equals( keyword.toLowerCase() ) )
+ {
+ values.add( str );
+ }
+ }
+ if ( values.size() > 0 )
+ {
+ resultMap.put( field, values );
+ }
+ }
+ result.setFieldMatches( resultMap );
+
+ return result;
+ }
+
+ /**
+ * Method to create a SearchResult object from the given model. Used for advanced search results
+ *
+ * @param model the Model object that contains the values for the search result
+ * @param field the field whose value is to be retrieved
+ * @return a SearchResult object
+ */
+ private SearchResult createSearchResult( Model model, String field, List searchResults )
+ {
+ int index = getListIndex( model.getGroupId(), model.getArtifactId(), model.getVersion(), searchResults );
+ SearchResult result;
+ Map map;
+
+ // the object already exists in the search result list
+ if ( index > -1 )
+ {
+ result = (SearchResult) searchResults.remove( index );
+ map = result.getFieldMatches();
+ }
+ else
+ {
+ result = new SearchResult();
+ result.setArtifact( factory.createBuildArtifact( model.getGroupId(), model.getArtifactId(),
+ model.getVersion(), model.getPackaging() ) );
+ map = new HashMap();
+ }
+
+ // get the matched value with the query term
+ List values = new ArrayList();
+ if ( field.equals( RepositoryIndex.FLD_LICENSE_URLS ) )
+ {
+ values = getLicenseUrls( model );
+ }
+ else if ( field.equals( RepositoryIndex.FLD_DEPENDENCIES ) )
+ {
+ values = getDependencies( model );
+ }
+ else if ( field.equals( RepositoryIndex.FLD_PLUGINS_BUILD ) )
+ {
+ if ( model.getBuild() != null && model.getBuild().getPlugins() != null )
+ {
+ values = getBuildPlugins( model );
+ }
+ }
+ else if ( field.equals( RepositoryIndex.FLD_PLUGINS_REPORT ) )
+ {
+ if ( model.getReporting() != null && model.getReporting().getPlugins() != null )
+ {
+ values = getReportPlugins( model );
+ }
+ }
+ else if ( field.equals( RepositoryIndex.FLD_PACKAGING ) )
+ {
+ if ( model.getPackaging() != null )
+ {
+ map.put( RepositoryIndex.FLD_PACKAGING, model.getPackaging() );
+ }
+ }
+
+ if ( !values.isEmpty() )
+ {
+ map.put( field, values );
+ }
+ result.setFieldMatches( map );
+
+ return result;
+ }
+
+ /**
+ * Method for getting the query term hits or matches in the pom's license urls.
+ *
+ * @param model the Model object that contains the pom values
+ * @return a List of matched license urls
+ */
+ private List getLicenseUrls( Model model )
+ {
+ List licenseUrls = new ArrayList();
+ List licenseList = model.getLicenses();
+ for ( Iterator it = licenseList.iterator(); it.hasNext(); )
+ {
+ License license = (License) it.next();
+ licenseUrls.add( license.getUrl() );
+ }
+ return licenseUrls;
+ }
+
+ /**
+ * Method for getting the hits or matches in the dependencies specified in the pom
+ *
+ * @param model the Model object that contains the pom values
+ * @return a List of matched dependencies
+ */
+ private List getDependencies( Model model )
+ {
+ List dependencies = new ArrayList();
+ List dependencyList = model.getDependencies();
+ for ( Iterator it = dependencyList.iterator(); it.hasNext(); )
+ {
+ Dependency dep = (Dependency) it.next();
+ dependencies.add( getId( dep.getGroupId(), dep.getArtifactId(), dep.getVersion() ) );
+ }
+
+ return dependencies;
+ }
+
+ /**
+ * Method for getting the hits or matches in the build plugins specified in the pom
+ *
+ * @param model the Model object that contains the pom values
+ * @return a List of matched build plugins
+ */
+ private List getBuildPlugins( Model model )
+ {
+ List values = new ArrayList();
+ List plugins = model.getBuild().getPlugins();
+ for ( Iterator it = plugins.iterator(); it.hasNext(); )
+ {
+ Plugin plugin = (Plugin) it.next();
+ values.add( getId( plugin.getGroupId(), plugin.getArtifactId(), plugin.getVersion() ) );
+ }
+
+ return values;
+ }
+
+ /**
+ * Method for getting the hits or matches in the reporting plugins specified in the pom
+ *
+ * @param model the Model object that contains the pom values
+ * @return a List of matched reporting plugins
+ */
+ private List getReportPlugins( Model model )
+ {
+ List values = new ArrayList();
+ List plugins = model.getReporting().getPlugins();
+ for ( Iterator it = plugins.iterator(); it.hasNext(); )
+ {
+ ReportPlugin plugin = (ReportPlugin) it.next();
+ values.add( getId( plugin.getGroupId(), plugin.getArtifactId(), plugin.getVersion() ) );
+ }
+
+ return values;
+ }
+
+}
diff --git a/maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/DefaultRepositoryIndexSearcher.java b/maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/DefaultRepositoryIndexSearcher.java
index 61045e2ac..f83c0d5de 100644
--- a/maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/DefaultRepositoryIndexSearcher.java
+++ b/maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/DefaultRepositoryIndexSearcher.java
@@ -22,6 +22,7 @@ import org.apache.lucene.search.Hits;
import org.apache.lucene.search.IndexSearcher;
import org.apache.maven.artifact.Artifact;
import org.apache.maven.artifact.factory.ArtifactFactory;
+import org.apache.maven.artifact.repository.ArtifactRepository;
import org.apache.maven.artifact.repository.metadata.ArtifactRepositoryMetadata;
import org.apache.maven.artifact.repository.metadata.GroupRepositoryMetadata;
import org.apache.maven.artifact.repository.metadata.Metadata;
@@ -50,40 +51,24 @@ import java.util.StringTokenizer;
/**
* Implementation Class for searching through the index.
*
- * @todo this is not a component, but extends ALE, meaning logging will throw an exception! -- should be a component
+ * @plexus.component role="org.apache.maven.repository.indexing.RepositoryIndexSearcher"
*/
public class DefaultRepositoryIndexSearcher
extends AbstractLogEnabled
implements RepositoryIndexSearcher
{
- protected RepositoryIndex index;
-
- private ArtifactFactory factory;
-
- private List artifactList;
-
/**
- * Constructor
- *
- * @param index the index object
+ * @plexus.requirement
*/
- protected DefaultRepositoryIndexSearcher( RepositoryIndex index, ArtifactFactory factory )
- {
- this.index = index;
- this.factory = factory;
- }
+ private ArtifactFactory factory;
- /**
- * @see RepositoryIndexSearcher#search(org.apache.maven.repository.indexing.query.Query)
- */
- public List search( Query query )
+ public List search( Query query, RepositoryIndex index )
throws RepositoryIndexSearchException
{
- artifactList = new ArrayList();
org.apache.lucene.search.Query luceneQuery;
try
{
- luceneQuery = createLuceneQuery( query );
+ luceneQuery = query.createLuceneQuery( index );
}
catch ( ParseException e )
{
@@ -100,11 +85,15 @@ public class DefaultRepositoryIndexSearcher
throw new RepositoryIndexSearchException( "Unable to open index: " + e.getMessage(), e );
}
- List docs;
+ List docs = new ArrayList();
try
{
Hits hits = searcher.search( luceneQuery );
- docs = buildList( hits );
+ for ( int i = 0; i < hits.length(); i++ )
+ {
+ Document doc = hits.doc( i );
+ docs.add( createSearchedObjectFromIndexDocument( doc, index.getRepository() ) );
+ }
}
catch ( MalformedURLException e )
{
@@ -130,43 +119,14 @@ public class DefaultRepositoryIndexSearcher
}
/**
- * Method to create a lucene Query object by converting a prepared Query object
- *
- * @param query the prepared Query object to be converted into a lucene Query object
- * @return a lucene Query object to represent the passed Query object
- * @throws ParseException
- */
- private org.apache.lucene.search.Query createLuceneQuery( Query query )
- throws ParseException
- {
- return query.createLuceneQuery( index );
- }
-
- /**
- * Create a list of artifact objects from the result set.
- *
- * @param hits the search result set
- * @return List
- */
- private List buildList( Hits hits )
- throws RepositoryIndexSearchException, IOException
- {
- for ( int i = 0; i < hits.length(); i++ )
- {
- Document doc = hits.doc( i );
- artifactList.add( createSearchedObjectFromIndexDocument( doc ) );
- }
-
- return artifactList;
- }
-
- /**
* Method for creating the object to be returned for the search
*
- * @param doc the index document where the object field values will be retrieved from
+ * @param doc the index document where the object field values will be retrieved from
+ * @param repository
* @return Object
*/
- protected RepositoryIndexSearchHit createSearchedObjectFromIndexDocument( Document doc )
+ protected RepositoryIndexSearchHit createSearchedObjectFromIndexDocument( Document doc,
+ ArtifactRepository repository )
throws RepositoryIndexSearchException
{
RepositoryIndexSearchHit searchHit = null;
@@ -180,8 +140,7 @@ public class DefaultRepositoryIndexSearcher
String packaging = doc.get( RepositoryIndex.FLD_PACKAGING );
Artifact artifact = factory.createBuildArtifact( groupId, artifactId, version, packaging );
- artifact.setFile(
- new File( index.getRepository().getBasedir(), index.getRepository().pathOf( artifact ) ) );
+ artifact.setFile( new File( repository.getBasedir(), repository.pathOf( artifact ) ) );
Map map = new HashMap();
map.put( RepositoryIndex.ARTIFACT, artifact );
@@ -201,7 +160,7 @@ public class DefaultRepositoryIndexSearcher
Artifact pomArtifact = factory.createProjectArtifact( groupId, artifactId, version );
searchHit = new RepositoryIndexSearchHit( false, false, true );
- searchHit.setObject( readPom( pomArtifact ) );
+ searchHit.setObject( readPom( pomArtifact, repository ) );
}
// the document is of type metadata
else if ( doc.get( RepositoryIndex.FLD_DOCTYPE ).equals( RepositoryIndex.METADATA ) )
@@ -233,7 +192,7 @@ public class DefaultRepositoryIndexSearcher
repoMetadata = new GroupRepositoryMetadata( groupId );
}
- repoMetadata.setMetadata( readMetadata( repoMetadata ) );
+ repoMetadata.setMetadata( readMetadata( repoMetadata, repository ) );
searchHit = new RepositoryIndexSearchHit( false, true, false );
searchHit.setObject( repoMetadata );
@@ -247,11 +206,10 @@ public class DefaultRepositoryIndexSearcher
*
* @return RepositoryMetadata
*/
- private Metadata readMetadata( RepositoryMetadata repoMetadata )
+ private Metadata readMetadata( RepositoryMetadata repoMetadata, ArtifactRepository repository )
throws RepositoryIndexSearchException
{
- File file = new File( index.getRepository().getBasedir(),
- index.getRepository().pathOfRemoteRepositoryMetadata( repoMetadata ) );
+ File file = new File( repository.getBasedir(), repository.pathOfRemoteRepositoryMetadata( repoMetadata ) );
MetadataXpp3Reader metadataReader = new MetadataXpp3Reader();
@@ -284,10 +242,10 @@ public class DefaultRepositoryIndexSearcher
*
* @return RepositoryMetadata
*/
- private Model readPom( Artifact pomArtifact )
+ private Model readPom( Artifact pomArtifact, ArtifactRepository repository )
throws RepositoryIndexSearchException
{
- File file = new File( index.getRepository().getBasedir(), index.getRepository().pathOf( pomArtifact ) );
+ File file = new File( repository.getBasedir(), repository.pathOf( pomArtifact ) );
MavenXpp3Reader r = new MavenXpp3Reader();
diff --git a/maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/DefaultRepositoryIndexingFactory.java b/maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/DefaultRepositoryIndexingFactory.java
index 7c2af3ec0..62276d717 100644
--- a/maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/DefaultRepositoryIndexingFactory.java
+++ b/maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/DefaultRepositoryIndexingFactory.java
@@ -23,7 +23,6 @@ import org.apache.maven.repository.digest.Digester;
/**
* @author Edwin Punzalan
* @plexus.component role="org.apache.maven.repository.indexing.RepositoryIndexingFactory"
- * @todo these methods should be replaced by plexus lookups of some kind!
*/
public class DefaultRepositoryIndexingFactory
implements RepositoryIndexingFactory
@@ -65,20 +64,4 @@ public class DefaultRepositoryIndexingFactory
return new MetadataRepositoryIndex( indexPath, repository );
}
- /*
- * @see RepositoryIndexingFactory#createRepositoryIndexSearchLayer(RepositoryIndex)
- */
- public RepositoryIndexSearchLayer createRepositoryIndexSearchLayer( RepositoryIndex index )
- {
- return new RepositoryIndexSearchLayer( index, artifactFactory );
- }
-
- /**
- * @see RepositoryIndexingFactory#createDefaultRepositoryIndexSearcher(RepositoryIndex)
- */
- public DefaultRepositoryIndexSearcher createDefaultRepositoryIndexSearcher( RepositoryIndex index )
- {
- return new DefaultRepositoryIndexSearcher( index, artifactFactory );
- }
-
}
diff --git a/maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/RepositoryIndexSearchLayer.java b/maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/RepositoryIndexSearchLayer.java
index eccd574b0..94ef76d53 100644
--- a/maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/RepositoryIndexSearchLayer.java
+++ b/maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/RepositoryIndexSearchLayer.java
@@ -1,437 +1,60 @@
-package org.apache.maven.repository.indexing;
-
-/*
- * Copyright 2005-2006 The Apache Software Foundation.
- *
- * Licensed 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.maven.artifact.Artifact;
-import org.apache.maven.artifact.factory.ArtifactFactory;
-import org.apache.maven.model.Dependency;
-import org.apache.maven.model.License;
-import org.apache.maven.model.Model;
-import org.apache.maven.model.Plugin;
-import org.apache.maven.model.ReportPlugin;
-import org.apache.maven.repository.indexing.query.Query;
-import org.apache.maven.repository.indexing.query.SinglePhraseQuery;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.StringTokenizer;
-
-/**
- * <p/>
- * This class is to be invoked or called by the action class for
- * general and advanced searching. It uses the DefaultRepositoryIndexSearcher
- * to perform the search and constructs the search result objects to be
- * returned to tha webapp action class.
- */
-public class RepositoryIndexSearchLayer
-{
- private RepositoryIndex index;
-
- private ArtifactFactory factory;
-
- private List searchResults;
-
- private List generalSearchResults;
-
- /**
- * Class constructor
- *
- * @param index
- */
- public RepositoryIndexSearchLayer( RepositoryIndex index, ArtifactFactory factory )
- {
- this.index = index;
- this.factory = factory;
- }
-
- /**
- * Method for searching the keyword in all the fields in the index. "Query everything" search.
- * The index fields will be retrieved and query objects will be constructed using the
- * optional (OR) CompoundQuery.
- *
- * @param keyword
- * @return
- * @throws RepositoryIndexSearchException
- */
- public List searchGeneral( String keyword )
- throws RepositoryIndexSearchException
- {
- generalSearchResults = new ArrayList();
- for ( int i = 0; i < RepositoryIndex.FIELDS.length; i++ )
- {
- Query qry = new SinglePhraseQuery( RepositoryIndex.FIELDS[i], keyword );
- List results = searchAdvanced( qry );
- for ( Iterator iter = results.iterator(); iter.hasNext(); )
- {
- SearchResult result = (SearchResult) iter.next();
- Map map = result.getFieldMatches();
- Set entrySet = map.entrySet();
- for ( Iterator it = entrySet.iterator(); it.hasNext(); )
- {
- Map.Entry entry = (Map.Entry) it.next();
- SearchResult result2 =
- createSearchResult( result.getArtifact(), map, keyword, (String) entry.getKey() );
- generalSearchResults.add( result2 );
- }
- }
- }
-
- return generalSearchResults;
- }
-
- /**
- * Method for "advanced search" of the index
- *
- * @param qry the query object that will be used for searching the index
- * @return
- * @throws RepositoryIndexSearchException
- */
- public List searchAdvanced( Query qry )
- throws RepositoryIndexSearchException
- {
- RepositoryIndexSearcher searcher = new DefaultRepositoryIndexSearcher( index, factory );
- searchResults = new ArrayList();
-
- List hits = searcher.search( qry );
- for ( Iterator it = hits.iterator(); it.hasNext(); )
- {
- RepositoryIndexSearchHit hit = (RepositoryIndexSearchHit) it.next();
- SearchResult result = new SearchResult();
- if ( hit.isHashMap() )
- {
- Map map = (Map) hit.getObject();
- result.setArtifact( (Artifact) map.get( RepositoryIndex.ARTIFACT ) );
-
- Map fields = new HashMap();
- fields.put( RepositoryIndex.FLD_CLASSES, map.get( RepositoryIndex.FLD_CLASSES ) );
- fields.put( RepositoryIndex.FLD_PACKAGES, map.get( RepositoryIndex.FLD_PACKAGES ) );
- fields.put( RepositoryIndex.FLD_FILES, map.get( RepositoryIndex.FLD_FILES ) );
- fields.put( RepositoryIndex.FLD_PACKAGING, map.get( RepositoryIndex.FLD_PACKAGING ) );
- fields.put( RepositoryIndex.FLD_SHA1, map.get( RepositoryIndex.FLD_SHA1 ) );
- fields.put( RepositoryIndex.FLD_MD5, map.get( RepositoryIndex.FLD_MD5 ) );
-
- result.setFieldMatches( fields );
- searchResults.add( result );
- }
- else if ( hit.isModel() )
- {
- Model model = (Model) hit.getObject();
- for ( int i = 0; i < RepositoryIndex.MODEL_FIELDS.length; i++ )
- {
- result = createSearchResult( model, RepositoryIndex.MODEL_FIELDS[i] );
- searchResults.add( result );
- }
- }
- else if ( hit.isMetadata() )
- {
- //@todo what about metadata objects?
-// RepositoryMetadata metadata = (RepositoryMetadata) hit.getObject();
- }
- }
-
- return searchResults;
- }
-
- /**
- * Method for checking if the artifact already exists in the search result list.
- *
- * @param groupId the group id of the artifact
- * @param artifactId the artifact id of the artifact
- * @param version the version of the artifact
- * @return the int index number of the artifact in the search result
- */
- private int getListIndex( String groupId, String artifactId, String version, List list )
- {
- int index = 0;
- for ( Iterator iter = list.iterator(); iter.hasNext(); )
- {
- SearchResult result = (SearchResult) iter.next();
- Artifact artifact = result.getArtifact();
- if ( artifact.getGroupId().equals( groupId ) && artifact.getArtifactId().equals( artifactId ) &&
- artifact.getVersion().equals( version ) )
- {
- return index;
- }
- index++;
- }
- return -1;
- }
-
- /**
- * Method to create the unique artifact id to represent the artifact in the repository
- *
- * @param groupId the artifact groupId
- * @param artifactId the artifact artifactId
- * @param version the artifact version
- * @return the String id to uniquely represent the artifact
- */
- private String getId( String groupId, String artifactId, String version )
- {
- return groupId + ":" + artifactId + ":" + version;
- }
-
- /**
- * Method to get the matching values (packages, classes and files) in the
- * given string to be tokenized.
- *
- * @param tokenizeStr the string to be tokenized
- * @param key the map key
- * @param resultMap the map to be populated
- * @param keyword the value to be matched
- * @return the map that contains the matched values
- */
- private Map getArtifactHits( String tokenizeStr, String key, Map resultMap, String keyword )
- {
- List values = new ArrayList();
- StringTokenizer st = new StringTokenizer( tokenizeStr, "\n" );
- while ( st.hasMoreTokens() )
- {
- String str = st.nextToken();
- if ( str.toLowerCase().indexOf( keyword.toLowerCase() ) != -1 )
- {
- values.add( str );
- }
- }
-
- if ( !values.isEmpty() )
- {
- resultMap.put( key, values );
- }
-
- return resultMap;
- }
-
- /**
- * Method to create SearchResult object from a given HashMap. Used for general search results
- *
- * @param artifact the retrieved artifact from the index
- * @param map the HashMap object that contains the values for the search result
- * @param keyword the query term
- * @return the SearchResult object
- */
- private SearchResult createSearchResult( Artifact artifact, Map map, String keyword, String field )
- {
- int index = getListIndex( artifact.getGroupId(), artifact.getArtifactId(), artifact.getVersion(),
- generalSearchResults );
- SearchResult result;
- Map resultMap;
-
- if ( index > -1 )
- {
- result = (SearchResult) generalSearchResults.get( index );
- generalSearchResults.remove( index );
- resultMap = result.getFieldMatches();
- }
- else
- {
- result = new SearchResult();
- result.setArtifact( artifact );
- resultMap = new HashMap();
- }
-
- // the searched field is either the class, package or file field
- if ( field.equals( RepositoryIndex.FLD_CLASSES ) || field.equals( RepositoryIndex.FLD_PACKAGES ) ||
- field.equals( RepositoryIndex.FLD_FILES ) )
- {
- resultMap = getArtifactHits( (String) map.get( field ), field, resultMap, keyword );
- }
- else if ( field.equals( RepositoryIndex.FLD_SHA1 ) ||
- ( field.equals( RepositoryIndex.FLD_MD5 ) || field.equals( RepositoryIndex.FLD_PACKAGING ) ) )
- {
- if ( map.get( field ) != null )
- {
- // the searched field is either the md5, sha1 or packaging field
- if ( ( (String) map.get( field ) ).toLowerCase().equals( keyword.toLowerCase() ) ||
- ( (String) map.get( field ) ).toLowerCase().indexOf( keyword.toLowerCase() ) != -1 )
- {
- resultMap.put( field, map.get( field ) );
- }
- }
- }
- else if ( field.equals( RepositoryIndex.FLD_DEPENDENCIES ) ||
- field.equals( RepositoryIndex.FLD_PLUGINS_BUILD ) || field.equals( RepositoryIndex.FLD_PLUGINS_REPORT ) ||
- field.equals( RepositoryIndex.FLD_LICENSE_URLS ) )
- {
- List contents = (List) map.get( field );
- List values = new ArrayList();
- for ( Iterator it = contents.iterator(); it.hasNext(); )
- {
- String str = (String) it.next();
- if ( str.toLowerCase().equals( keyword.toLowerCase() ) )
- {
- values.add( str );
- }
- }
- if ( values.size() > 0 )
- {
- resultMap.put( field, values );
- }
- }
- result.setFieldMatches( resultMap );
-
- return result;
- }
-
- /**
- * Method to create a SearchResult object from the given model. Used for advanced search results
- *
- * @param model the Model object that contains the values for the search result
- * @param field the field whose value is to be retrieved
- * @return a SearchResult object
- */
- private SearchResult createSearchResult( Model model, String field )
- {
- int index = getListIndex( model.getGroupId(), model.getArtifactId(), model.getVersion(), searchResults );
- SearchResult result;
- Map map;
-
- // the object already exists in the search result list
- if ( index > -1 )
- {
- result = (SearchResult) searchResults.get( index );
- searchResults.remove( index );
- map = result.getFieldMatches();
- }
- else
- {
- result = new SearchResult();
- result.setArtifact( factory.createBuildArtifact( model.getGroupId(), model.getArtifactId(),
- model.getVersion(), model.getPackaging() ) );
- map = new HashMap();
- }
-
- // get the matched value with the query term
- List values = new ArrayList();
- if ( field.equals( RepositoryIndex.FLD_LICENSE_URLS ) )
- {
- values = getLicenseUrls( model );
- }
- else if ( field.equals( RepositoryIndex.FLD_DEPENDENCIES ) )
- {
- values = getDependencies( model );
- }
- else if ( field.equals( RepositoryIndex.FLD_PLUGINS_BUILD ) )
- {
- if ( model.getBuild() != null && model.getBuild().getPlugins() != null )
- {
- values = getBuildPlugins( model );
- }
- }
- else if ( field.equals( RepositoryIndex.FLD_PLUGINS_REPORT ) )
- {
- if ( model.getReporting() != null && model.getReporting().getPlugins() != null )
- {
- values = getReportPlugins( model );
- }
- }
- else if ( field.equals( RepositoryIndex.FLD_PACKAGING ) )
- {
- if ( model.getPackaging() != null )
- {
- map.put( RepositoryIndex.FLD_PACKAGING, model.getPackaging() );
- }
- }
-
- if ( !values.isEmpty() )
- {
- map.put( field, values );
- }
- result.setFieldMatches( map );
-
- return result;
- }
-
- /**
- * Method for getting the query term hits or matches in the pom's license urls.
- *
- * @param model the Model object that contains the pom values
- * @return a List of matched license urls
- */
- private List getLicenseUrls( Model model )
- {
- List licenseUrls = new ArrayList();
- List licenseList = model.getLicenses();
- for ( Iterator it = licenseList.iterator(); it.hasNext(); )
- {
- License license = (License) it.next();
- licenseUrls.add( license.getUrl() );
- }
- return licenseUrls;
- }
-
- /**
- * Method for getting the hits or matches in the dependencies specified in the pom
- *
- * @param model the Model object that contains the pom values
- * @return a List of matched dependencies
- */
- private List getDependencies( Model model )
- {
- List dependencies = new ArrayList();
- List dependencyList = model.getDependencies();
- for ( Iterator it = dependencyList.iterator(); it.hasNext(); )
- {
- Dependency dep = (Dependency) it.next();
- dependencies.add( getId( dep.getGroupId(), dep.getArtifactId(), dep.getVersion() ) );
- }
-
- return dependencies;
- }
-
- /**
- * Method for getting the hits or matches in the build plugins specified in the pom
- *
- * @param model the Model object that contains the pom values
- * @return a List of matched build plugins
- */
- private List getBuildPlugins( Model model )
- {
- List values = new ArrayList();
- List plugins = model.getBuild().getPlugins();
- for ( Iterator it = plugins.iterator(); it.hasNext(); )
- {
- Plugin plugin = (Plugin) it.next();
- values.add( getId( plugin.getGroupId(), plugin.getArtifactId(), plugin.getVersion() ) );
- }
-
- return values;
- }
-
- /**
- * Method for getting the hits or matches in the reporting plugins specified in the pom
- *
- * @param model the Model object that contains the pom values
- * @return a List of matched reporting plugins
- */
- private List getReportPlugins( Model model )
- {
- List values = new ArrayList();
- List plugins = model.getReporting().getPlugins();
- for ( Iterator it = plugins.iterator(); it.hasNext(); )
- {
- ReportPlugin plugin = (ReportPlugin) it.next();
- values.add( getId( plugin.getGroupId(), plugin.getArtifactId(), plugin.getVersion() ) );
- }
-
- return values;
- }
-
-}
+package org.apache.maven.repository.indexing;
+
+/*
+ * Copyright 2005-2006 The Apache Software Foundation.
+ *
+ * Licensed 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.maven.repository.indexing.query.Query;
+
+import java.util.List;
+
+/**
+ * Repository search layer.
+ *
+ * @author <a href="mailto:brett@apache.org">Brett Porter</a>
+ */
+public interface RepositoryIndexSearchLayer
+{
+ /**
+ * The Plexus component role name.
+ */
+ String ROLE = RepositoryIndexSearchLayer.class.getName();
+
+ /**
+ * Method for searching the keyword in all the fields in the index. "Query everything" search.
+ * The index fields will be retrieved and query objects will be constructed using the
+ * optional (OR) CompoundQuery.
+ *
+ * @param keyword
+ * @param index
+ * @return
+ * @throws RepositoryIndexSearchException
+ *
+ */
+ List searchGeneral( String keyword, RepositoryIndex index )
+ throws RepositoryIndexSearchException;
+
+ /**
+ * Method for "advanced search" of the index
+ *
+ * @param qry the query object that will be used for searching the index
+ * @param index
+ * @return
+ * @throws RepositoryIndexSearchException
+ *
+ */
+ List searchAdvanced( Query qry, RepositoryIndex index )
+ throws RepositoryIndexSearchException;
+}
diff --git a/maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/RepositoryIndexSearcher.java b/maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/RepositoryIndexSearcher.java
index dfc155ae3..464e54728 100644
--- a/maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/RepositoryIndexSearcher.java
+++ b/maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/RepositoryIndexSearcher.java
@@ -26,13 +26,19 @@ import java.util.List;
public interface RepositoryIndexSearcher
{
/**
+ * Plexus component role name.
+ */
+ String ROLE = RepositoryIndexSearcher.class.getName();
+
+ /**
* Search the artifact based on the search criteria specified in the query object. Returns a list of
* artifact objects.
*
* @param query The query object that contains the search criteria.
+ * @param index
* @return List
* @throws RepositoryIndexSearchException
*/
- List search( Query query )
+ List search( Query query, RepositoryIndex index )
throws RepositoryIndexSearchException;
}
diff --git a/maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/RepositoryIndexingFactory.java b/maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/RepositoryIndexingFactory.java
index f1e16b074..8a8891d15 100644
--- a/maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/RepositoryIndexingFactory.java
+++ b/maven-repository-indexer/src/main/java/org/apache/maven/repository/indexing/RepositoryIndexingFactory.java
@@ -59,19 +59,4 @@ public interface RepositoryIndexingFactory
MetadataRepositoryIndex createMetadataRepositoryIndex( String indexPath, ArtifactRepository repository )
throws RepositoryIndexException;
- /**
- * Method to create an instance of RepositoryIndexSearchLayer
- *
- * @param index the RepositoryIndex object where the query string will be searched
- * @return the RepositoryIndexSearchLayer instance
- */
- RepositoryIndexSearchLayer createRepositoryIndexSearchLayer( RepositoryIndex index );
-
- /**
- * Method to create an instance of DefaultRepositoryIndexSearcher
- *
- * @param index the RepositoryIndex object where the query string will be searched
- * @return the DefaultRepositoryIndexSearcher instance
- */
- DefaultRepositoryIndexSearcher createDefaultRepositoryIndexSearcher( RepositoryIndex index );
}
diff --git a/maven-repository-indexer/src/test/java/org/apache/maven/repository/indexing/ArtifactRepositoryIndexingTest.java b/maven-repository-indexer/src/test/java/org/apache/maven/repository/indexing/ArtifactRepositoryIndexingTest.java
index 403232be8..fce15eefe 100644
--- a/maven-repository-indexer/src/test/java/org/apache/maven/repository/indexing/ArtifactRepositoryIndexingTest.java
+++ b/maven-repository-indexer/src/test/java/org/apache/maven/repository/indexing/ArtifactRepositoryIndexingTest.java
@@ -161,12 +161,14 @@ public class ArtifactRepositoryIndexingTest
createTestIndex();
RepositoryIndexingFactory factory = (RepositoryIndexingFactory) lookup( RepositoryIndexingFactory.ROLE );
+ RepositoryIndexSearchLayer repoSearchLayer =
+ (RepositoryIndexSearchLayer) lookup( RepositoryIndexSearchLayer.ROLE );
+
ArtifactRepositoryIndex indexer = factory.createArtifactRepositoryIndex( indexPath, repository );
- RepositoryIndexSearchLayer repoSearchLayer = factory.createRepositoryIndexSearchLayer( indexer );
// search version
Query qry = new SinglePhraseQuery( RepositoryIndex.FLD_VERSION, "1.0" );
- List artifacts = repoSearchLayer.searchAdvanced( qry );
+ List artifacts = repoSearchLayer.searchAdvanced( qry, indexer );
assertEquals( 1, artifacts.size() );
for ( Iterator iter = artifacts.iterator(); iter.hasNext(); )
{
@@ -177,7 +179,7 @@ public class ArtifactRepositoryIndexingTest
// search classes
qry = new SinglePhraseQuery( RepositoryIndex.FLD_CLASSES, "App" );
- artifacts = repoSearchLayer.searchAdvanced( qry );
+ artifacts = repoSearchLayer.searchAdvanced( qry, indexer );
assertEquals( 1, artifacts.size() );
for ( Iterator iter = artifacts.iterator(); iter.hasNext(); )
{
@@ -188,7 +190,7 @@ public class ArtifactRepositoryIndexingTest
// search packages
qry = new SinglePhraseQuery( RepositoryIndex.FLD_PACKAGES, "groupId" );
- artifacts = repoSearchLayer.searchAdvanced( qry );
+ artifacts = repoSearchLayer.searchAdvanced( qry, indexer );
assertEquals( 1, artifacts.size() );
for ( Iterator iter = artifacts.iterator(); iter.hasNext(); )
{
@@ -199,7 +201,7 @@ public class ArtifactRepositoryIndexingTest
// search files
qry = new SinglePhraseQuery( RepositoryIndex.FLD_FILES, "pom.xml" );
- artifacts = repoSearchLayer.searchAdvanced( qry );
+ artifacts = repoSearchLayer.searchAdvanced( qry, indexer );
assertEquals( 3, artifacts.size() );
Iterator iter = artifacts.iterator();
if ( iter.hasNext() )
@@ -211,7 +213,7 @@ public class ArtifactRepositoryIndexingTest
// search group id
qry = new SinglePhraseQuery( RepositoryIndex.FLD_GROUPID, "org.apache.maven" );
- artifacts = repoSearchLayer.searchAdvanced( qry );
+ artifacts = repoSearchLayer.searchAdvanced( qry, indexer );
assertEquals( 2, artifacts.size() );
iter = artifacts.iterator();
if ( iter.hasNext() )
@@ -223,7 +225,7 @@ public class ArtifactRepositoryIndexingTest
// search artifact id
qry = new SinglePhraseQuery( RepositoryIndex.FLD_ARTIFACTID, "maven-artifact" );
- artifacts = repoSearchLayer.searchAdvanced( qry );
+ artifacts = repoSearchLayer.searchAdvanced( qry, indexer );
assertEquals( 1, artifacts.size() );
for ( iter = artifacts.iterator(); iter.hasNext(); )
{
@@ -234,7 +236,7 @@ public class ArtifactRepositoryIndexingTest
// search version
qry = new SinglePhraseQuery( RepositoryIndex.FLD_VERSION, "2" );
- artifacts = repoSearchLayer.searchAdvanced( qry );
+ artifacts = repoSearchLayer.searchAdvanced( qry, indexer );
assertEquals( 2, artifacts.size() );
for ( iter = artifacts.iterator(); iter.hasNext(); )
{
@@ -250,7 +252,7 @@ public class ArtifactRepositoryIndexingTest
String sha1 = digester.createChecksum( artifact.getFile(), Digester.SHA1 );
qry = new SinglePhraseQuery( RepositoryIndex.FLD_SHA1, sha1.trim() );
- artifacts = repoSearchLayer.searchAdvanced( qry );
+ artifacts = repoSearchLayer.searchAdvanced( qry, indexer );
assertEquals( 1, artifacts.size() );
for ( iter = artifacts.iterator(); iter.hasNext(); )
{
@@ -263,7 +265,7 @@ public class ArtifactRepositoryIndexingTest
// search md5 checksum
String md5 = digester.createChecksum( artifact.getFile(), Digester.MD5 );
qry = new SinglePhraseQuery( RepositoryIndex.FLD_MD5, md5.trim() );
- artifacts = repoSearchLayer.searchAdvanced( qry );
+ artifacts = repoSearchLayer.searchAdvanced( qry, indexer );
assertEquals( 1, artifacts.size() );
for ( iter = artifacts.iterator(); iter.hasNext(); )
{
@@ -287,9 +289,9 @@ public class ArtifactRepositoryIndexingTest
createTestIndex();
RepositoryIndexingFactory factory = (RepositoryIndexingFactory) lookup( RepositoryIndexingFactory.ROLE );
+ RepositoryIndexSearchLayer repoSearchLayer =
+ (RepositoryIndexSearchLayer) lookup( RepositoryIndexSearchLayer.ROLE );
ArtifactRepositoryIndex indexer = factory.createArtifactRepositoryIndex( indexPath, repository );
- //RepositoryIndexSearcher repoSearchLayer = factory.createDefaultRepositoryIndexSearcher( indexer );
- RepositoryIndexSearchLayer repoSearchLayer = factory.createRepositoryIndexSearchLayer( indexer );
// Criteria 1: required query
// ex. artifactId=maven-artifact AND groupId=org.apache.maven
@@ -299,7 +301,7 @@ public class ArtifactRepositoryIndexingTest
rQry.and( qry1 );
rQry.and( qry2 );
- List artifacts = repoSearchLayer.searchAdvanced( rQry );
+ List artifacts = repoSearchLayer.searchAdvanced( rQry, indexer );
for ( Iterator iter = artifacts.iterator(); iter.hasNext(); )
{
SearchResult result = (SearchResult) iter.next();
@@ -316,7 +318,7 @@ public class ArtifactRepositoryIndexingTest
oQry.or( rQry );
oQry.or( qry3 );
- artifacts = repoSearchLayer.searchAdvanced( oQry );
+ artifacts = repoSearchLayer.searchAdvanced( oQry, indexer );
for ( Iterator iter = artifacts.iterator(); iter.hasNext(); )
{
SearchResult result = (SearchResult) iter.next();
@@ -345,7 +347,7 @@ public class ArtifactRepositoryIndexingTest
rQry2.and( rQry );
rQry2.or( oQry5 );
- artifacts = repoSearchLayer.searchAdvanced( rQry2 );
+ artifacts = repoSearchLayer.searchAdvanced( rQry2, indexer );
for ( Iterator iter = artifacts.iterator(); iter.hasNext(); )
{
SearchResult result = (SearchResult) iter.next();
@@ -369,7 +371,7 @@ public class ArtifactRepositoryIndexingTest
oQry2.and( rQry2 );
oQry2.and( rQry3 );
- artifacts = repoSearchLayer.searchAdvanced( oQry2 );
+ artifacts = repoSearchLayer.searchAdvanced( oQry2, indexer );
for ( Iterator iter = artifacts.iterator(); iter.hasNext(); )
{
SearchResult result = (SearchResult) iter.next();
@@ -392,7 +394,7 @@ public class ArtifactRepositoryIndexingTest
rQry4.and( qry8 );
oQry2.and( rQry4 );
- artifacts = repoSearchLayer.searchAdvanced( oQry2 );
+ artifacts = repoSearchLayer.searchAdvanced( oQry2, indexer );
for ( Iterator iter = artifacts.iterator(); iter.hasNext(); )
{
SearchResult result = (SearchResult) iter.next();
@@ -415,14 +417,15 @@ public class ArtifactRepositoryIndexingTest
createTestIndex();
RepositoryIndexingFactory factory = (RepositoryIndexingFactory) lookup( RepositoryIndexingFactory.ROLE );
+ RepositoryIndexSearchLayer repoSearchLayer =
+ (RepositoryIndexSearchLayer) lookup( RepositoryIndexSearchLayer.ROLE );
+
ArtifactRepositoryIndex indexer = factory.createArtifactRepositoryIndex( indexPath, repository );
- // RepositoryIndexSearcher repoSearchLayer = factory.createDefaultRepositoryIndexSearcher( indexer );
- RepositoryIndexSearchLayer repoSearchLayer = factory.createRepositoryIndexSearchLayer( indexer );
try
{
Query qry = new SinglePhraseQuery( RepositoryIndex.FLD_VERSION, "~~~~~" );
- repoSearchLayer.searchAdvanced( qry );
+ repoSearchLayer.searchAdvanced( qry, indexer );
fail( "Must throw an exception on unparseable query." );
}
catch ( RepositoryIndexSearchException re )
@@ -431,12 +434,11 @@ public class ArtifactRepositoryIndexingTest
}
indexer = factory.createArtifactRepositoryIndex( "target/index/sample", repository );
- repoSearchLayer = factory.createRepositoryIndexSearchLayer( indexer );
try
{
Query qry = new SinglePhraseQuery( RepositoryIndex.FLD_VERSION, "1.0" );
- repoSearchLayer.searchAdvanced( qry );
+ repoSearchLayer.searchAdvanced( qry, indexer );
fail( "Must throw an exception on invalid index location." );
}
catch ( RepositoryIndexSearchException re )
@@ -457,15 +459,16 @@ public class ArtifactRepositoryIndexingTest
createTestIndex();
RepositoryIndexingFactory factory = (RepositoryIndexingFactory) lookup( RepositoryIndexingFactory.ROLE );
+ RepositoryIndexSearcher repoSearcher = (RepositoryIndexSearcher) lookup( RepositoryIndexSearcher.ROLE );
+
ArtifactRepositoryIndex indexer = factory.createArtifactRepositoryIndex( indexPath, repository );
Artifact artifact = getArtifact( "org.apache.maven", "maven-artifact", "2.0.1" );
artifact.setFile( new File( repository.getBasedir(), repository.pathOf( artifact ) ) );
indexer.deleteDocument( RepositoryIndex.FLD_ID, RepositoryIndex.ARTIFACT + artifact.getId() );
- RepositoryIndexSearcher repoSearcher = factory.createDefaultRepositoryIndexSearcher( indexer );
Query qry = new SinglePhraseQuery( RepositoryIndex.FLD_ID, RepositoryIndex.ARTIFACT + artifact.getId() );
- List artifacts = repoSearcher.search( qry );
+ List artifacts = repoSearcher.search( qry, indexer );
assertEquals( 0, artifacts.size() );
}
diff --git a/maven-repository-indexer/src/test/java/org/apache/maven/repository/indexing/MetadataRepositoryIndexingTest.java b/maven-repository-indexer/src/test/java/org/apache/maven/repository/indexing/MetadataRepositoryIndexingTest.java
index cdf0d2d3e..34e80e2a0 100644
--- a/maven-repository-indexer/src/test/java/org/apache/maven/repository/indexing/MetadataRepositoryIndexingTest.java
+++ b/maven-repository-indexer/src/test/java/org/apache/maven/repository/indexing/MetadataRepositoryIndexingTest.java
@@ -137,13 +137,14 @@ public class MetadataRepositoryIndexingTest
createTestIndex();
RepositoryIndexingFactory factory = (RepositoryIndexingFactory) lookup( RepositoryIndexingFactory.ROLE );
+ RepositoryIndexSearchLayer repoSearchLayer =
+ (RepositoryIndexSearchLayer) lookup( RepositoryIndexSearchLayer.ROLE );
+
MetadataRepositoryIndex indexer = factory.createMetadataRepositoryIndex( indexPath, repository );
- //RepositoryIndexSearcher repoSearchLayer = factory.createDefaultRepositoryIndexSearcher( indexer );
- RepositoryIndexSearchLayer repoSearchLayer = factory.createRepositoryIndexSearchLayer( indexer );
// search last update
Query qry = new SinglePhraseQuery( RepositoryIndex.FLD_LASTUPDATE, "20051212044643" );
- List metadataList = repoSearchLayer.searchAdvanced( qry );
+ List metadataList = repoSearchLayer.searchAdvanced( qry, indexer );
//assertEquals( 1, metadataList.size() );
for ( Iterator iter = metadataList.iterator(); iter.hasNext(); )
{
@@ -159,7 +160,7 @@ public class MetadataRepositoryIndexingTest
// search plugin prefix
qry = new SinglePhraseQuery( RepositoryIndex.FLD_PLUGINPREFIX, "org.apache.maven" );
- metadataList = repoSearchLayer.searchAdvanced( qry );
+ metadataList = repoSearchLayer.searchAdvanced( qry, indexer );
//assertEquals( 1, metadataList.size() );
for ( Iterator iter = metadataList.iterator(); iter.hasNext(); )
{
@@ -184,7 +185,7 @@ public class MetadataRepositoryIndexingTest
rQry.addQuery( qry1 );
rQry.addQuery( qry2 );
- metadataList = repoSearchLayer.searchAdvanced( rQry );
+ metadataList = repoSearchLayer.searchAdvanced( rQry, indexer );
for ( Iterator iter = metadataList.iterator(); iter.hasNext(); )
{
RepositoryIndexSearchHit hit = (RepositoryIndexSearchHit) iter.next();
@@ -204,7 +205,7 @@ public class MetadataRepositoryIndexingTest
rQry.addQuery( qry1 );
rQry.addQuery( qry2 );
- metadataList = repoSearchLayer.searchAdvanced( rQry );
+ metadataList = repoSearchLayer.searchAdvanced( rQry, indexer );
assertEquals( 0, metadataList.size() );
indexer.close();
@@ -256,15 +257,16 @@ public class MetadataRepositoryIndexingTest
createTestIndex();
RepositoryIndexingFactory factory = (RepositoryIndexingFactory) lookup( RepositoryIndexingFactory.ROLE );
+ RepositoryIndexSearcher repoSearcher = (RepositoryIndexSearcher) lookup( RepositoryIndexSearcher.ROLE );
+
MetadataRepositoryIndex indexer = factory.createMetadataRepositoryIndex( indexPath, repository );
RepositoryMetadata repoMetadata = new GroupRepositoryMetadata( "org.apache.maven" );
repoMetadata.setMetadata( readMetadata( repoMetadata ) );
indexer.deleteDocument( RepositoryIndex.FLD_ID, (String) repoMetadata.getKey() );
- RepositoryIndexSearcher repoSearcher = factory.createDefaultRepositoryIndexSearcher( indexer );
Query qry = new SinglePhraseQuery( RepositoryIndex.FLD_ID, (String) repoMetadata.getKey() );
- List metadataList = repoSearcher.search( qry );
+ List metadataList = repoSearcher.search( qry, indexer );
assertEquals( 0, metadataList.size() );
}
diff --git a/maven-repository-indexer/src/test/java/org/apache/maven/repository/indexing/PomRepositoryIndexingTest.java b/maven-repository-indexer/src/test/java/org/apache/maven/repository/indexing/PomRepositoryIndexingTest.java
index 4300be481..a7087736f 100644
--- a/maven-repository-indexer/src/test/java/org/apache/maven/repository/indexing/PomRepositoryIndexingTest.java
+++ b/maven-repository-indexer/src/test/java/org/apache/maven/repository/indexing/PomRepositoryIndexingTest.java
@@ -122,13 +122,14 @@ public class PomRepositoryIndexingTest
createTestIndex();
RepositoryIndexingFactory factory = (RepositoryIndexingFactory) lookup( RepositoryIndexingFactory.ROLE );
+ RepositoryIndexSearchLayer repoSearchLayer =
+ (RepositoryIndexSearchLayer) lookup( RepositoryIndexSearchLayer.ROLE );
+
PomRepositoryIndex indexer = factory.createPomRepositoryIndex( indexPath, repository );
- //RepositoryIndexSearcher repoSearchLayer = factory.createDefaultRepositoryIndexSearcher( indexer );
- RepositoryIndexSearchLayer repoSearchLayer = factory.createRepositoryIndexSearchLayer( indexer );
// search version
Query qry = new SinglePhraseQuery( RepositoryIndex.FLD_VERSION, "1.0" );
- List artifactList = repoSearchLayer.searchAdvanced( qry );
+ List artifactList = repoSearchLayer.searchAdvanced( qry, indexer );
assertEquals( 1, artifactList.size() );
for ( Iterator iter = artifactList.iterator(); iter.hasNext(); )
{
@@ -139,7 +140,7 @@ public class PomRepositoryIndexingTest
// search group id
qry = new SinglePhraseQuery( RepositoryIndex.FLD_GROUPID, "org.apache.maven" );
- artifactList = repoSearchLayer.searchAdvanced( qry );
+ artifactList = repoSearchLayer.searchAdvanced( qry, indexer );
assertEquals( 2, artifactList.size() );
Iterator artifacts = artifactList.iterator();
if ( artifacts.hasNext() )
@@ -151,7 +152,7 @@ public class PomRepositoryIndexingTest
// search artifact id
qry = new SinglePhraseQuery( RepositoryIndex.FLD_ARTIFACTID, "maven-artifact" );
- artifactList = repoSearchLayer.searchAdvanced( qry );
+ artifactList = repoSearchLayer.searchAdvanced( qry, indexer );
assertEquals( 1, artifactList.size() );
for ( artifacts = artifactList.iterator(); artifacts.hasNext(); )
{
@@ -162,7 +163,7 @@ public class PomRepositoryIndexingTest
// search version
qry = new SinglePhraseQuery( RepositoryIndex.FLD_VERSION, "2" );
- artifactList = repoSearchLayer.searchAdvanced( qry );
+ artifactList = repoSearchLayer.searchAdvanced( qry, indexer );
assertEquals( 2, artifactList.size() );
for ( artifacts = artifactList.iterator(); artifacts.hasNext(); )
{
@@ -173,7 +174,7 @@ public class PomRepositoryIndexingTest
// search packaging
qry = new SinglePhraseQuery( RepositoryIndex.FLD_PACKAGING, "jar" );
- artifactList = repoSearchLayer.searchAdvanced( qry );
+ artifactList = repoSearchLayer.searchAdvanced( qry, indexer );
assertEquals( 3, artifactList.size() );
for ( artifacts = artifactList.iterator(); artifacts.hasNext(); )
{
@@ -186,7 +187,7 @@ public class PomRepositoryIndexingTest
//search license url
qry =
new SinglePhraseQuery( RepositoryIndex.FLD_LICENSE_URLS, "http://www.apache.org/licenses/LICENSE-2.0.txt" );
- artifactList = repoSearchLayer.searchAdvanced( qry );
+ artifactList = repoSearchLayer.searchAdvanced( qry, indexer );
assertEquals( 2, artifactList.size() );
for ( artifacts = artifactList.iterator(); artifacts.hasNext(); )
{
@@ -201,7 +202,7 @@ public class PomRepositoryIndexingTest
//search dependencies
qry = new SinglePhraseQuery( RepositoryIndex.FLD_DEPENDENCIES, "org.codehaus.plexus:plexus-utils:1.0.5" );
- artifactList = repoSearchLayer.searchAdvanced( qry );
+ artifactList = repoSearchLayer.searchAdvanced( qry, indexer );
assertEquals( 2, artifactList.size() );
for ( artifacts = artifactList.iterator(); artifacts.hasNext(); )
{
@@ -225,7 +226,7 @@ public class PomRepositoryIndexingTest
//search build plugin
qry =
new SinglePhraseQuery( RepositoryIndex.FLD_PLUGINS_BUILD, "org.codehaus.modello:modello-maven-plugin:2.0" );
- artifactList = repoSearchLayer.searchAdvanced( qry );
+ artifactList = repoSearchLayer.searchAdvanced( qry, indexer );
assertEquals( 1, artifactList.size() );
for ( artifacts = artifactList.iterator(); artifacts.hasNext(); )
{
@@ -249,7 +250,7 @@ public class PomRepositoryIndexingTest
//search reporting plugin
qry = new SinglePhraseQuery( RepositoryIndex.FLD_PLUGINS_REPORT,
"org.apache.maven.plugins:maven-checkstyle-plugin:2.0" );
- artifactList = repoSearchLayer.searchAdvanced( qry );
+ artifactList = repoSearchLayer.searchAdvanced( qry, indexer );
assertEquals( 1, artifactList.size() );
for ( artifacts = artifactList.iterator(); artifacts.hasNext(); )
{
@@ -276,7 +277,7 @@ public class PomRepositoryIndexingTest
String sha1 = digester.createChecksum( artifact.getFile(), Digester.SHA1 );
qry = new SinglePhraseQuery( RepositoryIndex.FLD_SHA1, sha1.trim() );
- artifactList = repoSearchLayer.searchAdvanced( qry );
+ artifactList = repoSearchLayer.searchAdvanced( qry, indexer );
assertEquals( 1, artifactList.size() );
for ( artifacts = artifactList.iterator(); artifacts.hasNext(); )
{
@@ -289,7 +290,7 @@ public class PomRepositoryIndexingTest
// search md5 checksum
String md5 = digester.createChecksum( getPomFile( artifact ), Digester.MD5 );
qry = new SinglePhraseQuery( RepositoryIndex.FLD_MD5, md5.trim() );
- artifactList = repoSearchLayer.searchAdvanced( qry );
+ artifactList = repoSearchLayer.searchAdvanced( qry, indexer );
assertEquals( 1, artifactList.size() );
for ( artifacts = artifactList.iterator(); artifacts.hasNext(); )
{
@@ -313,9 +314,10 @@ public class PomRepositoryIndexingTest
createTestIndex();
RepositoryIndexingFactory factory = (RepositoryIndexingFactory) lookup( RepositoryIndexingFactory.ROLE );
+ RepositoryIndexSearchLayer repoSearchLayer =
+ (RepositoryIndexSearchLayer) lookup( RepositoryIndexSearchLayer.ROLE );
+
PomRepositoryIndex indexer = factory.createPomRepositoryIndex( indexPath, repository );
- //RepositoryIndexSearcher repoSearchLayer = factory.createDefaultRepositoryIndexSearcher( indexer );
- RepositoryIndexSearchLayer repoSearchLayer = factory.createRepositoryIndexSearchLayer( indexer );
// Criteria 1: required query
// ex. artifactId=maven-artifact AND groupId=org.apache.maven
@@ -325,7 +327,7 @@ public class PomRepositoryIndexingTest
rQry.and( qry1 );
rQry.and( qry2 );
- List artifacts = repoSearchLayer.searchAdvanced( rQry );
+ List artifacts = repoSearchLayer.searchAdvanced( rQry, indexer );
for ( Iterator iter = artifacts.iterator(); iter.hasNext(); )
{
SearchResult result = (SearchResult) iter.next();
@@ -342,7 +344,7 @@ public class PomRepositoryIndexingTest
oQry.and( rQry );
oQry.or( qry3 );
- artifacts = repoSearchLayer.searchAdvanced( oQry );
+ artifacts = repoSearchLayer.searchAdvanced( oQry, indexer );
for ( Iterator iter = artifacts.iterator(); iter.hasNext(); )
{
SearchResult result = (SearchResult) iter.next();
@@ -373,7 +375,7 @@ public class PomRepositoryIndexingTest
rQry2.and( rQry );
rQry2.and( oQry5 );
- artifacts = repoSearchLayer.searchAdvanced( rQry2 );
+ artifacts = repoSearchLayer.searchAdvanced( rQry2, indexer );
for ( Iterator iter = artifacts.iterator(); iter.hasNext(); )
{
SearchResult result = (SearchResult) iter.next();
@@ -397,7 +399,7 @@ public class PomRepositoryIndexingTest
oQry2.and( rQry2 );
oQry2.and( rQry3 );
- artifacts = repoSearchLayer.searchAdvanced( oQry2 );
+ artifacts = repoSearchLayer.searchAdvanced( oQry2, indexer );
for ( Iterator iter = artifacts.iterator(); iter.hasNext(); )
{
SearchResult result = (SearchResult) iter.next();
@@ -420,7 +422,7 @@ public class PomRepositoryIndexingTest
rQry4.and( qry8 );
oQry2.and( rQry4 );
- artifacts = repoSearchLayer.searchAdvanced( oQry2 );
+ artifacts = repoSearchLayer.searchAdvanced( oQry2, indexer );
for ( Iterator iter = artifacts.iterator(); iter.hasNext(); )
{
SearchResult result = (SearchResult) iter.next();
@@ -477,13 +479,15 @@ public class PomRepositoryIndexingTest
createTestIndex();
RepositoryIndexingFactory factory = (RepositoryIndexingFactory) lookup( RepositoryIndexingFactory.ROLE );
+ RepositoryIndexSearcher repoSearcher = (RepositoryIndexSearcher) lookup( RepositoryIndexSearcher.ROLE );
+
PomRepositoryIndex indexer = factory.createPomRepositoryIndex( indexPath, repository );
+
Model pom = getPom( "org.apache.maven", "maven-artifact", "2.0.1" );
indexer.deleteDocument( RepositoryIndex.FLD_ID, RepositoryIndex.POM + pom.getId() );
- RepositoryIndexSearcher repoSearcher = factory.createDefaultRepositoryIndexSearcher( indexer );
Query qry = new SinglePhraseQuery( RepositoryIndex.FLD_ID, RepositoryIndex.POM + pom.getId() );
- List artifactList = repoSearcher.search( qry );
+ List artifactList = repoSearcher.search( qry, indexer );
assertEquals( 0, artifactList.size() );
}
diff --git a/maven-repository-indexer/src/test/java/org/apache/maven/repository/indexing/RepositoryIndexSearchLayerTest.java b/maven-repository-indexer/src/test/java/org/apache/maven/repository/indexing/RepositoryIndexSearchLayerTest.java
index 12d0a2f7e..9c48ddc23 100644
--- a/maven-repository-indexer/src/test/java/org/apache/maven/repository/indexing/RepositoryIndexSearchLayerTest.java
+++ b/maven-repository-indexer/src/test/java/org/apache/maven/repository/indexing/RepositoryIndexSearchLayerTest.java
@@ -169,10 +169,11 @@ public class RepositoryIndexSearchLayerTest
{
createTestIndex();
RepositoryIndexingFactory factory = (RepositoryIndexingFactory) lookup( RepositoryIndexingFactory.ROLE );
+ RepositoryIndexSearchLayer searchLayer = (RepositoryIndexSearchLayer) lookup( RepositoryIndexSearchLayer.ROLE );
+
ArtifactRepositoryIndex indexer = factory.createArtifactRepositoryIndex( indexPath, repository );
- RepositoryIndexSearchLayer searchLayer = factory.createRepositoryIndexSearchLayer( indexer );
- List returnList = searchLayer.searchGeneral( "org.apache.maven" );
+ List returnList = searchLayer.searchGeneral( "org.apache.maven", indexer );
for ( Iterator iter = returnList.iterator(); iter.hasNext(); )
{
SearchResult result = (SearchResult) iter.next();
@@ -193,7 +194,7 @@ public class RepositoryIndexSearchLayerTest
}
//POM license urls
- returnList = searchLayer.searchGeneral( "http://www.apache.org/licenses/LICENSE-2.0.txt" );
+ returnList = searchLayer.searchGeneral( "http://www.apache.org/licenses/LICENSE-2.0.txt", indexer );
for ( Iterator iter = returnList.iterator(); iter.hasNext(); )
{
SearchResult result = (SearchResult) iter.next();
@@ -214,7 +215,7 @@ public class RepositoryIndexSearchLayerTest
}
//POM dependency
- returnList = searchLayer.searchGeneral( "org.codehaus.plexus:plexus-utils:1.0.5" );
+ returnList = searchLayer.searchGeneral( "org.codehaus.plexus:plexus-utils:1.0.5", indexer );
for ( Iterator iter = returnList.iterator(); iter.hasNext(); )
{
SearchResult result = (SearchResult) iter.next();
@@ -235,7 +236,7 @@ public class RepositoryIndexSearchLayerTest
}
// POM reporting plugin
- returnList = searchLayer.searchGeneral( "org.apache.maven.plugins:maven-checkstyle-plugin:2.0" );
+ returnList = searchLayer.searchGeneral( "org.apache.maven.plugins:maven-checkstyle-plugin:2.0", indexer );
for ( Iterator iter = returnList.iterator(); iter.hasNext(); )
{
SearchResult result = (SearchResult) iter.next();
@@ -257,7 +258,7 @@ public class RepositoryIndexSearchLayerTest
}
// POM build plugin
- returnList = searchLayer.searchGeneral( "org.codehaus.modello:modello-maven-plugin:2.0" );
+ returnList = searchLayer.searchGeneral( "org.codehaus.modello:modello-maven-plugin:2.0", indexer );
for ( Iterator iter = returnList.iterator(); iter.hasNext(); )
{
SearchResult result = (SearchResult) iter.next();
@@ -278,7 +279,7 @@ public class RepositoryIndexSearchLayerTest
}
//maven-artifact-2.0.1.jar MD5 checksum
- returnList = searchLayer.searchGeneral( "F5A934ABBBC70A33136D89A996B9D5C09F652766" );
+ returnList = searchLayer.searchGeneral( "F5A934ABBBC70A33136D89A996B9D5C09F652766", indexer );
for ( Iterator iter = returnList.iterator(); iter.hasNext(); )
{
SearchResult result = (SearchResult) iter.next();
@@ -296,7 +297,7 @@ public class RepositoryIndexSearchLayerTest
}
//maven-artifact-2.0.1.jar SHA1 checksum
- returnList = searchLayer.searchGeneral( "AE55D9B5720E11B6CF19FE1E31A42E51" );
+ returnList = searchLayer.searchGeneral( "AE55D9B5720E11B6CF19FE1E31A42E51", indexer );
for ( Iterator iter = returnList.iterator(); iter.hasNext(); )
{
SearchResult result = (SearchResult) iter.next();
@@ -313,7 +314,7 @@ public class RepositoryIndexSearchLayerTest
}
//packaging jar
- returnList = searchLayer.searchGeneral( "jar" );
+ returnList = searchLayer.searchGeneral( "jar", indexer );
for ( Iterator iter = returnList.iterator(); iter.hasNext(); )
{
SearchResult result = (SearchResult) iter.next();
@@ -329,14 +330,14 @@ public class RepositoryIndexSearchLayerTest
}
}
- returnList = searchLayer.searchGeneral( "test" );
+ returnList = searchLayer.searchGeneral( "test", indexer );
for ( Iterator iter = returnList.iterator(); iter.hasNext(); )
{
SearchResult result = (SearchResult) iter.next();
assertEquals( "test", result.getArtifact().getGroupId() );
}
- returnList = searchLayer.searchGeneral( "test-artifactId" );
+ returnList = searchLayer.searchGeneral( "test-artifactId", indexer );
for ( Iterator iter = returnList.iterator(); iter.hasNext(); )
{
SearchResult result = (SearchResult) iter.next();
diff --git a/maven-repository-webapp/src/main/java/org/apache/maven/repository/manager/web/action/GeneralSearchAction.java b/maven-repository-webapp/src/main/java/org/apache/maven/repository/manager/web/action/GeneralSearchAction.java
index 459a8d408..b80ab6013 100644
--- a/maven-repository-webapp/src/main/java/org/apache/maven/repository/manager/web/action/GeneralSearchAction.java
+++ b/maven-repository-webapp/src/main/java/org/apache/maven/repository/manager/web/action/GeneralSearchAction.java
@@ -50,6 +50,11 @@ public class GeneralSearchAction
/**
* @plexus.requirement
*/
+ private RepositoryIndexSearchLayer searchLayer;
+
+ /**
+ * @plexus.requirement
+ */
private ArtifactRepositoryFactory repositoryFactory;
/**
@@ -74,9 +79,7 @@ public class GeneralSearchAction
ArtifactRepositoryIndex index = factory.createArtifactRepositoryIndex( indexPath, repository );
- RepositoryIndexSearchLayer searchLayer = factory.createRepositoryIndexSearchLayer( index );
-
- searchResult = searchLayer.searchGeneral( searchString );
+ searchResult = searchLayer.searchGeneral( searchString, index );
return SUCCESS;
}
diff --git a/maven-repository-webapp/src/main/java/org/apache/maven/repository/manager/web/action/PackageSearchAction.java b/maven-repository-webapp/src/main/java/org/apache/maven/repository/manager/web/action/PackageSearchAction.java
index b13a48416..543b45143 100644
--- a/maven-repository-webapp/src/main/java/org/apache/maven/repository/manager/web/action/PackageSearchAction.java
+++ b/maven-repository-webapp/src/main/java/org/apache/maven/repository/manager/web/action/PackageSearchAction.java
@@ -60,6 +60,11 @@ public class PackageSearchAction
/**
* @plexus.requirement
*/
+ private RepositoryIndexSearchLayer searchLayer;
+
+ /**
+ * @plexus.requirement
+ */
private Configuration configuration;
public String execute()
@@ -94,9 +99,7 @@ public class PackageSearchAction
ArtifactRepositoryIndex index = factory.createArtifactRepositoryIndex( indexPath, repository );
- RepositoryIndexSearchLayer searchLayer = factory.createRepositoryIndexSearchLayer( index );
-
- searchResult = searchLayer.searchAdvanced( new SinglePhraseQuery( key, searchTerm ) );
+ searchResult = searchLayer.searchAdvanced( new SinglePhraseQuery( key, searchTerm ), index );
return SUCCESS;
}