From 5f071939d371c0be602a197b8e6b627c5ccd56a4 Mon Sep 17 00:00:00 2001 From: CodeSteak <codesteak@shellf.art> Date: Tue, 5 May 2020 23:34:17 +0200 Subject: [PATCH] Renice error handling --- .../controller/shop/ShopArticleController.java | 10 ++++++++-- .../controller/shop/ShopCheckoutController.java | 9 +++++++++ 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/prototype/src/main/java/org/hso/ecommerce/controller/shop/ShopArticleController.java b/prototype/src/main/java/org/hso/ecommerce/controller/shop/ShopArticleController.java index 5670f49..3cb860f 100644 --- a/prototype/src/main/java/org/hso/ecommerce/controller/shop/ShopArticleController.java +++ b/prototype/src/main/java/org/hso/ecommerce/controller/shop/ShopArticleController.java @@ -8,6 +8,8 @@ import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import java.util.ArrayList; import java.util.List; @@ -59,7 +61,9 @@ public class ShopArticleController { } @PostMapping("/{id}") - public String shopArticlesByIdBuy(HttpSession session, + public String shopArticlesByIdBuy(HttpServletRequest request, + HttpServletResponse response, + HttpSession session, @RequestAttribute(value = "shoppingCart") ShoppingCart shoppingCart, @PathVariable("id") Long id, @RequestParam("quantity") Integer quantity, @@ -69,7 +73,9 @@ public class ShopArticleController { Optional<Article> article = articleRepository.findById(id); if (!article.isPresent()) { - throw new RuntimeException("Article not found!"); + request.setAttribute("error", "Der Artikel wurde nicht gefunden."); + response.setStatus(HttpServletResponse.SC_NOT_FOUND); + return "error/404"; } if (setAmount != null && setAmount) { diff --git a/prototype/src/main/java/org/hso/ecommerce/controller/shop/ShopCheckoutController.java b/prototype/src/main/java/org/hso/ecommerce/controller/shop/ShopCheckoutController.java index 66ced97..ffdd9f3 100644 --- a/prototype/src/main/java/org/hso/ecommerce/controller/shop/ShopCheckoutController.java +++ b/prototype/src/main/java/org/hso/ecommerce/controller/shop/ShopCheckoutController.java @@ -20,6 +20,7 @@ import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import java.util.ArrayList; import java.util.TreeMap; @@ -97,6 +98,8 @@ public class ShopCheckoutController { @PostMapping("/checkoutFinish") public String shopCheckoutFinish( + HttpServletRequest request, + HttpServletResponse response, @RequestAttribute(value = "user") User user, @RequestAttribute(value = "shoppingCart") ShoppingCart shoppingCart, @RequestParam("address") String address, @@ -105,6 +108,12 @@ public class ShopCheckoutController { @RequestParam("expected_total") Integer expectedPrice ) { + if (shoppingCart.getRevision() != cartRevision) { + request.setAttribute("error", "Der Warenkorb wurde zwischenzeitlich bearbeitet. Daher die Kaufvorgang nicht abgeschlossen werden. Bitte versuchen Sie es erneut."); + response.setStatus(HttpServletResponse.SC_CONFLICT); + return "shop/checkout"; + } + // Must be refetched for persitence. user = userRepository.findById(user.id).get();