From 9b051d90bee6466736571c4b3f79459ab97415dc Mon Sep 17 00:00:00 2001 From: bedwar2 Date: Sat, 7 Mar 2020 11:23:35 -0500 Subject: [PATCH] Block operation is not allowed and fails in postman Refactored so that it does not return a 500 error when testing in postman --- .../controllers/VendorController.java | 23 ++++++++++--------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/src/main/java/guru/springframework/spring5webfluxrest/controllers/VendorController.java b/src/main/java/guru/springframework/spring5webfluxrest/controllers/VendorController.java index fb9d1d3..7f3b288 100644 --- a/src/main/java/guru/springframework/spring5webfluxrest/controllers/VendorController.java +++ b/src/main/java/guru/springframework/spring5webfluxrest/controllers/VendorController.java @@ -43,17 +43,18 @@ Mono update(@PathVariable String id, @RequestBody Vendor vendor){ return vendorRepository.save(vendor); } - @PatchMapping("api/v1/vendors/{id}") - Mono patch(@PathVariable String id, @RequestBody Vendor vendor){ - - Vendor foundVendor = vendorRepository.findById(id).block(); - - if(!foundVendor.getFirstName().equals(vendor.getFirstName())){ - foundVendor.setFirstName(vendor.getFirstName()); - - return vendorRepository.save(foundVendor); - } - return Mono.just(foundVendor); + @PatchMapping(path = "/{id}") + public Mono patchVendor(@PathVariable String id, @RequestBody Vendor vendor) { + return this.vendorRepository.findById(id) + .flatMap(vendorFnd -> { + if (vendorFnd.getFirstName() != vendor.getFirstName() && vendor.getFirstName() != null && vendor.getFirstName().length() > 0) { + vendorFnd.setFirstName(vendor.getFirstName()); + } + if (vendorFnd.getLastName() != vendor.getLastName() && vendor.getLastName() != null && vendor.getLastName().length() > 0) { + vendorFnd.setLastName(vendor.getLastName()); + } + return this.vendorRepository.save(vendorFnd); + }); } }