You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@archiva.apache.org by oc...@apache.org on 2008/11/04 18:17:20 UTC

svn commit: r711320 - in /archiva/trunk/archiva-modules/archiva-web/archiva-xmlrpc: archiva-xmlrpc-api/src/main/java/org/apache/archiva/web/xmlrpc/api/ archiva-xmlrpc-api/src/main/java/org/apache/archiva/web/xmlrpc/api/beans/ archiva-xmlrpc-services/sr...

Author: oching
Date: Tue Nov  4 09:17:19 2008
New Revision: 711320

URL: http://svn.apache.org/viewvc?rev=711320&view=rev
Log:
[MRM-206]
- added getDependencies(..) and getDependees(..) implementation
- added test cases

Added:
    archiva/trunk/archiva-modules/archiva-web/archiva-xmlrpc/archiva-xmlrpc-api/src/main/java/org/apache/archiva/web/xmlrpc/api/beans/Dependency.java
Modified:
    archiva/trunk/archiva-modules/archiva-web/archiva-xmlrpc/archiva-xmlrpc-api/src/main/java/org/apache/archiva/web/xmlrpc/api/SearchService.java
    archiva/trunk/archiva-modules/archiva-web/archiva-xmlrpc/archiva-xmlrpc-services/src/main/java/org/apache/archiva/web/xmlrpc/services/SearchServiceImpl.java
    archiva/trunk/archiva-modules/archiva-web/archiva-xmlrpc/archiva-xmlrpc-services/src/test/java/org/apache/archiva/web/xmlrpc/services/SearchServiceImplTest.java

Modified: archiva/trunk/archiva-modules/archiva-web/archiva-xmlrpc/archiva-xmlrpc-api/src/main/java/org/apache/archiva/web/xmlrpc/api/SearchService.java
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-xmlrpc/archiva-xmlrpc-api/src/main/java/org/apache/archiva/web/xmlrpc/api/SearchService.java?rev=711320&r1=711319&r2=711320&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-web/archiva-xmlrpc/archiva-xmlrpc-api/src/main/java/org/apache/archiva/web/xmlrpc/api/SearchService.java (original)
+++ archiva/trunk/archiva-modules/archiva-web/archiva-xmlrpc/archiva-xmlrpc-api/src/main/java/org/apache/archiva/web/xmlrpc/api/SearchService.java Tue Nov  4 09:17:19 2008
@@ -23,6 +23,8 @@
 import java.util.List;
 
 import org.apache.archiva.web.xmlrpc.api.beans.Artifact;
+import org.apache.archiva.web.xmlrpc.api.beans.Dependency;
+
 import com.atlassian.xmlrpc.ServiceObject;
 
 @ServiceObject("Search")
@@ -48,7 +50,7 @@
     public List<Artifact> getArtifactVersionsByDate( String groupId, String artifactId, String version, Date whenGathered )
             throws Exception;
 
-    public List<Artifact> getDirectDependencies( String repositoryId, String groupId, String artifactId, String version ) 
+    public List<Dependency> getDependencies( String groupId, String artifactId, String version ) 
             throws Exception;
     
     public List<Artifact> getDependencyTree( String groupId, String artifactId, String version ) throws Exception;

Added: archiva/trunk/archiva-modules/archiva-web/archiva-xmlrpc/archiva-xmlrpc-api/src/main/java/org/apache/archiva/web/xmlrpc/api/beans/Dependency.java
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-web/archiva-xmlrpc/archiva-xmlrpc-api/src/main/java/org/apache/archiva/web/xmlrpc/api/beans/Dependency.java?rev=711320&view=auto
==============================================================================
--- archiva/trunk/archiva-modules/archiva-web/archiva-xmlrpc/archiva-xmlrpc-api/src/main/java/org/apache/archiva/web/xmlrpc/api/beans/Dependency.java (added)
+++ archiva/trunk/archiva-modules/archiva-web/archiva-xmlrpc/archiva-xmlrpc-api/src/main/java/org/apache/archiva/web/xmlrpc/api/beans/Dependency.java Tue Nov  4 09:17:19 2008
@@ -0,0 +1,111 @@
+package org.apache.archiva.web.xmlrpc.api.beans;
+
+/*
+ * 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 java.io.Serializable;
+
+import com.atlassian.xmlrpc.ServiceBean;
+
+@ServiceBean
+public class Dependency
+    implements Serializable
+{
+    private String groupId;
+    
+    private String artifactId;
+    
+    private String version;
+    
+    private String classifier;
+    
+    private String type;
+    
+    private String scope;
+    
+    public Dependency( String groupId, String artifactId, String version, String classifier, String type, String scope )
+    {
+        this.groupId = groupId;
+        this.artifactId = artifactId;
+        this.version = version;
+        this.classifier = classifier;
+        this.type = type;
+        this.scope = scope;
+    }
+
+    public String getGroupId()
+    {
+        return groupId;
+    }
+
+    public void setGroupId( String groupId )
+    {
+        this.groupId = groupId;
+    }
+
+    public String getArtifactId()
+    {
+        return artifactId;
+    }
+
+    public void setArtifactId( String artifactId )
+    {
+        this.artifactId = artifactId;
+    }
+
+    public String getVersion()
+    {
+        return version;
+    }
+
+    public void setVersion( String version )
+    {
+        this.version = version;
+    }
+
+    public String getClassifier()
+    {
+        return classifier;
+    }
+
+    public void setClassifier( String classifier )
+    {
+        this.classifier = classifier;
+    }
+
+    public String getType()
+    {
+        return type;
+    }
+
+    public void setType( String type )
+    {
+        this.type = type;
+    }
+
+    public String getScope()
+    {
+        return scope;
+    }
+
+    public void setScope( String scope )
+    {
+        this.scope = scope;
+    }
+}

Modified: archiva/trunk/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/trunk/archiva-modules/archiva-web/archiva-xmlrpc/archiva-xmlrpc-services/src/main/java/org/apache/archiva/web/xmlrpc/services/SearchServiceImpl.java?rev=711320&r1=711319&r2=711320&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-web/archiva-xmlrpc/archiva-xmlrpc-services/src/main/java/org/apache/archiva/web/xmlrpc/services/SearchServiceImpl.java (original)
+++ archiva/trunk/archiva-modules/archiva-web/archiva-xmlrpc/archiva-xmlrpc-services/src/main/java/org/apache/archiva/web/xmlrpc/services/SearchServiceImpl.java Tue Nov  4 09:17:19 2008
@@ -26,9 +26,11 @@
 import org.apache.archiva.indexer.util.SearchUtil;
 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.ObjectNotFoundException;
 import org.apache.maven.archiva.database.browsing.BrowsingResults;
 import org.apache.maven.archiva.database.browsing.RepositoryBrowsing;
 import org.apache.maven.archiva.database.constraints.ArtifactsByChecksumConstraint;
@@ -37,6 +39,7 @@
 import org.apache.maven.archiva.indexer.search.SearchResultLimits;
 import org.apache.maven.archiva.indexer.search.SearchResults;
 import org.apache.maven.archiva.model.ArchivaArtifact;
+import org.apache.maven.archiva.model.ArchivaProjectModel;
 
 /**
  * SearchServiceImpl
@@ -176,19 +179,36 @@
         return artifacts;
     }
     
-    public List<Artifact> getDirectDependencies( String repositoryId, String groupId, String artifactId, String version ) 
+    public List<Dependency> getDependencies( String groupId, String artifactId, String version ) 
         throws Exception
     {  
-        List<Artifact> artifacts = new ArrayList<Artifact>();
+        List<Dependency> dependencies = new ArrayList<Dependency>();        
+        List<String> observableRepos = xmlRpcUserRepositories.getObservableRepositories();
         
-        return artifacts;
+        try
+        {
+            ArchivaProjectModel model = repoBrowsing.selectVersion( "", observableRepos, groupId, artifactId, version );
+            List<org.apache.maven.archiva.model.Dependency> modelDeps = model.getDependencies();
+            for( org.apache.maven.archiva.model.Dependency dep : modelDeps )
+            {
+                Dependency dependency = new Dependency( 
+                    dep.getGroupId(), dep.getArtifactId(), dep.getVersion(), dep.getClassifier(), dep.getType(), dep.getScope() );
+                dependencies.add( dependency );
+            }
+        }
+        catch ( ObjectNotFoundException oe )
+        {
+            throw new Exception( "Artifact does not exist." );
+        }
+        
+        return dependencies;
     }
     
     public List<Artifact> getDependencyTree( String groupId, String artifactId, String version ) 
         throws Exception
     {
         List<Artifact> a = new ArrayList<Artifact>();
-    
+        
         return a;
     }
     
@@ -197,9 +217,15 @@
         throws Exception
     {
         List<Artifact> artifacts = new ArrayList<Artifact>();
-       
-        // repo browsing usedBy?
-       
+        List<String> observableRepos = xmlRpcUserRepositories.getObservableRepositories();
+        
+        List<ArchivaProjectModel> dependees = repoBrowsing.getUsedBy( "", observableRepos, "org.apache.archiva", "archiva-test", "1.0" );
+        for( ArchivaProjectModel model : dependees )
+        {
+            Artifact artifact = new Artifact( "", model.getGroupId(), model.getArtifactId(), model.getVersion(), "", model.getWhenIndexed() );
+            artifacts.add( artifact );
+        }
+        
         return artifacts;
     }
 }
\ No newline at end of file

Modified: archiva/trunk/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/trunk/archiva-modules/archiva-web/archiva-xmlrpc/archiva-xmlrpc-services/src/test/java/org/apache/archiva/web/xmlrpc/services/SearchServiceImplTest.java?rev=711320&r1=711319&r2=711320&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-web/archiva-xmlrpc/archiva-xmlrpc-services/src/test/java/org/apache/archiva/web/xmlrpc/services/SearchServiceImplTest.java (original)
+++ archiva/trunk/archiva-modules/archiva-web/archiva-xmlrpc/archiva-xmlrpc-services/src/test/java/org/apache/archiva/web/xmlrpc/services/SearchServiceImplTest.java Tue Nov  4 09:17:19 2008
@@ -27,6 +27,7 @@
 
 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.XmlRpcAuthenticator;
 import org.apache.archiva.web.xmlrpc.security.XmlRpcUserRepositories;
 import org.apache.maven.archiva.configuration.ArchivaConfiguration;
@@ -35,6 +36,7 @@
 import org.apache.maven.archiva.configuration.ManagedRepositoryConfiguration;
 import org.apache.maven.archiva.database.ArchivaDAO;
 import org.apache.maven.archiva.database.ArtifactDAO;
+import org.apache.maven.archiva.database.ObjectNotFoundException;
 import org.apache.maven.archiva.database.browsing.BrowsingResults;
 import org.apache.maven.archiva.database.browsing.RepositoryBrowsing;
 import org.apache.maven.archiva.database.constraints.ArtifactsByChecksumConstraint;
@@ -45,6 +47,7 @@
 import org.apache.maven.archiva.indexer.search.SearchResults;
 import org.apache.maven.archiva.model.ArchivaArtifact;
 import org.apache.maven.archiva.model.ArchivaArtifactModel;
+import org.apache.maven.archiva.model.ArchivaProjectModel;
 import org.apache.maven.archiva.model.ArtifactReference;
 import org.apache.maven.archiva.repository.ManagedRepositoryContent;
 import org.apache.maven.archiva.repository.RepositoryContentFactory;
@@ -347,14 +350,73 @@
     
     public void testGetDependenciesArtifactExists()
         throws Exception
-    {
-    
+    {   
+        List<String> observableRepoIds = new ArrayList<String>();
+        observableRepoIds.add( "repo1.mirror" );
+        observableRepoIds.add( "public.releases" );
+        
+        ArchivaProjectModel model = new ArchivaProjectModel();
+        model.setGroupId( "org.apache.archiva" );
+        model.setArtifactId( "archiva-test" );
+        model.setVersion( "1.0" );
+        
+        org.apache.maven.archiva.model.Dependency dependency = new org.apache.maven.archiva.model.Dependency();
+        dependency.setGroupId( "commons-logging" );
+        dependency.setArtifactId( "commons-logging" );
+        dependency.setVersion( "2.0" );
+        
+        model.addDependency( dependency );
+        
+        dependency = new org.apache.maven.archiva.model.Dependency();
+        dependency.setGroupId( "junit" );
+        dependency.setArtifactId( "junit" );
+        dependency.setVersion( "2.4" );
+        dependency.setScope( "test" );
+        
+        model.addDependency( dependency );
+        
+        userReposControl.expectAndReturn( userRepos.getObservableRepositories(), observableRepoIds );        
+        repoBrowsingControl.expectAndReturn( 
+                 repoBrowsing.selectVersion( "", observableRepoIds, "org.apache.archiva", "archiva-test", "1.0" ), model );
+        
+        repoBrowsingControl.replay(); 
+        userReposControl.replay();
+        
+        List<Dependency> dependencies = searchService.getDependencies( "org.apache.archiva", "archiva-test", "1.0" );
+        
+        repoBrowsingControl.verify();
+        userReposControl.verify();
+        
+        assertNotNull( dependencies );
+        assertEquals( 2, dependencies.size() );
     }
     
     public void testGetDependenciesArtifactDoesNotExist()
         throws Exception
     {
-    
+        List<String> observableRepoIds = new ArrayList<String>();
+        observableRepoIds.add( "repo1.mirror" );
+        observableRepoIds.add( "public.releases" );
+        
+        userReposControl.expectAndReturn( userRepos.getObservableRepositories(), observableRepoIds );
+        repoBrowsingControl.expectAndThrow( 
+               repoBrowsing.selectVersion( "", observableRepoIds, "org.apache.archiva", "archiva-test", "1.0" ), new ObjectNotFoundException( "Artifact does not exist." ) );
+        
+        userReposControl.replay();
+        repoBrowsingControl.replay();
+        
+        try
+        {
+            List<Dependency> dependencies = searchService.getDependencies( "org.apache.archiva", "archiva-test", "1.0" );
+            fail( "An exception should have been thrown." );
+        }
+        catch ( Exception e )
+        {
+            assertEquals( "Artifact does not exist.", e.getMessage() );
+        }
+        
+        userReposControl.verify();
+        repoBrowsingControl.verify();
     }
     
 /* get dependency tree */
@@ -362,7 +424,7 @@
     public void testGetDependencyTreeArtifactExists()
         throws Exception
     {
-    
+        
     }
     
     public void testGetDependencyTreeArtifactDoesNotExist()
@@ -373,15 +435,87 @@
     
 /* get dependees */
     
-    public void testGetDependeneesArtifactExists()
+    public void testGetDependees()
         throws Exception
     {
-    
+        Date date = new Date();
+        List<String> observableRepoIds = new ArrayList<String>();
+        observableRepoIds.add( "repo1.mirror" );
+        observableRepoIds.add( "public.releases" );
+        
+        List dependeeModels = new ArrayList();
+        ArchivaProjectModel dependeeModel = new ArchivaProjectModel();
+        dependeeModel.setGroupId( "org.apache.archiva" );
+        dependeeModel.setArtifactId( "archiva-dependee-one" );
+        dependeeModel.setVersion( "1.0" );
+        dependeeModel.setWhenIndexed( date );
+        dependeeModels.add( dependeeModel );
+        
+        dependeeModel = new ArchivaProjectModel();
+        dependeeModel.setGroupId( "org.apache.archiva" );
+        dependeeModel.setArtifactId( "archiva-dependee-two" );
+        dependeeModel.setVersion( "1.0" );
+        dependeeModel.setWhenIndexed( date );
+        dependeeModels.add( dependeeModel );
+        
+        userReposControl.expectAndReturn( userRepos.getObservableRepositories(), observableRepoIds );
+        repoBrowsingControl.expectAndReturn( repoBrowsing.getUsedBy( "", observableRepoIds, "org.apache.archiva", "archiva-test", "1.0" ), dependeeModels );
+        
+        repoBrowsingControl.replay(); 
+        userReposControl.replay();
+
+        List<Artifact> dependees = searchService.getDependees( "org.apache.archiva", "archiva-test", "1.0" );
+        
+        repoBrowsingControl.verify();
+        userReposControl.verify();
+        
+        assertNotNull( dependees );
+        assertEquals( 2, dependees.size() );
     }
     
-    public void testGetDependeneesArtifactDoesNotExist()
+    /*public void testGetDependeesArtifactDoesNotExist()
         throws Exception
     {
-    
-    }
+        Date date = new Date();
+        List<String> observableRepoIds = new ArrayList<String>();
+        observableRepoIds.add( "repo1.mirror" );
+        observableRepoIds.add( "public.releases" );
+        
+        List dependeeModels = new ArrayList();
+        ArchivaProjectModel dependeeModel = new ArchivaProjectModel();
+        dependeeModel.setGroupId( "org.apache.archiva" );
+        dependeeModel.setArtifactId( "archiva-dependee-one" );
+        dependeeModel.setVersion( "1.0" );
+        dependeeModel.setWhenIndexed( date );
+        dependeeModels.add( dependeeModel );
+        
+        dependeeModel = new ArchivaProjectModel();
+        dependeeModel.setGroupId( "org.apache.archiva" );
+        dependeeModel.setArtifactId( "archiva-dependee-two" );
+        dependeeModel.setVersion( "1.0" );
+        dependeeModel.setWhenIndexed( date );
+        dependeeModels.add( dependeeModel );
+        
+        userReposControl.expectAndReturn( userRepos.getObservableRepositories(), observableRepoIds );
+        repoBrowsingControl.expectAndReturn( repoBrowsing.getUsedBy( "", observableRepoIds, "org.apache.archiva", "archiva-test", "1.0" ), dependeeModels );
+        
+        repoBrowsingControl.replay(); 
+        userReposControl.replay();
+
+        try
+        {
+            List<Artifact> dependees = searchService.getDependees( "org.apache.archiva", "archiva-test", "1.0" );
+            fail( "An exception should have been thrown." );
+        }
+        catch ( Exception e )
+        {
+            assertEquals( "Artifact does not exist." )
+        }
+        
+        repoBrowsingControl.verify();
+        userReposControl.verify();
+        
+        assertNotNull( dependees );
+        assertEquals( 2, dependees.size() );
+    }*/
 }
\ No newline at end of file