From: Olivier Lamy Date: Fri, 16 Mar 2012 16:08:52 +0000 (+0000) Subject: use selected repository to get versionList and projectMetadata X-Git-Tag: archiva-1.4-M3~1015 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=8e08552d4c2cf66a14cd06d4b43c1ec595bd4dd8;p=archiva.git use selected repository to get versionList and projectMetadata git-svn-id: https://svn.apache.org/repos/asf/archiva/trunk@1301615 13f79535-47bb-0310-9956-ffa450edef68 --- 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 64996c6ae..cc76f2533 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 @@ -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" ) 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 5749fa2f5..980114f4c 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 @@ -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 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( 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 { diff --git a/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/archiva/search.js b/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/archiva/search.js index fb31c2bb2..fee8faf8f 100644 --- a/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/archiva/search.js +++ b/archiva-modules/archiva-web/archiva-webapp-js/src/main/webapp/js/archiva/search.js @@ -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) {