Use class for resource links

This commit is contained in:
René Pfeuffer
2018-06-14 11:03:40 +02:00
parent 51579b2e55
commit 62759f798f
3 changed files with 12 additions and 11 deletions

View File

@@ -20,8 +20,11 @@ import javax.ws.rs.core.GenericEntity;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.UriInfo;
import java.io.IOException;
import java.net.URI;
import java.util.Collection;
import static sonia.scm.api.v2.resources.ResourceLinks.group;
@Produces(VndMediaType.GROUP_COLLECTION)
public class GroupCollectionResource extends AbstractManagerResource<Group, GroupException> {
public static final int DEFAULT_PAGE_SIZE = 10;
@@ -54,11 +57,8 @@ public class GroupCollectionResource extends AbstractManagerResource<Group, Grou
@Consumes(VndMediaType.GROUP)
public Response create(@Context UriInfo uriInfo, GroupDto groupDto) throws IOException, GroupException {
Group group = dtoToGroupMapper.map(groupDto);
System.out.println(group);
manager.create(group);
LinkBuilder builder = new LinkBuilder(uriInfo, GroupV2Resource.class, GroupSubResource.class);
return Response.created(builder.method("getGroupSubResource").parameters(group.getName()).method("get").parameters().create()).build();
return Response.created(URI.create(group(uriInfo).self(group.getName()))).build();
}
@Override

View File

@@ -38,14 +38,14 @@ class LinkBuilder {
this.calls = calls;
}
public Parameters method(String method) {
Parameters method(String method) {
if (calls.size() >= classes.length) {
throw new IllegalStateException("no more classes for methods");
}
return new Parameters(method);
}
public URI create() {
URI create() {
if (calls.size() < classes.length) {
throw new IllegalStateException("not enough methods for all classes");
}
@@ -56,7 +56,7 @@ class LinkBuilder {
return absoluteUri;
}
public String href() {
String href() {
return create().toString();
}
@@ -95,7 +95,7 @@ class LinkBuilder {
this.method = method;
}
public LinkBuilder parameters(String... parameters) {
LinkBuilder parameters(String... parameters) {
return LinkBuilder.this.add(method, parameters);
}
}

View File

@@ -24,8 +24,11 @@ import javax.ws.rs.core.Request;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.UriInfo;
import java.io.IOException;
import java.net.URI;
import java.util.Collection;
import static sonia.scm.api.v2.resources.ResourceLinks.user;
@Produces(VndMediaType.USER_COLLECTION)
public class UserCollectionResource extends AbstractManagerResource<User, UserException> {
public static final int DEFAULT_PAGE_SIZE = 10;
@@ -87,9 +90,7 @@ public class UserCollectionResource extends AbstractManagerResource<User, UserEx
public Response create(@Context UriInfo uriInfo, UserDto userDto) throws IOException, UserException {
User user = dtoToUserMapper.map(userDto, "");
manager.create(user);
LinkBuilder builder = new LinkBuilder(uriInfo, UserV2Resource.class, UserSubResource.class);
return Response.created(builder.method("getUserSubResource").parameters(user.getName()).method("get").parameters().create()).build();
return Response.created(URI.create(user(uriInfo).self(user.getName()))).build();
}
@Override