Author: olamy
Date: Fri Oct 7 10:40:25 2011
New Revision: 1179991
URL: http://svn.apache.org/viewvc?rev=1179991&view=rev
Log:
add unit tests for paginate method
Added:
archiva/trunk/archiva-modules/archiva-base/archiva-indexer/src/test/java/org/apache/archiva/indexer/search/NexusRepositorySearchPaginateTest.java
(with props)
Modified:
archiva/trunk/archiva-modules/archiva-base/archiva-indexer/src/main/java/org/apache/archiva/indexer/search/NexusRepositorySearch.java
archiva/trunk/archiva-modules/archiva-scheduler/archiva-scheduler-indexing/src/main/java/org/apache/archiva/scheduler/indexing/ArchivaIndexingTaskExecutor.java
Modified:
archiva/trunk/archiva-modules/archiva-base/archiva-indexer/src/main/java/org/apache/archiva/indexer/search/NexusRepositorySearch.java
URL:
http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-base/archiva-indexer/src/main/java/org/apache/archiva/indexer/search/NexusRepositorySearch.java?rev=1179991&r1=1179990&r2=1179991&view=diff
==============================================================================
---
archiva/trunk/archiva-modules/archiva-base/archiva-indexer/src/main/java/org/apache/archiva/indexer/search/NexusRepositorySearch.java
(original)
+++
archiva/trunk/archiva-modules/archiva-base/archiva-indexer/src/main/java/org/apache/archiva/indexer/search/NexusRepositorySearch.java
Fri Oct 7 10:40:25 2011
@@ -34,9 +34,6 @@ import org.apache.lucene.search.BooleanQ
import org.apache.maven.index.ArtifactInfo;
import org.apache.maven.index.FlatSearchRequest;
import org.apache.maven.index.FlatSearchResponse;
-import org.apache.maven.index.GroupedSearchRequest;
-import org.apache.maven.index.Grouping;
-import org.apache.maven.index.IteratorSearchRequest;
import org.apache.maven.index.MAVEN;
import org.apache.maven.index.NexusIndexer;
import org.apache.maven.index.OSGI;
@@ -65,7 +62,7 @@ import java.util.Set;
public class NexusRepositorySearch
implements RepositorySearch
{
- private Logger log = LoggerFactory.getLogger( getClass() );
+ private Logger log = LoggerFactory.getLogger(getClass());
private NexusIndexer indexer;
@@ -75,12 +72,17 @@ public class NexusRepositorySearch
private MavenIndexerUtils mavenIndexerUtils;
+ protected NexusRepositorySearch()
+ {
+ // for test purpose
+ }
+
@Inject
- public NexusRepositorySearch( PlexusSisuBridge plexusSisuBridge,
ManagedRepositoryAdmin managedRepositoryAdmin,
- MavenIndexerUtils mavenIndexerUtils,
ProxyConnectorAdmin proxyConnectorAdmin )
+ public NexusRepositorySearch(PlexusSisuBridge plexusSisuBridge,
ManagedRepositoryAdmin managedRepositoryAdmin,
+ MavenIndexerUtils mavenIndexerUtils,
ProxyConnectorAdmin proxyConnectorAdmin)
throws PlexusSisuBridgeException
{
- this.indexer = plexusSisuBridge.lookup( NexusIndexer.class );
+ this.indexer = plexusSisuBridge.lookup(NexusIndexer.class);
this.managedRepositoryAdmin = managedRepositoryAdmin;
this.mavenIndexerUtils = mavenIndexerUtils;
this.proxyConnectorAdmin = proxyConnectorAdmin;
@@ -89,206 +91,200 @@ public class NexusRepositorySearch
/**
* @see RepositorySearch#search(String, List, String, SearchResultLimits,
List)
*/
- public SearchResults search( String principal, List<String> selectedRepos,
String term, SearchResultLimits limits,
- List<String> previousSearchTerms )
+ public SearchResults search(String principal, List<String> selectedRepos,
String term, SearchResultLimits limits,
+ List<String> previousSearchTerms)
throws RepositorySearchException
{
- List<String> indexingContextIds = addIndexingContexts( selectedRepos );
+ List<String> indexingContextIds = addIndexingContexts(selectedRepos);
// since upgrade to nexus 2.0.0, query has changed from g:[QUERIED
TERM]* to g:*[QUERIED TERM]*
// resulting to more wildcard searches so we need to increase max
clause count
- BooleanQuery.setMaxClauseCount( Integer.MAX_VALUE );
+ BooleanQuery.setMaxClauseCount(Integer.MAX_VALUE);
BooleanQuery q = new BooleanQuery();
if ( previousSearchTerms == null || previousSearchTerms.isEmpty() )
{
- constructQuery( term, q );
+ constructQuery(term, q);
}
else
{
for ( String previousTerm : previousSearchTerms )
{
BooleanQuery iQuery = new BooleanQuery();
- constructQuery( previousTerm, iQuery );
+ constructQuery(previousTerm, iQuery);
- q.add( iQuery, Occur.MUST );
+ q.add(iQuery, Occur.MUST);
}
BooleanQuery iQuery = new BooleanQuery();
- constructQuery( term, iQuery );
- q.add( iQuery, Occur.MUST );
+ constructQuery(term, iQuery);
+ q.add(iQuery, Occur.MUST);
}
// we retun only artifacts without classifier in quick search, olamy
cannot find a way to say with this field empty
// FIXME cannot find a way currently to setup this in constructQuery
!!!
- return search( limits, q, indexingContextIds,
NoClassifierArtifactInfoFiler.LIST, principal, selectedRepos );
+ return search(limits, q, indexingContextIds,
NoClassifierArtifactInfoFiler.LIST, principal, selectedRepos);
}
/**
* @see RepositorySearch#search(String, SearchFields, SearchResultLimits)
*/
- public SearchResults search( String principal, SearchFields searchFields,
SearchResultLimits limits )
+ public SearchResults search(String principal, SearchFields searchFields,
SearchResultLimits limits)
throws RepositorySearchException
{
if ( searchFields.getRepositories() == null )
{
- throw new RepositorySearchException( "Repositories cannot be
null." );
+ throw new RepositorySearchException("Repositories cannot be
null.");
}
- List<String> indexingContextIds = addIndexingContexts(
searchFields.getRepositories() );
+ List<String> indexingContextIds =
addIndexingContexts(searchFields.getRepositories());
BooleanQuery q = new BooleanQuery();
- if ( StringUtils.isNotBlank( searchFields.getGroupId() ) )
+ if ( StringUtils.isNotBlank(searchFields.getGroupId()) )
{
- q.add( indexer.constructQuery( MAVEN.GROUP_ID, new
StringSearchExpression( searchFields.getGroupId() ) ),
- Occur.MUST );
+ q.add(indexer.constructQuery(MAVEN.GROUP_ID, new
StringSearchExpression(searchFields.getGroupId())),
+ Occur.MUST);
}
- if ( StringUtils.isNotBlank( searchFields.getArtifactId() ) )
+ if ( StringUtils.isNotBlank(searchFields.getArtifactId()) )
{
- q.add(
- indexer.constructQuery( MAVEN.ARTIFACT_ID, new
StringSearchExpression( searchFields.getArtifactId() ) ),
- Occur.MUST );
+ q.add(indexer.constructQuery(MAVEN.ARTIFACT_ID, new
StringSearchExpression(searchFields.getArtifactId())),
+ Occur.MUST);
}
- if ( StringUtils.isNotBlank( searchFields.getVersion() ) )
+ if ( StringUtils.isNotBlank(searchFields.getVersion()) )
{
- q.add( indexer.constructQuery( MAVEN.VERSION, new
StringSearchExpression( searchFields.getVersion() ) ),
- Occur.MUST );
+ q.add(indexer.constructQuery(MAVEN.VERSION, new
StringSearchExpression(searchFields.getVersion())),
+ Occur.MUST);
}
- if ( StringUtils.isNotBlank( searchFields.getPackaging() ) )
+ if ( StringUtils.isNotBlank(searchFields.getPackaging()) )
{
- q.add( indexer.constructQuery( MAVEN.PACKAGING, new
StringSearchExpression( searchFields.getPackaging() ) ),
- Occur.MUST );
+ q.add(indexer.constructQuery(MAVEN.PACKAGING, new
StringSearchExpression(searchFields.getPackaging())),
+ Occur.MUST);
}
- if ( StringUtils.isNotBlank( searchFields.getClassName() ) )
+ if ( StringUtils.isNotBlank(searchFields.getClassName()) )
{
- q.add(
- indexer.constructQuery( MAVEN.CLASSNAMES, new
StringSearchExpression( searchFields.getClassName() ) ),
- Occur.MUST );
+ q.add(indexer.constructQuery(MAVEN.CLASSNAMES, new
StringSearchExpression(searchFields.getClassName())),
+ Occur.MUST);
}
- if ( StringUtils.isNotBlank( searchFields.getBundleSymbolicName() ) )
+ if ( StringUtils.isNotBlank(searchFields.getBundleSymbolicName()) )
{
- q.add( indexer.constructQuery( OSGI.SYMBOLIC_NAME,
- new StringSearchExpression(
searchFields.getBundleSymbolicName() ) ),
- Occur.MUST );
+ q.add(indexer.constructQuery(OSGI.SYMBOLIC_NAME,
+ new
StringSearchExpression(searchFields.getBundleSymbolicName())), Occur.MUST);
}
- if ( StringUtils.isNotBlank( searchFields.getBundleVersion() ) )
+ if ( StringUtils.isNotBlank(searchFields.getBundleVersion()) )
{
- q.add(
- indexer.constructQuery( OSGI.VERSION, new
StringSearchExpression( searchFields.getBundleVersion() ) ),
- Occur.MUST );
+ q.add(indexer.constructQuery(OSGI.VERSION, new
StringSearchExpression(searchFields.getBundleVersion())),
+ Occur.MUST);
}
- if ( StringUtils.isNotBlank( searchFields.getBundleExportPackage() ) )
+ if ( StringUtils.isNotBlank(searchFields.getBundleExportPackage()) )
{
- q.add( indexer.constructQuery( OSGI.EXPORT_PACKAGE,
- new StringSearchExpression(
searchFields.getBundleExportPackage() ) ),
- Occur.MUST );
+ q.add(indexer.constructQuery(OSGI.EXPORT_PACKAGE,
+ new
StringSearchExpression(searchFields.getBundleExportPackage())),
+ Occur.MUST);
}
- if ( StringUtils.isNotBlank( searchFields.getBundleExportService() ) )
+ if ( StringUtils.isNotBlank(searchFields.getBundleExportService()) )
{
- q.add( indexer.constructQuery( OSGI.EXPORT_SERVICE,
- new StringSearchExpression(
searchFields.getBundleExportService() ) ),
- Occur.MUST );
+ q.add(indexer.constructQuery(OSGI.EXPORT_SERVICE,
+ new
StringSearchExpression(searchFields.getBundleExportService())),
+ Occur.MUST);
}
- if ( StringUtils.isNotBlank( searchFields.getBundleImportPackage() ) )
+ if ( StringUtils.isNotBlank(searchFields.getBundleImportPackage()) )
{
- q.add( indexer.constructQuery( OSGI.IMPORT_PACKAGE,
- new StringSearchExpression(
searchFields.getBundleImportPackage() ) ),
- Occur.MUST );
+ q.add(indexer.constructQuery(OSGI.IMPORT_PACKAGE,
+ new
StringSearchExpression(searchFields.getBundleImportPackage())),
+ Occur.MUST);
}
- if ( StringUtils.isNotBlank( searchFields.getBundleName() ) )
+ if ( StringUtils.isNotBlank(searchFields.getBundleName()) )
{
- q.add( indexer.constructQuery( OSGI.NAME, new
StringSearchExpression( searchFields.getBundleName() ) ),
- Occur.MUST );
+ q.add(indexer.constructQuery(OSGI.NAME, new
StringSearchExpression(searchFields.getBundleName())),
+ Occur.MUST);
}
- if ( StringUtils.isNotBlank( searchFields.getClassifier() ) )
+ if ( StringUtils.isNotBlank(searchFields.getClassifier()) )
{
- q.add(
- indexer.constructQuery( MAVEN.CLASSIFIER, new
StringSearchExpression( searchFields.getClassifier() ) ),
- Occur.MUST );
+ q.add(indexer.constructQuery(MAVEN.CLASSIFIER, new
StringSearchExpression(searchFields.getClassifier())),
+ Occur.MUST);
}
if ( q.getClauses() == null || q.getClauses().length <= 0 )
{
- throw new RepositorySearchException( "No search fields set." );
+ throw new RepositorySearchException("No search fields set.");
}
- return search( limits, q, indexingContextIds,
Collections.<ArtifactInfoFiler>emptyList(), principal,
- searchFields.getRepositories() );
+ return search(limits, q, indexingContextIds,
Collections.<ArtifactInfoFiler>emptyList(), principal,
+ searchFields.getRepositories());
}
- private SearchResults search( SearchResultLimits limits, BooleanQuery q,
List<String> indexingContextIds,
- List<? extends ArtifactInfoFiler> filters,
String principal,
- List<String> selectedRepos )
+ private SearchResults search(SearchResultLimits limits, BooleanQuery q,
List<String> indexingContextIds,
+ List<? extends ArtifactInfoFiler> filters,
String principal,
+ List<String> selectedRepos)
throws RepositorySearchException
{
try
{
- FlatSearchRequest request = new FlatSearchRequest( q );
- request.setContexts( getIndexingContexts( indexingContextIds ) );
-
- FlatSearchResponse response = indexer.searchFlat( request );
+ FlatSearchRequest request = new FlatSearchRequest(q);
+ request.setContexts(getIndexingContexts(indexingContextIds));
+ FlatSearchResponse response = indexer.searchFlat(request);
if ( response == null || response.getTotalHits() == 0 )
{
SearchResults results = new SearchResults();
- results.setLimits( limits );
+ results.setLimits(limits);
return results;
}
- return convertToSearchResults( response, limits, filters,
principal, selectedRepos );
+ return convertToSearchResults(response, limits, filters,
principal, selectedRepos);
}
catch ( IOException e )
{
- throw new RepositorySearchException( e.getMessage(), e );
+ throw new RepositorySearchException(e.getMessage(), e);
}
catch ( RepositoryAdminException e )
{
- throw new RepositorySearchException( e.getMessage(), e );
+ throw new RepositorySearchException(e.getMessage(), e);
}
}
- private List<IndexingContext> getIndexingContexts( List<String> ids )
+ private List<IndexingContext> getIndexingContexts(List<String> ids)
{
- List<IndexingContext> contexts = new ArrayList<IndexingContext>(
ids.size() );
+ List<IndexingContext> contexts = new
ArrayList<IndexingContext>(ids.size());
for ( String id : ids )
{
- IndexingContext context = indexer.getIndexingContexts().get( id );
+ IndexingContext context = indexer.getIndexingContexts().get(id);
if ( context != null )
{
- contexts.add( context );
+ contexts.add(context);
}
else
{
- log.warn( "context with id {} not exists", id );
+ log.warn("context with id {} not exists", id);
}
}
return contexts;
}
- private void constructQuery( String term, BooleanQuery q )
+ private void constructQuery(String term, BooleanQuery q)
{
- q.add( indexer.constructQuery( MAVEN.GROUP_ID, new
StringSearchExpression( term ) ), Occur.SHOULD );
- q.add( indexer.constructQuery( MAVEN.ARTIFACT_ID, new
StringSearchExpression( term ) ), Occur.SHOULD );
- q.add( indexer.constructQuery( MAVEN.VERSION, new
StringSearchExpression( term ) ), Occur.SHOULD );
- q.add( indexer.constructQuery( MAVEN.PACKAGING, new
StringSearchExpression( term ) ), Occur.SHOULD );
- q.add( indexer.constructQuery( MAVEN.CLASSNAMES, new
StringSearchExpression( term ) ), Occur.SHOULD );
+ q.add(indexer.constructQuery(MAVEN.GROUP_ID, new
StringSearchExpression(term)), Occur.SHOULD);
+ q.add(indexer.constructQuery(MAVEN.ARTIFACT_ID, new
StringSearchExpression(term)), Occur.SHOULD);
+ q.add(indexer.constructQuery(MAVEN.VERSION, new
StringSearchExpression(term)), Occur.SHOULD);
+ q.add(indexer.constructQuery(MAVEN.PACKAGING, new
StringSearchExpression(term)), Occur.SHOULD);
+ q.add(indexer.constructQuery(MAVEN.CLASSNAMES, new
StringSearchExpression(term)), Occur.SHOULD);
//Query query =
// new WildcardQuery( new Term( MAVEN.CLASSNAMES.getFieldName(),
"*" ) );
@@ -302,88 +298,88 @@ public class NexusRepositorySearch
* @param selectedRepos
* @return indexing contextId used
*/
- private List<String> addIndexingContexts( List<String> selectedRepos )
+ private List<String> addIndexingContexts(List<String> selectedRepos)
{
Set<String> indexingContextIds = new HashSet<String>();
for ( String repo : selectedRepos )
{
try
{
- ManagedRepository repoConfig =
managedRepositoryAdmin.getManagedRepository( repo );
+ ManagedRepository repoConfig =
managedRepositoryAdmin.getManagedRepository(repo);
if ( repoConfig != null )
{
String indexDir = repoConfig.getIndexDirectory();
File indexDirectory = null;
- if ( indexDir != null && !"".equals( indexDir ) )
+ if ( indexDir != null && !"".equals(indexDir) )
{
- indexDirectory = new File(
repoConfig.getIndexDirectory() );
+ indexDirectory = new
File(repoConfig.getIndexDirectory());
}
else
{
- indexDirectory = new File( repoConfig.getLocation(),
".indexer" );
+ indexDirectory = new File(repoConfig.getLocation(),
".indexer");
}
- IndexingContext context =
indexer.getIndexingContexts().get( repoConfig.getId() );
+ IndexingContext context =
indexer.getIndexingContexts().get(repoConfig.getId());
if ( context != null )
{
// alreday here so no need to record it again
- log.debug( "index with id {} already exists skip
adding it", repoConfig.getId() );
+ log.debug("index with id {} already exists skip adding
it", repoConfig.getId());
// set searchable flag
- context.setSearchable( repoConfig.isScanned() );
- indexingContextIds.add( context.getId() );
- indexingContextIds.addAll(
getRemoteIndexingContextIds( repo ) );
+ context.setSearchable(repoConfig.isScanned());
+ indexingContextIds.add(context.getId());
+
indexingContextIds.addAll(getRemoteIndexingContextIds(repo));
continue;
}
- context = indexer.addIndexingContext( repoConfig.getId(),
repoConfig.getId(),
- new File(
repoConfig.getLocation() ), indexDirectory, null,
- null,
getAllIndexCreators() );
- context.setSearchable( repoConfig.isScanned() );
+ context = indexer.addIndexingContext(repoConfig.getId(),
repoConfig.getId(),
+ new
File(repoConfig.getLocation()), indexDirectory, null, null,
+
getAllIndexCreators());
+ context.setSearchable(repoConfig.isScanned());
if ( context.isSearchable() )
{
- indexingContextIds.addAll(
getRemoteIndexingContextIds( repo ) );
- indexingContextIds.add( context.getId() );
+
indexingContextIds.addAll(getRemoteIndexingContextIds(repo));
+ indexingContextIds.add(context.getId());
}
else
{
- log.warn( "indexingContext with id {} not searchable",
repoConfig.getId() );
+ log.warn("indexingContext with id {} not searchable",
repoConfig.getId());
}
}
else
{
- log.warn( "Repository '" + repo + "' not found in
configuration." );
+ log.warn("Repository '" + repo + "' not found in
configuration.");
}
}
catch ( UnsupportedExistingLuceneIndexException e )
{
- log.warn( "Error accessing index of repository '" + repo + "'
: " + e.getMessage() );
+ log.warn("Error accessing index of repository '" + repo + "' :
" + e.getMessage());
continue;
}
catch ( IOException e )
{
- log.warn( "IO error occured while accessing index of
repository '" + repo + "' : " + e.getMessage() );
+ log.warn("IO error occured while accessing index of repository
'" + repo + "' : " + e.getMessage());
continue;
}
catch ( RepositoryAdminException e )
{
- log.warn( "RepositoryAdminException occured while accessing
index of repository '" + repo + "' : "
- + e.getMessage() );
+ log.warn("RepositoryAdminException occured while accessing
index of repository '" + repo + "' : "
+ + e.getMessage());
continue;
}
}
- return new ArrayList<String>( indexingContextIds );
+ return new ArrayList<String>(indexingContextIds);
}
- private Set<String> getRemoteIndexingContextIds( String managedRepoId )
+ private Set<String> getRemoteIndexingContextIds(String managedRepoId)
throws RepositoryAdminException
{
Set<String> ids = new HashSet<String>();
- List<ProxyConnector> proxyConnectors =
proxyConnectorAdmin.getProxyConnectorAsMap().get( managedRepoId );
+ List<ProxyConnector> proxyConnectors =
proxyConnectorAdmin.getProxyConnectorAsMap().get(managedRepoId);
if ( proxyConnectors == null || proxyConnectors.isEmpty() )
{
@@ -393,10 +389,10 @@ public class NexusRepositorySearch
for ( ProxyConnector proxyConnector : proxyConnectors )
{
String remoteId = "remote-" + proxyConnector.getTargetRepoId();
- IndexingContext context = indexer.getIndexingContexts().get(
remoteId );
+ IndexingContext context =
indexer.getIndexingContexts().get(remoteId);
if ( context != null && context.isSearchable() )
{
- ids.add( remoteId );
+ ids.add(remoteId);
}
}
@@ -410,9 +406,9 @@ public class NexusRepositorySearch
}
- private SearchResults convertToSearchResults( FlatSearchResponse response,
SearchResultLimits limits,
- List<? extends
ArtifactInfoFiler> artifactInfoFilers,
- String principal,
List<String> selectedRepos )
+ private SearchResults convertToSearchResults(FlatSearchResponse response,
SearchResultLimits limits,
+ List<? extends
ArtifactInfoFiler> artifactInfoFilers, String principal,
+ List<String> selectedRepos)
throws RepositoryAdminException
{
SearchResults results = new SearchResults();
@@ -420,54 +416,54 @@ public class NexusRepositorySearch
for ( ArtifactInfo artifactInfo : artifactInfos )
{
- String id = SearchUtil.getHitId( artifactInfo.groupId,
artifactInfo.artifactId, artifactInfo.classifier,
- artifactInfo.packaging );
+ String id = SearchUtil.getHitId(artifactInfo.groupId,
artifactInfo.artifactId, artifactInfo.classifier,
+ artifactInfo.packaging);
Map<String, SearchResultHit> hitsMap = results.getHitsMap();
- if ( !applyArtifactInfoFilters( artifactInfo, artifactInfoFilers,
hitsMap ) )
+ if ( !applyArtifactInfoFilters(artifactInfo, artifactInfoFilers,
hitsMap) )
{
continue;
}
- SearchResultHit hit = hitsMap.get( id );
+ SearchResultHit hit = hitsMap.get(id);
if ( hit != null )
{
- if ( !hit.getVersions().contains( artifactInfo.version ) )
+ if ( !hit.getVersions().contains(artifactInfo.version) )
{
- hit.addVersion( artifactInfo.version );
+ hit.addVersion(artifactInfo.version);
}
}
else
{
hit = new SearchResultHit();
- hit.setArtifactId( artifactInfo.artifactId );
- hit.setGroupId( artifactInfo.groupId );
- hit.setRepositoryId( artifactInfo.repository );
- hit.addVersion( artifactInfo.version );
- hit.setBundleExportPackage( artifactInfo.bundleExportPackage );
- hit.setBundleExportService( artifactInfo.bundleExportService );
- hit.setBundleSymbolicName( artifactInfo.bundleSymbolicName );
- hit.setBundleVersion( artifactInfo.bundleVersion );
- hit.setBundleDescription( artifactInfo.bundleDescription );
- hit.setBundleDocUrl( artifactInfo.bundleDocUrl );
- hit.setBundleRequireBundle( artifactInfo.bundleRequireBundle );
- hit.setBundleImportPackage( artifactInfo.bundleImportPackage );
- hit.setBundleLicense( artifactInfo.bundleLicense );
- hit.setBundleName( artifactInfo.bundleName );
- hit.setContext( artifactInfo.context );
- hit.setGoals( artifactInfo.goals );
- hit.setPrefix( artifactInfo.prefix );
- hit.setPackaging( artifactInfo.packaging );
- hit.setClassifier( artifactInfo.classifier );
- hit.setUrl( getBaseUrl( artifactInfo, selectedRepos ) );
- }
-
- results.addHit( id, hit );
- }
-
- results.setTotalHits( response.getTotalHitsCount() );
- results.setReturnedHitsCount( response.getReturnedHitsCount() );
- results.setLimits( limits );
+ hit.setArtifactId(artifactInfo.artifactId);
+ hit.setGroupId(artifactInfo.groupId);
+ hit.setRepositoryId(artifactInfo.repository);
+ hit.addVersion(artifactInfo.version);
+ hit.setBundleExportPackage(artifactInfo.bundleExportPackage);
+ hit.setBundleExportService(artifactInfo.bundleExportService);
+ hit.setBundleSymbolicName(artifactInfo.bundleSymbolicName);
+ hit.setBundleVersion(artifactInfo.bundleVersion);
+ hit.setBundleDescription(artifactInfo.bundleDescription);
+ hit.setBundleDocUrl(artifactInfo.bundleDocUrl);
+ hit.setBundleRequireBundle(artifactInfo.bundleRequireBundle);
+ hit.setBundleImportPackage(artifactInfo.bundleImportPackage);
+ hit.setBundleLicense(artifactInfo.bundleLicense);
+ hit.setBundleName(artifactInfo.bundleName);
+ hit.setContext(artifactInfo.context);
+ hit.setGoals(artifactInfo.goals);
+ hit.setPrefix(artifactInfo.prefix);
+ hit.setPackaging(artifactInfo.packaging);
+ hit.setClassifier(artifactInfo.classifier);
+ hit.setUrl(getBaseUrl(artifactInfo, selectedRepos));
+ }
+
+ results.addHit(id, hit);
+ }
+
+ results.setTotalHits(response.getTotalHitsCount());
+ results.setReturnedHitsCount(response.getReturnedHitsCount());
+ results.setLimits(limits);
if ( limits == null || limits.getSelectedPage() ==
SearchResultLimits.ALL_PAGES )
{
@@ -475,7 +471,7 @@ public class NexusRepositorySearch
}
else
{
- return paginate( results );
+ return paginate(results);
}
}
@@ -485,43 +481,43 @@ public class NexusRepositorySearch
* @param artifactInfo
* @return
*/
- protected String getBaseUrl( ArtifactInfo artifactInfo, List<String>
selectedRepos )
+ protected String getBaseUrl(ArtifactInfo artifactInfo, List<String>
selectedRepos)
throws RepositoryAdminException
{
StringBuilder sb = new StringBuilder();
- if ( StringUtils.startsWith( artifactInfo.context, "remote-" ) )
+ if ( StringUtils.startsWith(artifactInfo.context, "remote-") )
{
// it's a remote index result we search a managed which proxying
this remote and on which
// current user has read karma
String managedRepoId =
- getManagedRepoId( StringUtils.substringAfter(
artifactInfo.context, "remote-" ), selectedRepos );
+
getManagedRepoId(StringUtils.substringAfter(artifactInfo.context, "remote-"),
selectedRepos);
if ( managedRepoId != null )
{
- sb.append( '/' ).append( managedRepoId );
+ sb.append('/').append(managedRepoId);
}
}
else
{
- sb.append( '/' ).append( artifactInfo.context );
+ sb.append('/').append(artifactInfo.context);
}
- sb.append( '/' ).append( StringUtils.replaceChars(
artifactInfo.groupId, '.', '/' ) );
- sb.append( '/' ).append( artifactInfo.artifactId );
- sb.append( '/' ).append( artifactInfo.version );
- sb.append( '/' ).append( artifactInfo.artifactId );
- sb.append( '-' ).append( artifactInfo.version );
- if ( StringUtils.isNotBlank( artifactInfo.classifier ) )
+ sb.append('/').append(StringUtils.replaceChars(artifactInfo.groupId,
'.', '/'));
+ sb.append('/').append(artifactInfo.artifactId);
+ sb.append('/').append(artifactInfo.version);
+ sb.append('/').append(artifactInfo.artifactId);
+ sb.append('-').append(artifactInfo.version);
+ if ( StringUtils.isNotBlank(artifactInfo.classifier) )
{
- sb.append( '-' ).append( artifactInfo.classifier );
+ sb.append('-').append(artifactInfo.classifier);
}
// maven-plugin packaging is a jar
- if ( StringUtils.equals( "maven-plugin", artifactInfo.packaging ) )
+ if ( StringUtils.equals("maven-plugin", artifactInfo.packaging) )
{
- sb.append( "jar" );
+ sb.append("jar");
}
else
{
- sb.append( '.' ).append( artifactInfo.packaging );
+ sb.append('.').append(artifactInfo.packaging);
}
return sb.toString();
@@ -535,7 +531,7 @@ public class NexusRepositorySearch
* @return
* @throws RepositoryAdminException
*/
- private String getManagedRepoId( String remoteRepo, List<String>
selectedRepos )
+ private String getManagedRepoId(String remoteRepo, List<String>
selectedRepos)
throws RepositoryAdminException
{
Map<String, List<ProxyConnector>> proxyConnectorMap =
proxyConnectorAdmin.getProxyConnectorAsMap();
@@ -547,11 +543,11 @@ public class NexusRepositorySearch
{
for ( Map.Entry<String, List<ProxyConnector>> entry :
proxyConnectorMap.entrySet() )
{
- if ( selectedRepos.contains( entry.getKey() ) )
+ if ( selectedRepos.contains(entry.getKey()) )
{
for ( ProxyConnector proxyConnector : entry.getValue() )
{
- if ( StringUtils.equals( remoteRepo,
proxyConnector.getTargetRepoId() ) )
+ if ( StringUtils.equals(remoteRepo,
proxyConnector.getTargetRepoId()) )
{
return proxyConnector.getSourceRepoId();
}
@@ -566,7 +562,7 @@ public class NexusRepositorySearch
for ( ProxyConnector proxyConnector : entry.getValue() )
{
- if ( StringUtils.equals( remoteRepo,
proxyConnector.getTargetRepoId() ) )
+ if ( StringUtils.equals(remoteRepo,
proxyConnector.getTargetRepoId()) )
{
return proxyConnector.getSourceRepoId();
}
@@ -576,9 +572,9 @@ public class NexusRepositorySearch
return null;
}
- private boolean applyArtifactInfoFilters( ArtifactInfo artifactInfo,
- List<? extends
ArtifactInfoFiler> artifactInfoFilers,
- Map<String, SearchResultHit>
currentResult )
+ private boolean applyArtifactInfoFilters(ArtifactInfo artifactInfo,
+ List<? extends ArtifactInfoFiler>
artifactInfoFilers,
+ Map<String, SearchResultHit>
currentResult)
{
if ( artifactInfoFilers == null || artifactInfoFilers.isEmpty() )
{
@@ -587,7 +583,7 @@ public class NexusRepositorySearch
for ( ArtifactInfoFiler filter : artifactInfoFilers )
{
- if ( !filter.addArtifactInResult( artifactInfo, currentResult ) )
+ if ( !filter.addArtifactInResult(artifactInfo, currentResult) )
{
return false;
}
@@ -595,7 +591,7 @@ public class NexusRepositorySearch
return true;
}
- protected SearchResults paginate( SearchResults results )
+ protected SearchResults paginate(SearchResults results)
{
SearchResultLimits limits = results.getLimits();
SearchResults paginated = new SearchResults();
@@ -620,12 +616,12 @@ public class NexusRepositorySearch
break;
}
- SearchResultHit hit = results.getHits().get( ( offset + i ) );
+ SearchResultHit hit = results.getHits().get(( offset + i ));
if ( hit != null )
{
- String id = SearchUtil.getHitId( hit.getGroupId(),
hit.getArtifactId(), hit.getClassifier(),
- hit.getPackaging() );
- paginated.addHit( id, hit );
+ String id = SearchUtil.getHitId(hit.getGroupId(),
hit.getArtifactId(), hit.getClassifier(),
+ hit.getPackaging());
+ paginated.addHit(id, hit);
}
else
{
@@ -633,9 +629,9 @@ public class NexusRepositorySearch
}
}
}
- paginated.setTotalHits( results.getTotalHits() );
- paginated.setReturnedHitsCount( paginated.getHits().size() );
- paginated.setLimits( limits );
+ paginated.setTotalHits(results.getTotalHits());
+ paginated.setReturnedHitsCount(paginated.getHits().size());
+ paginated.setLimits(limits);
return paginated;
}
Added:
archiva/trunk/archiva-modules/archiva-base/archiva-indexer/src/test/java/org/apache/archiva/indexer/search/NexusRepositorySearchPaginateTest.java
URL:
http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-base/archiva-indexer/src/test/java/org/apache/archiva/indexer/search/NexusRepositorySearchPaginateTest.java?rev=1179991&view=auto
==============================================================================
---
archiva/trunk/archiva-modules/archiva-base/archiva-indexer/src/test/java/org/apache/archiva/indexer/search/NexusRepositorySearchPaginateTest.java
(added)
+++
archiva/trunk/archiva-modules/archiva-base/archiva-indexer/src/test/java/org/apache/archiva/indexer/search/NexusRepositorySearchPaginateTest.java
Fri Oct 7 10:40:25 2011
@@ -0,0 +1,105 @@
+package org.apache.archiva.indexer.search;
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import junit.framework.TestCase;
+import org.apache.archiva.indexer.util.SearchUtil;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.JUnit4;
+
+import java.util.Arrays;
+
+/**
+ * @author Olivier Lamy
+ */
+@RunWith( JUnit4.class )
+public class NexusRepositorySearchPaginateTest
+ extends TestCase
+{
+ @Test
+ public void nonPaginatedResult()
+ throws Exception
+ {
+ NexusRepositorySearch search = new NexusRepositorySearch();
+
+ SearchResults searchResults = build(10, new SearchResultLimits(0));
+
+ searchResults = search.paginate(searchResults);
+
+ assertEquals(10, searchResults.getReturnedHitsCount());
+
+ }
+
+ @Test
+ public void nonPaginatedHugeResult()
+ throws Exception
+ {
+ NexusRepositorySearch search = new NexusRepositorySearch();
+
+ SearchResults origSearchResults = build(63, new SearchResultLimits(0));
+
+ SearchResults searchResults = search.paginate(origSearchResults);
+
+ assertEquals(30, searchResults.getReturnedHitsCount());
+
+ origSearchResults = build(63, new SearchResultLimits(1));
+
+ searchResults = search.paginate(origSearchResults);
+
+ assertEquals(30, searchResults.getReturnedHitsCount());
+
+ }
+
+ @Test
+ public void paginatedResult()
+ throws Exception
+ {
+ NexusRepositorySearch search = new NexusRepositorySearch();
+
+ SearchResults searchResults = build(32, new SearchResultLimits(1));
+
+ searchResults = search.paginate(searchResults);
+
+ assertEquals(2, searchResults.getReturnedHitsCount());
+
+ }
+
+
+ SearchResults build(int number, SearchResultLimits limits)
+ {
+ SearchResults searchResults = new SearchResults();
+ searchResults.setLimits(limits);
+ for ( int i = 0; i < number; i++ )
+ {
+ SearchResultHit hit = new SearchResultHit();
+ hit.setGroupId("commons-foo");
+ hit.setArtifactId("commons-bar-" + i);
+ hit.setPackaging("jar");
+ hit.setVersions(Arrays.asList("1.0"));
+ String id =
+ SearchUtil.getHitId(hit.getGroupId(), hit.getArtifactId(),
hit.getClassifier(), hit.getPackaging());
+ searchResults.addHit(id, hit);
+ }
+
+ searchResults.setTotalHits(number);
+ return searchResults;
+
+ }
+}
Propchange:
archiva/trunk/archiva-modules/archiva-base/archiva-indexer/src/test/java/org/apache/archiva/indexer/search/NexusRepositorySearchPaginateTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
archiva/trunk/archiva-modules/archiva-base/archiva-indexer/src/test/java/org/apache/archiva/indexer/search/NexusRepositorySearchPaginateTest.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Modified:
archiva/trunk/archiva-modules/archiva-scheduler/archiva-scheduler-indexing/src/main/java/org/apache/archiva/scheduler/indexing/ArchivaIndexingTaskExecutor.java
URL:
http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-scheduler/archiva-scheduler-indexing/src/main/java/org/apache/archiva/scheduler/indexing/ArchivaIndexingTaskExecutor.java?rev=1179991&r1=1179990&r2=1179991&view=diff
==============================================================================
---
archiva/trunk/archiva-modules/archiva-scheduler/archiva-scheduler-indexing/src/main/java/org/apache/archiva/scheduler/indexing/ArchivaIndexingTaskExecutor.java
(original)
+++
archiva/trunk/archiva-modules/archiva-scheduler/archiva-scheduler-indexing/src/main/java/org/apache/archiva/scheduler/indexing/ArchivaIndexingTaskExecutor.java
Fri Oct 7 10:40:25 2011
@@ -88,7 +88,7 @@ public class ArchivaIndexingTaskExecutor
{
log.info( "Initialized {}", this.getClass().getName() );
- artifactContextProducer = new DefaultArtifactContextProducer();
+ artifactContextProducer = plexusSisuBridge.lookup(
ArtifactContextProducer.class );
indexPacker = plexusSisuBridge.lookup( IndexPacker.class, "default" );