diff options
author | Brett Porter <brett@apache.org> | 2006-06-08 03:54:06 +0000 |
---|---|---|
committer | Brett Porter <brett@apache.org> | 2006-06-08 03:54:06 +0000 |
commit | eba7bf274a9560283fe56d5f7e53e244ae6e655b (patch) | |
tree | 595ee21660fef8e26e6e9a96f75373ea618022d8 | |
parent | 2ace38a72fa19f20d1c196eccbbe12bc66cad29d (diff) | |
download | archiva-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
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; } |