aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorOlivier Lamy <olamy@apache.org>2012-09-20 19:42:21 +0000
committerOlivier Lamy <olamy@apache.org>2012-09-20 19:42:21 +0000
commit8f64c48ccf5e38a6deb483e2d3b64f06d7cb875b (patch)
tree4cfb48c298d955eb99a5a8cfd2623e7fac2ef58f
parent18ef59174e22e6dcdd4e2d4f972fa5a4f574610b (diff)
downloadarchiva-8f64c48ccf5e38a6deb483e2d3b64f06d7cb875b.tar.gz
archiva-8f64c48ccf5e38a6deb483e2d3b64f06d7cb875b.zip
add rest service to get artifacts number per repository
git-svn-id: https://svn.apache.org/repos/asf/archiva/trunk@1388174 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r--archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/BrowseService.java189
-rw-r--r--archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultBrowseService.java20
-rw-r--r--archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/java/org/apache/archiva/rest/services/BrowseServiceTest.java34
3 files changed, 153 insertions, 90 deletions
diff --git a/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/BrowseService.java b/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/BrowseService.java
index e381fa91b..ef7b16117 100644
--- a/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/BrowseService.java
+++ b/archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/BrowseService.java
@@ -43,154 +43,167 @@ import java.util.List;
* @author Olivier Lamy
* @since 1.4-M3
*/
-@Path ( "/browseService/" )
+@Path ("/browseService/")
public interface BrowseService
{
- @Path ( "rootGroups" )
+ @Path ("rootGroups")
@GET
- @Produces ( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML } )
- @RedbackAuthorization ( noPermission = true, noRestriction = true )
- BrowseResult getRootGroups( @QueryParam ( "repositoryId" ) String repositoryId )
+ @Produces ({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
+ @RedbackAuthorization (noPermission = true, noRestriction = true)
+ BrowseResult getRootGroups( @QueryParam ("repositoryId") String repositoryId )
throws ArchivaRestServiceException;
- @Path ( "browseGroupId/{groupId}" )
+ @Path ("browseGroupId/{groupId}")
@GET
- @Produces ( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML } )
- @RedbackAuthorization ( noPermission = true, noRestriction = true )
- BrowseResult browseGroupId( @PathParam ( "groupId" ) String groupId,
- @QueryParam ( "repositoryId" ) String repositoryId )
+ @Produces ({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
+ @RedbackAuthorization (noPermission = true, noRestriction = true)
+ BrowseResult browseGroupId( @PathParam ("groupId") String groupId,
+ @QueryParam ("repositoryId") String repositoryId )
throws ArchivaRestServiceException;
- @Path ( "versionsList/{g}/{a}" )
+ @Path ("versionsList/{g}/{a}")
@GET
- @Produces ( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML } )
- @RedbackAuthorization ( noPermission = true, noRestriction = true )
- VersionsList getVersionsList( @PathParam ( "g" ) String groupId, @PathParam ( "a" ) String artifactId,
- @QueryParam ( "repositoryId" ) String repositoryId )
+ @Produces ({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
+ @RedbackAuthorization (noPermission = true, noRestriction = true)
+ VersionsList getVersionsList( @PathParam ("g") String groupId, @PathParam ("a") String artifactId,
+ @QueryParam ("repositoryId") String repositoryId )
throws ArchivaRestServiceException;
- @Path ( "projectVersionMetadata/{g}/{a}" )
+ @Path ("projectVersionMetadata/{g}/{a}")
@GET
- @Produces ( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML } )
- @RedbackAuthorization ( noPermission = true, noRestriction = true )
- ProjectVersionMetadata getProjectVersionMetadata( @PathParam ( "g" ) String groupId,
- @PathParam ( "a" ) String artifactId,
- @QueryParam ( "repositoryId" ) String repositoryId )
+ @Produces ({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
+ @RedbackAuthorization (noPermission = true, noRestriction = true)
+ ProjectVersionMetadata getProjectVersionMetadata( @PathParam ("g") String groupId,
+ @PathParam ("a") String artifactId,
+ @QueryParam ("repositoryId") String repositoryId )
throws ArchivaRestServiceException;
- @Path ( "projectVersionMetadata/{g}/{a}/{v}" )
+ @Path ("projectVersionMetadata/{g}/{a}/{v}")
@GET
- @Produces ( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML } )
- @RedbackAuthorization ( noPermission = true, noRestriction = true )
- ProjectVersionMetadata getProjectMetadata( @PathParam ( "g" ) String groupId, @PathParam ( "a" ) String artifactId,
- @PathParam ( "v" ) String version,
- @QueryParam ( "repositoryId" ) String repositoryId )
+ @Produces ({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
+ @RedbackAuthorization (noPermission = true, noRestriction = true)
+ ProjectVersionMetadata getProjectMetadata( @PathParam ("g") String groupId, @PathParam ("a") String artifactId,
+ @PathParam ("v") String version,
+ @QueryParam ("repositoryId") String repositoryId )
throws ArchivaRestServiceException;
- @Path ( "userRepositories" )
+ @Path ("userRepositories")
@GET
- @Produces ( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML } )
- @RedbackAuthorization ( noPermission = true, noRestriction = true )
+ @Produces ({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
+ @RedbackAuthorization (noPermission = true, noRestriction = true)
/**
* @return List of managed repositories current user can read
*/
List<ManagedRepository> getUserRepositories()
throws ArchivaRestServiceException;
- @Path ( "treeEntries/{g}/{a}/{v}" )
+ @Path ("treeEntries/{g}/{a}/{v}")
@GET
- @Produces ( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML } )
- @RedbackAuthorization ( noPermission = true, noRestriction = true )
+ @Produces ({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
+ @RedbackAuthorization (noPermission = true, noRestriction = true)
/**
* return the dependency Tree for an artifacts
* <b>the List result has only one entry</b>
*/
- List<TreeEntry> getTreeEntries( @PathParam ( "g" ) String groupId, @PathParam ( "a" ) String artifactId,
- @PathParam ( "v" ) String version,
- @QueryParam ( "repositoryId" ) String repositoryId )
+ List<TreeEntry> getTreeEntries( @PathParam ("g") String groupId, @PathParam ("a") String artifactId,
+ @PathParam ("v") String version, @QueryParam ("repositoryId") String repositoryId )
throws ArchivaRestServiceException;
- @Path ( "dependees/{g}/{a}/{v}" )
+ @Path ("dependees/{g}/{a}/{v}")
@GET
- @Produces ( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML } )
- @RedbackAuthorization ( noPermission = true, noRestriction = true )
+ @Produces ({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
+ @RedbackAuthorization (noPermission = true, noRestriction = true)
/**
* List of artifacts using the artifact passed in parameter.
*/
- List<Artifact> getDependees( @PathParam ( "g" ) String groupId, @PathParam ( "a" ) String artifactId,
- @PathParam ( "v" ) String version, @QueryParam ( "repositoryId" ) String repositoryId )
+ List<Artifact> getDependees( @PathParam ("g") String groupId, @PathParam ("a") String artifactId,
+ @PathParam ("v") String version, @QueryParam ("repositoryId") String repositoryId )
throws ArchivaRestServiceException;
- @Path ( "metadatas/{g}/{a}/{v}" )
+ @Path ("metadatas/{g}/{a}/{v}")
@GET
- @Produces ( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML } )
- @RedbackAuthorization ( noPermission = true, noRestriction = true )
- List<Entry> getMetadatas( @PathParam ( "g" ) String groupId, @PathParam ( "a" ) String artifactId,
- @PathParam ( "v" ) String version, @QueryParam ( "repositoryId" ) String repositoryId )
+ @Produces ({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
+ @RedbackAuthorization (noPermission = true, noRestriction = true)
+ List<Entry> getMetadatas( @PathParam ("g") String groupId, @PathParam ("a") String artifactId,
+ @PathParam ("v") String version, @QueryParam ("repositoryId") String repositoryId )
throws ArchivaRestServiceException;
- @Path ( "metadata/{g}/{a}/{v}/{key}/{value}" )
+ @Path ("metadata/{g}/{a}/{v}/{key}/{value}")
@PUT
- @Produces ( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML } )
- @RedbackAuthorization ( noPermission = false, noRestriction = false, permissions = "archiva-add-metadata" )
- Boolean addMetadata( @PathParam ( "g" ) String groupId, @PathParam ( "a" ) String artifactId,
- @PathParam ( "v" ) String version, @PathParam ( "key" ) String key,
- @PathParam ( "value" ) String value, @QueryParam ( "repositoryId" ) String repositoryId )
+ @Produces ({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
+ @RedbackAuthorization (noPermission = false, noRestriction = false, permissions = "archiva-add-metadata")
+ Boolean addMetadata( @PathParam ("g") String groupId, @PathParam ("a") String artifactId,
+ @PathParam ("v") String version, @PathParam ("key") String key,
+ @PathParam ("value") String value, @QueryParam ("repositoryId") String repositoryId )
throws ArchivaRestServiceException;
- @Path ( "metadata/{g}/{a}/{v}/{key}" )
+ @Path ("metadata/{g}/{a}/{v}/{key}")
@DELETE
- @Produces ( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML } )
- @RedbackAuthorization ( noPermission = false, noRestriction = false, permissions = "archiva-add-metadata" )
- Boolean deleteMetadata( @PathParam ( "g" ) String groupId, @PathParam ( "a" ) String artifactId,
- @PathParam ( "v" ) String version, @PathParam ( "key" ) String key,
- @QueryParam ( "repositoryId" ) String repositoryId )
+ @Produces ({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
+ @RedbackAuthorization (noPermission = false, noRestriction = false, permissions = "archiva-add-metadata")
+ Boolean deleteMetadata( @PathParam ("g") String groupId, @PathParam ("a") String artifactId,
+ @PathParam ("v") String version, @PathParam ("key") String key,
+ @QueryParam ("repositoryId") String repositoryId )
throws ArchivaRestServiceException;
- @Path ( "artifactContentEntries/{g}/{a}/{v}" )
+ @Path ("artifactContentEntries/{g}/{a}/{v}")
@GET
- @Produces ( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML } )
- @RedbackAuthorization ( noPermission = true, noRestriction = true )
- List<ArtifactContentEntry> getArtifactContentEntries( @PathParam ( "g" ) String groupId,
- @PathParam ( "a" ) String artifactId,
- @PathParam ( "v" ) String version,
- @QueryParam ( "c" ) String classifier,
- @QueryParam ( "t" ) String type,
- @QueryParam ( "p" ) String path,
- @QueryParam ( "repositoryId" ) String repositoryId )
- throws ArchivaRestServiceException;
-
- @Path ( "artifactDownloadInfos/{g}/{a}/{v}" )
+ @Produces ({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
+ @RedbackAuthorization (noPermission = true, noRestriction = true)
+ List<ArtifactContentEntry> getArtifactContentEntries( @PathParam ("g") String groupId,
+ @PathParam ("a") String artifactId,
+ @PathParam ("v") String version,
+ @QueryParam ("c") String classifier,
+ @QueryParam ("t") String type, @QueryParam ("p") String path,
+ @QueryParam ("repositoryId") String repositoryId )
+ throws ArchivaRestServiceException;
+
+ @Path ("artifactDownloadInfos/{g}/{a}/{v}")
@GET
- @Produces ( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML } )
- @RedbackAuthorization ( noPermission = true, noRestriction = true )
- List<Artifact> getArtifactDownloadInfos( @PathParam ( "g" ) String groupId, @PathParam ( "a" ) String artifactId,
- @PathParam ( "v" ) String version,
- @QueryParam ( "repositoryId" ) String repositoryId )
+ @Produces ({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
+ @RedbackAuthorization (noPermission = true, noRestriction = true)
+ List<Artifact> getArtifactDownloadInfos( @PathParam ("g") String groupId, @PathParam ("a") String artifactId,
+ @PathParam ("v") String version,
+ @QueryParam ("repositoryId") String repositoryId )
throws ArchivaRestServiceException;
- @Path ( "artifactContentText/{g}/{a}/{v}" )
+ @Path ("artifactContentText/{g}/{a}/{v}")
@GET
- @Produces ( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML } )
- @RedbackAuthorization ( noPermission = true, noRestriction = true )
+ @Produces ({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
+ @RedbackAuthorization (noPermission = true, noRestriction = true)
/**
* if path is empty content of the file is returned (for pom view)
*/
- ArtifactContent getArtifactContentText( @PathParam ( "g" ) String groupId, @PathParam ( "a" ) String artifactId,
- @PathParam ( "v" ) String version, @QueryParam ( "c" ) String classifier,
- @QueryParam ( "t" ) String type, @QueryParam ( "p" ) String path,
- @QueryParam ( "repositoryId" ) String repositoryId )
+ ArtifactContent getArtifactContentText( @PathParam ("g") String groupId, @PathParam ("a") String artifactId,
+ @PathParam ("v") String version, @QueryParam ("c") String classifier,
+ @QueryParam ("t") String type, @QueryParam ("p") String path,
+ @QueryParam ("repositoryId") String repositoryId )
throws ArchivaRestServiceException;
- @Path ( "artifactAvailable/{g}/{a}/{v}" )
+ @Path ("artifactAvailable/{g}/{a}/{v}")
@GET
- @Produces ( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML } )
- @RedbackAuthorization ( noPermission = true, noRestriction = true )
+ @Produces ({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
+ @RedbackAuthorization (noPermission = true, noRestriction = true)
/**
* verify if an artifact is available locally if not download from proxies will be try
* @since 1.4-M3
*/
- Boolean artifactAvailable( @PathParam ( "g" ) String groupId, @PathParam ( "a" ) String artifactId,
- @PathParam ( "v" ) String version, @QueryParam ( "repositoryId" ) String repositoryId )
+ Boolean artifactAvailable( @PathParam ("g") String groupId, @PathParam ("a") String artifactId,
+ @PathParam ("v") String version, @QueryParam ("repositoryId") String repositoryId )
+ throws ArchivaRestServiceException;
+
+ @Path ("artifactsNumber/{r}")
+ @GET
+ @Produces ({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
+ @RedbackAuthorization (noPermission = true, noRestriction = true)
+ /**
+ *
+ * return artifacts number in a repository
+ * @param repositoryId
+ * @return
+ * @throws ArchivaRestServiceException
+ * @since 1.4-M3
+ */
+ Integer getArtifactsNumber( @PathParam ( "r" ) String repositoryId )
throws ArchivaRestServiceException;
}
diff --git a/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultBrowseService.java b/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultBrowseService.java
index d087af144..fa8d21217 100644
--- a/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultBrowseService.java
+++ b/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultBrowseService.java
@@ -51,7 +51,6 @@ import org.apache.archiva.rest.api.model.Entry;
import org.apache.archiva.rest.api.model.VersionsList;
import org.apache.archiva.rest.api.services.ArchivaRestServiceException;
import org.apache.archiva.rest.api.services.BrowseService;
-import org.apache.archiva.rest.services.utils.ArtifactBuilder;
import org.apache.archiva.rest.services.utils.ArtifactContentEntryComparator;
import org.apache.archiva.security.ArchivaSecurityException;
import org.apache.commons.collections.CollectionUtils;
@@ -62,6 +61,7 @@ import org.springframework.stereotype.Service;
import javax.inject.Inject;
import javax.inject.Named;
+import javax.ws.rs.PathParam;
import javax.ws.rs.core.Response;
import java.io.File;
import java.io.IOException;
@@ -830,6 +830,24 @@ public class DefaultBrowseService
return false;
}
+ public Integer getArtifactsNumber( String repositoryId )
+ throws ArchivaRestServiceException
+ {
+ RepositorySession repositorySession = repositorySessionFactory.createSession();
+ try
+ {
+ return repositorySession.getRepository().getArtifacts( repositoryId ).size();
+ }
+ catch ( MetadataRepositoryException e )
+ {
+ throw new ArchivaRestServiceException( e.getMessage(), e );
+ }
+ finally
+ {
+ repositorySession.close();
+ }
+ }
+
//---------------------------
// internals
//---------------------------
diff --git a/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/java/org/apache/archiva/rest/services/BrowseServiceTest.java b/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/java/org/apache/archiva/rest/services/BrowseServiceTest.java
index 825856f52..544487354 100644
--- a/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/java/org/apache/archiva/rest/services/BrowseServiceTest.java
+++ b/archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/test/java/org/apache/archiva/rest/services/BrowseServiceTest.java
@@ -18,8 +18,8 @@ package org.apache.archiva.rest.services;
* under the License.
*/
-import org.apache.archiva.metadata.model.ProjectVersionMetadata;
import org.apache.archiva.maven2.model.Artifact;
+import org.apache.archiva.metadata.model.ProjectVersionMetadata;
import org.apache.archiva.rest.api.model.ArtifactContentEntry;
import org.apache.archiva.rest.api.model.BrowseResult;
import org.apache.archiva.rest.api.model.BrowseResultEntry;
@@ -428,4 +428,36 @@ public class BrowseServiceTest
}
+ @Test
+ public void artifactsNumber()
+ throws Exception
+ {
+ String testRepoId = "test-repo";
+ // force guest user creation if not exists
+ if ( getUserService( authorizationHeader ).getGuestUser() == null )
+ {
+ assertNotNull( getUserService( authorizationHeader ).createGuestUser() );
+ }
+
+ createAndIndexRepo( testRepoId, new File( getBasedir(), "src/test/repo-with-osgi" ).getAbsolutePath(), false );
+
+ BrowseService browseService = getBrowseService( authorizationHeader, true );
+
+ //WebClient.client( browseService ).accept( MediaType.TEXT_PLAIN );
+
+ try
+ {
+ int number = browseService.getArtifactsNumber( testRepoId );
+
+ log.info( "getArtifactsNumber: {}", number );
+
+ assertTrue( number > 1 );
+ }
+ catch ( Exception e )
+ {
+ log.error( e.getMessage(), e );
+ throw e;
+ }
+ }
+
}