Use UriInfo and URIBuilder for generating URI for created responses

Former-commit-id: a72ec4e8d9
restapi
Jens Pelzetter 2020-06-06 16:53:37 +02:00
parent 407384a75a
commit ae8e504eaa
3 changed files with 92 additions and 75 deletions

View File

@ -53,6 +53,9 @@ import org.libreccm.security.User;
import java.util.stream.Collectors;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.UriInfo;
/**
*
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
@ -61,6 +64,9 @@ import java.util.stream.Collectors;
@Path("/groups")
public class GroupsApi {
@Context
private UriInfo uriInfo;
@Inject
private GroupManager groupManager;
@ -139,11 +145,12 @@ public class GroupsApi {
groupRepository.save(group);
return Response
.status(Response.Status.CREATED)
.contentLocation(
URI.create(String.format("/api/groups/%s", group.getName()))
)
.build();
.created(
uriInfo
.getRequestUriBuilder()
.path(group.getName())
.build()
).build();
}
@PUT
@ -212,10 +219,10 @@ public class GroupsApi {
return new ListView<>(
groupRepository
.findGroupMemberships(group, limit, offset)
.stream()
.map(GroupUserMembership::new)
.collect(Collectors.toList()),
.findGroupMemberships(group, limit, offset)
.stream()
.map(GroupUserMembership::new)
.collect(Collectors.toList()),
groupRepository.countGroupMemberships(group),
limit,
offset

View File

@ -132,9 +132,13 @@ public class RolesApi {
roleRepository.save(role);
return Response.created(
URI.create(String.format("/api/admin/roles/%s", role.getName()))
).build();
return Response
.created(
uriInfo
.getBaseUriBuilder()
.path(role.getName())
.build()
).build();
}
@PUT
@ -317,15 +321,15 @@ public class RolesApi {
permission = permissionManager.grantPrivilege(
privilege, role, object
);
return Response.created(
URI.create(
String.format(
"/api/admin/roles/%s/permissions/UUID-%s",
role.getName(),
permission.getUuid()
)
)
).build();
return Response
.created(
uriInfo
.getBaseUriBuilder()
.path(role.getName())
.path("permissions")
.path(String.format("UUID-%s", permission.getUuid()))
.build()
).build();
}
} else {
if (permissionRepository.existsPermission(privilege, role)) {
@ -340,15 +344,15 @@ public class RolesApi {
} else {
permission = permissionManager.grantPrivilege(privilege, role);
return Response.created(
URI.create(
String.format(
"/api/admin/roles/%s/permissions/UUID-%s",
role.getName(),
permission.getUuid()
)
)
).build();
return Response
.created(
uriInfo
.getRequestUriBuilder()
.path(role.getName())
.path("permissions")
.path(String.format("UUID-%s", permission.getUuid()))
.build()
).build();
}
}
}

View File

@ -55,6 +55,9 @@ import org.libreccm.security.UserRepository;
import java.util.stream.Collectors;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.UriInfo;
/**
* Provides RESTful API endpoints for managing users. Access to all endpoints
* defined by this class requires admin privileges.
@ -65,6 +68,9 @@ import java.util.stream.Collectors;
@Path("/users")
public class UsersApi {
@Context
private UriInfo uriInfo;
@Inject
private GroupManager groupManager;
@ -221,12 +227,12 @@ public class UsersApi {
);
return Response
.status(Response.Status.CREATED)
.contentLocation(
URI.create(String.format("/api/users/%s", user.getName())
)
)
.build();
.created(
uriInfo
.getBaseUriBuilder()
.path(user.getName())
.build()
).build();
}
/**