From 5a05a43cdbef1e1cf23c4585271236988e2ab6ec Mon Sep 17 00:00:00 2001 From: Mohamed Samandi Date: Fri, 15 Jul 2022 13:23:04 +0200 Subject: [PATCH 1/4] task4745-Refactor Swagger annotations to reduce duplication --- java/pom.xml | 13 +-- .../menu/api/v1/CreateCategoryController.java | 62 ++++---------- .../menu/api/v1/CreateItemController.java | 64 ++++----------- .../menu/api/v1/CreateMenuController.java | 58 +++----------- .../menu/api/v1/DeleteCategoryController.java | 56 +++---------- .../menu/api/v1/DeleteItemController.java | 56 +++---------- .../menu/api/v1/DeleteMenuController.java | 56 +++---------- .../menu/api/v1/QueryMenuController.java | 80 +++++++------------ .../menu/api/v1/UpdateCategoryController.java | 71 ++++------------ .../menu/api/v1/UpdateItemController.java | 70 ++++------------ .../menu/api/v1/UpdateMenuController.java | 71 ++++------------ .../dto/response/ResourceCreatedResponse.java | 16 ---- .../dto/response/ResourceUpdatedResponse.java | 16 ---- .../v1/impl/CreateCategoryControllerImpl.java | 2 +- .../api/v1/impl/CreateItemControllerImpl.java | 2 +- .../api/v1/impl/CreateMenuControllerImpl.java | 2 +- .../v1/impl/UpdateCategoryControllerImpl.java | 2 +- .../api/v1/impl/UpdateItemControllerImpl.java | 2 +- .../api/v1/impl/UpdateMenuControllerImpl.java | 2 +- java/src/main/resources/application.yml | 2 +- .../CreateCategoryControllerImplTest.java | 2 +- .../v1/impl/CreateItemControllerImplTest.java | 2 +- .../v1/impl/CreateMenuControllerImplTest.java | 2 +- .../UpdateCategoryControllerImplTest.java | 2 +- .../v1/impl/UpdateItemControllerImplTest.java | 2 +- .../v1/impl/UpdateMenuControllerImplTest.java | 19 +++-- 26 files changed, 173 insertions(+), 559 deletions(-) delete mode 100644 java/src/main/java/com/amido/stacks/workloads/menu/api/v1/dto/response/ResourceCreatedResponse.java delete mode 100644 java/src/main/java/com/amido/stacks/workloads/menu/api/v1/dto/response/ResourceUpdatedResponse.java diff --git a/java/pom.xml b/java/pom.xml index 0cb1a2f7..e37fbd2f 100644 --- a/java/pom.xml +++ b/java/pom.xml @@ -15,13 +15,13 @@ com.amido.stacks.workloads stacks-api-cqrs 1.0.0 - stacks-api-cqrs + ${project.groupId}:${project.artifactId} Demo project for Java with CQRS 1.0.3 - 1.0.0 + 1.0.2.2-RELEASE 1.0.0 1.0.0 @@ -69,15 +69,6 @@ - - - - snapshots - default-maven-virtual - https://amidostacks.jfrog.io/artifactory/default-maven-virtual - - - diff --git a/java/src/main/java/com/amido/stacks/workloads/menu/api/v1/CreateCategoryController.java b/java/src/main/java/com/amido/stacks/workloads/menu/api/v1/CreateCategoryController.java index 30a81214..b08fb37f 100644 --- a/java/src/main/java/com/amido/stacks/workloads/menu/api/v1/CreateCategoryController.java +++ b/java/src/main/java/com/amido/stacks/workloads/menu/api/v1/CreateCategoryController.java @@ -1,66 +1,34 @@ package com.amido.stacks.workloads.menu.api.v1; -import com.amido.stacks.core.api.dto.ErrorResponse; +import com.amido.stacks.core.api.annotations.CreateAPIResponses; +import com.amido.stacks.core.api.dto.response.ResourceCreatedResponse; import com.amido.stacks.workloads.menu.api.v1.dto.request.CreateCategoryRequest; -import com.amido.stacks.workloads.menu.api.v1.dto.response.ResourceCreatedResponse; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; -import io.swagger.v3.oas.annotations.media.Content; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.responses.ApiResponse; -import io.swagger.v3.oas.annotations.security.SecurityRequirement; import java.util.UUID; import javax.validation.Valid; import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.*; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestAttribute; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; -@RequestMapping("/v1/menu/{id}/category") +@RequestMapping( + path = "/v1/menu/{id}/category", + consumes = "application/json", + produces = "application/json; charset=utf-8", + method = RequestMethod.POST) public interface CreateCategoryController { @PostMapping(consumes = "application/json", produces = "application/json; charset=utf-8") @Operation( tags = "Category", summary = "Create a category in the menu", - security = @SecurityRequirement(name = "bearerAuth"), description = "Adds a category to menu", - operationId = "AddMenuCategory", - responses = { - @ApiResponse( - responseCode = "201", - description = "Resource created", - content = - @Content( - mediaType = "application/json", - schema = @Schema(implementation = ResourceCreatedResponse.class))), - @ApiResponse( - responseCode = "400", - description = "Bad Request", - content = - @Content( - mediaType = "application/json", - schema = @Schema(implementation = ErrorResponse.class))), - @ApiResponse( - responseCode = "401", - description = "Unauthorized, Access token is missing or invalid", - content = - @Content( - mediaType = "application/json", - schema = @Schema(implementation = ErrorResponse.class))), - @ApiResponse( - responseCode = "403", - description = "Forbidden, the user does not have permission to execute this operation", - content = - @Content( - mediaType = "application/json", - schema = @Schema(implementation = ErrorResponse.class))), - @ApiResponse( - responseCode = "409", - description = "Conflict, an item already exists", - content = - @Content( - mediaType = "application/json", - schema = @Schema(implementation = ErrorResponse.class))) - }) + operationId = "AddMenuCategory") + @CreateAPIResponses ResponseEntity addMenuCategory( @Parameter(description = "Menu id", required = true) @PathVariable("id") UUID menuId, @Valid @RequestBody CreateCategoryRequest body, diff --git a/java/src/main/java/com/amido/stacks/workloads/menu/api/v1/CreateItemController.java b/java/src/main/java/com/amido/stacks/workloads/menu/api/v1/CreateItemController.java index 5d2cab08..9fc22acf 100644 --- a/java/src/main/java/com/amido/stacks/workloads/menu/api/v1/CreateItemController.java +++ b/java/src/main/java/com/amido/stacks/workloads/menu/api/v1/CreateItemController.java @@ -1,66 +1,34 @@ package com.amido.stacks.workloads.menu.api.v1; -import com.amido.stacks.core.api.dto.ErrorResponse; +import com.amido.stacks.core.api.annotations.CreateAPIResponses; +import com.amido.stacks.core.api.dto.response.ResourceCreatedResponse; import com.amido.stacks.workloads.menu.api.v1.dto.request.CreateItemRequest; -import com.amido.stacks.workloads.menu.api.v1.dto.response.ResourceCreatedResponse; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; -import io.swagger.v3.oas.annotations.media.Content; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.responses.ApiResponse; -import io.swagger.v3.oas.annotations.security.SecurityRequirement; import java.util.UUID; import javax.validation.Valid; import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.*; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestAttribute; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; -@RequestMapping("/v1/menu/{id}/category/{categoryId}/items") +@RequestMapping( + path = "/v1/menu/{id}/category/{categoryId}/items", + consumes = "application/json", + produces = "application/json; charset=utf-8", + method = RequestMethod.POST) public interface CreateItemController { - @PostMapping(consumes = "application/json", produces = "application/json; charset=utf-8") + @PostMapping() @Operation( tags = "Item", summary = "Add an item to an existing category in a menu", - security = @SecurityRequirement(name = "bearerAuth"), description = "Adds a menu item", - operationId = "AddMenuItem", - responses = { - @ApiResponse( - responseCode = "201", - description = "Resource created", - content = - @Content( - mediaType = "application/json", - schema = @Schema(implementation = ResourceCreatedResponse.class))), - @ApiResponse( - responseCode = "400", - description = "Bad Request", - content = - @Content( - mediaType = "application/json", - schema = @Schema(implementation = ErrorResponse.class))), - @ApiResponse( - responseCode = "401", - description = "Unauthorized, Access token is missing or invalid", - content = - @Content( - mediaType = "application/json", - schema = @Schema(implementation = ErrorResponse.class))), - @ApiResponse( - responseCode = "403", - description = "Forbidden, the user does not have permission to execute this operation", - content = - @Content( - mediaType = "application/json", - schema = @Schema(implementation = ErrorResponse.class))), - @ApiResponse( - responseCode = "409", - description = "Conflict, an item already exists", - content = - @Content( - mediaType = "application/json", - schema = @Schema(implementation = ErrorResponse.class))) - }) + operationId = "AddMenuItem") + @CreateAPIResponses ResponseEntity addMenuItem( @Parameter(description = "Menu id", required = true) @PathVariable("id") UUID menuId, @Parameter(description = "Category id", required = true) @PathVariable("categoryId") diff --git a/java/src/main/java/com/amido/stacks/workloads/menu/api/v1/CreateMenuController.java b/java/src/main/java/com/amido/stacks/workloads/menu/api/v1/CreateMenuController.java index c36124a1..23c1b617 100644 --- a/java/src/main/java/com/amido/stacks/workloads/menu/api/v1/CreateMenuController.java +++ b/java/src/main/java/com/amido/stacks/workloads/menu/api/v1/CreateMenuController.java @@ -1,68 +1,32 @@ package com.amido.stacks.workloads.menu.api.v1; -import com.amido.stacks.core.api.dto.ErrorResponse; +import com.amido.stacks.core.api.annotations.CreateAPIResponses; +import com.amido.stacks.core.api.dto.response.ResourceCreatedResponse; import com.amido.stacks.workloads.menu.api.v1.dto.request.CreateMenuRequest; -import com.amido.stacks.workloads.menu.api.v1.dto.response.ResourceCreatedResponse; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; -import io.swagger.v3.oas.annotations.media.Content; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.responses.ApiResponse; -import io.swagger.v3.oas.annotations.security.SecurityRequirement; import javax.validation.Valid; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestAttribute; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; -@RequestMapping("/v1/menu") +@RequestMapping( + path = "/v1/menu", + consumes = "application/json", + produces = "application/json; charset=utf-8", + method = RequestMethod.POST) public interface CreateMenuController { - @PostMapping(consumes = "application/json", produces = "application/json; charset=utf-8") + @PostMapping() @Operation( tags = "Menu", summary = "Create a menu", - security = @SecurityRequirement(name = "bearerAuth"), description = "Adds a menu", - operationId = "CreateMenu", - responses = { - @ApiResponse( - responseCode = "201", - description = "Resource created", - content = - @Content( - mediaType = "application/json", - schema = @Schema(implementation = ResourceCreatedResponse.class))), - @ApiResponse( - responseCode = "400", - description = "Bad Request", - content = - @Content( - mediaType = "application/json", - schema = @Schema(implementation = ErrorResponse.class))), - @ApiResponse( - responseCode = "401", - description = "Unauthorized, Access token is missing or invalid", - content = - @Content( - mediaType = "application/json", - schema = @Schema(implementation = ErrorResponse.class))), - @ApiResponse( - responseCode = "403", - description = "Forbidden, the user does not have permission to execute this operation", - content = - @Content( - mediaType = "application/json", - schema = @Schema(implementation = ErrorResponse.class))), - @ApiResponse( - responseCode = "409", - description = "Conflict, an item already exists", - content = - @Content( - mediaType = "application/json", - schema = @Schema(implementation = ErrorResponse.class))) - }) + operationId = "CreateMenu") + @CreateAPIResponses ResponseEntity createMenu( @Valid @RequestBody CreateMenuRequest body, @Parameter(hidden = true) @RequestAttribute("CorrelationId") String correlationId); diff --git a/java/src/main/java/com/amido/stacks/workloads/menu/api/v1/DeleteCategoryController.java b/java/src/main/java/com/amido/stacks/workloads/menu/api/v1/DeleteCategoryController.java index f161c59d..21ce62fc 100644 --- a/java/src/main/java/com/amido/stacks/workloads/menu/api/v1/DeleteCategoryController.java +++ b/java/src/main/java/com/amido/stacks/workloads/menu/api/v1/DeleteCategoryController.java @@ -1,67 +1,29 @@ package com.amido.stacks.workloads.menu.api.v1; -import com.amido.stacks.core.api.dto.ErrorResponse; +import com.amido.stacks.core.api.annotations.DeleteAPIResponses; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; -import io.swagger.v3.oas.annotations.media.Content; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.responses.ApiResponse; -import io.swagger.v3.oas.annotations.security.SecurityRequirement; import java.util.UUID; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestAttribute; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; -@RequestMapping("/v1/menu/{id}/category/{categoryId}") +@RequestMapping( + path = "/v1/menu/{id}/category/{categoryId}", + produces = "application/json; charset=utf-8", + method = RequestMethod.DELETE) public interface DeleteCategoryController { - @DeleteMapping(produces = "application/json; charset=utf-8") + @DeleteMapping() @Operation( tags = "Category", summary = "Removes a category and its items from menu", - security = @SecurityRequirement(name = "bearerAuth"), description = "Removes a category and its items from menu", - operationId = "DeleteCategory", - responses = { - @ApiResponse( - responseCode = "200", - description = "Success", - content = @Content(mediaType = "application/json", schema = @Schema(hidden = true))), - @ApiResponse( - responseCode = "204", - description = "No Content", - content = @Content(schema = @Schema(hidden = true))), - @ApiResponse( - responseCode = "400", - description = "Bad Request", - content = - @Content( - mediaType = "application/json", - schema = @Schema(implementation = ErrorResponse.class))), - @ApiResponse( - responseCode = "401", - description = "Unauthorized, Access token is missing or invalid", - content = - @Content( - mediaType = "application/json", - schema = @Schema(implementation = ErrorResponse.class))), - @ApiResponse( - responseCode = "403", - description = "Forbidden, the user does not have permission to execute this operation", - content = - @Content( - mediaType = "application/json", - schema = @Schema(implementation = ErrorResponse.class))), - @ApiResponse( - responseCode = "409", - description = "Conflict, an item already exists", - content = - @Content( - mediaType = "application/json", - schema = @Schema(implementation = ErrorResponse.class))) - }) + operationId = "DeleteCategory") + @DeleteAPIResponses ResponseEntity deleteCategory( @Parameter(description = "Menu id", required = true) @PathVariable("id") UUID menuId, @Parameter(description = "Category id", required = true) @PathVariable("categoryId") diff --git a/java/src/main/java/com/amido/stacks/workloads/menu/api/v1/DeleteItemController.java b/java/src/main/java/com/amido/stacks/workloads/menu/api/v1/DeleteItemController.java index 538b986d..fe6bc112 100644 --- a/java/src/main/java/com/amido/stacks/workloads/menu/api/v1/DeleteItemController.java +++ b/java/src/main/java/com/amido/stacks/workloads/menu/api/v1/DeleteItemController.java @@ -1,68 +1,30 @@ package com.amido.stacks.workloads.menu.api.v1; -import com.amido.stacks.core.api.dto.ErrorResponse; +import com.amido.stacks.core.api.annotations.DeleteAPIResponses; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; -import io.swagger.v3.oas.annotations.media.Content; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.responses.ApiResponse; -import io.swagger.v3.oas.annotations.security.SecurityRequirement; import java.util.UUID; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestAttribute; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; /** @author ArathyKrishna */ -@RequestMapping("/v1/menu/{id}/category/{categoryId}/items/{itemId}") +@RequestMapping( + path = "/v1/menu/{id}/category/{categoryId}/items/{itemId}", + produces = "application/json; charset=utf-8", + method = RequestMethod.DELETE) public interface DeleteItemController { - @DeleteMapping(produces = "application/json; charset=utf-8") + @DeleteMapping() @Operation( tags = "Item", summary = "Removes an item from menu", - security = @SecurityRequirement(name = "bearerAuth"), description = "Removes an item from menu", - operationId = "DeleteMenuItem", - responses = { - @ApiResponse( - responseCode = "200", - description = "Success", - content = @Content(mediaType = "application/json", schema = @Schema(hidden = true))), - @ApiResponse( - responseCode = "204", - description = "No Content", - content = @Content(schema = @Schema(hidden = true))), - @ApiResponse( - responseCode = "400", - description = "Bad Request", - content = - @Content( - mediaType = "application/json", - schema = @Schema(implementation = ErrorResponse.class))), - @ApiResponse( - responseCode = "401", - description = "Unauthorized, Access token is missing or invalid", - content = - @Content( - mediaType = "application/json", - schema = @Schema(implementation = ErrorResponse.class))), - @ApiResponse( - responseCode = "403", - description = "Forbidden, the user does not have permission to execute this operation", - content = - @Content( - mediaType = "application/json", - schema = @Schema(implementation = ErrorResponse.class))), - @ApiResponse( - responseCode = "404", - description = "Resource not found", - content = - @Content( - mediaType = "application/json", - schema = @Schema(implementation = ErrorResponse.class))) - }) + operationId = "DeleteMenuItem") + @DeleteAPIResponses ResponseEntity deleteItem( @Parameter(description = "Menu id", required = true) @PathVariable("id") UUID menuId, @Parameter(description = "Category id", required = true) @PathVariable("categoryId") diff --git a/java/src/main/java/com/amido/stacks/workloads/menu/api/v1/DeleteMenuController.java b/java/src/main/java/com/amido/stacks/workloads/menu/api/v1/DeleteMenuController.java index 70226a67..672ea2d2 100644 --- a/java/src/main/java/com/amido/stacks/workloads/menu/api/v1/DeleteMenuController.java +++ b/java/src/main/java/com/amido/stacks/workloads/menu/api/v1/DeleteMenuController.java @@ -1,72 +1,34 @@ package com.amido.stacks.workloads.menu.api.v1; -import com.amido.stacks.core.api.dto.ErrorResponse; +import com.amido.stacks.core.api.annotations.DeleteAPIResponses; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; -import io.swagger.v3.oas.annotations.media.Content; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.responses.ApiResponse; -import io.swagger.v3.oas.annotations.security.SecurityRequirement; import java.util.UUID; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestAttribute; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; /** * Controller for Deleting a menu * * @author ArathyKrishna */ -@RequestMapping("/v1/menu/{id}") +@RequestMapping( + path = "/v1/menu/{id}", + produces = "application/json; charset=utf-8", + method = RequestMethod.DELETE) public interface DeleteMenuController { - @DeleteMapping(produces = "application/json; charset=utf-8") + @DeleteMapping() @Operation( tags = "Menu", summary = "Removes a Menu with all it's Categories and Items", - security = @SecurityRequirement(name = "bearerAuth"), description = "Remove a menu from a restaurant", - operationId = "DeleteMenu", - responses = { - @ApiResponse( - responseCode = "200", - description = "Success", - content = @Content(mediaType = "application/json", schema = @Schema(hidden = true))), - @ApiResponse( - responseCode = "204", - description = "No Content", - content = @Content(schema = @Schema(hidden = true))), - @ApiResponse( - responseCode = "400", - description = "Bad Request", - content = - @Content( - mediaType = "application/json", - schema = @Schema(implementation = ErrorResponse.class))), - @ApiResponse( - responseCode = "401", - description = "Unauthorized, Access token is missing or invalid", - content = - @Content( - mediaType = "application/json", - schema = @Schema(implementation = ErrorResponse.class))), - @ApiResponse( - responseCode = "403", - description = "Forbidden, the user does not have permission to execute this operation", - content = - @Content( - mediaType = "application/json", - schema = @Schema(implementation = ErrorResponse.class))), - @ApiResponse( - responseCode = "404", - description = "Resource not found", - content = - @Content( - mediaType = "application/json", - schema = @Schema(implementation = ErrorResponse.class))) - }) + operationId = "DeleteMenu") + @DeleteAPIResponses ResponseEntity deleteMenu( @Parameter(description = "Menu id", required = true) @PathVariable("id") UUID menuId, @Parameter(hidden = true) @RequestAttribute("CorrelationId") String correlationId); diff --git a/java/src/main/java/com/amido/stacks/workloads/menu/api/v1/QueryMenuController.java b/java/src/main/java/com/amido/stacks/workloads/menu/api/v1/QueryMenuController.java index 6fb4d215..cb84b757 100644 --- a/java/src/main/java/com/amido/stacks/workloads/menu/api/v1/QueryMenuController.java +++ b/java/src/main/java/com/amido/stacks/workloads/menu/api/v1/QueryMenuController.java @@ -1,6 +1,6 @@ package com.amido.stacks.workloads.menu.api.v1; -import com.amido.stacks.core.api.dto.ErrorResponse; +import com.amido.stacks.core.api.annotations.SearchAPIResponses; import com.amido.stacks.workloads.menu.api.v1.dto.response.MenuDTO; import com.amido.stacks.workloads.menu.api.v1.dto.response.SearchMenuResult; import io.swagger.v3.oas.annotations.Operation; @@ -8,38 +8,36 @@ import io.swagger.v3.oas.annotations.media.Content; import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.responses.ApiResponse; -import io.swagger.v3.oas.annotations.security.SecurityRequirement; import java.io.IOException; import java.util.UUID; import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.*; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestAttribute; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; -@RequestMapping("/v1/menu") +@RequestMapping( + path = "/v1/menu", + produces = "application/json; charset=utf-8", + method = RequestMethod.GET) public interface QueryMenuController { - @GetMapping(produces = "application/json; charset=utf-8") + @GetMapping @Operation( tags = "Menu", summary = "Get or search a list of menus", - security = @SecurityRequirement(name = "bearerAuth"), description = - "By passing in the appropriate options, you can search for available menus in the system", - responses = { - @ApiResponse( - responseCode = "200", - description = "Search results matching criteria", - content = - @Content( - mediaType = "application/json", - schema = @Schema(implementation = SearchMenuResult.class))), - @ApiResponse( - responseCode = "400", - description = "Bad Request", - content = - @Content( - mediaType = "application/json", - schema = @Schema(implementation = ErrorResponse.class))) - }) + "By passing in the appropriate options, you can search for available menus in the system") + @ApiResponse( + responseCode = "200", + description = "Search results matching criteria", + content = + @Content( + mediaType = "application/json", + schema = @Schema(implementation = SearchMenuResult.class))) + @SearchAPIResponses ResponseEntity searchMenu( @RequestParam(value = "searchTerm", required = false) String searchTerm, @RequestParam(value = "restaurantId", required = false) UUID restaurantId, @@ -47,36 +45,20 @@ ResponseEntity searchMenu( @RequestParam(value = "pageNumber", required = false, defaultValue = "1") Integer pageNumber) throws IOException; - @GetMapping(value = "/{id}", produces = "application/json; charset=utf-8") + @GetMapping(value = "/{id}") @Operation( tags = "Menu", summary = "Get a menu", - security = @SecurityRequirement(name = "bearerAuth"), description = - "By passing the menu id, you can get access to available categories and items in the menu", - responses = { - @ApiResponse( - responseCode = "200", - description = "Menu", - content = - @Content( - mediaType = "application/json", - schema = @Schema(implementation = MenuDTO.class))), - @ApiResponse( - responseCode = "404", - description = "Menu Not Found", - content = - @Content( - mediaType = "application/json", - schema = @Schema(implementation = ErrorResponse.class))), - @ApiResponse( - responseCode = "400", - description = "Bad Request", - content = - @Content( - mediaType = "application/json", - schema = @Schema(implementation = ErrorResponse.class))) - }) + "By passing the menu id, you can get access to available categories and items in the menu") + @ApiResponse( + responseCode = "200", + description = "Menu", + content = + @Content( + mediaType = "application/json", + schema = @Schema(implementation = MenuDTO.class))) + @SearchAPIResponses ResponseEntity getMenu( @PathVariable(name = "id") UUID id, @Parameter(hidden = true) @RequestAttribute("CorrelationId") String correlationId); diff --git a/java/src/main/java/com/amido/stacks/workloads/menu/api/v1/UpdateCategoryController.java b/java/src/main/java/com/amido/stacks/workloads/menu/api/v1/UpdateCategoryController.java index c208ba88..e06bea6b 100644 --- a/java/src/main/java/com/amido/stacks/workloads/menu/api/v1/UpdateCategoryController.java +++ b/java/src/main/java/com/amido/stacks/workloads/menu/api/v1/UpdateCategoryController.java @@ -1,74 +1,35 @@ package com.amido.stacks.workloads.menu.api.v1; -import com.amido.stacks.core.api.dto.ErrorResponse; +import com.amido.stacks.core.api.annotations.UpdateAPIResponses; +import com.amido.stacks.core.api.dto.response.ResourceUpdatedResponse; import com.amido.stacks.workloads.menu.api.v1.dto.request.UpdateCategoryRequest; -import com.amido.stacks.workloads.menu.api.v1.dto.response.ResourceUpdatedResponse; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; -import io.swagger.v3.oas.annotations.media.Content; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.responses.ApiResponse; -import io.swagger.v3.oas.annotations.security.SecurityRequirement; import java.util.UUID; import javax.validation.Valid; import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.*; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestAttribute; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; /** @author ArathyKrishna */ -@RequestMapping("/v1/menu/{id}/category/{categoryId}") +@RequestMapping( + path = "/v1/menu/{id}/category/{categoryId}", + consumes = "application/json", + produces = "application/json; charset=utf-8", + method = RequestMethod.PUT) public interface UpdateCategoryController { - @PutMapping(consumes = "application/json", produces = "application/json; charset=utf-8") + @PutMapping() @Operation( tags = "Category", summary = "Update a category in the menu", - security = @SecurityRequirement(name = "bearerAuth"), description = "Update a category to menu", - operationId = "UpdateMenuCategory", - responses = { - @ApiResponse( - responseCode = "200", - description = "Success", - content = - @Content( - mediaType = "application/json", - schema = @Schema(implementation = ResourceUpdatedResponse.class))), - @ApiResponse( - responseCode = "204", - description = "No Content", - content = - @Content( - mediaType = "application/json", - schema = @Schema(implementation = ErrorResponse.class))), - @ApiResponse( - responseCode = "400", - description = "Bad Request", - content = - @Content( - mediaType = "application/json", - schema = @Schema(implementation = ErrorResponse.class))), - @ApiResponse( - responseCode = "401", - description = "Unauthorized, Access token is missing or invalid", - content = - @Content( - mediaType = "application/json", - schema = @Schema(implementation = ErrorResponse.class))), - @ApiResponse( - responseCode = "403", - description = "Forbidden, the user does not have permission to execute this operation", - content = - @Content( - mediaType = "application/json", - schema = @Schema(implementation = ErrorResponse.class))), - @ApiResponse( - responseCode = "409", - description = "Conflict, an item already exists", - content = - @Content( - mediaType = "application/json", - schema = @Schema(implementation = ErrorResponse.class))) - }) + operationId = "UpdateMenuCategory") + @UpdateAPIResponses ResponseEntity updateMenuCategory( @Parameter(description = "Menu id", required = true) @PathVariable("id") UUID menuId, @Parameter(description = "Category id", required = true) @PathVariable("categoryId") diff --git a/java/src/main/java/com/amido/stacks/workloads/menu/api/v1/UpdateItemController.java b/java/src/main/java/com/amido/stacks/workloads/menu/api/v1/UpdateItemController.java index 6be274a6..c697a3a8 100644 --- a/java/src/main/java/com/amido/stacks/workloads/menu/api/v1/UpdateItemController.java +++ b/java/src/main/java/com/amido/stacks/workloads/menu/api/v1/UpdateItemController.java @@ -1,73 +1,35 @@ package com.amido.stacks.workloads.menu.api.v1; -import com.amido.stacks.core.api.dto.ErrorResponse; +import com.amido.stacks.core.api.annotations.UpdateAPIResponses; +import com.amido.stacks.core.api.dto.response.ResourceUpdatedResponse; import com.amido.stacks.workloads.menu.api.v1.dto.request.UpdateItemRequest; -import com.amido.stacks.workloads.menu.api.v1.dto.response.ResourceUpdatedResponse; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; -import io.swagger.v3.oas.annotations.media.Content; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.responses.ApiResponse; -import io.swagger.v3.oas.annotations.security.SecurityRequirement; import java.util.UUID; import javax.validation.Valid; import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.*; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestAttribute; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; /** @author ArathyKrishna */ -@RequestMapping("/v1/menu/{id}/category/{categoryId}/items/{itemId}") +@RequestMapping( + path = "/v1/menu/{id}/category/{categoryId}/items/{itemId}", + consumes = "application/json", + produces = "application/json; charset=utf-8", + method = RequestMethod.PUT) public interface UpdateItemController { + @PutMapping(consumes = "application/json", produces = "application/json; charset=utf-8") @Operation( tags = "Item", summary = "Update an item in the menu", - security = @SecurityRequirement(name = "bearerAuth"), description = "Update an item in the menu", - operationId = "UpdateMenuItem", - responses = { - @ApiResponse( - responseCode = "200", - description = "Success", - content = - @Content( - mediaType = "application/json", - schema = @Schema(implementation = ResourceUpdatedResponse.class))), - @ApiResponse( - responseCode = "204", - description = "No Content", - content = - @Content( - mediaType = "application/json", - schema = @Schema(implementation = ErrorResponse.class))), - @ApiResponse( - responseCode = "400", - description = "Bad Request", - content = - @Content( - mediaType = "application/json", - schema = @Schema(implementation = ErrorResponse.class))), - @ApiResponse( - responseCode = "401", - description = "Unauthorized, Access token is missing or invalid", - content = - @Content( - mediaType = "application/json", - schema = @Schema(implementation = ErrorResponse.class))), - @ApiResponse( - responseCode = "403", - description = "Forbidden, the user does not have permission to execute this operation", - content = - @Content( - mediaType = "application/json", - schema = @Schema(implementation = ErrorResponse.class))), - @ApiResponse( - responseCode = "404", - description = "Resource not found", - content = - @Content( - mediaType = "application/json", - schema = @Schema(implementation = ErrorResponse.class))) - }) + operationId = "UpdateMenuItem") + @UpdateAPIResponses ResponseEntity updateItem( @Parameter(description = "Menu id", required = true) @PathVariable("id") UUID menuId, @Parameter(description = "Category id", required = true) @PathVariable("categoryId") diff --git a/java/src/main/java/com/amido/stacks/workloads/menu/api/v1/UpdateMenuController.java b/java/src/main/java/com/amido/stacks/workloads/menu/api/v1/UpdateMenuController.java index 79b89333..71524bb9 100644 --- a/java/src/main/java/com/amido/stacks/workloads/menu/api/v1/UpdateMenuController.java +++ b/java/src/main/java/com/amido/stacks/workloads/menu/api/v1/UpdateMenuController.java @@ -1,72 +1,33 @@ package com.amido.stacks.workloads.menu.api.v1; -import com.amido.stacks.core.api.dto.ErrorResponse; +import com.amido.stacks.core.api.annotations.UpdateAPIResponses; +import com.amido.stacks.core.api.dto.response.ResourceUpdatedResponse; import com.amido.stacks.workloads.menu.api.v1.dto.request.UpdateMenuRequest; -import com.amido.stacks.workloads.menu.api.v1.dto.response.ResourceUpdatedResponse; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; -import io.swagger.v3.oas.annotations.media.Content; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.responses.ApiResponse; -import io.swagger.v3.oas.annotations.security.SecurityRequirement; import java.util.UUID; import javax.validation.Valid; import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.*; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestAttribute; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; -@RequestMapping("/v1/menu/{id}") +@RequestMapping( + path = "/v1/menu/{id}", + consumes = "application/json", + produces = "application/json; charset=utf-8", + method = RequestMethod.PUT) public interface UpdateMenuController { - @PutMapping(consumes = "application/json", produces = "application/json; charset=utf-8") + @PutMapping() @Operation( tags = "Menu", summary = "Update a menu", - security = @SecurityRequirement(name = "bearerAuth"), - description = "Update a menu with new information", - responses = { - @ApiResponse( - responseCode = "200", - description = "Success", - content = - @Content( - mediaType = "application/json", - schema = @Schema(implementation = ResourceUpdatedResponse.class))), - @ApiResponse( - responseCode = "204", - description = "No Content", - content = - @Content( - mediaType = "application/json", - schema = @Schema(implementation = ErrorResponse.class))), - @ApiResponse( - responseCode = "400", - description = "Bad Request", - content = - @Content( - mediaType = "application/json", - schema = @Schema(implementation = ErrorResponse.class))), - @ApiResponse( - responseCode = "401", - description = "Unauthorized, Access token is missing or invalid", - content = - @Content( - mediaType = "application/json", - schema = @Schema(implementation = ErrorResponse.class))), - @ApiResponse( - responseCode = "403", - description = "Forbidden, the user does not have permission to execute this operation", - content = - @Content( - mediaType = "application/json", - schema = @Schema(implementation = ErrorResponse.class))), - @ApiResponse( - responseCode = "409", - description = "Conflict, an item already exists", - content = - @Content( - mediaType = "application/json", - schema = @Schema(implementation = ErrorResponse.class))) - }) + description = "Update a menu with new information") + @UpdateAPIResponses ResponseEntity updateMenu( @Parameter(description = "Menu id", required = true) @PathVariable("id") UUID menuId, @Valid @RequestBody UpdateMenuRequest body, diff --git a/java/src/main/java/com/amido/stacks/workloads/menu/api/v1/dto/response/ResourceCreatedResponse.java b/java/src/main/java/com/amido/stacks/workloads/menu/api/v1/dto/response/ResourceCreatedResponse.java deleted file mode 100644 index 093b2842..00000000 --- a/java/src/main/java/com/amido/stacks/workloads/menu/api/v1/dto/response/ResourceCreatedResponse.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.amido.stacks.workloads.menu.api.v1.dto.response; - -import com.fasterxml.jackson.annotation.JsonProperty; -import java.util.UUID; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -@Data -@NoArgsConstructor -@AllArgsConstructor -public class ResourceCreatedResponse { - - @JsonProperty("id") - private UUID id = null; -} diff --git a/java/src/main/java/com/amido/stacks/workloads/menu/api/v1/dto/response/ResourceUpdatedResponse.java b/java/src/main/java/com/amido/stacks/workloads/menu/api/v1/dto/response/ResourceUpdatedResponse.java deleted file mode 100644 index ced72f6e..00000000 --- a/java/src/main/java/com/amido/stacks/workloads/menu/api/v1/dto/response/ResourceUpdatedResponse.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.amido.stacks.workloads.menu.api.v1.dto.response; - -import com.fasterxml.jackson.annotation.JsonProperty; -import java.util.UUID; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -/** @author ArathyKrishna */ -@Data -@NoArgsConstructor -@AllArgsConstructor -public class ResourceUpdatedResponse { - @JsonProperty("id") - private UUID id = null; -} diff --git a/java/src/main/java/com/amido/stacks/workloads/menu/api/v1/impl/CreateCategoryControllerImpl.java b/java/src/main/java/com/amido/stacks/workloads/menu/api/v1/impl/CreateCategoryControllerImpl.java index fde6ec0c..8b3d93db 100644 --- a/java/src/main/java/com/amido/stacks/workloads/menu/api/v1/impl/CreateCategoryControllerImpl.java +++ b/java/src/main/java/com/amido/stacks/workloads/menu/api/v1/impl/CreateCategoryControllerImpl.java @@ -1,8 +1,8 @@ package com.amido.stacks.workloads.menu.api.v1.impl; +import com.amido.stacks.core.api.dto.response.ResourceCreatedResponse; import com.amido.stacks.workloads.menu.api.v1.CreateCategoryController; import com.amido.stacks.workloads.menu.api.v1.dto.request.CreateCategoryRequest; -import com.amido.stacks.workloads.menu.api.v1.dto.response.ResourceCreatedResponse; import com.amido.stacks.workloads.menu.handlers.CreateCategoryHandler; import com.amido.stacks.workloads.menu.mappers.RequestToCommandMapper; import java.util.UUID; diff --git a/java/src/main/java/com/amido/stacks/workloads/menu/api/v1/impl/CreateItemControllerImpl.java b/java/src/main/java/com/amido/stacks/workloads/menu/api/v1/impl/CreateItemControllerImpl.java index 358344d2..40a542ec 100644 --- a/java/src/main/java/com/amido/stacks/workloads/menu/api/v1/impl/CreateItemControllerImpl.java +++ b/java/src/main/java/com/amido/stacks/workloads/menu/api/v1/impl/CreateItemControllerImpl.java @@ -1,8 +1,8 @@ package com.amido.stacks.workloads.menu.api.v1.impl; +import com.amido.stacks.core.api.dto.response.ResourceCreatedResponse; import com.amido.stacks.workloads.menu.api.v1.CreateItemController; import com.amido.stacks.workloads.menu.api.v1.dto.request.CreateItemRequest; -import com.amido.stacks.workloads.menu.api.v1.dto.response.ResourceCreatedResponse; import com.amido.stacks.workloads.menu.handlers.CreateItemHandler; import com.amido.stacks.workloads.menu.mappers.RequestToCommandMapper; import java.util.UUID; diff --git a/java/src/main/java/com/amido/stacks/workloads/menu/api/v1/impl/CreateMenuControllerImpl.java b/java/src/main/java/com/amido/stacks/workloads/menu/api/v1/impl/CreateMenuControllerImpl.java index 70b7d74c..affe413b 100644 --- a/java/src/main/java/com/amido/stacks/workloads/menu/api/v1/impl/CreateMenuControllerImpl.java +++ b/java/src/main/java/com/amido/stacks/workloads/menu/api/v1/impl/CreateMenuControllerImpl.java @@ -1,8 +1,8 @@ package com.amido.stacks.workloads.menu.api.v1.impl; +import com.amido.stacks.core.api.dto.response.ResourceCreatedResponse; import com.amido.stacks.workloads.menu.api.v1.CreateMenuController; import com.amido.stacks.workloads.menu.api.v1.dto.request.CreateMenuRequest; -import com.amido.stacks.workloads.menu.api.v1.dto.response.ResourceCreatedResponse; import com.amido.stacks.workloads.menu.handlers.CreateMenuHandler; import com.amido.stacks.workloads.menu.mappers.RequestToCommandMapper; import javax.validation.Valid; diff --git a/java/src/main/java/com/amido/stacks/workloads/menu/api/v1/impl/UpdateCategoryControllerImpl.java b/java/src/main/java/com/amido/stacks/workloads/menu/api/v1/impl/UpdateCategoryControllerImpl.java index f61624a4..0dce36eb 100644 --- a/java/src/main/java/com/amido/stacks/workloads/menu/api/v1/impl/UpdateCategoryControllerImpl.java +++ b/java/src/main/java/com/amido/stacks/workloads/menu/api/v1/impl/UpdateCategoryControllerImpl.java @@ -2,9 +2,9 @@ import static org.springframework.http.HttpStatus.OK; +import com.amido.stacks.core.api.dto.response.ResourceUpdatedResponse; import com.amido.stacks.workloads.menu.api.v1.UpdateCategoryController; import com.amido.stacks.workloads.menu.api.v1.dto.request.UpdateCategoryRequest; -import com.amido.stacks.workloads.menu.api.v1.dto.response.ResourceUpdatedResponse; import com.amido.stacks.workloads.menu.handlers.UpdateCategoryHandler; import com.amido.stacks.workloads.menu.mappers.RequestToCommandMapper; import java.util.UUID; diff --git a/java/src/main/java/com/amido/stacks/workloads/menu/api/v1/impl/UpdateItemControllerImpl.java b/java/src/main/java/com/amido/stacks/workloads/menu/api/v1/impl/UpdateItemControllerImpl.java index 12dba3e6..13d6e62b 100644 --- a/java/src/main/java/com/amido/stacks/workloads/menu/api/v1/impl/UpdateItemControllerImpl.java +++ b/java/src/main/java/com/amido/stacks/workloads/menu/api/v1/impl/UpdateItemControllerImpl.java @@ -1,8 +1,8 @@ package com.amido.stacks.workloads.menu.api.v1.impl; +import com.amido.stacks.core.api.dto.response.ResourceUpdatedResponse; import com.amido.stacks.workloads.menu.api.v1.UpdateItemController; import com.amido.stacks.workloads.menu.api.v1.dto.request.UpdateItemRequest; -import com.amido.stacks.workloads.menu.api.v1.dto.response.ResourceUpdatedResponse; import com.amido.stacks.workloads.menu.handlers.UpdateItemHandler; import com.amido.stacks.workloads.menu.mappers.RequestToCommandMapper; import java.util.UUID; diff --git a/java/src/main/java/com/amido/stacks/workloads/menu/api/v1/impl/UpdateMenuControllerImpl.java b/java/src/main/java/com/amido/stacks/workloads/menu/api/v1/impl/UpdateMenuControllerImpl.java index 2e522c2c..8fd34983 100644 --- a/java/src/main/java/com/amido/stacks/workloads/menu/api/v1/impl/UpdateMenuControllerImpl.java +++ b/java/src/main/java/com/amido/stacks/workloads/menu/api/v1/impl/UpdateMenuControllerImpl.java @@ -1,8 +1,8 @@ package com.amido.stacks.workloads.menu.api.v1.impl; +import com.amido.stacks.core.api.dto.response.ResourceUpdatedResponse; import com.amido.stacks.workloads.menu.api.v1.UpdateMenuController; import com.amido.stacks.workloads.menu.api.v1.dto.request.UpdateMenuRequest; -import com.amido.stacks.workloads.menu.api.v1.dto.response.ResourceUpdatedResponse; import com.amido.stacks.workloads.menu.commands.UpdateMenuCommand; import com.amido.stacks.workloads.menu.handlers.UpdateMenuHandler; import com.amido.stacks.workloads.menu.mappers.RequestToCommandMapper; diff --git a/java/src/main/resources/application.yml b/java/src/main/resources/application.yml index 9965bbf0..3d231594 100644 --- a/java/src/main/resources/application.yml +++ b/java/src/main/resources/application.yml @@ -25,7 +25,7 @@ springdoc: display-operation-id: true # TODO: Swagger keeps redirecting, it'd be good to stop it if possible path: /swagger/index.html - packagesToScan: com.amido.stacks.menu.api + packagesToScan: com.amido.stacks.workloads.menu.api api-docs: groups: enabled: true diff --git a/java/src/test/java/com/amido/stacks/workloads/menu/api/v1/impl/CreateCategoryControllerImplTest.java b/java/src/test/java/com/amido/stacks/workloads/menu/api/v1/impl/CreateCategoryControllerImplTest.java index 052a2c8f..c12f82f5 100644 --- a/java/src/test/java/com/amido/stacks/workloads/menu/api/v1/impl/CreateCategoryControllerImplTest.java +++ b/java/src/test/java/com/amido/stacks/workloads/menu/api/v1/impl/CreateCategoryControllerImplTest.java @@ -12,8 +12,8 @@ import static org.springframework.http.HttpStatus.BAD_REQUEST; import com.amido.stacks.core.api.dto.ErrorResponse; +import com.amido.stacks.core.api.dto.response.ResourceCreatedResponse; import com.amido.stacks.workloads.menu.api.v1.dto.request.CreateCategoryRequest; -import com.amido.stacks.workloads.menu.api.v1.dto.response.ResourceCreatedResponse; import com.amido.stacks.workloads.menu.domain.Category; import com.amido.stacks.workloads.menu.domain.Menu; import com.amido.stacks.workloads.menu.repository.MenuRepository; diff --git a/java/src/test/java/com/amido/stacks/workloads/menu/api/v1/impl/CreateItemControllerImplTest.java b/java/src/test/java/com/amido/stacks/workloads/menu/api/v1/impl/CreateItemControllerImplTest.java index c9640067..a7e59e7e 100644 --- a/java/src/test/java/com/amido/stacks/workloads/menu/api/v1/impl/CreateItemControllerImplTest.java +++ b/java/src/test/java/com/amido/stacks/workloads/menu/api/v1/impl/CreateItemControllerImplTest.java @@ -14,8 +14,8 @@ import static org.springframework.http.HttpStatus.NOT_FOUND; import com.amido.stacks.core.api.dto.ErrorResponse; +import com.amido.stacks.core.api.dto.response.ResourceCreatedResponse; import com.amido.stacks.workloads.menu.api.v1.dto.request.CreateItemRequest; -import com.amido.stacks.workloads.menu.api.v1.dto.response.ResourceCreatedResponse; import com.amido.stacks.workloads.menu.domain.Category; import com.amido.stacks.workloads.menu.domain.CategoryHelper; import com.amido.stacks.workloads.menu.domain.Item; diff --git a/java/src/test/java/com/amido/stacks/workloads/menu/api/v1/impl/CreateMenuControllerImplTest.java b/java/src/test/java/com/amido/stacks/workloads/menu/api/v1/impl/CreateMenuControllerImplTest.java index 04f1fe6c..6359f9cc 100644 --- a/java/src/test/java/com/amido/stacks/workloads/menu/api/v1/impl/CreateMenuControllerImplTest.java +++ b/java/src/test/java/com/amido/stacks/workloads/menu/api/v1/impl/CreateMenuControllerImplTest.java @@ -9,8 +9,8 @@ import static org.mockito.Mockito.when; import com.amido.stacks.core.api.dto.ErrorResponse; +import com.amido.stacks.core.api.dto.response.ResourceCreatedResponse; import com.amido.stacks.workloads.menu.api.v1.dto.request.CreateMenuRequest; -import com.amido.stacks.workloads.menu.api.v1.dto.response.ResourceCreatedResponse; import com.amido.stacks.workloads.menu.domain.Menu; import com.amido.stacks.workloads.menu.repository.MenuRepository; import com.azure.spring.autoconfigure.cosmos.CosmosAutoConfiguration; diff --git a/java/src/test/java/com/amido/stacks/workloads/menu/api/v1/impl/UpdateCategoryControllerImplTest.java b/java/src/test/java/com/amido/stacks/workloads/menu/api/v1/impl/UpdateCategoryControllerImplTest.java index fa994bdc..52da6182 100644 --- a/java/src/test/java/com/amido/stacks/workloads/menu/api/v1/impl/UpdateCategoryControllerImplTest.java +++ b/java/src/test/java/com/amido/stacks/workloads/menu/api/v1/impl/UpdateCategoryControllerImplTest.java @@ -17,8 +17,8 @@ import static org.springframework.http.HttpStatus.OK; import com.amido.stacks.core.api.dto.ErrorResponse; +import com.amido.stacks.core.api.dto.response.ResourceUpdatedResponse; import com.amido.stacks.workloads.menu.api.v1.dto.request.UpdateCategoryRequest; -import com.amido.stacks.workloads.menu.api.v1.dto.response.ResourceUpdatedResponse; import com.amido.stacks.workloads.menu.domain.Category; import com.amido.stacks.workloads.menu.domain.Menu; import com.amido.stacks.workloads.menu.repository.MenuRepository; diff --git a/java/src/test/java/com/amido/stacks/workloads/menu/api/v1/impl/UpdateItemControllerImplTest.java b/java/src/test/java/com/amido/stacks/workloads/menu/api/v1/impl/UpdateItemControllerImplTest.java index abdef542..941c1109 100644 --- a/java/src/test/java/com/amido/stacks/workloads/menu/api/v1/impl/UpdateItemControllerImplTest.java +++ b/java/src/test/java/com/amido/stacks/workloads/menu/api/v1/impl/UpdateItemControllerImplTest.java @@ -16,8 +16,8 @@ import static org.springframework.http.HttpStatus.OK; import com.amido.stacks.core.api.dto.ErrorResponse; +import com.amido.stacks.core.api.dto.response.ResourceUpdatedResponse; import com.amido.stacks.workloads.menu.api.v1.dto.request.UpdateItemRequest; -import com.amido.stacks.workloads.menu.api.v1.dto.response.ResourceUpdatedResponse; import com.amido.stacks.workloads.menu.domain.Category; import com.amido.stacks.workloads.menu.domain.Item; import com.amido.stacks.workloads.menu.domain.Menu; diff --git a/java/src/test/java/com/amido/stacks/workloads/menu/api/v1/impl/UpdateMenuControllerImplTest.java b/java/src/test/java/com/amido/stacks/workloads/menu/api/v1/impl/UpdateMenuControllerImplTest.java index ea59bd7f..a2798cd6 100644 --- a/java/src/test/java/com/amido/stacks/workloads/menu/api/v1/impl/UpdateMenuControllerImplTest.java +++ b/java/src/test/java/com/amido/stacks/workloads/menu/api/v1/impl/UpdateMenuControllerImplTest.java @@ -11,8 +11,8 @@ import static org.mockito.Mockito.when; import com.amido.stacks.core.api.dto.ErrorResponse; +import com.amido.stacks.core.api.dto.response.ResourceUpdatedResponse; import com.amido.stacks.workloads.menu.api.v1.dto.request.UpdateMenuRequest; -import com.amido.stacks.workloads.menu.api.v1.dto.response.ResourceUpdatedResponse; import com.amido.stacks.workloads.menu.domain.Menu; import com.amido.stacks.workloads.menu.repository.MenuRepository; import com.azure.spring.autoconfigure.cosmos.CosmosAutoConfiguration; @@ -37,9 +37,9 @@ @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) @EnableAutoConfiguration( exclude = { - CosmosRepositoriesAutoConfiguration.class, - CosmosAutoConfiguration.class, - CosmosHealthConfiguration.class + CosmosRepositoriesAutoConfiguration.class, + CosmosAutoConfiguration.class, + CosmosHealthConfiguration.class }) @Tag("Integration") @ActiveProfiles("test") @@ -47,11 +47,14 @@ class UpdateMenuControllerImplTest { public static final String UPDATE_MENU = "%s/v1/menu/%s"; - @LocalServerPort private int port; + @LocalServerPort + private int port; - @Autowired private TestRestTemplate testRestTemplate; + @Autowired + private TestRestTemplate testRestTemplate; - @MockBean private MenuRepository menuRepository; + @MockBean + private MenuRepository menuRepository; @Test void testUpdateSuccess() { @@ -113,7 +116,7 @@ void testUpdateMenuWithNoNameReturnsBadRequest() { UpdateMenuRequest request = new UpdateMenuRequest("", "new description", false); // When - var response = + var responsegit = this.testRestTemplate.exchange( String.format(UPDATE_MENU, getBaseURL(port), menu.getId()), HttpMethod.PUT, From c28d60a30935227dcf246c14c33727d28a63b109 Mon Sep 17 00:00:00 2001 From: Mohamed Samandi Date: Fri, 15 Jul 2022 13:44:57 +0200 Subject: [PATCH 2/4] fix the format --- .../api/v1/impl/UpdateMenuControllerImplTest.java | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/java/src/test/java/com/amido/stacks/workloads/menu/api/v1/impl/UpdateMenuControllerImplTest.java b/java/src/test/java/com/amido/stacks/workloads/menu/api/v1/impl/UpdateMenuControllerImplTest.java index a2798cd6..aa814eab 100644 --- a/java/src/test/java/com/amido/stacks/workloads/menu/api/v1/impl/UpdateMenuControllerImplTest.java +++ b/java/src/test/java/com/amido/stacks/workloads/menu/api/v1/impl/UpdateMenuControllerImplTest.java @@ -37,9 +37,9 @@ @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) @EnableAutoConfiguration( exclude = { - CosmosRepositoriesAutoConfiguration.class, - CosmosAutoConfiguration.class, - CosmosHealthConfiguration.class + CosmosRepositoriesAutoConfiguration.class, + CosmosAutoConfiguration.class, + CosmosHealthConfiguration.class }) @Tag("Integration") @ActiveProfiles("test") @@ -47,14 +47,11 @@ class UpdateMenuControllerImplTest { public static final String UPDATE_MENU = "%s/v1/menu/%s"; - @LocalServerPort - private int port; + @LocalServerPort private int port; - @Autowired - private TestRestTemplate testRestTemplate; + @Autowired private TestRestTemplate testRestTemplate; - @MockBean - private MenuRepository menuRepository; + @MockBean private MenuRepository menuRepository; @Test void testUpdateSuccess() { From 1a8dc1a79e806961a05eb4fb8ad0b8145b750c2c Mon Sep 17 00:00:00 2001 From: Mohamed Samandi Date: Fri, 15 Jul 2022 13:56:02 +0200 Subject: [PATCH 3/4] fix the format --- .../menu/api/v1/impl/UpdateMenuControllerImplTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java/src/test/java/com/amido/stacks/workloads/menu/api/v1/impl/UpdateMenuControllerImplTest.java b/java/src/test/java/com/amido/stacks/workloads/menu/api/v1/impl/UpdateMenuControllerImplTest.java index aa814eab..589175e3 100644 --- a/java/src/test/java/com/amido/stacks/workloads/menu/api/v1/impl/UpdateMenuControllerImplTest.java +++ b/java/src/test/java/com/amido/stacks/workloads/menu/api/v1/impl/UpdateMenuControllerImplTest.java @@ -113,7 +113,7 @@ void testUpdateMenuWithNoNameReturnsBadRequest() { UpdateMenuRequest request = new UpdateMenuRequest("", "new description", false); // When - var responsegit = + var response = this.testRestTemplate.exchange( String.format(UPDATE_MENU, getBaseURL(port), menu.getId()), HttpMethod.PUT, From f6ea9ebd60043badd470491cddeece22de3b2643 Mon Sep 17 00:00:00 2001 From: Mohamed Samandi Date: Fri, 15 Jul 2022 16:41:32 +0200 Subject: [PATCH 4/4] fix some comments --- .../workloads/menu/api/v1/CreateCategoryController.java | 7 ++++--- .../stacks/workloads/menu/api/v1/CreateItemController.java | 7 ++++--- .../stacks/workloads/menu/api/v1/CreateMenuController.java | 7 ++++--- .../workloads/menu/api/v1/DeleteCategoryController.java | 5 +++-- .../stacks/workloads/menu/api/v1/DeleteItemController.java | 5 +++-- .../stacks/workloads/menu/api/v1/DeleteMenuController.java | 5 +++-- .../stacks/workloads/menu/api/v1/QueryMenuController.java | 3 ++- .../workloads/menu/api/v1/UpdateCategoryController.java | 7 ++++--- .../stacks/workloads/menu/api/v1/UpdateItemController.java | 7 ++++--- .../stacks/workloads/menu/api/v1/UpdateMenuController.java | 7 ++++--- 10 files changed, 35 insertions(+), 25 deletions(-) diff --git a/java/src/main/java/com/amido/stacks/workloads/menu/api/v1/CreateCategoryController.java b/java/src/main/java/com/amido/stacks/workloads/menu/api/v1/CreateCategoryController.java index b08fb37f..b687aa77 100644 --- a/java/src/main/java/com/amido/stacks/workloads/menu/api/v1/CreateCategoryController.java +++ b/java/src/main/java/com/amido/stacks/workloads/menu/api/v1/CreateCategoryController.java @@ -7,6 +7,7 @@ import io.swagger.v3.oas.annotations.Parameter; import java.util.UUID; import javax.validation.Valid; +import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; @@ -17,12 +18,12 @@ @RequestMapping( path = "/v1/menu/{id}/category", - consumes = "application/json", - produces = "application/json; charset=utf-8", + consumes = MediaType.APPLICATION_JSON_VALUE, + produces = MediaType.APPLICATION_JSON_VALUE + "; charset=utf-8", method = RequestMethod.POST) public interface CreateCategoryController { - @PostMapping(consumes = "application/json", produces = "application/json; charset=utf-8") + @PostMapping @Operation( tags = "Category", summary = "Create a category in the menu", diff --git a/java/src/main/java/com/amido/stacks/workloads/menu/api/v1/CreateItemController.java b/java/src/main/java/com/amido/stacks/workloads/menu/api/v1/CreateItemController.java index 9fc22acf..e2aa128f 100644 --- a/java/src/main/java/com/amido/stacks/workloads/menu/api/v1/CreateItemController.java +++ b/java/src/main/java/com/amido/stacks/workloads/menu/api/v1/CreateItemController.java @@ -7,6 +7,7 @@ import io.swagger.v3.oas.annotations.Parameter; import java.util.UUID; import javax.validation.Valid; +import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; @@ -17,12 +18,12 @@ @RequestMapping( path = "/v1/menu/{id}/category/{categoryId}/items", - consumes = "application/json", - produces = "application/json; charset=utf-8", + consumes = MediaType.APPLICATION_JSON_VALUE, + produces = MediaType.APPLICATION_JSON_VALUE + "; charset=utf-8", method = RequestMethod.POST) public interface CreateItemController { - @PostMapping() + @PostMapping @Operation( tags = "Item", summary = "Add an item to an existing category in a menu", diff --git a/java/src/main/java/com/amido/stacks/workloads/menu/api/v1/CreateMenuController.java b/java/src/main/java/com/amido/stacks/workloads/menu/api/v1/CreateMenuController.java index 23c1b617..514e5b34 100644 --- a/java/src/main/java/com/amido/stacks/workloads/menu/api/v1/CreateMenuController.java +++ b/java/src/main/java/com/amido/stacks/workloads/menu/api/v1/CreateMenuController.java @@ -6,6 +6,7 @@ import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import javax.validation.Valid; +import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestAttribute; @@ -15,12 +16,12 @@ @RequestMapping( path = "/v1/menu", - consumes = "application/json", - produces = "application/json; charset=utf-8", + consumes = MediaType.APPLICATION_JSON_VALUE, + produces = MediaType.APPLICATION_JSON_VALUE + " ; charset=utf-8", method = RequestMethod.POST) public interface CreateMenuController { - @PostMapping() + @PostMapping @Operation( tags = "Menu", summary = "Create a menu", diff --git a/java/src/main/java/com/amido/stacks/workloads/menu/api/v1/DeleteCategoryController.java b/java/src/main/java/com/amido/stacks/workloads/menu/api/v1/DeleteCategoryController.java index 21ce62fc..ddc27d8c 100644 --- a/java/src/main/java/com/amido/stacks/workloads/menu/api/v1/DeleteCategoryController.java +++ b/java/src/main/java/com/amido/stacks/workloads/menu/api/v1/DeleteCategoryController.java @@ -4,6 +4,7 @@ import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import java.util.UUID; +import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.PathVariable; @@ -13,11 +14,11 @@ @RequestMapping( path = "/v1/menu/{id}/category/{categoryId}", - produces = "application/json; charset=utf-8", + produces = MediaType.APPLICATION_JSON_VALUE + "; charset=utf-8", method = RequestMethod.DELETE) public interface DeleteCategoryController { - @DeleteMapping() + @DeleteMapping @Operation( tags = "Category", summary = "Removes a category and its items from menu", diff --git a/java/src/main/java/com/amido/stacks/workloads/menu/api/v1/DeleteItemController.java b/java/src/main/java/com/amido/stacks/workloads/menu/api/v1/DeleteItemController.java index fe6bc112..2ef33ce5 100644 --- a/java/src/main/java/com/amido/stacks/workloads/menu/api/v1/DeleteItemController.java +++ b/java/src/main/java/com/amido/stacks/workloads/menu/api/v1/DeleteItemController.java @@ -4,6 +4,7 @@ import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import java.util.UUID; +import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.PathVariable; @@ -14,11 +15,11 @@ /** @author ArathyKrishna */ @RequestMapping( path = "/v1/menu/{id}/category/{categoryId}/items/{itemId}", - produces = "application/json; charset=utf-8", + produces = MediaType.APPLICATION_JSON_VALUE + "; charset=utf-8", method = RequestMethod.DELETE) public interface DeleteItemController { - @DeleteMapping() + @DeleteMapping @Operation( tags = "Item", summary = "Removes an item from menu", diff --git a/java/src/main/java/com/amido/stacks/workloads/menu/api/v1/DeleteMenuController.java b/java/src/main/java/com/amido/stacks/workloads/menu/api/v1/DeleteMenuController.java index 672ea2d2..dde1e043 100644 --- a/java/src/main/java/com/amido/stacks/workloads/menu/api/v1/DeleteMenuController.java +++ b/java/src/main/java/com/amido/stacks/workloads/menu/api/v1/DeleteMenuController.java @@ -4,6 +4,7 @@ import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import java.util.UUID; +import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.PathVariable; @@ -18,11 +19,11 @@ */ @RequestMapping( path = "/v1/menu/{id}", - produces = "application/json; charset=utf-8", + produces = MediaType.APPLICATION_JSON_VALUE + "; charset=utf-8", method = RequestMethod.DELETE) public interface DeleteMenuController { - @DeleteMapping() + @DeleteMapping @Operation( tags = "Menu", summary = "Removes a Menu with all it's Categories and Items", diff --git a/java/src/main/java/com/amido/stacks/workloads/menu/api/v1/QueryMenuController.java b/java/src/main/java/com/amido/stacks/workloads/menu/api/v1/QueryMenuController.java index cb84b757..f2415c2b 100644 --- a/java/src/main/java/com/amido/stacks/workloads/menu/api/v1/QueryMenuController.java +++ b/java/src/main/java/com/amido/stacks/workloads/menu/api/v1/QueryMenuController.java @@ -10,6 +10,7 @@ import io.swagger.v3.oas.annotations.responses.ApiResponse; import java.io.IOException; import java.util.UUID; +import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; @@ -20,7 +21,7 @@ @RequestMapping( path = "/v1/menu", - produces = "application/json; charset=utf-8", + produces = MediaType.APPLICATION_JSON_VALUE + "; charset=utf-8", method = RequestMethod.GET) public interface QueryMenuController { diff --git a/java/src/main/java/com/amido/stacks/workloads/menu/api/v1/UpdateCategoryController.java b/java/src/main/java/com/amido/stacks/workloads/menu/api/v1/UpdateCategoryController.java index e06bea6b..69d8e49b 100644 --- a/java/src/main/java/com/amido/stacks/workloads/menu/api/v1/UpdateCategoryController.java +++ b/java/src/main/java/com/amido/stacks/workloads/menu/api/v1/UpdateCategoryController.java @@ -7,6 +7,7 @@ import io.swagger.v3.oas.annotations.Parameter; import java.util.UUID; import javax.validation.Valid; +import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PutMapping; @@ -18,12 +19,12 @@ /** @author ArathyKrishna */ @RequestMapping( path = "/v1/menu/{id}/category/{categoryId}", - consumes = "application/json", - produces = "application/json; charset=utf-8", + consumes = MediaType.APPLICATION_JSON_VALUE, + produces = MediaType.APPLICATION_JSON_VALUE + "; charset=utf-8", method = RequestMethod.PUT) public interface UpdateCategoryController { - @PutMapping() + @PutMapping @Operation( tags = "Category", summary = "Update a category in the menu", diff --git a/java/src/main/java/com/amido/stacks/workloads/menu/api/v1/UpdateItemController.java b/java/src/main/java/com/amido/stacks/workloads/menu/api/v1/UpdateItemController.java index c697a3a8..8d507058 100644 --- a/java/src/main/java/com/amido/stacks/workloads/menu/api/v1/UpdateItemController.java +++ b/java/src/main/java/com/amido/stacks/workloads/menu/api/v1/UpdateItemController.java @@ -7,6 +7,7 @@ import io.swagger.v3.oas.annotations.Parameter; import java.util.UUID; import javax.validation.Valid; +import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PutMapping; @@ -18,12 +19,12 @@ /** @author ArathyKrishna */ @RequestMapping( path = "/v1/menu/{id}/category/{categoryId}/items/{itemId}", - consumes = "application/json", - produces = "application/json; charset=utf-8", + consumes = MediaType.APPLICATION_JSON_VALUE, + produces = MediaType.APPLICATION_JSON_VALUE + "; charset=utf-8", method = RequestMethod.PUT) public interface UpdateItemController { - @PutMapping(consumes = "application/json", produces = "application/json; charset=utf-8") + @PutMapping @Operation( tags = "Item", summary = "Update an item in the menu", diff --git a/java/src/main/java/com/amido/stacks/workloads/menu/api/v1/UpdateMenuController.java b/java/src/main/java/com/amido/stacks/workloads/menu/api/v1/UpdateMenuController.java index 71524bb9..851a9d1b 100644 --- a/java/src/main/java/com/amido/stacks/workloads/menu/api/v1/UpdateMenuController.java +++ b/java/src/main/java/com/amido/stacks/workloads/menu/api/v1/UpdateMenuController.java @@ -7,6 +7,7 @@ import io.swagger.v3.oas.annotations.Parameter; import java.util.UUID; import javax.validation.Valid; +import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PutMapping; @@ -17,12 +18,12 @@ @RequestMapping( path = "/v1/menu/{id}", - consumes = "application/json", - produces = "application/json; charset=utf-8", + consumes = MediaType.APPLICATION_JSON_VALUE, + produces = MediaType.APPLICATION_JSON_VALUE + "; charset=utf-8", method = RequestMethod.PUT) public interface UpdateMenuController { - @PutMapping() + @PutMapping @Operation( tags = "Menu", summary = "Update a menu",