From 8983ac04e5e2caf98b509ac4416b90a65b378fbe Mon Sep 17 00:00:00 2001 From: MichalDomagala Date: Sun, 27 Nov 2022 20:03:24 +0100 Subject: [PATCH] Spring Boot 3.0.0 --- README.md | 33 +++++++------------ pom.xml | 2 +- .../michaldo/SancheroAutoConfiguration.java | 9 +++-- .../java/io/github/test/SancheroTest.java | 2 +- .../java/io/github/test/TestApplication.java | 4 +-- 5 files changed, 20 insertions(+), 30 deletions(-) diff --git a/README.md b/README.md index 8148a34..346404c 100644 --- a/README.md +++ b/README.md @@ -129,13 +129,24 @@ Example 2. `curl -v localhost:8080/manve -d '{ "p1": -1, "p2": -1}' -H "Content- ``` ### Installation + +For Spring Boot 2.x: + io.github.michaldo sanchero-starter 0.0.1 -Sanchero is compiled with dependency to Spring Boot 2.7.3 and with Java 17. +For Spring Boot 3.x: + + + io.github.michaldo + sanchero-starter + 1.0.0 + + +Sanchero is compiled with Java 17. If for any reason the library must be customized, I recommend copy-paste source code. It is just one file. @@ -146,23 +157,3 @@ If for any reason the library must be customized, I recommend copy-paste source > It is not clear to me how to fix that. Fortunately, often ConstraintViolationException is thrown only from > `Conroller` layer. -### Sanchero vs RFC 7807 "Problem details for HTTP APIs" - -RFC 7807 https://www.rfc-editor.org/rfc/rfc7807 defines standard error format. -The standard is published in 2016 and not popular so far. - -Sanchero follows Spring Boot error format. - -### Sanchero vs Zalando Problem library - -zalando/problem https://github.com/zalando/problem is RFC 7807 implementation. - -zalando/problem Spring implementation is built over `@ControllerAdvice` and has the following drawbacks: -1. Does not handle exceptions thrown in Filter -2. Does not handle `HttpServletResponse.sendError(...)` -3. Modifies security configuration: - -> For `http.authorizeRequests().anyRequest().authenticated().and().build();` response code -is 403 for vanilla Spring Boot and 401 for Spring Boot + problem-spring-web-starter v. 0.27.0 - -Sanchero is built over combination `@ControllerAdvice`/`ErrorAttributes` and not affected by these drawbacks diff --git a/pom.xml b/pom.xml index 9b9addb..04bad63 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ org.springframework.boot spring-boot-starter-parent - 2.7.3 + 3.0.0 io.github.michaldo diff --git a/src/main/java/io/github/michaldo/SancheroAutoConfiguration.java b/src/main/java/io/github/michaldo/SancheroAutoConfiguration.java index 58253ac..ac7c4b6 100644 --- a/src/main/java/io/github/michaldo/SancheroAutoConfiguration.java +++ b/src/main/java/io/github/michaldo/SancheroAutoConfiguration.java @@ -1,5 +1,9 @@ package io.github.michaldo; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.ConstraintViolationException; +import jakarta.validation.Path; import org.springframework.boot.autoconfigure.AutoConfiguration; import org.springframework.boot.autoconfigure.web.servlet.error.ErrorMvcAutoConfiguration; import org.springframework.boot.web.error.ErrorAttributeOptions; @@ -9,14 +13,9 @@ import org.springframework.web.bind.MethodArgumentNotValidException; import org.springframework.web.bind.annotation.ControllerAdvice; import org.springframework.web.bind.annotation.ExceptionHandler; -import org.springframework.web.bind.annotation.RestControllerAdvice; import org.springframework.web.context.request.RequestAttributes; import org.springframework.web.context.request.WebRequest; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import javax.validation.ConstraintViolationException; -import javax.validation.Path; import java.io.IOException; import java.util.Comparator; import java.util.Iterator; diff --git a/src/test/java/io/github/test/SancheroTest.java b/src/test/java/io/github/test/SancheroTest.java index ab59e27..711e621 100644 --- a/src/test/java/io/github/test/SancheroTest.java +++ b/src/test/java/io/github/test/SancheroTest.java @@ -30,7 +30,7 @@ void testCve() { "timestamp": "${json-unit.ignore}", "status": 400, "error": "Bad Request", - "exception": "javax.validation.ConstraintViolationException", + "exception": "jakarta.validation.ConstraintViolationException", "message": "Validation failed", "path": "/cve", "errors": [ diff --git a/src/test/java/io/github/test/TestApplication.java b/src/test/java/io/github/test/TestApplication.java index 69f122e..f7e3912 100644 --- a/src/test/java/io/github/test/TestApplication.java +++ b/src/test/java/io/github/test/TestApplication.java @@ -1,12 +1,12 @@ package io.github.test; +import jakarta.validation.Valid; +import jakarta.validation.constraints.Min; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; -import javax.validation.Valid; -import javax.validation.constraints.Min; @SpringBootApplication @RestController