ArtifactResource extends AbstractResource { @POST @Path("/{gavc}" + ServerAPI.GET_DOWNLOAD_URL) public Response updateDownloadUrl(@Auth final DbCredential credential, @PathParam("gavc") final String gavc, @QueryParam(ServerAPI.URL_PARAM) final String downLoadUrl){ if(!credential.getRoles().contains(AvailableRoles.DATA_UPDATER)){ throw new WebApplicationException(Response.status(Response.Status.UNAUTHORIZED).build()); } if(LOG.isInfoEnabled()) { LOG.info(String.format("Got an update downloadUrl request [%s] [%s]", gavc, downLoadUrl)); } if(gavc == null || downLoadUrl == null){ return Response.serverError().status(HttpStatus.NOT_ACCEPTABLE_406).build(); } getArtifactHandler().updateDownLoadUrl(gavc, downLoadUrl); return Response.ok("done").build(); } ArtifactResource(final RepositoryHandler repoHandler, final GrapesServerConfig dmConfig); @POST Response postArtifact(@Auth final DbCredential credential, final Artifact artifact); @GET @Produces({MediaType.TEXT_HTML, MediaType.APPLICATION_JSON}) @Path(ServerAPI.GET_GAVCS) Response getGavcs(@Context final UriInfo uriInfo); @GET @Produces({MediaType.TEXT_HTML, MediaType.APPLICATION_JSON}) @Path(ServerAPI.GET_GROUPIDS) Response getGroupIds(@Context final UriInfo uriInfo); @GET @Produces({MediaType.TEXT_HTML, MediaType.APPLICATION_JSON}) @Path("/{gavc}" + ServerAPI.GET_VERSIONS) Response getVersions(@PathParam("gavc") final String gavc); @GET @Produces(MediaType.APPLICATION_JSON) @Path("/{gavc}" + ServerAPI.GET_LAST_VERSION) Response getLastVersion(@PathParam("gavc") final String gavc); @GET @Produces({MediaType.TEXT_HTML, MediaType.APPLICATION_JSON}) @Path("/{gavc}") Response get(@PathParam("gavc") final String gavc); @GET @Produces(MediaType.APPLICATION_JSON) @Path("/isPromoted") Response isPromoted(@QueryParam("user") final String user,
                               @QueryParam("stage") final int stage,
                               @QueryParam("name") final String filename,
                               @QueryParam("sha256") final String sha256,
                               @QueryParam("type") final String type,
                               @QueryParam("location") final String location); @POST @Path("/{gavc}" + ServerAPI.GET_DOWNLOAD_URL) Response updateDownloadUrl(@Auth final DbCredential credential, @PathParam("gavc") final String gavc, @QueryParam(ServerAPI.URL_PARAM) final String downLoadUrl); @POST @Path("/{gavc}" + ServerAPI.GET_PROVIDER) Response updateProvider(@Auth final DbCredential credential, @PathParam("gavc") final String gavc, @QueryParam(ServerAPI.PROVIDER_PARAM) final String provider); @DELETE @Path("/{gavc}") Response delete(@Auth final DbCredential credential, @PathParam("gavc") final String gavc); @POST @Path("/{gavc}" + ServerAPI.SET_DO_NOT_USE) Response postDoNotUse(@Auth final DbCredential credential,
                                 @PathParam("gavc") final String gavc,
                                 @QueryParam(ServerAPI.DO_NOT_USE) final BooleanParam doNotUse,
                                 final String commentText); @GET @Produces(MediaType.APPLICATION_JSON) @Path("/{gavc}" + ServerAPI.SET_DO_NOT_USE) Response getDoNotUse(@PathParam("gavc") final String gavc); @GET @Produces({MediaType.TEXT_HTML, MediaType.APPLICATION_JSON}) @Path("/{gavc}" + ServerAPI.GET_ANCESTORS) Response getAncestors(@PathParam("gavc") final String gavc, @Context final UriInfo uriInfo); @GET @Produces({MediaType.APPLICATION_JSON}) @Path("/{gavc}" + ServerAPI.GET_LICENSES) Response getLicenses(@PathParam("gavc") final String gavc, @Context final UriInfo uriInfo); @POST @Path("/{gavc}" + ServerAPI.GET_LICENSES) Response addLicense(@Auth final DbCredential credential,
                               @PathParam("gavc") final String gavc,
                               @QueryParam(ServerAPI.LICENSE_ID_PARAM) final String licenseId); @DELETE @Path("/{gavc}" + ServerAPI.GET_LICENSES) Response deleteLicense(@Auth final DbCredential credential,
                                  @PathParam("gavc") final String gavc,
                                  @QueryParam(ServerAPI.LICENSE_ID_PARAM) final String licenseString); @GET @Produces({MediaType.TEXT_HTML, MediaType.APPLICATION_JSON}) @Path("/{gavc}" + ServerAPI.GET_MODULE) Response getModule(@PathParam("gavc") final String gavc, @Context final UriInfo uriInfo); @GET @Produces({MediaType.TEXT_HTML, MediaType.APPLICATION_JSON}) @Path("/{gavc}" + ServerAPI.GET_ORGANIZATION) Response getOrganization(@PathParam("gavc") final String gavc, @Context final UriInfo uriInfo); @GET @Produces(MediaType.APPLICATION_JSON) @Path(ServerAPI.GET_ALL) Response getAll(@Context final UriInfo uriInfo);  }
@Test public void updateDownloadURL() throws AuthenticationException, UnknownHostException { final DbArtifact artifact = new DbArtifact(); artifact.setGroupId("groupId"); artifact.setArtifactId("artifactId"); artifact.setVersion("version"); artifact.setClassifier("classifier"); when(repositoryHandler.getArtifact(artifact.getGavc())).thenReturn(artifact); client().addFilter(new HTTPBasicAuthFilter(USER_4TEST, PASSWORD_4TEST)); WebResource resource = client().resource("/" + ServerAPI.ARTIFACT_RESOURCE + "/" + artifact.getGavc() + ServerAPI.GET_DOWNLOAD_URL); ClientResponse response = resource.queryParam(ServerAPI.URL_PARAM, "testUrl").post(ClientResponse.class); assertNotNull(response); assertEquals(HttpStatus.OK_200, response.getStatus()); verify(repositoryHandler, times(1)).updateDownloadUrl(artifact, "testUrl"); }