String repoId = this.getRepositoryId(request);
if (repoRequest != null) {
try {
RepositoryBaseResource resource = repoRequest.getData();
if (RepositoryBaseResourceConverter.REPO_TYPE_VIRTUAL.equals(resource.getRepoType())) {
RepositoryShadowResource model = (RepositoryShadowResource) resource;
try {
ShadowRepository shadow =
getRepositoryRegistry().getRepositoryWithFacet(repoId, ShadowRepository.class);
shadow.setName(model.getName());
shadow.setExposed(resource.isExposed());
shadow.setMasterRepository(getRepositoryRegistry().getRepository(model.getShadowOf()));
shadow.setSynchronizeAtStartup(model.isSyncAtStartup());
getNexusConfiguration().saveConfiguration();
}
catch (NoSuchRepositoryAccessException e) {
getLogger().warn("Repository access denied, id=" + repoId);
throw new ResourceException(Status.CLIENT_ERROR_FORBIDDEN, "Access Denied to Repository");
}
catch (NoSuchRepositoryException e) {
getLogger().warn("Virtual repository not found, id=" + repoId);
throw new ResourceException(Status.CLIENT_ERROR_NOT_FOUND, "Virtual repository Not Found");
}
}
else {
RepositoryResource model = (RepositoryResource) resource;
try {
Repository repository = getRepositoryRegistry().getRepository(repoId);
repository.setName(model.getName());
repository.setExposed(resource.isExposed());
// set null to read only
RepositoryWritePolicy writePolicy =
(model.getWritePolicy() != null) ? RepositoryWritePolicy.valueOf(model.getWritePolicy())
: RepositoryWritePolicy.READ_ONLY;