mirror of
https://github.com/scm-manager/scm-manager.git
synced 2025-11-14 01:15:44 +01:00
Refactoring
This commit is contained in:
@@ -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);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user