]> source.dussan.org Git - archiva.git/commitdiff
[MRM-749]
authorMaria Odea B. Ching <oching@apache.org>
Thu, 29 Jan 2009 08:47:52 +0000 (08:47 +0000)
committerMaria Odea B. Ching <oching@apache.org>
Thu, 29 Jan 2009 08:47:52 +0000 (08:47 +0000)
o added more tests
o remove indexing contexts after search

git-svn-id: https://svn.apache.org/repos/asf/archiva/branches/archiva-nexus-indexer@738801 13f79535-47bb-0310-9956-ffa450edef68

archiva-modules/archiva-base/archiva-indexer/src/main/java/org/apache/archiva/indexer/search/NexusRepositorySearch.java
archiva-modules/archiva-base/archiva-indexer/src/test/java/org/apache/archiva/indexer/search/NexusRepositorySearchTest.java

index 1affe44e657c985338e569944e938b4843d92e1f..a878c58adadb21ecca8030c8712dba8da8922255 100644 (file)
@@ -86,11 +86,11 @@ public class NexusRepositorySearch
             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 )
@@ -101,6 +101,24 @@ public class NexusRepositorySearch
         {
             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 )
@@ -143,14 +161,12 @@ public class NexusRepositorySearch
                 }
             }
             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;
             }
index 3eeb089dbd06b705e7f9909f6c3cbb788a127f8f..cbdb9c7e52fcf561c43d23f2ec03b3c371411733 100644 (file)
@@ -137,12 +137,14 @@ public class NexusRepositorySearchTest
         }
 
         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 );
 
@@ -182,7 +184,7 @@ public class NexusRepositorySearchTest
 
     public void testQuickSearchWithPagination()
         throws Exception
-    {
+    {   
         List<String> selectedRepos = new ArrayList<String>();
         selectedRepos.add( TEST_REPO_1 );
 
@@ -258,32 +260,54 @@ public class NexusRepositorySearchTest
         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
     {
-
+        
     }
 
 }