From 82017c7d659bbeeb2701fce2d3f99596bada0485 Mon Sep 17 00:00:00 2001 From: Florian Scholdei Date: Wed, 11 Nov 2020 15:00:18 +0100 Subject: [PATCH] Create DTO adapted to schema --- .../scm/api/v2/resources/CreateGroupDto.java | 49 +++++++++++++++++ .../v2/resources/GroupCollectionResource.java | 2 +- .../scm/api/v2/resources/GroupResource.java | 2 +- .../scm/api/v2/resources/UpdateGroupDto.java | 53 +++++++++++++++++++ 4 files changed, 104 insertions(+), 2 deletions(-) create mode 100644 scm-webapp/src/main/java/sonia/scm/api/v2/resources/CreateGroupDto.java create mode 100644 scm-webapp/src/main/java/sonia/scm/api/v2/resources/UpdateGroupDto.java diff --git a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/CreateGroupDto.java b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/CreateGroupDto.java new file mode 100644 index 0000000000..bc1324e0f1 --- /dev/null +++ b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/CreateGroupDto.java @@ -0,0 +1,49 @@ +/* + * MIT License + * + * Copyright (c) 2020-present Cloudogu GmbH and Contributors + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +package sonia.scm.api.v2.resources; + +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import sonia.scm.util.ValidationUtil; + +import javax.validation.constraints.Pattern; +import java.util.List; + +/** + * This class is currently only used in the openapi scheme + */ +@Getter +@Setter +@NoArgsConstructor +public class CreateGroupDto { + + @Pattern(regexp = ValidationUtil.REGEX_NAME) + private String name; + private String description; + private String type; + private List members; + private boolean external; +} diff --git a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/GroupCollectionResource.java b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/GroupCollectionResource.java index 9e4a070926..90ee95148d 100644 --- a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/GroupCollectionResource.java +++ b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/GroupCollectionResource.java @@ -131,7 +131,7 @@ public class GroupCollectionResource { requestBody = @RequestBody( content = @Content( mediaType = VndMediaType.GROUP, - schema = @Schema(implementation = GroupDto.class), + schema = @Schema(implementation = CreateGroupDto.class), examples = { @ExampleObject( name = "Create an group with a description", diff --git a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/GroupResource.java b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/GroupResource.java index 0acb40c4bc..f3fea99bff 100644 --- a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/GroupResource.java +++ b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/GroupResource.java @@ -144,7 +144,7 @@ public class GroupResource { requestBody = @RequestBody( content = @Content( mediaType = VndMediaType.GROUP, - schema = @Schema(implementation = GroupDto.class), + schema = @Schema(implementation = UpdateGroupDto.class), examples = @ExampleObject( name = "Update a group description", value = "{\n \"name\":\"manager\",\n \"description\":\"Group of managers with full read access\",\n \"lastModified\":\"2020-06-05T14:42:49.000Z\",\n \"type\":\"xml\"\n}", diff --git a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/UpdateGroupDto.java b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/UpdateGroupDto.java new file mode 100644 index 0000000000..d9f06eb88b --- /dev/null +++ b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/UpdateGroupDto.java @@ -0,0 +1,53 @@ +/* + * MIT License + * + * Copyright (c) 2020-present Cloudogu GmbH and Contributors + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +package sonia.scm.api.v2.resources; + +import com.fasterxml.jackson.annotation.JsonInclude; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import sonia.scm.util.ValidationUtil; + +import javax.validation.constraints.Pattern; +import java.time.Instant; +import java.util.List; + +/** + * This class is currently only used in the openapi scheme + */ +@Getter +@Setter +@NoArgsConstructor +public class UpdateGroupDto { + + @Pattern(regexp = ValidationUtil.REGEX_NAME) + private String name; + private String description; + @JsonInclude(JsonInclude.Include.NON_NULL) + private Instant lastModified; + private String type; + private List members; + private boolean external; +}