RepositoryRouteResourceResponse routeRequest = (RepositoryRouteResourceResponse) payload;
RepositoryRouteResourceResponse result = null;
if (routeRequest != null) {
RepositoryRouteResource resource = routeRequest.getData();
if (!RepositoryRouteResource.BLOCKING_RULE_TYPE.equals(resource.getRuleType())
&& (resource.getRepositories() == null || resource.getRepositories().size() == 0)) {
throw new PlexusResourceException(
Status.CLIENT_ERROR_BAD_REQUEST,
"The route cannot have zero repository members!",
getNexusErrorResponse("repositories",
"The route cannot have zero repository members!"));
}
else if (RepositoryRouteResource.BLOCKING_RULE_TYPE.equals(resource.getRuleType())) {
resource.setRepositories(null);
}
resource.setId(Long.toHexString(System.nanoTime()));
try {
ArrayList<String> mappedReposes = new ArrayList<String>(resource.getRepositories().size());
for (RepositoryRouteMemberRepository member : resource.getRepositories()) {
mappedReposes.add(member.getId());
}
RepositoryPathMapping route =
new RepositoryPathMapping(resource.getId(), resource2configType(resource.getRuleType()),
resource.getGroupId(), Arrays.asList(new String[]{
resource
.getPattern()
}), mappedReposes);
getRepositoryMapper().addMapping(route);
getNexusConfiguration().saveConfiguration();
resource.setGroupId(route.getGroupId());
result = new RepositoryRouteResourceResponse();
result.setData(resource);
}