Skip to content

Commit 5accad6

Browse files
committed
Updated to use Stacks annotations to remove Swagger bloat
1 parent d9aa4c8 commit 5accad6

12 files changed

+142
-525
lines changed

java/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
<description>Demo project for Java</description>
2121

2222
<properties>
23-
<stacks.core.api.version>1.0.0</stacks.core.api.version>
23+
<stacks.core.api.version>1.0.2.2-RELEASE</stacks.core.api.version>
2424
<stacks.core.commons.version>1.0.3</stacks.core.commons.version>
2525

2626
<java.version>11</java.version>

java/src/main/java/com/amido/stacks/workloads/menu/api/v1/CreateCategoryController.java

Lines changed: 11 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -1,70 +1,35 @@
11
package com.amido.stacks.workloads.menu.api.v1;
22

3-
import com.amido.stacks.core.api.dto.ErrorResponse;
3+
import com.amido.stacks.core.api.annotations.CreateAPIResponses;
44
import com.amido.stacks.workloads.menu.api.v1.dto.request.CreateCategoryRequest;
55
import com.amido.stacks.workloads.menu.api.v1.dto.response.ResourceCreatedResponse;
66
import io.swagger.v3.oas.annotations.Operation;
77
import io.swagger.v3.oas.annotations.Parameter;
8-
import io.swagger.v3.oas.annotations.media.Content;
9-
import io.swagger.v3.oas.annotations.media.Schema;
10-
import io.swagger.v3.oas.annotations.responses.ApiResponse;
11-
import io.swagger.v3.oas.annotations.security.SecurityRequirement;
128
import java.util.UUID;
139
import javax.validation.Valid;
10+
import org.springframework.http.MediaType;
1411
import org.springframework.http.ResponseEntity;
1512
import org.springframework.web.bind.annotation.PathVariable;
1613
import org.springframework.web.bind.annotation.PostMapping;
1714
import org.springframework.web.bind.annotation.RequestAttribute;
1815
import org.springframework.web.bind.annotation.RequestBody;
1916
import org.springframework.web.bind.annotation.RequestMapping;
17+
import org.springframework.web.bind.annotation.RequestMethod;
2018

21-
@RequestMapping("/v1/menu/{id}/category")
19+
@RequestMapping(
20+
path = "/v1/menu/{id}/category",
21+
consumes = MediaType.APPLICATION_JSON_VALUE,
22+
produces = MediaType.APPLICATION_JSON_VALUE + "; charset=utf-8",
23+
method = RequestMethod.POST)
2224
public interface CreateCategoryController {
2325

24-
@PostMapping(consumes = "application/json", produces = "application/json; charset=utf-8")
26+
@PostMapping
2527
@Operation(
2628
tags = "Category",
2729
summary = "Create a category in the menu",
28-
security = @SecurityRequirement(name = "bearerAuth"),
2930
description = "Adds a category to menu",
30-
operationId = "AddMenuCategory",
31-
responses = {
32-
@ApiResponse(
33-
responseCode = "201",
34-
description = "Resource created",
35-
content =
36-
@Content(
37-
mediaType = "application/json",
38-
schema = @Schema(implementation = ResourceCreatedResponse.class))),
39-
@ApiResponse(
40-
responseCode = "400",
41-
description = "Bad Request",
42-
content =
43-
@Content(
44-
mediaType = "application/json",
45-
schema = @Schema(implementation = ErrorResponse.class))),
46-
@ApiResponse(
47-
responseCode = "401",
48-
description = "Unauthorized, Access token is missing or invalid",
49-
content =
50-
@Content(
51-
mediaType = "application/json",
52-
schema = @Schema(implementation = ErrorResponse.class))),
53-
@ApiResponse(
54-
responseCode = "403",
55-
description = "Forbidden, the user does not have permission to execute this operation",
56-
content =
57-
@Content(
58-
mediaType = "application/json",
59-
schema = @Schema(implementation = ErrorResponse.class))),
60-
@ApiResponse(
61-
responseCode = "409",
62-
description = "Conflict, an item already exists",
63-
content =
64-
@Content(
65-
mediaType = "application/json",
66-
schema = @Schema(implementation = ErrorResponse.class)))
67-
})
31+
operationId = "AddMenuCategory")
32+
@CreateAPIResponses
6833
ResponseEntity<ResourceCreatedResponse> addMenuCategory(
6934
@Parameter(description = "Menu id", required = true) @PathVariable("id") UUID menuId,
7035
@Valid @RequestBody CreateCategoryRequest body,

java/src/main/java/com/amido/stacks/workloads/menu/api/v1/CreateItemController.java

Lines changed: 11 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -1,70 +1,35 @@
11
package com.amido.stacks.workloads.menu.api.v1;
22

3-
import com.amido.stacks.core.api.dto.ErrorResponse;
3+
import com.amido.stacks.core.api.annotations.CreateAPIResponses;
44
import com.amido.stacks.workloads.menu.api.v1.dto.request.CreateItemRequest;
55
import com.amido.stacks.workloads.menu.api.v1.dto.response.ResourceCreatedResponse;
66
import io.swagger.v3.oas.annotations.Operation;
77
import io.swagger.v3.oas.annotations.Parameter;
8-
import io.swagger.v3.oas.annotations.media.Content;
9-
import io.swagger.v3.oas.annotations.media.Schema;
10-
import io.swagger.v3.oas.annotations.responses.ApiResponse;
11-
import io.swagger.v3.oas.annotations.security.SecurityRequirement;
128
import java.util.UUID;
139
import javax.validation.Valid;
10+
import org.springframework.http.MediaType;
1411
import org.springframework.http.ResponseEntity;
1512
import org.springframework.web.bind.annotation.PathVariable;
1613
import org.springframework.web.bind.annotation.PostMapping;
1714
import org.springframework.web.bind.annotation.RequestAttribute;
1815
import org.springframework.web.bind.annotation.RequestBody;
1916
import org.springframework.web.bind.annotation.RequestMapping;
17+
import org.springframework.web.bind.annotation.RequestMethod;
2018

21-
@RequestMapping("/v1/menu/{id}/category/{categoryId}/items")
19+
@RequestMapping(
20+
path = "/v1/menu/{id}/category/{categoryId}/items",
21+
consumes = MediaType.APPLICATION_JSON_VALUE,
22+
produces = MediaType.APPLICATION_JSON_VALUE + "; charset=utf-8",
23+
method = RequestMethod.POST)
2224
public interface CreateItemController {
2325

24-
@PostMapping(consumes = "application/json", produces = "application/json; charset=utf-8")
26+
@PostMapping
2527
@Operation(
2628
tags = "Item",
2729
summary = "Add an item to an existing category in a menu",
28-
security = @SecurityRequirement(name = "bearerAuth"),
2930
description = "Adds a menu item",
30-
operationId = "AddMenuItem",
31-
responses = {
32-
@ApiResponse(
33-
responseCode = "201",
34-
description = "Resource created",
35-
content =
36-
@Content(
37-
mediaType = "application/json",
38-
schema = @Schema(implementation = ResourceCreatedResponse.class))),
39-
@ApiResponse(
40-
responseCode = "400",
41-
description = "Bad Request",
42-
content =
43-
@Content(
44-
mediaType = "application/json",
45-
schema = @Schema(implementation = ErrorResponse.class))),
46-
@ApiResponse(
47-
responseCode = "401",
48-
description = "Unauthorized, Access token is missing or invalid",
49-
content =
50-
@Content(
51-
mediaType = "application/json",
52-
schema = @Schema(implementation = ErrorResponse.class))),
53-
@ApiResponse(
54-
responseCode = "403",
55-
description = "Forbidden, the user does not have permission to execute this operation",
56-
content =
57-
@Content(
58-
mediaType = "application/json",
59-
schema = @Schema(implementation = ErrorResponse.class))),
60-
@ApiResponse(
61-
responseCode = "409",
62-
description = "Conflict, an item already exists",
63-
content =
64-
@Content(
65-
mediaType = "application/json",
66-
schema = @Schema(implementation = ErrorResponse.class)))
67-
})
31+
operationId = "AddMenuItem")
32+
@CreateAPIResponses
6833
ResponseEntity<ResourceCreatedResponse> addMenuItem(
6934
@Parameter(description = "Menu id", required = true) @PathVariable("id") UUID menuId,
7035
@Parameter(description = "Category id", required = true) @PathVariable("categoryId")

java/src/main/java/com/amido/stacks/workloads/menu/api/v1/CreateMenuController.java

Lines changed: 11 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -1,68 +1,33 @@
11
package com.amido.stacks.workloads.menu.api.v1;
22

3-
import com.amido.stacks.core.api.dto.ErrorResponse;
3+
import com.amido.stacks.core.api.annotations.CreateAPIResponses;
44
import com.amido.stacks.workloads.menu.api.v1.dto.request.CreateMenuRequest;
55
import com.amido.stacks.workloads.menu.api.v1.dto.response.ResourceCreatedResponse;
66
import io.swagger.v3.oas.annotations.Operation;
77
import io.swagger.v3.oas.annotations.Parameter;
8-
import io.swagger.v3.oas.annotations.media.Content;
9-
import io.swagger.v3.oas.annotations.media.Schema;
10-
import io.swagger.v3.oas.annotations.responses.ApiResponse;
11-
import io.swagger.v3.oas.annotations.security.SecurityRequirement;
128
import javax.validation.Valid;
9+
import org.springframework.http.MediaType;
1310
import org.springframework.http.ResponseEntity;
1411
import org.springframework.web.bind.annotation.PostMapping;
1512
import org.springframework.web.bind.annotation.RequestAttribute;
1613
import org.springframework.web.bind.annotation.RequestBody;
1714
import org.springframework.web.bind.annotation.RequestMapping;
15+
import org.springframework.web.bind.annotation.RequestMethod;
1816

19-
@RequestMapping("/v1/menu")
17+
@RequestMapping(
18+
path = "/v1/menu",
19+
consumes = MediaType.APPLICATION_JSON_VALUE,
20+
produces = MediaType.APPLICATION_JSON_VALUE + "; charset=utf-8",
21+
method = RequestMethod.POST)
2022
public interface CreateMenuController {
2123

22-
@PostMapping(consumes = "application/json", produces = "application/json; charset=utf-8")
24+
@PostMapping
2325
@Operation(
2426
tags = "Menu",
2527
summary = "Create a menu",
26-
security = @SecurityRequirement(name = "bearerAuth"),
2728
description = "Adds a menu",
28-
operationId = "CreateMenu",
29-
responses = {
30-
@ApiResponse(
31-
responseCode = "201",
32-
description = "Resource created",
33-
content =
34-
@Content(
35-
mediaType = "application/json",
36-
schema = @Schema(implementation = ResourceCreatedResponse.class))),
37-
@ApiResponse(
38-
responseCode = "400",
39-
description = "Bad Request",
40-
content =
41-
@Content(
42-
mediaType = "application/json",
43-
schema = @Schema(implementation = ErrorResponse.class))),
44-
@ApiResponse(
45-
responseCode = "401",
46-
description = "Unauthorized, Access token is missing or invalid",
47-
content =
48-
@Content(
49-
mediaType = "application/json",
50-
schema = @Schema(implementation = ErrorResponse.class))),
51-
@ApiResponse(
52-
responseCode = "403",
53-
description = "Forbidden, the user does not have permission to execute this operation",
54-
content =
55-
@Content(
56-
mediaType = "application/json",
57-
schema = @Schema(implementation = ErrorResponse.class))),
58-
@ApiResponse(
59-
responseCode = "409",
60-
description = "Conflict, an item already exists",
61-
content =
62-
@Content(
63-
mediaType = "application/json",
64-
schema = @Schema(implementation = ErrorResponse.class)))
65-
})
29+
operationId = "CreateMenu")
30+
@CreateAPIResponses
6631
ResponseEntity<ResourceCreatedResponse> createMenu(
6732
@Valid @RequestBody CreateMenuRequest body,
6833
@Parameter(hidden = true) @RequestAttribute("CorrelationId") String correlationId);

java/src/main/java/com/amido/stacks/workloads/menu/api/v1/DeleteCategoryController.java

Lines changed: 10 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -1,68 +1,30 @@
11
package com.amido.stacks.workloads.menu.api.v1;
22

3-
import com.amido.stacks.core.api.dto.ErrorResponse;
3+
import com.amido.stacks.core.api.annotations.DeleteAPIResponses;
44
import io.swagger.v3.oas.annotations.Operation;
55
import io.swagger.v3.oas.annotations.Parameter;
6-
import io.swagger.v3.oas.annotations.media.Content;
7-
import io.swagger.v3.oas.annotations.media.Schema;
8-
import io.swagger.v3.oas.annotations.responses.ApiResponse;
9-
import io.swagger.v3.oas.annotations.security.SecurityRequirement;
106
import java.util.UUID;
7+
import org.springframework.http.MediaType;
118
import org.springframework.http.ResponseEntity;
129
import org.springframework.web.bind.annotation.DeleteMapping;
1310
import org.springframework.web.bind.annotation.PathVariable;
1411
import org.springframework.web.bind.annotation.RequestAttribute;
1512
import org.springframework.web.bind.annotation.RequestMapping;
13+
import org.springframework.web.bind.annotation.RequestMethod;
1614

17-
/** @author ArathyKrishna */
18-
@RequestMapping("/v1/menu/{id}/category/{categoryId}")
15+
@RequestMapping(
16+
path = "/v1/menu/{id}/category/{categoryId}",
17+
produces = MediaType.APPLICATION_JSON_VALUE + "; charset=utf-8",
18+
method = RequestMethod.DELETE)
1919
public interface DeleteCategoryController {
2020

21-
@DeleteMapping(produces = "application/json; charset=utf-8")
21+
@DeleteMapping
2222
@Operation(
2323
tags = "Category",
2424
summary = "Removes a category and its items from menu",
25-
security = @SecurityRequirement(name = "bearerAuth"),
2625
description = "Removes a category and its items from menu",
27-
operationId = "DeleteCategory",
28-
responses = {
29-
@ApiResponse(
30-
responseCode = "200",
31-
description = "Success",
32-
content = @Content(mediaType = "application/json", schema = @Schema(hidden = true))),
33-
@ApiResponse(
34-
responseCode = "204",
35-
description = "No Content",
36-
content = @Content(schema = @Schema(hidden = true))),
37-
@ApiResponse(
38-
responseCode = "400",
39-
description = "Bad Request",
40-
content =
41-
@Content(
42-
mediaType = "application/json",
43-
schema = @Schema(implementation = ErrorResponse.class))),
44-
@ApiResponse(
45-
responseCode = "401",
46-
description = "Unauthorized, Access token is missing or invalid",
47-
content =
48-
@Content(
49-
mediaType = "application/json",
50-
schema = @Schema(implementation = ErrorResponse.class))),
51-
@ApiResponse(
52-
responseCode = "403",
53-
description = "Forbidden, the user does not have permission to execute this operation",
54-
content =
55-
@Content(
56-
mediaType = "application/json",
57-
schema = @Schema(implementation = ErrorResponse.class))),
58-
@ApiResponse(
59-
responseCode = "409",
60-
description = "Conflict, an item already exists",
61-
content =
62-
@Content(
63-
mediaType = "application/json",
64-
schema = @Schema(implementation = ErrorResponse.class)))
65-
})
26+
operationId = "DeleteCategory")
27+
@DeleteAPIResponses
6628
ResponseEntity<Void> deleteCategory(
6729
@Parameter(description = "Menu id", required = true) @PathVariable("id") UUID menuId,
6830
@Parameter(description = "Category id", required = true) @PathVariable("categoryId")

0 commit comments

Comments
 (0)