diff --git a/scm-core/src/main/java/sonia/scm/web/VndMediaType.java b/scm-core/src/main/java/sonia/scm/web/VndMediaType.java index cad62821ed..c9696b0641 100644 --- a/scm-core/src/main/java/sonia/scm/web/VndMediaType.java +++ b/scm-core/src/main/java/sonia/scm/web/VndMediaType.java @@ -34,7 +34,7 @@ public class VndMediaType { public static final String REPOSITORY_COLLECTION = PREFIX + "repositoryCollection" + SUFFIX; public static final String BRANCH_COLLECTION = PREFIX + "branchCollection" + SUFFIX; public static final String CONFIG = PREFIX + "config" + SUFFIX; - public static final String REPOSITORY_PERMISSION_COLLECTION = PREFIX + "repositoryPermissionCollection" + SUFFIX; + public static final String REPOSITORY_VERB_COLLECTION = PREFIX + "repositoryVerbCollection" + SUFFIX; public static final String REPOSITORY_TYPE_COLLECTION = PREFIX + "repositoryTypeCollection" + SUFFIX; public static final String REPOSITORY_TYPE = PREFIX + "repositoryType" + SUFFIX; public static final String UI_PLUGIN = PREFIX + "uiPlugin" + SUFFIX; diff --git a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/AvailableRepositoryPermissionsDto.java b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/AvailableRepositoryPermissionsDto.java deleted file mode 100644 index 681be90a38..0000000000 --- a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/AvailableRepositoryPermissionsDto.java +++ /dev/null @@ -1,31 +0,0 @@ -package sonia.scm.api.v2.resources; - -import de.otto.edison.hal.HalRepresentation; -import de.otto.edison.hal.Links; -import sonia.scm.repository.RepositoryRole; - -import java.util.Collection; - -public class AvailableRepositoryPermissionsDto extends HalRepresentation { - private final Collection availableVerbs; - private final Collection availableRoles; - - public AvailableRepositoryPermissionsDto(Collection availableVerbs, Collection availableRoles) { - this.availableVerbs = availableVerbs; - this.availableRoles = availableRoles; - } - - public Collection getAvailableVerbs() { - return availableVerbs; - } - - public Collection getAvailableRoles() { - return availableRoles; - } - - @Override - @SuppressWarnings("squid:S1185") // We want to have this method available in this package - protected HalRepresentation add(Links links) { - return super.add(links); - } -} diff --git a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/IndexDtoGenerator.java b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/IndexDtoGenerator.java index 40c04f3de7..634de9381c 100644 --- a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/IndexDtoGenerator.java +++ b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/IndexDtoGenerator.java @@ -59,7 +59,7 @@ public class IndexDtoGenerator extends HalAppenderMapper { if (PermissionPermissions.list().isPermitted()) { builder.single(link("permissions", resourceLinks.permissions().self())); } - builder.single(link("availableRepositoryPermissions", resourceLinks.availableRepositoryPermissions().self())); + builder.single(link("repositoryVerbs", resourceLinks.repositoryVerbs().self())); builder.single(link("repositoryTypes", resourceLinks.repositoryTypeCollection().self())); builder.single(link("namespaceStrategies", resourceLinks.namespaceStrategies().self())); diff --git a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/RepositoryPermissionResource.java b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/RepositoryVerbResource.java similarity index 52% rename from scm-webapp/src/main/java/sonia/scm/api/v2/resources/RepositoryPermissionResource.java rename to scm-webapp/src/main/java/sonia/scm/api/v2/resources/RepositoryVerbResource.java index e5734085ca..4d4de067e5 100644 --- a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/RepositoryPermissionResource.java +++ b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/RepositoryVerbResource.java @@ -12,18 +12,18 @@ import javax.ws.rs.Path; import javax.ws.rs.Produces; /** - * RESTful Web Service Resource to get available repository types. + * RESTful Web Service Resource to get available repository verbs. */ -@Path(RepositoryPermissionResource.PATH) -public class RepositoryPermissionResource { +@Path(RepositoryVerbResource.PATH) +public class RepositoryVerbResource { - static final String PATH = "v2/repositoryPermissions/"; + static final String PATH = "v2/repositoryVerbs/"; private final RepositoryPermissionProvider repositoryPermissionProvider; private final ResourceLinks resourceLinks; @Inject - public RepositoryPermissionResource(RepositoryPermissionProvider repositoryPermissionProvider, ResourceLinks resourceLinks) { + public RepositoryVerbResource(RepositoryPermissionProvider repositoryPermissionProvider, ResourceLinks resourceLinks) { this.repositoryPermissionProvider = repositoryPermissionProvider; this.resourceLinks = resourceLinks; } @@ -34,10 +34,11 @@ public class RepositoryPermissionResource { @ResponseCode(code = 200, condition = "success"), @ResponseCode(code = 500, condition = "internal server error") }) - @Produces(VndMediaType.REPOSITORY_PERMISSION_COLLECTION) - public AvailableRepositoryPermissionsDto get() { - AvailableRepositoryPermissionsDto dto = new AvailableRepositoryPermissionsDto(repositoryPermissionProvider.availableVerbs(), repositoryPermissionProvider.availableRoles()); - dto.add(Links.linkingTo().self(resourceLinks.availableRepositoryPermissions().self()).build()); - return dto; + @Produces(VndMediaType.REPOSITORY_VERB_COLLECTION) + public RepositoryVerbsDto getAll() { + return new RepositoryVerbsDto( + Links.linkingTo().self(resourceLinks.repositoryVerbs().self()).build(), + repositoryPermissionProvider.availableVerbs() + ); } } diff --git a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/RepositoryVerbsDto.java b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/RepositoryVerbsDto.java new file mode 100644 index 0000000000..cbfa61c9ef --- /dev/null +++ b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/RepositoryVerbsDto.java @@ -0,0 +1,19 @@ +package sonia.scm.api.v2.resources; + +import de.otto.edison.hal.HalRepresentation; +import de.otto.edison.hal.Links; + +import java.util.Collection; + +public class RepositoryVerbsDto extends HalRepresentation { + private final Collection verbs; + + public RepositoryVerbsDto(Links links, Collection verbs) { + super(links); + this.verbs = verbs; + } + + public Collection getVerbs() { + return verbs; + } +} diff --git a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/ResourceLinks.java b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/ResourceLinks.java index 141645a09c..5e7e89a2e6 100644 --- a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/ResourceLinks.java +++ b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/ResourceLinks.java @@ -523,6 +523,22 @@ class ResourceLinks { } } + RepositoryVerbLinks repositoryVerbs() { + return new RepositoryVerbLinks(scmPathInfoStore.get()); + } + + static class RepositoryVerbLinks { + private final LinkBuilder repositoryVerbLinkBuilder; + + RepositoryVerbLinks(ScmPathInfo pathInfo) { + repositoryVerbLinkBuilder = new LinkBuilder(pathInfo, RepositoryVerbResource.class); + } + + String self() { + return repositoryVerbLinkBuilder.method("getAll").parameters().href(); + } + } + RepositoryRoleLinks repositoryRole() { return new RepositoryRoleLinks(scmPathInfoStore.get()); } @@ -710,20 +726,4 @@ class ResourceLinks { return permissionsLinkBuilder.method("getAll").parameters().href(); } } - - public AvailableRepositoryPermissionLinks availableRepositoryPermissions() { - return new AvailableRepositoryPermissionLinks(scmPathInfoStore.get()); - } - - static class AvailableRepositoryPermissionLinks { - private final LinkBuilder linkBuilder; - - AvailableRepositoryPermissionLinks(ScmPathInfo scmPathInfo) { - this.linkBuilder = new LinkBuilder(scmPathInfo, RepositoryPermissionResource.class); - } - - String self() { - return linkBuilder.method("get").parameters().href(); - } - } } diff --git a/scm-webapp/src/test/java/sonia/scm/api/v2/resources/ResourceLinksMock.java b/scm-webapp/src/test/java/sonia/scm/api/v2/resources/ResourceLinksMock.java index b6ce087050..6950d882f4 100644 --- a/scm-webapp/src/test/java/sonia/scm/api/v2/resources/ResourceLinksMock.java +++ b/scm-webapp/src/test/java/sonia/scm/api/v2/resources/ResourceLinksMock.java @@ -42,7 +42,7 @@ public class ResourceLinksMock { when(resourceLinks.index()).thenReturn(new ResourceLinks.IndexLinks(uriInfo)); when(resourceLinks.merge()).thenReturn(new ResourceLinks.MergeLinks(uriInfo)); when(resourceLinks.permissions()).thenReturn(new ResourceLinks.PermissionsLinks(uriInfo)); - when(resourceLinks.availableRepositoryPermissions()).thenReturn(new ResourceLinks.AvailableRepositoryPermissionLinks(uriInfo)); + when(resourceLinks.repositoryVerbs()).thenReturn(new ResourceLinks.RepositoryVerbLinks(uriInfo)); when(resourceLinks.repositoryRole()).thenReturn(new ResourceLinks.RepositoryRoleLinks(uriInfo)); when(resourceLinks.repositoryRoleCollection()).thenReturn(new ResourceLinks.RepositoryRoleCollectionLinks(uriInfo)); when(resourceLinks.namespaceStrategies()).thenReturn(new ResourceLinks.NamespaceStrategiesLinks(uriInfo));