From fac5c342577da38679d2a273ecd2e92207293ac7 Mon Sep 17 00:00:00 2001 From: Tatiana Fesenko Date: Mon, 24 Sep 2018 11:17:28 -0400 Subject: [PATCH 1/3] Add a PUT method to /pets/{id} to update an existing pet --- .../models/petstore-expanded.yaml | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/Expanded Pet Store (v3)/models/petstore-expanded.yaml b/Expanded Pet Store (v3)/models/petstore-expanded.yaml index f604178..bfac4b1 100644 --- a/Expanded Pet Store (v3)/models/petstore-expanded.yaml +++ b/Expanded Pet Store (v3)/models/petstore-expanded.yaml @@ -122,6 +122,37 @@ paths: application/json: schema: $ref: '#/components/schemas/Error' + + put: + description: Update a pet based on the ID + operationId: updatePet + requestBody: + content: + "application/json": + schema: + $ref: "#/components/schemas/NewPet" + parameters: + - name: id + in: path + description: ID of pet to fetch + required: true + schema: + type: integer + format: int64 + responses: + 200: + description: pet response + content: + application/json: + schema: + $ref: '#/components/schemas/Pet' + default: + description: unexpected error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + components: schemas: Pet: From 2c898bca5c0b902478ec642f77dbe60533a63cfb Mon Sep 17 00:00:00 2001 From: Tatiana Fesenko Date: Mon, 24 Sep 2018 11:18:46 -0400 Subject: [PATCH 2/3] Generate OpenAPI generator artifacts --- .../com/reprezen/demo/springboot/api/PetsApi.java | 11 +++++++++++ .../demo/springboot/api/PetsApiController.java | 4 ++++ .../reprezen/demo/springboot/api/PetsApiDelegate.java | 6 ++++++ 3 files changed, 21 insertions(+) diff --git a/Expanded Pet Store (v3)/implementation/springboot-petstore-demo/src/main/java/com/reprezen/demo/springboot/api/PetsApi.java b/Expanded Pet Store (v3)/implementation/springboot-petstore-demo/src/main/java/com/reprezen/demo/springboot/api/PetsApi.java index 468b2fe..b42ee07 100644 --- a/Expanded Pet Store (v3)/implementation/springboot-petstore-demo/src/main/java/com/reprezen/demo/springboot/api/PetsApi.java +++ b/Expanded Pet Store (v3)/implementation/springboot-petstore-demo/src/main/java/com/reprezen/demo/springboot/api/PetsApi.java @@ -69,4 +69,15 @@ public interface PetsApi { method = RequestMethod.GET) ResponseEntity> findPets(@ApiParam(value = "tags to filter by") @Valid @RequestParam(value = "tags", required = false) List tags,@ApiParam(value = "maximum number of results to return") @Valid @RequestParam(value = "limit", required = false) Integer limit); + + @ApiOperation(value = "", nickname = "updatePet", notes = "Update a pet based on the ID", response = Pet.class, tags={ }) + @ApiResponses(value = { + @ApiResponse(code = 200, message = "pet response", response = Pet.class), + @ApiResponse(code = 200, message = "unexpected error", response = Error.class) }) + @RequestMapping(value = "/pets/{id}", + produces = { "application/json" }, + consumes = { "application/json" }, + method = RequestMethod.PUT) + ResponseEntity updatePet(@ApiParam(value = "ID of pet to fetch",required=true) @PathVariable("id") Long id,@ApiParam(value = "" ) @Valid @RequestBody NewPet newPet); + } diff --git a/Expanded Pet Store (v3)/implementation/springboot-petstore-demo/src/main/java/com/reprezen/demo/springboot/api/PetsApiController.java b/Expanded Pet Store (v3)/implementation/springboot-petstore-demo/src/main/java/com/reprezen/demo/springboot/api/PetsApiController.java index 7758ad6..35789f5 100644 --- a/Expanded Pet Store (v3)/implementation/springboot-petstore-demo/src/main/java/com/reprezen/demo/springboot/api/PetsApiController.java +++ b/Expanded Pet Store (v3)/implementation/springboot-petstore-demo/src/main/java/com/reprezen/demo/springboot/api/PetsApiController.java @@ -47,4 +47,8 @@ public ResponseEntity> findPets(@ApiParam(value = "tags to filter by") return delegate.findPets(tags, limit); } + public ResponseEntity updatePet(@ApiParam(value = "ID of pet to fetch",required=true) @PathVariable("id") Long id,@ApiParam(value = "" ) @Valid @RequestBody NewPet newPet) { + return delegate.updatePet(id, newPet); + } + } diff --git a/Expanded Pet Store (v3)/implementation/springboot-petstore-demo/src/main/java/com/reprezen/demo/springboot/api/PetsApiDelegate.java b/Expanded Pet Store (v3)/implementation/springboot-petstore-demo/src/main/java/com/reprezen/demo/springboot/api/PetsApiDelegate.java index aea71c8..106b6f3 100644 --- a/Expanded Pet Store (v3)/implementation/springboot-petstore-demo/src/main/java/com/reprezen/demo/springboot/api/PetsApiDelegate.java +++ b/Expanded Pet Store (v3)/implementation/springboot-petstore-demo/src/main/java/com/reprezen/demo/springboot/api/PetsApiDelegate.java @@ -38,4 +38,10 @@ public interface PetsApiDelegate { ResponseEntity> findPets( List tags, Integer limit); + /** + * @see PetsApi#updatePet + */ + ResponseEntity updatePet( Long id, + NewPet newPet); + } From 8778e584e93e8983362d5be3fef0221284f9b24a Mon Sep 17 00:00:00 2001 From: Tatiana Fesenko Date: Mon, 24 Sep 2018 11:23:18 -0400 Subject: [PATCH 3/3] Add implementation of the new updatePet() method --- .../demo/springboot/api/PetsApiDelegateImpl.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/Expanded Pet Store (v3)/implementation/springboot-petstore-demo/src/main/java/com/reprezen/demo/springboot/api/PetsApiDelegateImpl.java b/Expanded Pet Store (v3)/implementation/springboot-petstore-demo/src/main/java/com/reprezen/demo/springboot/api/PetsApiDelegateImpl.java index 213fcf0..43c1627 100644 --- a/Expanded Pet Store (v3)/implementation/springboot-petstore-demo/src/main/java/com/reprezen/demo/springboot/api/PetsApiDelegateImpl.java +++ b/Expanded Pet Store (v3)/implementation/springboot-petstore-demo/src/main/java/com/reprezen/demo/springboot/api/PetsApiDelegateImpl.java @@ -54,4 +54,13 @@ public ResponseEntity> findPets(List tags, Integer limitObject return new ResponseEntity<>(filteredPets, HttpStatus.ACCEPTED); } + @Override + public ResponseEntity updatePet(Long id, NewPet newPet) { + if (!pets.containsKey(id)) { + return new ResponseEntity<>(HttpStatus.NOT_FOUND); + } + pets.get(id).name(newPet.getName()).tag(newPet.getTag()); + return new ResponseEntity<>(pets.get(id), HttpStatus.ACCEPTED); + } + }