/** * Get the list of mirrors for the selected repository. * * @param repositoryId The repository to retrieve the assigned mirrors for. */ @Override @GET @ResourceMethodSignature( pathParams = {@PathParam(AbstractRepositoryMirrorPlexusResource.REPOSITORY_ID_KEY)}, output = MirrorResourceListResponse.class) public Object get(Context context, Request request, Response response, Variant variant) throws ResourceException { MirrorResourceListResponse dto = new MirrorResourceListResponse(); // Hack to get the object created, so response contains the 'data' // element even if no mirrors defined dto.getData(); try { Repository repository = getRepositoryRegistry().getRepository(getRepositoryId(request)); for (Mirror mirror : getMirrors(repository)) { dto.addData(nexusToRestModel(mirror)); } } catch (NoSuchRepositoryException e) { throw new ResourceException( Status.CLIENT_ERROR_BAD_REQUEST, "Invalid repository id " + getRepositoryId(request), e); } return dto; }
/** * Update the list of mirrors for a repository. * * @param repositoryId The repository to update the assigned mirrors for. */ @Override @POST @ResourceMethodSignature( pathParams = {@PathParam(AbstractRepositoryMirrorPlexusResource.REPOSITORY_ID_KEY)}, input = MirrorResourceListRequest.class, output = MirrorResourceListResponse.class) public Object post(Context context, Request request, Response response, Object payload) throws ResourceException { MirrorResourceListResponse dto = new MirrorResourceListResponse(); try { List<MirrorResource> resources = (List<MirrorResource>) ((MirrorResourceListRequest) payload).getData(); List<Mirror> mirrors = restToNexusModel(resources); Repository repository = getRepositoryRegistry().getRepository(getRepositoryId(request)); setMirrors(repository, mirrors); dto.setData(nexusToRestModel(mirrors)); } catch (NoSuchRepositoryException e) { throw new ResourceException( Status.CLIENT_ERROR_BAD_REQUEST, "Invalid repository id " + getRepositoryId(request), e); } // catch ( ConfigurationException e ) // { // handleConfigurationException( e ); // } catch (IOException e) { throw new ResourceException(Status.SERVER_ERROR_INTERNAL, "Unable to create mirror", e); } return dto; }
@Test public void testMetadata() throws Exception { createProxyRepository(); File metadata = new File( AbstractNexusIntegrationTest.nexusWorkDir + "/storage/nexus-test-harness-repo/.meta/repository-metadata.xml"); RepositoryMetadataXpp3Reader reader = new RepositoryMetadataXpp3Reader(); RepositoryMetadataXpp3Writer writer = new RepositoryMetadataXpp3Writer(); FileInputStream fis = new FileInputStream(metadata); FileWriter fw = new FileWriter(metadata); RepositoryMetadata rm = null; try { rm = reader.read(fis); } catch (Exception e) { rm = new RepositoryMetadata(); } finally { fis.close(); } rm.getMirrors().clear(); RepositoryMirrorMetadata rmm = new RepositoryMirrorMetadata(); rmm.setId("id1"); rmm.setUrl("http://localhost:8081/somemirror/"); rm.addMirror(rmm); rmm = new RepositoryMirrorMetadata(); rmm.setId("id2"); rmm.setUrl("http://localhost:8086/somemirror2/"); rm.addMirror(rmm); rmm = new RepositoryMirrorMetadata(); rmm.setId("id3"); rmm.setUrl("http://localhost:8086/somemirror3/"); rm.addMirror(rmm); try { writer.write(fw, rm); } finally { fw.close(); } MirrorResourceListResponse response = mirrorUtils.getPredefinedMirrors(PROXY_REPO_ID); Assert.assertEquals(3, response.getData().size()); Assert.assertEquals(((MirrorResource) response.getData().get(0)).getId(), "id1"); Assert.assertEquals( ((MirrorResource) response.getData().get(0)).getUrl(), "http://localhost:8081/somemirror/"); Assert.assertEquals(((MirrorResource) response.getData().get(1)).getId(), "id2"); Assert.assertEquals( ((MirrorResource) response.getData().get(1)).getUrl(), "http://localhost:8086/somemirror2/"); Assert.assertEquals(((MirrorResource) response.getData().get(2)).getId(), "id3"); Assert.assertEquals( ((MirrorResource) response.getData().get(2)).getUrl(), "http://localhost:8086/somemirror3/"); }