FlatSearchRequest request = new FlatSearchRequest( q );
FlatSearchResponse response = indexer.searchFlat( request );
- if( response == null )
+ if( response == null || response.getTotalHits() == 0 )
{
return new SearchResults();
}
-
+
return convertToSearchResults( response, limits );
}
catch ( IndexContextInInconsistentStateException e )
{
throw new RepositorySearchException( e );
}
+ finally
+ {
+ Map<String, IndexingContext> indexingContexts = indexer.getIndexingContexts();
+ Set<String> keys = indexingContexts.keySet();
+ for( String key : keys )
+ {
+ try
+ {
+ indexer.removeIndexingContext( indexingContexts.get( key ), false );
+ log.debug( "Indexing context '" + key + "' removed from search." );
+ }
+ catch ( IOException e )
+ {
+ log.warn( "IOException occurred while removing indexing content '" + key + "'." );
+ continue;
+ }
+ }
+ }
}
public SearchResults search( String principal, SearchFields searchFields, SearchResultLimits limits )
}
}
catch ( UnsupportedExistingLuceneIndexException e )
- {
- // skip repository
+ {
log.warn( "Error accessing index of repository '" + repo + "' : " + e.getMessage() );
continue;
}
catch ( IOException e )
- {
- // skip repository
+ {
log.warn( "IO error occured while accessing index of repository '" + repo + "' : " + e.getMessage() );
continue;
}
}
indexerEngine.endIndexing( context );
+ indexer.removeIndexingContext( context, false );
+
assertTrue( new File( getBasedir(), "/target/test-classes/" + repository + "/.indexer" ).exists() );
}
public void testQuickSearch()
throws Exception
- {
+ {
List<String> selectedRepos = new ArrayList<String>();
selectedRepos.add( TEST_REPO_1 );
public void testQuickSearchWithPagination()
throws Exception
- {
+ {
List<String> selectedRepos = new ArrayList<String>();
selectedRepos.add( TEST_REPO_1 );
FileUtils.deleteDirectory( new File( getBasedir(), "/target/test-classes/" + TEST_REPO_2 + "/.indexer" ) );
assertFalse( new File( getBasedir(), "/target/test-classes/" + TEST_REPO_2 + "/.indexer" ).exists() );
- // there should be no duplicates in the search result hit
// TODO: [BROWSE] in artifact info from browse, display all the repositories where the artifact is found
}
public void testNoMatchFound()
throws Exception
{
+ List<String> selectedRepos = new ArrayList<String>();
+ selectedRepos.add( TEST_REPO_1 );
+
+ archivaConfigControl.expectAndReturn( archivaConfig.getConfiguration(), config );
+
+ archivaConfigControl.replay();
+
+ SearchResults results = search.search( "user", selectedRepos, "dfghdfkweriuasndsaie", null );
+
+ archivaConfigControl.verify();
+ assertNotNull( results );
+ assertEquals( 0, results.getTotalHits() );
}
public void testNoIndexFound()
throws Exception
{
+ List<String> selectedRepos = new ArrayList<String>();
+ selectedRepos.add( "non-existing-repo" );
+
+ archivaConfigControl.expectAndReturn( archivaConfig.getConfiguration(), config );
+ archivaConfigControl.replay();
+
+ SearchResults results = search.search( "user", selectedRepos, "org.apache.archiva", null );
+ assertNotNull( results );
+ assertEquals( 0, results.getTotalHits() );
+
+ archivaConfigControl.verify();
}
public void testSearchWithinSearchResults()
throws Exception
{
-
+
}
public void testAdvancedSearch()
throws Exception
{
-
+
}
}