From 09072d06a6e399d385e0bfa2f9331836698bc269 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Pfeuffer?= Date: Tue, 25 Sep 2018 12:51:10 +0200 Subject: [PATCH] Fix location link for group permissions on POST --- .../scm/api/v2/resources/PermissionRootResource.java | 5 +++-- .../v2/resources/PermissionToPermissionDtoMapper.java | 10 +++++++--- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/PermissionRootResource.java b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/PermissionRootResource.java index 90e9b3daed..6c45629851 100644 --- a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/PermissionRootResource.java +++ b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/PermissionRootResource.java @@ -70,14 +70,15 @@ public class PermissionRootResource { @TypeHint(TypeHint.NO_CONTENT.class) @Consumes(VndMediaType.PERMISSION) @Path("") - public Response create(@PathParam("namespace") String namespace, @PathParam("name") String name, PermissionDto permission) throws Exception { + public Response create(@PathParam("namespace") String namespace, @PathParam("name") String name, PermissionDto permission) throws AlreadyExistsException, NotFoundException { log.info("try to add new permission: {}", permission); Repository repository = load(namespace, name); RepositoryPermissions.permissionWrite(repository).check(); checkPermissionAlreadyExists(permission, repository); repository.getPermissions().add(dtoToModelMapper.map(permission)); manager.modify(repository); - return Response.created(URI.create(resourceLinks.permission().self(namespace, name, permission.getName()))).build(); + String urlPermissionName = modelToDtoMapper.getUrlPermissionName(permission); + return Response.created(URI.create(resourceLinks.permission().self(namespace, name, urlPermissionName))).build(); } diff --git a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/PermissionToPermissionDtoMapper.java b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/PermissionToPermissionDtoMapper.java index 8ebe10eb6f..d6ab3721cf 100644 --- a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/PermissionToPermissionDtoMapper.java +++ b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/PermissionToPermissionDtoMapper.java @@ -41,9 +41,7 @@ public abstract class PermissionToPermissionDtoMapper { */ @AfterMapping void appendLinks(@MappingTarget PermissionDto target, @Context Repository repository) { - String permissionName = Optional.of(target.getName()) - .filter(p -> !target.isGroupPermission()) - .orElse(GROUP_PREFIX + target.getName()); + String permissionName = getUrlPermissionName(target); Links.Builder linksBuilder = linkingTo() .self(resourceLinks.permission().self(repository.getNamespace(), repository.getName(), permissionName)); if (RepositoryPermissions.permissionWrite(repository).isPermitted()) { @@ -52,4 +50,10 @@ public abstract class PermissionToPermissionDtoMapper { } target.add(linksBuilder.build()); } + + public String getUrlPermissionName(PermissionDto permissionDto) { + return Optional.of(permissionDto.getName()) + .filter(p -> !permissionDto.isGroupPermission()) + .orElse(GROUP_PREFIX + permissionDto.getName()); + } }