You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@archiva.apache.org by ol...@apache.org on 2012/03/23 09:33:03 UTC
svn commit: r1304227 - in
/archiva/trunk/archiva-modules/archiva-web/archiva-rest:
archiva-rest-api/src/main/java/org/apache/archiva/rest/api/model/
archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/
archiva-rest-services/src/main/jav...
Author: olamy
Date: Fri Mar 23 08:33:02 2012
New Revision: 1304227
URL: http://svn.apache.org/viewvc?rev=1304227&view=rev
Log:
add a rest method to get artifact dependees
Modified:
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/BrowseService.java
archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultBrowseService.java
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=1304227&r1=1304226&r2=1304227&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 Fri Mar 23 08:33:02 2012
@@ -129,6 +129,7 @@ public class Artifact
/**
* file extension of the artifact
+ *
* @since 1.4-M2
*/
private String fileExtension;
@@ -139,6 +140,13 @@ public class Artifact
// no op
}
+ public Artifact( String groupId, String artifactId, String version )
+ {
+ this.artifactId = artifactId;
+ this.groupId = groupId;
+ this.version = version;
+ }
+
public String getGroupId()
{
return groupId;
Modified: archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/BrowseService.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/BrowseService.java?rev=1304227&r1=1304226&r2=1304227&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/BrowseService.java (original)
+++ archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/BrowseService.java Fri Mar 23 08:33:02 2012
@@ -20,6 +20,7 @@ package org.apache.archiva.rest.api.serv
import org.apache.archiva.admin.model.beans.ManagedRepository;
import org.apache.archiva.metadata.model.ProjectVersionMetadata;
+import org.apache.archiva.rest.api.model.Artifact;
import org.apache.archiva.rest.api.model.BrowseResult;
import org.apache.archiva.rest.api.model.TreeEntry;
import org.apache.archiva.rest.api.model.VersionsList;
@@ -96,4 +97,12 @@ public interface BrowseService
@PathParam( "v" ) String version,
@QueryParam( "repositoryId" ) String repositoryId )
throws ArchivaRestServiceException;
+
+ @Path( "dependees/{g}/{a}/{v}" )
+ @GET
+ @Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML } )
+ @RedbackAuthorization( noPermission = true, noRestriction = true )
+ List<Artifact> getDependees( @PathParam( "g" ) String groupId, @PathParam( "a" ) String artifactId,
+ @PathParam( "v" ) String version, @QueryParam( "repositoryId" ) String repositoryId )
+ throws ArchivaRestServiceException;
}
Modified: archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultBrowseService.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/DefaultBrowseService.java?rev=1304227&r1=1304226&r2=1304227&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultBrowseService.java (original)
+++ archiva/trunk/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultBrowseService.java Fri Mar 23 08:33:02 2012
@@ -23,6 +23,7 @@ import org.apache.archiva.admin.model.be
import org.apache.archiva.common.utils.VersionComparator;
import org.apache.archiva.dependency.tree.maven2.DependencyTreeBuilder;
import org.apache.archiva.metadata.model.ProjectVersionMetadata;
+import org.apache.archiva.metadata.model.ProjectVersionReference;
import org.apache.archiva.metadata.repository.MetadataResolutionException;
import org.apache.archiva.metadata.repository.MetadataResolver;
import org.apache.archiva.metadata.repository.RepositorySession;
@@ -567,6 +568,43 @@ public class DefaultBrowseService
}
}
+ public List<Artifact> getDependees( String groupId, String artifactId, String version, String repositoryId )
+ throws ArchivaRestServiceException
+ {
+ List<ProjectVersionReference> references = new ArrayList<ProjectVersionReference>();
+ // TODO: what if we get duplicates across repositories?
+ RepositorySession repositorySession = repositorySessionFactory.createSession();
+ try
+ {
+ MetadataResolver metadataResolver = repositorySession.getResolver();
+ for ( String repoId : getObservableRepos() )
+ {
+ // TODO: what about if we want to see this irrespective of version?
+ references.addAll(
+ metadataResolver.resolveProjectReferences( repositorySession, repoId, groupId, artifactId,
+ version ) );
+ }
+ }
+ catch ( MetadataResolutionException e )
+ {
+ throw new ArchivaRestServiceException( e.getMessage(),
+ Response.Status.INTERNAL_SERVER_ERROR.getStatusCode() );
+ }
+ finally
+ {
+ repositorySession.close();
+ }
+
+ List<Artifact> artifacts = new ArrayList<Artifact>( references.size() );
+
+ for ( ProjectVersionReference projectVersionReference : references )
+ {
+ artifacts.add( new Artifact( projectVersionReference.getNamespace(), projectVersionReference.getProjectId(),
+ projectVersionReference.getProjectVersion() ) );
+ }
+ return artifacts;
+ }
+
//---------------------------
// internals
//---------------------------