Author: olamy
Date: Thu Sep 15 08:59:28 2011
New Revision: 1171015

URL: http://svn.apache.org/viewvc?rev=1171015&view=rev
Log:
[MRM-1490] REST services : search now returns classifier : fix new services 
based on this

Modified:
    
archiva/trunk/archiva-modules/archiva-base/archiva-indexer/src/main/java/org/apache/archiva/indexer/search/NexusRepositorySearch.java
    
archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/model/Artifact.java
    
archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/SearchService.java
    
archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultSearchService.java
    
archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/java/org/apache/archiva/rest/services/SearchServiceTest.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=1171015&r1=1171014&r2=1171015&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
 Thu Sep 15 08:59:28 2011
@@ -406,6 +406,7 @@ public class NexusRepositorySearch
                 hit.setGoals( artifactInfo.goals );
                 hit.setPrefix( artifactInfo.prefix );
                 hit.setPackaging( artifactInfo.packaging );
+                hit.setClassifier( artifactInfo.classifier );
                 // sure ??
                 hit.setUrl( artifactInfo.remoteUrl );
             }

Modified: 
archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/model/Artifact.java
URL: 
http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/model/Artifact.java?rev=1171015&r1=1171014&r2=1171015&view=diff
==============================================================================
--- 
archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/model/Artifact.java
 (original)
+++ 
archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/model/Artifact.java
 Thu Sep 15 08:59:28 2011
@@ -125,6 +125,8 @@ public class Artifact
 
     private String classifier;
 
+    private String packaging;
+
 
     public Artifact()
     {
@@ -321,6 +323,18 @@ public class Artifact
         this.classifier = classifier;
     }
 
+
+    public String getPackaging()
+    {
+        return packaging;
+    }
+
+    public void setPackaging( String packaging )
+    {
+        this.packaging = packaging;
+    }
+
+
     @Override
     public String toString()
     {
@@ -345,6 +359,7 @@ public class Artifact
         sb.append( ", bundleImportPackage='" ).append( bundleImportPackage 
).append( '\'' );
         sb.append( ", bundleRequireBundle='" ).append( bundleRequireBundle 
).append( '\'' );
         sb.append( ", classifier='" ).append( classifier ).append( '\'' );
+        sb.append( ", packaging='" ).append( packaging ).append( '\'' );
         sb.append( '}' );
         return sb.toString();
     }

Modified: 
archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/SearchService.java
URL: 
http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/SearchService.java?rev=1171015&r1=1171014&r2=1171015&view=diff
==============================================================================
--- 
archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/SearchService.java
 (original)
+++ 
archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/SearchService.java
 Thu Sep 15 08:59:28 2011
@@ -57,7 +57,8 @@ public interface SearchService
     @Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, 
MediaType.TEXT_PLAIN } )
     @RedbackAuthorization( noPermission = true, noRestriction = true )
     List<Artifact> getArtifactVersions( @QueryParam( "groupId" ) String 
groupId,
-                                        @QueryParam( "artifactId" ) String 
artifactId )
+                                        @QueryParam( "artifactId" ) String 
artifactId,
+                                        @QueryParam( "packaging" ) String 
packaging )
         throws ArchivaRestServiceException;
 
     @Path( "searchArtifacts" )

Modified: 
archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultSearchService.java
URL: 
http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultSearchService.java?rev=1171015&r1=1171014&r2=1171015&view=diff
==============================================================================
--- 
archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultSearchService.java
 (original)
+++ 
archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultSearchService.java
 Thu Sep 15 08:59:28 2011
@@ -30,6 +30,8 @@ import org.apache.archiva.rest.api.model
 import org.apache.archiva.rest.api.model.SearchRequest;
 import org.apache.archiva.rest.api.services.ArchivaRestServiceException;
 import org.apache.archiva.rest.api.services.SearchService;
+import org.apache.archiva.rest.services.searchfilter.ArtifactFiler;
+import org.apache.archiva.rest.services.searchfilter.NoClassifierArtifactFiler;
 import org.apache.archiva.security.AccessDeniedException;
 import org.apache.archiva.security.ArchivaSecurityException;
 import org.apache.archiva.security.PrincipalNotFoundException;
@@ -78,7 +80,8 @@ public class DefaultSearchService
             SearchResults searchResults =
                 repositorySearch.search( getPrincipal(), getObservableRepos(), 
queryString, limits,
                                          Collections.<String>emptyList() );
-            return getArtifacts( searchResults );
+            return getArtifacts( searchResults, new ArrayList<ArtifactFiler>( 
NoClassifierArtifactFiler.LIST ) );
+
         }
         catch ( RepositorySearchException e )
         {
@@ -87,7 +90,7 @@ public class DefaultSearchService
         }
     }
 
-    public List<Artifact> getArtifactVersions( String groupId, String 
artifactId )
+    public List<Artifact> getArtifactVersions( String groupId, String 
artifactId, String packaging )
         throws ArchivaRestServiceException
     {
         if ( StringUtils.isBlank( groupId ) || StringUtils.isBlank( artifactId 
) )
@@ -97,12 +100,12 @@ public class DefaultSearchService
         SearchFields searchField = new SearchFields();
         searchField.setGroupId( groupId );
         searchField.setArtifactId( artifactId );
-        SearchResultLimits limits = new SearchResultLimits( 0 );
+        searchField.setPackaging( StringUtils.isBlank( packaging ) ? "jar" : 
packaging );
 
         try
         {
-            SearchResults searchResults = repositorySearch.search( 
getPrincipal(), searchField, limits );
-            return getArtifacts( searchResults );
+            SearchResults searchResults = repositorySearch.search( 
getPrincipal(), searchField, null );
+            return getArtifacts( searchResults, 
Collections.<ArtifactFiler>emptyList() );
         }
         catch ( RepositorySearchException e )
         {
@@ -124,7 +127,7 @@ public class DefaultSearchService
         try
         {
             SearchResults searchResults = repositorySearch.search( 
getPrincipal(), searchField, limits );
-            return getArtifacts( searchResults );
+            return getArtifacts( searchResults, 
Collections.<ArtifactFiler>emptyList() );
         }
         catch ( RepositorySearchException e )
         {
@@ -179,7 +182,7 @@ public class DefaultSearchService
                 : redbackRequestInformation.getUser().getUsername() );
     }
 
-    protected List<Artifact> getArtifacts( SearchResults searchResults )
+    protected List<Artifact> getArtifacts( SearchResults searchResults, 
List<ArtifactFiler> artifactFilers )
     {
         if ( searchResults == null || searchResults.isEmpty() )
         {
@@ -223,11 +226,34 @@ public class DefaultSearchService
                     if ( StringUtils.isNotBlank( version ) )
                     {
                         versionned.setVersion( version );
-                        artifacts.add( versionned );
+                        if ( applyFiltering( versionned, artifactFilers, 
artifacts ) )
+                        {
+                            artifacts.add( versionned );
+                        }
                     }
                 }
             }
         }
         return artifacts;
     }
+
+    protected boolean applyFiltering( Artifact artifact, List<ArtifactFiler> 
artifactFilers, List<Artifact> artifacts )
+    {
+        if ( artifact == null )
+        {
+            return false;
+        }
+        if ( artifactFilers == null || artifactFilers.isEmpty() )
+        {
+            return true;
+        }
+        for ( ArtifactFiler filter : artifactFilers )
+        {
+            if ( !filter.addArtifactInResult( artifact, artifacts ) )
+            {
+                return false;
+            }
+        }
+        return true;
+    }
 }

Modified: 
archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/java/org/apache/archiva/rest/services/SearchServiceTest.java
URL: 
http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/java/org/apache/archiva/rest/services/SearchServiceTest.java?rev=1171015&r1=1171014&r2=1171015&view=diff
==============================================================================
--- 
archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/java/org/apache/archiva/rest/services/SearchServiceTest.java
 (original)
+++ 
archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/java/org/apache/archiva/rest/services/SearchServiceTest.java
 Thu Sep 15 08:59:28 2011
@@ -27,6 +27,7 @@ import org.apache.commons.io.FileUtils;
 import org.junit.Test;
 
 import java.io.File;
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -56,7 +57,8 @@ public class SearchServiceTest
         List<Artifact> artifacts = searchService.quickSearch( 
"commons-logging" );
 
         assertNotNull( artifacts );
-        assertTrue( " empty results for commons-logging search", 
artifacts.size() == 6 );
+        assertTrue( " not 6 results for commons-logging search but " + 
artifacts.size() + ":" + artifacts,
+                    artifacts.size() == 6 );
         log.info( "artifacts for commons-logging size {} search {}", 
artifacts.size(), artifacts );
 
         deleteTestRepo( testRepoId, targetRepo );
@@ -78,17 +80,18 @@ public class SearchServiceTest
 
         SearchService searchService = getSearchService( authorizationHeader );
 
-        List<Artifact> artifacts = searchService.getArtifactVersions( 
"commons-logging", "commons-logging" );
+        List<Artifact> artifacts = searchService.getArtifactVersions( 
"commons-logging", "commons-logging", "jar" );
 
         assertNotNull( artifacts );
-        assertTrue( " empty results for commons-logging search", 
artifacts.size() == 6 );
+        assertTrue( " not 3 results for commons-logging search but " + 
artifacts.size() + ":" + artifacts,
+                    artifacts.size() == 13 );
         log.info( "artifacts for commons-logging size {} search {}", 
artifacts.size(), artifacts );
 
         deleteTestRepo( testRepoId, targetRepo );
     }
 
     @Test
-    public void searchWithSearchRequestGroupIdAndArtifactId()
+    public void searchWithSearchRequestGroupIdAndArtifactIdAndClassifier()
         throws Exception
     {
 
@@ -103,7 +106,7 @@ public class SearchServiceTest
 
         SearchService searchService = getSearchService( authorizationHeader );
 
-        SearchRequest searchRequest = new SearchRequest(  );
+        SearchRequest searchRequest = new SearchRequest();
         searchRequest.setGroupId( "commons-logging" );
         searchRequest.setArtifactId( "commons-logging" );
         searchRequest.setClassifier( "sources" );
@@ -111,7 +114,8 @@ public class SearchServiceTest
         List<Artifact> artifacts = searchService.searchArtifacts( 
searchRequest );
 
         assertNotNull( artifacts );
-        assertTrue( " empty results for commons-logging search", 
artifacts.size() == 6 );
+        assertTrue( " not 2 results for commons-logging search but " + 
artifacts.size() + ":" + artifacts,
+                    artifacts.size() == 2 );
         log.info( "artifacts for commons-logging size {} search {}", 
artifacts.size(), artifacts );
 
         deleteTestRepo( testRepoId, targetRepo );
@@ -120,6 +124,10 @@ public class SearchServiceTest
     private File createAndIndexRepo( String testRepoId )
         throws Exception
     {
+        if ( getManagedRepositoriesService( authorizationHeader 
).getManagedRepository( testRepoId ) != null )
+        {
+            getManagedRepositoriesService( authorizationHeader 
).deleteManagedRepository( testRepoId, true );
+        }
         File targetRepo = new File( System.getProperty( "targetDir", 
"./target" ), "test-repo" );
         cleanupFiles( targetRepo );
 
@@ -132,11 +140,11 @@ public class SearchServiceTest
         managedRepository.setName( "test repo" );
 
         managedRepository.setLocation( targetRepo.getPath() );
+        managedRepository.setIndexDirectory( targetRepo.getPath() + "/index-" 
+ Long.toString( new Date().getTime() ) );
 
         ManagedRepositoriesService service = getManagedRepositoriesService( 
authorizationHeader );
         service.addManagedRepository( managedRepository );
 
-
         getRepositoriesService( authorizationHeader ).scanRepositoryNow( 
testRepoId, true );
 
         return targetRepo;
@@ -153,7 +161,7 @@ public class SearchServiceTest
 
     }
 
-    private void cleanupFiles(File targetRepo)
+    private void cleanupFiles( File targetRepo )
         throws Exception
     {
 


Reply via email to