Author: brett
Date: Mon Nov 30 14:19:56 2009
New Revision: 885430

URL: http://svn.apache.org/viewvc?rev=885430&view=rev
Log:
[MRM-1288] move quickSearch from repository browsing to metadata content 
repository API

Modified:
    
archiva/branches/MRM-1025/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/applicationContext.xml
    
archiva/branches/MRM-1025/archiva-modules/archiva-web/archiva-xmlrpc/archiva-xmlrpc-services/pom.xml
    
archiva/branches/MRM-1025/archiva-modules/archiva-web/archiva-xmlrpc/archiva-xmlrpc-services/src/main/java/org/apache/archiva/web/xmlrpc/services/SearchServiceImpl.java
    
archiva/branches/MRM-1025/archiva-modules/archiva-web/archiva-xmlrpc/archiva-xmlrpc-services/src/test/java/org/apache/archiva/web/xmlrpc/services/SearchServiceImplTest.java
    archiva/branches/MRM-1025/pom.xml

Modified: 
archiva/branches/MRM-1025/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/applicationContext.xml
URL: 
http://svn.apache.org/viewvc/archiva/branches/MRM-1025/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/applicationContext.xml?rev=885430&r1=885429&r2=885430&view=diff
==============================================================================
--- 
archiva/branches/MRM-1025/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/applicationContext.xml
 (original)
+++ 
archiva/branches/MRM-1025/archiva-modules/archiva-web/archiva-webapp/src/main/webapp/WEB-INF/applicationContext.xml
 Mon Nov 30 14:19:56 2009
@@ -43,7 +43,7 @@
   <bean name="searchService" lazy-init="true" scope="singleton" 
class="org.apache.archiva.web.xmlrpc.services.SearchServiceImpl">    
     <constructor-arg ref="xmlRpcUserRepositories"/>   
     <constructor-arg ref="archivaDAO#jdo"/>
-    <constructor-arg ref="repositoryBrowsing"/>
+    <constructor-arg ref="metadataResolver"/>
     <constructor-arg ref="nexusSearch"/>
   </bean>
   

Modified: 
archiva/branches/MRM-1025/archiva-modules/archiva-web/archiva-xmlrpc/archiva-xmlrpc-services/pom.xml
URL: 
http://svn.apache.org/viewvc/archiva/branches/MRM-1025/archiva-modules/archiva-web/archiva-xmlrpc/archiva-xmlrpc-services/pom.xml?rev=885430&r1=885429&r2=885430&view=diff
==============================================================================
--- 
archiva/branches/MRM-1025/archiva-modules/archiva-web/archiva-xmlrpc/archiva-xmlrpc-services/pom.xml
 (original)
+++ 
archiva/branches/MRM-1025/archiva-modules/archiva-web/archiva-xmlrpc/archiva-xmlrpc-services/pom.xml
 Mon Nov 30 14:19:56 2009
@@ -71,6 +71,10 @@
       <artifactId>metadata-repository-api</artifactId>
     </dependency>
     <dependency>
+      <groupId>org.apache.archiva</groupId>
+      <artifactId>maven2-repository</artifactId>
+    </dependency>
+    <dependency>
       <groupId>org.codehaus.plexus</groupId>
       <artifactId>plexus-spring</artifactId>
       <scope>test</scope>

Modified: 
archiva/branches/MRM-1025/archiva-modules/archiva-web/archiva-xmlrpc/archiva-xmlrpc-services/src/main/java/org/apache/archiva/web/xmlrpc/services/SearchServiceImpl.java
URL: 
http://svn.apache.org/viewvc/archiva/branches/MRM-1025/archiva-modules/archiva-web/archiva-xmlrpc/archiva-xmlrpc-services/src/main/java/org/apache/archiva/web/xmlrpc/services/SearchServiceImpl.java?rev=885430&r1=885429&r2=885430&view=diff
==============================================================================
--- 
archiva/branches/MRM-1025/archiva-modules/archiva-web/archiva-xmlrpc/archiva-xmlrpc-services/src/main/java/org/apache/archiva/web/xmlrpc/services/SearchServiceImpl.java
 (original)
+++ 
archiva/branches/MRM-1025/archiva-modules/archiva-web/archiva-xmlrpc/archiva-xmlrpc-services/src/main/java/org/apache/archiva/web/xmlrpc/services/SearchServiceImpl.java
 Mon Nov 30 14:19:56 2009
@@ -31,20 +31,17 @@
 import org.apache.archiva.metadata.model.ProjectVersionMetadata;
 import org.apache.archiva.metadata.model.ProjectVersionReference;
 import org.apache.archiva.metadata.repository.MetadataResolver;
+import org.apache.archiva.metadata.repository.storage.maven2.MavenProjectFacet;
 import org.apache.archiva.web.xmlrpc.api.SearchService;
 import org.apache.archiva.web.xmlrpc.api.beans.Artifact;
 import org.apache.archiva.web.xmlrpc.api.beans.Dependency;
 import org.apache.archiva.web.xmlrpc.security.XmlRpcUserRepositories;
 import org.apache.maven.archiva.common.utils.VersionUtil;
 import org.apache.maven.archiva.database.ArchivaDAO;
-import org.apache.maven.archiva.database.ArchivaDatabaseException;
 import org.apache.maven.archiva.database.ArtifactDAO;
-import org.apache.maven.archiva.database.ObjectNotFoundException;
-import org.apache.maven.archiva.database.browsing.RepositoryBrowsing;
 import 
org.apache.maven.archiva.database.constraints.ArtifactsByChecksumConstraint;
 import org.apache.maven.archiva.database.constraints.UniqueVersionConstraint;
 import org.apache.maven.archiva.model.ArchivaArtifact;
-import org.apache.maven.archiva.model.ArchivaProjectModel;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -72,17 +69,13 @@
 
     private ArchivaDAO archivaDAO;
 
-    private RepositoryBrowsing repoBrowsing;
-
     private MetadataResolver metadataResolver;
 
     public SearchServiceImpl( XmlRpcUserRepositories xmlRpcUserRepositories, 
ArchivaDAO archivaDAO,
-                              RepositoryBrowsing repoBrowsing, 
MetadataResolver metadataResolver,
-                              RepositorySearch search )
+                              MetadataResolver metadataResolver, 
RepositorySearch search )
     {
         this.xmlRpcUserRepositories = xmlRpcUserRepositories;
         this.archivaDAO = archivaDAO;
-        this.repoBrowsing = repoBrowsing;
         this.search = search;
         this.metadataResolver = metadataResolver;
     }
@@ -114,35 +107,34 @@
             {
                 for ( String version : resultHitVersions )
                 {
-                    try
+                    Artifact artifact = null;
+                    for ( String repoId : observableRepos )
                     {
-                        ArchivaProjectModel model =
-                            repoBrowsing.selectVersion( "", observableRepos, 
resultHit.getGroupId(),
-                                                        
resultHit.getArtifactId(), version );
-
-                        String repoId = repoBrowsing.getRepositoryId( "", 
observableRepos, resultHit.getGroupId(),
-                                                                      
resultHit.getArtifactId(), version );
+                        // slight behaviour change to previous implementation: 
instead of allocating "jar" when not
+                        // found in the database, we can rely on the metadata 
repository to create it on the fly. We
+                        // just allocate the default packaging if the Maven 
facet is not found.
+                        ProjectVersionMetadata model =
+                            metadataResolver.getProjectVersion( repoId, 
resultHit.getGroupId(),
+                                                                
resultHit.getArtifactId(), version );
 
-                        Artifact artifact = null;
-                        if ( model == null )
+                        if ( model != null )
                         {
+                            String packaging = "jar";
+
+                            MavenProjectFacet facet = (MavenProjectFacet) 
model.getFacet( MavenProjectFacet.FACET_ID );
+                            if ( facet != null && facet.getPackaging() != null 
)
+                            {
+                                packaging = facet.getPackaging();
+                            }
                             artifact = new Artifact( repoId, 
resultHit.getGroupId(), resultHit.getArtifactId(), version,
-                                                     "jar" );
-                        }
-                        else
-                        {
-                            artifact = new Artifact( repoId, 
model.getGroupId(), model.getArtifactId(), version,
-                                                     model.getPackaging() );
+                                                     packaging );
+                            break;
                         }
-                        artifacts.add( artifact );
-                    }
-                    catch ( ObjectNotFoundException e )
-                    {
-                        log.debug( "Unable to find pom artifact : " + 
e.getMessage() );
                     }
-                    catch ( ArchivaDatabaseException e )
+
+                    if ( artifact != null )
                     {
-                        log.debug( "Error occurred while getting pom artifact 
from database : " + e.getMessage() );
+                        artifacts.add( artifact );
                     }
                 }
             }

Modified: 
archiva/branches/MRM-1025/archiva-modules/archiva-web/archiva-xmlrpc/archiva-xmlrpc-services/src/test/java/org/apache/archiva/web/xmlrpc/services/SearchServiceImplTest.java
URL: 
http://svn.apache.org/viewvc/archiva/branches/MRM-1025/archiva-modules/archiva-web/archiva-xmlrpc/archiva-xmlrpc-services/src/test/java/org/apache/archiva/web/xmlrpc/services/SearchServiceImplTest.java?rev=885430&r1=885429&r2=885430&view=diff
==============================================================================
--- 
archiva/branches/MRM-1025/archiva-modules/archiva-web/archiva-xmlrpc/archiva-xmlrpc-services/src/test/java/org/apache/archiva/web/xmlrpc/services/SearchServiceImplTest.java
 (original)
+++ 
archiva/branches/MRM-1025/archiva-modules/archiva-web/archiva-xmlrpc/archiva-xmlrpc-services/src/test/java/org/apache/archiva/web/xmlrpc/services/SearchServiceImplTest.java
 Mon Nov 30 14:19:56 2009
@@ -34,13 +34,13 @@
 import org.apache.archiva.metadata.model.ProjectVersionMetadata;
 import org.apache.archiva.metadata.model.ProjectVersionReference;
 import org.apache.archiva.metadata.repository.MetadataResolver;
+import org.apache.archiva.metadata.repository.storage.maven2.MavenProjectFacet;
 import org.apache.archiva.web.xmlrpc.api.SearchService;
 import org.apache.archiva.web.xmlrpc.api.beans.Artifact;
 import org.apache.archiva.web.xmlrpc.api.beans.Dependency;
 import org.apache.archiva.web.xmlrpc.security.XmlRpcUserRepositories;
 import org.apache.maven.archiva.database.ArchivaDAO;
 import org.apache.maven.archiva.database.ArtifactDAO;
-import org.apache.maven.archiva.database.browsing.RepositoryBrowsing;
 import 
org.apache.maven.archiva.database.constraints.ArtifactsByChecksumConstraint;
 import org.apache.maven.archiva.database.constraints.UniqueVersionConstraint;
 import org.apache.maven.archiva.model.ArchivaArtifact;
@@ -75,10 +75,6 @@
 
     private ArtifactDAO artifactDAO;
 
-    private MockControl repoBrowsingControl;
-
-    private RepositoryBrowsing repoBrowsing;
-
     private static final String ARCHIVA_TEST_ARTIFACT_ID = 
"archiva-xmlrpc-test";
 
     private static final String ARCHIVA_TEST_GROUP_ID = "org.apache.archiva";
@@ -98,9 +94,6 @@
         archivaDAOControl.setDefaultMatcher( MockControl.ALWAYS_MATCHER );
         archivaDAO = (ArchivaDAO) archivaDAOControl.getMock();
 
-        repoBrowsingControl = MockControl.createControl( 
RepositoryBrowsing.class );
-        repoBrowsing = (RepositoryBrowsing) repoBrowsingControl.getMock();
-
         searchControl = MockControl.createControl( RepositorySearch.class );
         searchControl.setDefaultMatcher( MockControl.ALWAYS_MATCHER );
         search = (RepositorySearch) searchControl.getMock();
@@ -108,10 +101,10 @@
         metadataResolverControl = MockControl.createControl( 
MetadataResolver.class );
         metadataResolver = (MetadataResolver) 
metadataResolverControl.getMock();
 
-        searchService = new SearchServiceImpl( userRepos, archivaDAO, 
repoBrowsing, metadataResolver, search );
-
         artifactDAOControl = MockControl.createControl( ArtifactDAO.class );
         artifactDAO = (ArtifactDAO) artifactDAOControl.getMock();
+
+        searchService = new SearchServiceImpl( userRepos, archivaDAO, 
metadataResolver, search );
     }
 
     // MRM-1230
@@ -145,30 +138,26 @@
             new UniqueVersionConstraint( observableRepoIds, 
resultHit.getGroupId(), resultHit.getArtifactId() ) ),
                                            null );
 
-        ArchivaProjectModel model = new ArchivaProjectModel();
-        model.setGroupId( ARCHIVA_TEST_GROUP_ID );
-        model.setArtifactId( "archiva-webapp" );
-        model.setVersion( "1.0" );
-        model.setPackaging( "war" );
+        ProjectVersionMetadata model = new ProjectVersionMetadata();
+        model.setId( "1.0" );
+        MavenProjectFacet facet = new MavenProjectFacet();
+        facet.setPackaging( "war" );
+        model.addFacet( facet );
 
-        repoBrowsingControl.expectAndReturn(
-            repoBrowsing.selectVersion( "", observableRepoIds, 
ARCHIVA_TEST_GROUP_ID, "archiva-webapp", "1.0" ),
+        metadataResolverControl.expectAndReturn(
+            metadataResolver.getProjectVersion( "repo1.mirror", 
ARCHIVA_TEST_GROUP_ID, "archiva-webapp", "1.0" ),
             model );
 
-        repoBrowsingControl.expectAndReturn(
-            repoBrowsing.getRepositoryId( "", observableRepoIds, 
ARCHIVA_TEST_GROUP_ID, "archiva-webapp", "1.0" ),
-            "repo1.mirror" );
-
         userReposControl.replay();
         searchControl.replay();
-        repoBrowsingControl.replay();
+        metadataResolverControl.replay();
         archivaDAOControl.replay();
 
         List<Artifact> artifacts = searchService.quickSearch( "archiva" );
 
         userReposControl.verify();
         searchControl.verify();
-        repoBrowsingControl.verify();
+        metadataResolverControl.verify();
         archivaDAOControl.verify();
 
         assertNotNull( artifacts );
@@ -213,24 +202,26 @@
             new UniqueVersionConstraint( observableRepoIds, 
resultHit.getGroupId(), resultHit.getArtifactId() ) ),
                                            null );
 
-        repoBrowsingControl.expectAndReturn(
-            repoBrowsing.selectVersion( "", observableRepoIds, 
ARCHIVA_TEST_GROUP_ID, ARCHIVA_TEST_ARTIFACT_ID, "1.0" ),
-            null );
+        metadataResolverControl.expectAndReturn(
+            metadataResolver.getProjectVersion( "repo1.mirror", 
ARCHIVA_TEST_GROUP_ID, ARCHIVA_TEST_ARTIFACT_ID,
+                                                "1.0" ), null );
 
-        repoBrowsingControl.expectAndReturn(
-            repoBrowsing.getRepositoryId( "", observableRepoIds, 
ARCHIVA_TEST_GROUP_ID, ARCHIVA_TEST_ARTIFACT_ID,
-                                          "1.0" ), null );
+        ProjectVersionMetadata model = new ProjectVersionMetadata();
+        model.setId( "1.0" );
+        metadataResolverControl.expectAndReturn(
+            metadataResolver.getProjectVersion( "public.releases", 
ARCHIVA_TEST_GROUP_ID, ARCHIVA_TEST_ARTIFACT_ID,
+                                                "1.0" ), model );
 
         userReposControl.replay();
         searchControl.replay();
-        repoBrowsingControl.replay();
+        metadataResolverControl.replay();
         archivaDAOControl.replay();
 
         List<Artifact> artifacts = searchService.quickSearch( "archiva" );
 
         userReposControl.verify();
         searchControl.verify();
-        repoBrowsingControl.verify();
+        metadataResolverControl.verify();
         archivaDAOControl.verify();
 
         assertNotNull( artifacts );
@@ -241,8 +232,7 @@
         assertEquals( ARCHIVA_TEST_ARTIFACT_ID, artifact.getArtifactId() );
         assertEquals( "1.0", artifact.getVersion() );
         assertEquals( "jar", artifact.getType() );
-        assertNull( "Repository should be null since the model was not found 
in the database!",
-                    artifact.getRepositoryId() );
+        assertEquals( "public.releases", artifact.getRepositoryId() );
     }
 
     public void testQuickSearchArtifactRegularSearch()
@@ -275,31 +265,27 @@
         searchControl.expectAndDefaultReturn( search.search( "", 
observableRepoIds, "archiva", limits, null ),
                                               results );
 
-        ArchivaProjectModel model = new ArchivaProjectModel();
-        model.setGroupId( ARCHIVA_TEST_GROUP_ID );
-        model.setArtifactId( ARCHIVA_TEST_ARTIFACT_ID );
-        model.setVersion( "1.0" );
-        model.setPackaging( "jar" );
-
-        repoBrowsingControl.expectAndReturn(
-            repoBrowsing.selectVersion( "", observableRepoIds, 
ARCHIVA_TEST_GROUP_ID, ARCHIVA_TEST_ARTIFACT_ID, "1.0" ),
-            model );
+        ProjectVersionMetadata model = new ProjectVersionMetadata();
+        model.setId( "1.0" );
+        MavenProjectFacet facet = new MavenProjectFacet();
+        facet.setPackaging( "jar" );
+        model.addFacet( facet );
 
-        repoBrowsingControl.expectAndReturn(
-            repoBrowsing.getRepositoryId( "", observableRepoIds, 
ARCHIVA_TEST_GROUP_ID, ARCHIVA_TEST_ARTIFACT_ID,
-                                          "1.0" ), "repo1.mirror" );
+        metadataResolverControl.expectAndReturn(
+            metadataResolver.getProjectVersion( "repo1.mirror", 
ARCHIVA_TEST_GROUP_ID, ARCHIVA_TEST_ARTIFACT_ID,
+                                                "1.0" ), model );
 
         userReposControl.replay();
         searchControl.replay();
         archivaDAOControl.replay();
-        repoBrowsingControl.replay();
+        metadataResolverControl.replay();
 
         List<Artifact> artifacts = searchService.quickSearch( "archiva" );
 
         userReposControl.verify();
         searchControl.verify();
         archivaDAOControl.verify();
-        repoBrowsingControl.verify();
+        metadataResolverControl.verify();
 
         assertNotNull( artifacts );
         assertEquals( 1, artifacts.size() );

Modified: archiva/branches/MRM-1025/pom.xml
URL: 
http://svn.apache.org/viewvc/archiva/branches/MRM-1025/pom.xml?rev=885430&r1=885429&r2=885430&view=diff
==============================================================================
--- archiva/branches/MRM-1025/pom.xml (original)
+++ archiva/branches/MRM-1025/pom.xml Mon Nov 30 14:19:56 2009
@@ -305,6 +305,11 @@
       </dependency>
       <dependency>
         <groupId>org.apache.archiva</groupId>
+        <artifactId>maven2-repository</artifactId>
+        <version>1.3-SNAPSHOT</version>
+      </dependency>
+      <dependency>
+        <groupId>org.apache.archiva</groupId>
         <artifactId>archiva-applet</artifactId>
         <version>1.3-SNAPSHOT</version>
       </dependency>


Reply via email to