Refactoring

This commit is contained in:
René Pfeuffer
2018-05-29 16:29:13 +02:00
parent 14d960c753
commit f32bb38ac2

View File

@@ -9,6 +9,7 @@ import sonia.scm.user.User;
import javax.ws.rs.core.UriBuilder; import javax.ws.rs.core.UriBuilder;
import javax.ws.rs.core.UriInfo; import javax.ws.rs.core.UriInfo;
import java.net.URI; import java.net.URI;
import java.util.Collections;
import java.util.LinkedHashMap; import java.util.LinkedHashMap;
import java.util.Map; import java.util.Map;
@@ -24,15 +25,31 @@ public abstract class User2UserDtoMapper {
@AfterMapping @AfterMapping
void appendLinks(@MappingTarget UserDto target, @Context UriInfo uriInfo) { void appendLinks(@MappingTarget UserDto target, @Context UriInfo uriInfo) {
Map<String, Link> links = new LinkedHashMap<>(); LinkMapBuilder builder = new LinkMapBuilder(uriInfo);
links.put("self", createLink("get", uriInfo, target.getName())); builder.add("self", "get", target.getName());
links.put("delete", createLink("delete", uriInfo, target.getName())); builder.add("delete", "delete", target.getName());
links.put("update", createLink("update", uriInfo, target.getName())); builder.add("update", "update", target.getName());
links.put("create", createLink("create", uriInfo)); builder.add("create", "create");
target.setLinks(links); target.setLinks(builder.getLinkMap());
} }
private Link createLink(String methodName, UriInfo uriInfo, String... parameters) { private static class LinkMapBuilder {
private final UriInfo uriInfo;
private final Map<String, Link> links = new LinkedHashMap<>();
private LinkMapBuilder(UriInfo uriInfo) {
this.uriInfo = uriInfo;
}
void add(String linkName, String methodName, String... parameters) {
links.put(linkName, createLink(methodName, parameters));
}
Map<String, Link> getLinkMap() {
return Collections.unmodifiableMap(links);
}
private Link createLink(String methodName, String... parameters) {
URI baseUri = uriInfo.getBaseUri(); URI baseUri = uriInfo.getBaseUri();
URI relativeUri = createRelativeUri(methodName, parameters); URI relativeUri = createRelativeUri(methodName, parameters);
URI absoluteUri = baseUri.resolve(relativeUri); URI absoluteUri = baseUri.resolve(relativeUri);
@@ -46,4 +63,5 @@ public abstract class User2UserDtoMapper {
private UriBuilder userUriBuilder() { private UriBuilder userUriBuilder() {
return UriBuilder.fromResource(UserNewResource.class); return UriBuilder.fromResource(UserNewResource.class);
} }
}
} }