]> source.dussan.org Git - archiva.git/commitdiff
use selected repository to get versionList and projectMetadata
authorOlivier Lamy <olamy@apache.org>
Fri, 16 Mar 2012 16:08:52 +0000 (16:08 +0000)
committerOlivier Lamy <olamy@apache.org>
Fri, 16 Mar 2012 16:08:52 +0000 (16:08 +0000)
git-svn-id: https://svn.apache.org/repos/asf/archiva/trunk@1301615 13f79535-47bb-0310-9956-ffa450edef68

archiva-modules/archiva-web/archiva-rest/archiva-rest-api/src/main/java/org/apache/archiva/rest/api/services/BrowseService.java
archiva-modules/archiva-web/archiva-rest/archiva-rest-services/src/main/java/org/apache/archiva/rest/services/DefaultBrowseService.java
archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/archiva/search.js

index 64996c6aebf862fde08a2f5ae5d239c34abdb148..cc76f25338741bcf7b15aa47ff631e49ce8aded7 100644 (file)
@@ -58,7 +58,8 @@ public interface BrowseService
     @GET
     @Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML } )
     @RedbackAuthorization( noPermission = true, noRestriction = true )
-    VersionsList getVersionsList( @PathParam( "g" ) String groupId, @PathParam( "a" ) String artifactId )
+    VersionsList getVersionsList( @PathParam( "g" ) String groupId, @PathParam( "a" ) String artifactId,
+                                  @QueryParam( "repositoryId" ) String repositoryId )
         throws ArchivaRestServiceException;
 
     @Path( "projectVersionMetadata/{g}/{a}" )
@@ -66,7 +67,8 @@ public interface BrowseService
     @Produces( { MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML } )
     @RedbackAuthorization( noPermission = true, noRestriction = true )
     ProjectVersionMetadata getProjectVersionMetadata( @PathParam( "g" ) String groupId,
-                                                      @PathParam( "a" ) String artifactId )
+                                                      @PathParam( "a" ) String artifactId,
+                                                      @QueryParam( "repositoryId" ) String repositoryId )
         throws ArchivaRestServiceException;
 
     @Path( "userRepositories" )
index 5749fa2f5237ad334f6105552719431024c91951..980114f4c88b52b3c80f6709204976eb2b913c57 100644 (file)
@@ -189,7 +189,7 @@ public class DefaultBrowseService
 
     }
 
-    public VersionsList getVersionsList( String groupId, String artifactId )
+    public VersionsList getVersionsList( String groupId, String artifactId, String repositoryId )
         throws ArchivaRestServiceException
     {
         List<String> selectedRepos = getObservableRepos();
@@ -199,6 +199,17 @@ public class DefaultBrowseService
             return new VersionsList();
         }
 
+        if ( StringUtils.isNotEmpty( repositoryId ) )
+        {
+            // check user has karma on the repository
+            if ( !selectedRepos.contains( repositoryId ) )
+            {
+                throw new ArchivaRestServiceException( "browse.root.groups.repositoy.denied",
+                                                       Response.Status.FORBIDDEN.getStatusCode() );
+            }
+            selectedRepos = Collections.singletonList( repositoryId );
+        }
+
         try
         {
             return new VersionsList( new ArrayList<String>( getVersions( selectedRepos, groupId, artifactId ) ) );
@@ -240,7 +251,7 @@ public class DefaultBrowseService
         }
     }
 
-    public ProjectVersionMetadata getProjectVersionMetadata( String groupId, String artifactId )
+    public ProjectVersionMetadata getProjectVersionMetadata( String groupId, String artifactId, String repositoryId )
         throws ArchivaRestServiceException
     {
 
@@ -252,6 +263,17 @@ public class DefaultBrowseService
             return null;
         }
 
+        if ( StringUtils.isNotEmpty( repositoryId ) )
+        {
+            // check user has karma on the repository
+            if ( !selectedRepos.contains( repositoryId ) )
+            {
+                throw new ArchivaRestServiceException( "browse.root.groups.repositoy.denied",
+                                                       Response.Status.FORBIDDEN.getStatusCode() );
+            }
+            selectedRepos = Collections.singletonList( repositoryId );
+        }
+
         RepositorySession repositorySession = null;
         try
         {
index fb31c2bb2aca1d91c224786b70bf56cdc933f906..fee8faf8f4ac6dacfc52654a67daf0b1e9fe1579 100644 (file)
@@ -148,12 +148,19 @@ $(function() {
       mainContent.find("#browse_artifact").show();
       mainContent.find("#browse_artifact").html(mediumSpinnerImg());
       mainContent.find("#main_browse_result_content").show();
-      $.ajax("restServices/archivaServices/browseService/projectVersionMetadata/"+encodeURIComponent(groupId)+"/"+encodeURIComponent(artifactId), {
+      var metadataUrl="restServices/archivaServices/browseService/projectVersionMetadata/"+encodeURIComponent(groupId)+"/"+encodeURIComponent(artifactId);
+      var versionsListUrl="restServices/archivaServices/browseService/versionsList/"+encodeURIComponent(groupId)+"/"+encodeURIComponent(artifactId);
+      var selectedRepo=getSelectedBrowsingRepository();
+      if (selectedRepo){
+        metadataUrl+="?repositoryId="+encodeURIComponent(selectedRepo);
+        versionsListUrl+="?repositoryId="+encodeURIComponent(selectedRepo);
+      }
+      $.ajax(metadataUrl, {
         type: "GET",
         dataType: 'json',
         success: function(data) {
           artifactDetailViewModel.projectVersionMetadata=mapProjectVersionMetadata(data);
-          $.ajax("restServices/archivaServices/browseService/versionsList/"+encodeURIComponent(groupId)+"/"+encodeURIComponent(artifactId), {
+          $.ajax(versionsListUrl, {
             type: "GET",
             dataType: 'json',
             success: function(data) {