From 8ad1147c5114149aaf02ecfc4ab016b9c9f28717 Mon Sep 17 00:00:00 2001 From: pvdb Date: Mon, 23 Feb 2026 10:12:24 +0100 Subject: [PATCH 01/23] merge NoResourceFoundExceptionHandler into RoutingExceptionsHandler --- .../AbstractRoutingExceptionsHandler.java | 12 ++++++ .../NoResourceFoundExceptionHandler.java | 28 -------------- .../AbstractRoutingExceptionsHandlerTest.java | 22 +++++++++++ .../NoResourceFoundExceptionHandlerTest.java | 37 ------------------- src/main/asciidoc/index.adoc | 3 +- 5 files changed, 35 insertions(+), 67 deletions(-) delete mode 100644 belgif-rest-problem-spring-boot-common-server/src/main/java/io/github/belgif/rest/problem/spring/NoResourceFoundExceptionHandler.java delete mode 100644 belgif-rest-problem-spring-boot-common-server/src/test/java/io/github/belgif/rest/problem/spring/NoResourceFoundExceptionHandlerTest.java diff --git a/belgif-rest-problem-spring-boot-common-server/src/main/java/io/github/belgif/rest/problem/spring/AbstractRoutingExceptionsHandler.java b/belgif-rest-problem-spring-boot-common-server/src/main/java/io/github/belgif/rest/problem/spring/AbstractRoutingExceptionsHandler.java index cb0566f4..93ca4000 100644 --- a/belgif-rest-problem-spring-boot-common-server/src/main/java/io/github/belgif/rest/problem/spring/AbstractRoutingExceptionsHandler.java +++ b/belgif-rest-problem-spring-boot-common-server/src/main/java/io/github/belgif/rest/problem/spring/AbstractRoutingExceptionsHandler.java @@ -14,8 +14,10 @@ import org.springframework.web.bind.MissingRequestHeaderException; import org.springframework.web.bind.MissingServletRequestParameterException; import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.servlet.resource.NoResourceFoundException; import io.github.belgif.rest.problem.BadRequestProblem; +import io.github.belgif.rest.problem.ResourceNotFoundProblem; import io.github.belgif.rest.problem.api.InEnum; import io.github.belgif.rest.problem.api.InputValidationIssues; import io.github.belgif.rest.problem.api.Problem; @@ -113,4 +115,14 @@ public ResponseEntity handleHttpMediaTypeNotSupported(HttpMediaTypeNotSupp return ResponseEntity.status(HttpStatus.UNSUPPORTED_MEDIA_TYPE.value()).build(); } + @ExceptionHandler(NoResourceFoundException.class) + public ResponseEntity handleNoResourceFoundException( + NoResourceFoundException exception) { + ResourceNotFoundProblem problem = new ResourceNotFoundProblem(); + problem.setDetail("No resource %s found".formatted( + exception.getResourcePath().startsWith("/") ? exception.getResourcePath() + : "/" + exception.getResourcePath())); + return ProblemMediaType.INSTANCE.toResponse(problem); + } + } diff --git a/belgif-rest-problem-spring-boot-common-server/src/main/java/io/github/belgif/rest/problem/spring/NoResourceFoundExceptionHandler.java b/belgif-rest-problem-spring-boot-common-server/src/main/java/io/github/belgif/rest/problem/spring/NoResourceFoundExceptionHandler.java deleted file mode 100644 index ad2e4d68..00000000 --- a/belgif-rest-problem-spring-boot-common-server/src/main/java/io/github/belgif/rest/problem/spring/NoResourceFoundExceptionHandler.java +++ /dev/null @@ -1,28 +0,0 @@ -package io.github.belgif.rest.problem.spring; - -import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication; -import org.springframework.core.annotation.Order; -import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.ExceptionHandler; -import org.springframework.web.bind.annotation.RestControllerAdvice; -import org.springframework.web.servlet.resource.NoResourceFoundException; - -import io.github.belgif.rest.problem.ResourceNotFoundProblem; -import io.github.belgif.rest.problem.api.Problem; - -@RestControllerAdvice -@Order(1) -@ConditionalOnWebApplication -public class NoResourceFoundExceptionHandler { - - @ExceptionHandler(NoResourceFoundException.class) - public ResponseEntity handleNoResourceFoundException( - NoResourceFoundException exception) { - ResourceNotFoundProblem problem = new ResourceNotFoundProblem(); - problem.setDetail("No resource %s found".formatted( - exception.getResourcePath().startsWith("/") ? exception.getResourcePath() - : "/" + exception.getResourcePath())); - return ProblemMediaType.INSTANCE.toResponse(problem); - } - -} diff --git a/belgif-rest-problem-spring-boot-common-server/src/test/java/io/github/belgif/rest/problem/spring/AbstractRoutingExceptionsHandlerTest.java b/belgif-rest-problem-spring-boot-common-server/src/test/java/io/github/belgif/rest/problem/spring/AbstractRoutingExceptionsHandlerTest.java index e763a3a4..79920daa 100644 --- a/belgif-rest-problem-spring-boot-common-server/src/test/java/io/github/belgif/rest/problem/spring/AbstractRoutingExceptionsHandlerTest.java +++ b/belgif-rest-problem-spring-boot-common-server/src/test/java/io/github/belgif/rest/problem/spring/AbstractRoutingExceptionsHandlerTest.java @@ -21,6 +21,7 @@ import org.springframework.web.bind.MissingRequestHeaderException; import org.springframework.web.bind.MissingServletRequestParameterException; import org.springframework.web.client.RestTemplate; +import org.springframework.web.servlet.resource.NoResourceFoundException; import com.fasterxml.jackson.core.JacksonException; import com.fasterxml.jackson.core.JsonParseException; @@ -29,6 +30,7 @@ import io.github.belgif.rest.problem.BadRequestProblem; import io.github.belgif.rest.problem.InternalServerErrorProblem; +import io.github.belgif.rest.problem.ResourceNotFoundProblem; import io.github.belgif.rest.problem.api.InEnum; import io.github.belgif.rest.problem.api.Problem; import io.github.belgif.rest.problem.internal.Jackson2Util; @@ -191,4 +193,24 @@ void handleHttpMediaTypeNotSupported() { assertThat(response.getStatusCode().value()).isEqualTo(415); } + @Test + void handleNoResourceFoundException() { + ResponseEntity entity = handler.handleNoResourceFoundException( + new NoResourceFoundException(HttpMethod.GET, "/test")); + assertThat(entity.getStatusCode().value()).isEqualTo(404); + assertThat(entity.getHeaders().getContentType()).isEqualTo(ProblemMediaType.INSTANCE); + ResourceNotFoundProblem problem = (ResourceNotFoundProblem) entity.getBody(); + assertThat(problem.getDetail()).isEqualTo("No resource /test found"); + } + + @Test + void handleNoResourceFoundExceptionAddsLeadingSlash() { + ResponseEntity entity = handler.handleNoResourceFoundException( + new NoResourceFoundException(HttpMethod.GET, "test")); + assertThat(entity.getStatusCode().value()).isEqualTo(404); + assertThat(entity.getHeaders().getContentType()).isEqualTo(ProblemMediaType.INSTANCE); + ResourceNotFoundProblem problem = (ResourceNotFoundProblem) entity.getBody(); + assertThat(problem.getDetail()).isEqualTo("No resource /test found"); + } + } diff --git a/belgif-rest-problem-spring-boot-common-server/src/test/java/io/github/belgif/rest/problem/spring/NoResourceFoundExceptionHandlerTest.java b/belgif-rest-problem-spring-boot-common-server/src/test/java/io/github/belgif/rest/problem/spring/NoResourceFoundExceptionHandlerTest.java deleted file mode 100644 index 5de8f636..00000000 --- a/belgif-rest-problem-spring-boot-common-server/src/test/java/io/github/belgif/rest/problem/spring/NoResourceFoundExceptionHandlerTest.java +++ /dev/null @@ -1,37 +0,0 @@ -package io.github.belgif.rest.problem.spring; - -import static org.assertj.core.api.Assertions.*; - -import org.junit.jupiter.api.Test; -import org.springframework.http.HttpMethod; -import org.springframework.http.ResponseEntity; -import org.springframework.web.servlet.resource.NoResourceFoundException; - -import io.github.belgif.rest.problem.ResourceNotFoundProblem; -import io.github.belgif.rest.problem.api.Problem; - -class NoResourceFoundExceptionHandlerTest { - - private final NoResourceFoundExceptionHandler handler = new NoResourceFoundExceptionHandler(); - - @Test - void handleNoResourceFoundException() { - ResponseEntity entity = handler.handleNoResourceFoundException( - new NoResourceFoundException(HttpMethod.GET, "/test")); - assertThat(entity.getStatusCode().value()).isEqualTo(404); - assertThat(entity.getHeaders().getContentType()).isEqualTo(ProblemMediaType.INSTANCE); - ResourceNotFoundProblem problem = (ResourceNotFoundProblem) entity.getBody(); - assertThat(problem.getDetail()).isEqualTo("No resource /test found"); - } - - @Test - void handleNoResourceFoundExceptionAddsLeadingSlash() { - ResponseEntity entity = handler.handleNoResourceFoundException( - new NoResourceFoundException(HttpMethod.GET, "test")); - assertThat(entity.getStatusCode().value()).isEqualTo(404); - assertThat(entity.getHeaders().getContentType()).isEqualTo(ProblemMediaType.INSTANCE); - ResourceNotFoundProblem problem = (ResourceNotFoundProblem) entity.getBody(); - assertThat(problem.getDetail()).isEqualTo("No resource /test found"); - } - -} diff --git a/src/main/asciidoc/index.adoc b/src/main/asciidoc/index.adoc index 56ecbfcd..b9dd0020 100644 --- a/src/main/asciidoc/index.adoc +++ b/src/main/asciidoc/index.adoc @@ -898,12 +898,11 @@ io.github.belgif.rest.problem.scan-additional-problem-packages=com.acme.custom * *ProblemExceptionHandler:* an exception handler for RestControllers that handles the response serialization for Problem exceptions, and converts all other uncaught exceptions to an InternalServerErrorProblem. * *BeanValidationExceptionsHandler:* an exception handler for RestControllers that converts bean validation related exceptions to HTTP 400 BadRequestProblem. * *InvalidRequestExceptionHandler:* an exception handler for the link:https://bitbucket.org/atlassian/swagger-request-validator/src/master/[Atlassian swagger-request-validator] that converts InvalidRequestException to the correct Problem type. -* *RoutingExceptionsHandler:* an exception handler for RestControllers that converts routing related validation exceptions to HTTP 400 BadRequestProblem. +* *RoutingExceptionsHandler:* an exception handler for RestControllers that converts request handling exceptions to HTTP 4XX problems. * *ProblemWebClientCustomizer:* a WebClientCustomizer that registers a filter that converts problem responses to Problem exceptions. This handles integration with the https://docs.spring.io/spring-framework/reference/web/webflux-webclient.html[Reactive WebClient]. * *ProblemResponseErrorHandler:* a RestTemplate and RestClient error handler that converts problem responses to Problem exceptions. * *ProblemRestTemplateCustomizer:* a RestTemplateCustomizer that registers the ProblemResponseErrorHandler. -* *NoResourceFoundExceptionHandler:* an exception handler for RestControllers that converts NoResourceFoundException to HTTP 404 ResourceNotFoundProblem. * *ProblemRestClientCustomizer:* a RestClientCustomizer that registers the ProblemResponseErrorHandler. * *AnnotationParameterNameProvider:* a bean validation ParameterNameProvider that retrieves parameter names from Spring MVC annotations * *ProblemValidationConfigurationCustomizer:* a ValidationConfigurationCustomizer that registers the AnnotationParameterNameProvider From 8ba5f31d45999a98c7d93a922db45c6715f6b7a9 Mon Sep 17 00:00:00 2001 From: pvdb Date: Mon, 23 Feb 2026 11:28:38 +0100 Subject: [PATCH 02/23] don't use Spring Boot's @ConfigurationProperties --- .../rest/problem/spring/ProblemAutoConfiguration.java | 2 -- .../spring/ProblemConfigurationProperties.java | 10 +++++++--- .../spring/ProblemExtConfigurationProperties.java | 11 +++++++---- 3 files changed, 14 insertions(+), 9 deletions(-) diff --git a/belgif-rest-problem-spring-boot-common/src/main/java/io/github/belgif/rest/problem/spring/ProblemAutoConfiguration.java b/belgif-rest-problem-spring-boot-common/src/main/java/io/github/belgif/rest/problem/spring/ProblemAutoConfiguration.java index e3fe9a52..96c2ab73 100644 --- a/belgif-rest-problem-spring-boot-common/src/main/java/io/github/belgif/rest/problem/spring/ProblemAutoConfiguration.java +++ b/belgif-rest-problem-spring-boot-common/src/main/java/io/github/belgif/rest/problem/spring/ProblemAutoConfiguration.java @@ -1,7 +1,6 @@ package io.github.belgif.rest.problem.spring; import org.springframework.boot.autoconfigure.AutoConfiguration; -import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.context.annotation.ComponentScan; /** @@ -9,7 +8,6 @@ */ @AutoConfiguration @ComponentScan("io.github.belgif.rest.problem") -@EnableConfigurationProperties({ ProblemConfigurationProperties.class, ProblemExtConfigurationProperties.class }) public class ProblemAutoConfiguration { } diff --git a/belgif-rest-problem-spring-boot-common/src/main/java/io/github/belgif/rest/problem/spring/ProblemConfigurationProperties.java b/belgif-rest-problem-spring-boot-common/src/main/java/io/github/belgif/rest/problem/spring/ProblemConfigurationProperties.java index 52585db1..c104f59f 100644 --- a/belgif-rest-problem-spring-boot-common/src/main/java/io/github/belgif/rest/problem/spring/ProblemConfigurationProperties.java +++ b/belgif-rest-problem-spring-boot-common/src/main/java/io/github/belgif/rest/problem/spring/ProblemConfigurationProperties.java @@ -4,14 +4,15 @@ import java.util.List; import org.springframework.beans.factory.InitializingBean; -import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Component; import io.github.belgif.rest.problem.config.ProblemConfig; /** * Lists all supported application.properties configurations for the belgif-rest-problem-spring library. */ -@ConfigurationProperties(prefix = "io.github.belgif.rest.problem") +@Component // not using @ConfigurationProperties to avoid Spring Boot dependency public class ProblemConfigurationProperties implements InitializingBean { private List scanAdditionalProblemPackages = new ArrayList<>(); @@ -20,6 +21,7 @@ public class ProblemConfigurationProperties implements InitializingBean { private Boolean stackTraceEnabled = null; + @Value("${io.github.belgif.rest.problem.scan-additional-problem-packages:#{{}}}") public void setScanAdditionalProblemPackages(List scanAdditionalProblemPackages) { this.scanAdditionalProblemPackages = scanAdditionalProblemPackages; } @@ -28,10 +30,12 @@ public List getScanAdditionalProblemPackages() { return scanAdditionalProblemPackages; } - public void setI18nEnabled(boolean i18nEnabled) { + @Value("${io.github.belgif.rest.problem.i18n-enabled:#{null}}") + public void setI18nEnabled(Boolean i18nEnabled) { this.i18nEnabled = i18nEnabled; } + @Value("${io.github.belgif.rest.problem.stack-trace-enabled:#{null}}") public void setStackTraceEnabled(Boolean stackTraceEnabled) { this.stackTraceEnabled = stackTraceEnabled; } diff --git a/belgif-rest-problem-spring-boot-common/src/main/java/io/github/belgif/rest/problem/spring/ProblemExtConfigurationProperties.java b/belgif-rest-problem-spring-boot-common/src/main/java/io/github/belgif/rest/problem/spring/ProblemExtConfigurationProperties.java index 3d947fc9..05570665 100644 --- a/belgif-rest-problem-spring-boot-common/src/main/java/io/github/belgif/rest/problem/spring/ProblemExtConfigurationProperties.java +++ b/belgif-rest-problem-spring-boot-common/src/main/java/io/github/belgif/rest/problem/spring/ProblemExtConfigurationProperties.java @@ -1,25 +1,28 @@ package io.github.belgif.rest.problem.spring; import org.springframework.beans.factory.InitializingBean; -import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Component; import io.github.belgif.rest.problem.config.ProblemConfig; /** * Lists all supported application.properties extension configurations for the belgif-rest-problem-spring library. */ -@ConfigurationProperties(prefix = "io.github.belgif.rest.problem.ext") +@Component // not using @ConfigurationProperties to avoid Spring Boot dependency public class ProblemExtConfigurationProperties implements InitializingBean { private Boolean issueTypesEnabled = null; private Boolean inputsArrayEnabled = null; - public void setIssueTypesEnabled(boolean issueTypesEnabled) { + @Value("${io.github.belgif.rest.problem.ext.issue-types-enabled:#{null}}") + public void setIssueTypesEnabled(Boolean issueTypesEnabled) { this.issueTypesEnabled = issueTypesEnabled; } - public void setInputsArrayEnabled(boolean inputsArrayEnabled) { + @Value("${io.github.belgif.rest.problem.ext.inputs-array-enabled:#{null}}") + public void setInputsArrayEnabled(Boolean inputsArrayEnabled) { this.inputsArrayEnabled = inputsArrayEnabled; } From 663387b2c25065d490d5adca48205bdb7db63771 Mon Sep 17 00:00:00 2001 From: pvdb Date: Mon, 23 Feb 2026 11:52:35 +0100 Subject: [PATCH 03/23] [spring] specific java packages for server and client --- .../spring/{ => client}/ProblemResponseErrorHandler.java | 2 +- .../spring/{ => client}/ProblemRestClientCustomizer.java | 2 +- .../spring/{ => client}/ProblemRestTemplateCustomizer.java | 2 +- .../spring/{ => client}/ProblemWebClientCustomizer.java | 2 +- .../{ => server}/InvalidRequestExceptionHandler.java | 2 +- .../ProblemValidationConfigurationCustomizer.java | 2 +- .../spring/{ => server}/RoutingExceptionsHandler.java | 2 +- .../{ => server}/InvalidRequestExceptionHandlerTest.java | 2 +- .../spring/{ => client}/ProblemResponseErrorHandler.java | 2 +- .../spring/{ => client}/ProblemRestClientCustomizer.java | 2 +- .../spring/{ => client}/ProblemRestTemplateCustomizer.java | 2 +- .../spring/{ => client}/ProblemWebClientCustomizer.java | 2 +- .../{ => server}/InvalidRequestExceptionHandler.java | 2 +- .../ProblemValidationConfigurationCustomizer.java | 2 +- .../spring/{ => server}/RoutingExceptionsHandler.java | 2 +- .../{ => server}/InvalidRequestExceptionHandlerTest.java | 2 +- .../{ => client}/AbstractProblemResponseErrorHandler.java | 3 ++- .../{ => client}/AbstractProblemRestClientCustomizer.java | 2 +- .../AbstractProblemRestTemplateCustomizer.java | 2 +- .../{ => client}/AbstractProblemWebClientCustomizer.java | 3 ++- .../AbstractProblemResponseErrorHandlerTest.java | 5 +++-- .../AbstractProblemRestClientCustomizerTest.java | 2 +- .../AbstractProblemRestTemplateCustomizerTest.java | 2 +- .../AbstractProblemWebClientCustomizerTest.java | 2 +- .../AbstractInvalidRequestExceptionHandler.java | 5 +++-- .../AbstractProblemValidationConfigurationCustomizer.java | 2 +- .../{ => server}/AbstractRoutingExceptionsHandler.java | 3 ++- .../{ => server}/AnnotationParameterNameProvider.java | 4 ++-- .../{ => server}/BeanValidationExceptionsHandler.java | 7 ++++--- .../spring/{ => server}/ProblemExceptionHandler.java | 3 ++- .../i18n/LocaleContextHolderLocaleResolver.java | 2 +- .../{ => server}/internal/BeanValidationExceptionUtil.java | 2 +- .../internal/CachedAnnotationParameterNameSupport.java | 2 +- .../spring/{ => server}/internal/DetermineSourceUtil.java | 2 +- .../{ => server}/internal/InvalidRequestExceptionUtil.java | 2 +- .../io.github.belgif.rest.problem.i18n.LocaleResolver | 2 +- .../AbstractInvalidRequestExceptionHandlerTest.java | 2 +- ...stractProblemValidationConfigurationCustomizerTest.java | 2 +- .../{ => server}/AbstractRoutingExceptionsHandlerTest.java | 3 ++- .../{ => server}/AnnotationParameterNameProviderTest.java | 2 +- .../{ => server}/BeanValidationExceptionsHandlerTest.java | 3 ++- .../spring/{ => server}/ProblemExceptionHandlerTest.java | 2 +- .../i18n/LocaleContextHolderLocaleResolverTest.java | 2 +- .../internal/BeanValidationExceptionUtilTest.java | 2 +- .../internal/CachedAnnotationParameterNameSupportTest.java | 2 +- .../{ => server}/internal/DetermineSourceUtilTest.java | 2 +- .../internal/InvalidRequestExceptionUtilTest.java | 2 +- 47 files changed, 61 insertions(+), 52 deletions(-) rename belgif-rest-problem-spring-boot-3-client/src/main/java/io/github/belgif/rest/problem/spring/{ => client}/ProblemResponseErrorHandler.java (90%) rename belgif-rest-problem-spring-boot-3-client/src/main/java/io/github/belgif/rest/problem/spring/{ => client}/ProblemRestClientCustomizer.java (92%) rename belgif-rest-problem-spring-boot-3-client/src/main/java/io/github/belgif/rest/problem/spring/{ => client}/ProblemRestTemplateCustomizer.java (93%) rename belgif-rest-problem-spring-boot-3-client/src/main/java/io/github/belgif/rest/problem/spring/{ => client}/ProblemWebClientCustomizer.java (91%) rename belgif-rest-problem-spring-boot-3-server/src/main/java/io/github/belgif/rest/problem/spring/{ => server}/InvalidRequestExceptionHandler.java (97%) rename belgif-rest-problem-spring-boot-3-server/src/main/java/io/github/belgif/rest/problem/spring/{ => server}/ProblemValidationConfigurationCustomizer.java (92%) rename belgif-rest-problem-spring-boot-3-server/src/main/java/io/github/belgif/rest/problem/spring/{ => server}/RoutingExceptionsHandler.java (96%) rename belgif-rest-problem-spring-boot-3-server/src/test/java/io/github/belgif/rest/problem/spring/{ => server}/InvalidRequestExceptionHandlerTest.java (97%) rename belgif-rest-problem-spring-boot-4-client/src/main/java/io/github/belgif/rest/problem/spring/{ => client}/ProblemResponseErrorHandler.java (90%) rename belgif-rest-problem-spring-boot-4-client/src/main/java/io/github/belgif/rest/problem/spring/{ => client}/ProblemRestClientCustomizer.java (92%) rename belgif-rest-problem-spring-boot-4-client/src/main/java/io/github/belgif/rest/problem/spring/{ => client}/ProblemRestTemplateCustomizer.java (93%) rename belgif-rest-problem-spring-boot-4-client/src/main/java/io/github/belgif/rest/problem/spring/{ => client}/ProblemWebClientCustomizer.java (91%) rename belgif-rest-problem-spring-boot-4-server/src/main/java/io/github/belgif/rest/problem/spring/{ => server}/InvalidRequestExceptionHandler.java (98%) rename belgif-rest-problem-spring-boot-4-server/src/main/java/io/github/belgif/rest/problem/spring/{ => server}/ProblemValidationConfigurationCustomizer.java (92%) rename belgif-rest-problem-spring-boot-4-server/src/main/java/io/github/belgif/rest/problem/spring/{ => server}/RoutingExceptionsHandler.java (96%) rename belgif-rest-problem-spring-boot-4-server/src/test/java/io/github/belgif/rest/problem/spring/{ => server}/InvalidRequestExceptionHandlerTest.java (97%) rename belgif-rest-problem-spring-boot-common-client/src/main/java/io/github/belgif/rest/problem/spring/{ => client}/AbstractProblemResponseErrorHandler.java (94%) rename belgif-rest-problem-spring-boot-common-client/src/main/java/io/github/belgif/rest/problem/spring/{ => client}/AbstractProblemRestClientCustomizer.java (92%) rename belgif-rest-problem-spring-boot-common-client/src/main/java/io/github/belgif/rest/problem/spring/{ => client}/AbstractProblemRestTemplateCustomizer.java (92%) rename belgif-rest-problem-spring-boot-common-client/src/main/java/io/github/belgif/rest/problem/spring/{ => client}/AbstractProblemWebClientCustomizer.java (91%) rename belgif-rest-problem-spring-boot-common-client/src/test/java/io/github/belgif/rest/problem/spring/{ => client}/AbstractProblemResponseErrorHandlerTest.java (95%) rename belgif-rest-problem-spring-boot-common-client/src/test/java/io/github/belgif/rest/problem/spring/{ => client}/AbstractProblemRestClientCustomizerTest.java (93%) rename belgif-rest-problem-spring-boot-common-client/src/test/java/io/github/belgif/rest/problem/spring/{ => client}/AbstractProblemRestTemplateCustomizerTest.java (92%) rename belgif-rest-problem-spring-boot-common-client/src/test/java/io/github/belgif/rest/problem/spring/{ => client}/AbstractProblemWebClientCustomizerTest.java (98%) rename belgif-rest-problem-spring-boot-common-server/src/main/java/io/github/belgif/rest/problem/spring/{ => server}/AbstractInvalidRequestExceptionHandler.java (96%) rename belgif-rest-problem-spring-boot-common-server/src/main/java/io/github/belgif/rest/problem/spring/{ => server}/AbstractProblemValidationConfigurationCustomizer.java (87%) rename belgif-rest-problem-spring-boot-common-server/src/main/java/io/github/belgif/rest/problem/spring/{ => server}/AbstractRoutingExceptionsHandler.java (98%) rename belgif-rest-problem-spring-boot-common-server/src/main/java/io/github/belgif/rest/problem/spring/{ => server}/AnnotationParameterNameProvider.java (78%) rename belgif-rest-problem-spring-boot-common-server/src/main/java/io/github/belgif/rest/problem/spring/{ => server}/BeanValidationExceptionsHandler.java (93%) rename belgif-rest-problem-spring-boot-common-server/src/main/java/io/github/belgif/rest/problem/spring/{ => server}/ProblemExceptionHandler.java (91%) rename belgif-rest-problem-spring-boot-common-server/src/main/java/io/github/belgif/rest/problem/spring/{ => server}/i18n/LocaleContextHolderLocaleResolver.java (88%) rename belgif-rest-problem-spring-boot-common-server/src/main/java/io/github/belgif/rest/problem/spring/{ => server}/internal/BeanValidationExceptionUtil.java (97%) rename belgif-rest-problem-spring-boot-common-server/src/main/java/io/github/belgif/rest/problem/spring/{ => server}/internal/CachedAnnotationParameterNameSupport.java (97%) rename belgif-rest-problem-spring-boot-common-server/src/main/java/io/github/belgif/rest/problem/spring/{ => server}/internal/DetermineSourceUtil.java (98%) rename belgif-rest-problem-spring-boot-common-server/src/main/java/io/github/belgif/rest/problem/spring/{ => server}/internal/InvalidRequestExceptionUtil.java (97%) rename belgif-rest-problem-spring-boot-common-server/src/test/java/io/github/belgif/rest/problem/spring/{ => server}/AbstractInvalidRequestExceptionHandlerTest.java (99%) rename belgif-rest-problem-spring-boot-common-server/src/test/java/io/github/belgif/rest/problem/spring/{ => server}/AbstractProblemValidationConfigurationCustomizerTest.java (95%) rename belgif-rest-problem-spring-boot-common-server/src/test/java/io/github/belgif/rest/problem/spring/{ => server}/AbstractRoutingExceptionsHandlerTest.java (99%) rename belgif-rest-problem-spring-boot-common-server/src/test/java/io/github/belgif/rest/problem/spring/{ => server}/AnnotationParameterNameProviderTest.java (88%) rename belgif-rest-problem-spring-boot-common-server/src/test/java/io/github/belgif/rest/problem/spring/{ => server}/BeanValidationExceptionsHandlerTest.java (98%) rename belgif-rest-problem-spring-boot-common-server/src/test/java/io/github/belgif/rest/problem/spring/{ => server}/ProblemExceptionHandlerTest.java (96%) rename belgif-rest-problem-spring-boot-common-server/src/test/java/io/github/belgif/rest/problem/spring/{ => server}/i18n/LocaleContextHolderLocaleResolverTest.java (91%) rename belgif-rest-problem-spring-boot-common-server/src/test/java/io/github/belgif/rest/problem/spring/{ => server}/internal/BeanValidationExceptionUtilTest.java (99%) rename belgif-rest-problem-spring-boot-common-server/src/test/java/io/github/belgif/rest/problem/spring/{ => server}/internal/CachedAnnotationParameterNameSupportTest.java (97%) rename belgif-rest-problem-spring-boot-common-server/src/test/java/io/github/belgif/rest/problem/spring/{ => server}/internal/DetermineSourceUtilTest.java (98%) rename belgif-rest-problem-spring-boot-common-server/src/test/java/io/github/belgif/rest/problem/spring/{ => server}/internal/InvalidRequestExceptionUtilTest.java (99%) diff --git a/belgif-rest-problem-spring-boot-3-client/src/main/java/io/github/belgif/rest/problem/spring/ProblemResponseErrorHandler.java b/belgif-rest-problem-spring-boot-3-client/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemResponseErrorHandler.java similarity index 90% rename from belgif-rest-problem-spring-boot-3-client/src/main/java/io/github/belgif/rest/problem/spring/ProblemResponseErrorHandler.java rename to belgif-rest-problem-spring-boot-3-client/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemResponseErrorHandler.java index fa92ed58..8563eb24 100644 --- a/belgif-rest-problem-spring-boot-3-client/src/main/java/io/github/belgif/rest/problem/spring/ProblemResponseErrorHandler.java +++ b/belgif-rest-problem-spring-boot-3-client/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemResponseErrorHandler.java @@ -1,4 +1,4 @@ -package io.github.belgif.rest.problem.spring; +package io.github.belgif.rest.problem.spring.client; import org.springframework.stereotype.Component; diff --git a/belgif-rest-problem-spring-boot-3-client/src/main/java/io/github/belgif/rest/problem/spring/ProblemRestClientCustomizer.java b/belgif-rest-problem-spring-boot-3-client/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemRestClientCustomizer.java similarity index 92% rename from belgif-rest-problem-spring-boot-3-client/src/main/java/io/github/belgif/rest/problem/spring/ProblemRestClientCustomizer.java rename to belgif-rest-problem-spring-boot-3-client/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemRestClientCustomizer.java index 65672822..7070322a 100644 --- a/belgif-rest-problem-spring-boot-3-client/src/main/java/io/github/belgif/rest/problem/spring/ProblemRestClientCustomizer.java +++ b/belgif-rest-problem-spring-boot-3-client/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemRestClientCustomizer.java @@ -1,4 +1,4 @@ -package io.github.belgif.rest.problem.spring; +package io.github.belgif.rest.problem.spring.client; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.web.client.RestClientCustomizer; diff --git a/belgif-rest-problem-spring-boot-3-client/src/main/java/io/github/belgif/rest/problem/spring/ProblemRestTemplateCustomizer.java b/belgif-rest-problem-spring-boot-3-client/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemRestTemplateCustomizer.java similarity index 93% rename from belgif-rest-problem-spring-boot-3-client/src/main/java/io/github/belgif/rest/problem/spring/ProblemRestTemplateCustomizer.java rename to belgif-rest-problem-spring-boot-3-client/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemRestTemplateCustomizer.java index ad83b432..dee9f85c 100644 --- a/belgif-rest-problem-spring-boot-3-client/src/main/java/io/github/belgif/rest/problem/spring/ProblemRestTemplateCustomizer.java +++ b/belgif-rest-problem-spring-boot-3-client/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemRestTemplateCustomizer.java @@ -1,4 +1,4 @@ -package io.github.belgif.rest.problem.spring; +package io.github.belgif.rest.problem.spring.client; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.web.client.RestTemplateCustomizer; diff --git a/belgif-rest-problem-spring-boot-3-client/src/main/java/io/github/belgif/rest/problem/spring/ProblemWebClientCustomizer.java b/belgif-rest-problem-spring-boot-3-client/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemWebClientCustomizer.java similarity index 91% rename from belgif-rest-problem-spring-boot-3-client/src/main/java/io/github/belgif/rest/problem/spring/ProblemWebClientCustomizer.java rename to belgif-rest-problem-spring-boot-3-client/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemWebClientCustomizer.java index c3b4ecff..88fe183f 100644 --- a/belgif-rest-problem-spring-boot-3-client/src/main/java/io/github/belgif/rest/problem/spring/ProblemWebClientCustomizer.java +++ b/belgif-rest-problem-spring-boot-3-client/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemWebClientCustomizer.java @@ -1,4 +1,4 @@ -package io.github.belgif.rest.problem.spring; +package io.github.belgif.rest.problem.spring.client; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.web.reactive.function.client.WebClientCustomizer; diff --git a/belgif-rest-problem-spring-boot-3-server/src/main/java/io/github/belgif/rest/problem/spring/InvalidRequestExceptionHandler.java b/belgif-rest-problem-spring-boot-3-server/src/main/java/io/github/belgif/rest/problem/spring/server/InvalidRequestExceptionHandler.java similarity index 97% rename from belgif-rest-problem-spring-boot-3-server/src/main/java/io/github/belgif/rest/problem/spring/InvalidRequestExceptionHandler.java rename to belgif-rest-problem-spring-boot-3-server/src/main/java/io/github/belgif/rest/problem/spring/server/InvalidRequestExceptionHandler.java index 9db7da99..750e4fd3 100644 --- a/belgif-rest-problem-spring-boot-3-server/src/main/java/io/github/belgif/rest/problem/spring/InvalidRequestExceptionHandler.java +++ b/belgif-rest-problem-spring-boot-3-server/src/main/java/io/github/belgif/rest/problem/spring/server/InvalidRequestExceptionHandler.java @@ -1,4 +1,4 @@ -package io.github.belgif.rest.problem.spring; +package io.github.belgif.rest.problem.spring.server; import java.io.IOException; import java.io.InputStream; diff --git a/belgif-rest-problem-spring-boot-3-server/src/main/java/io/github/belgif/rest/problem/spring/ProblemValidationConfigurationCustomizer.java b/belgif-rest-problem-spring-boot-3-server/src/main/java/io/github/belgif/rest/problem/spring/server/ProblemValidationConfigurationCustomizer.java similarity index 92% rename from belgif-rest-problem-spring-boot-3-server/src/main/java/io/github/belgif/rest/problem/spring/ProblemValidationConfigurationCustomizer.java rename to belgif-rest-problem-spring-boot-3-server/src/main/java/io/github/belgif/rest/problem/spring/server/ProblemValidationConfigurationCustomizer.java index c7ef15f5..83c6902c 100644 --- a/belgif-rest-problem-spring-boot-3-server/src/main/java/io/github/belgif/rest/problem/spring/ProblemValidationConfigurationCustomizer.java +++ b/belgif-rest-problem-spring-boot-3-server/src/main/java/io/github/belgif/rest/problem/spring/server/ProblemValidationConfigurationCustomizer.java @@ -1,4 +1,4 @@ -package io.github.belgif.rest.problem.spring; +package io.github.belgif.rest.problem.spring.server; import jakarta.validation.Configuration; diff --git a/belgif-rest-problem-spring-boot-3-server/src/main/java/io/github/belgif/rest/problem/spring/RoutingExceptionsHandler.java b/belgif-rest-problem-spring-boot-3-server/src/main/java/io/github/belgif/rest/problem/spring/server/RoutingExceptionsHandler.java similarity index 96% rename from belgif-rest-problem-spring-boot-3-server/src/main/java/io/github/belgif/rest/problem/spring/RoutingExceptionsHandler.java rename to belgif-rest-problem-spring-boot-3-server/src/main/java/io/github/belgif/rest/problem/spring/server/RoutingExceptionsHandler.java index 0019577f..83af205f 100644 --- a/belgif-rest-problem-spring-boot-3-server/src/main/java/io/github/belgif/rest/problem/spring/RoutingExceptionsHandler.java +++ b/belgif-rest-problem-spring-boot-3-server/src/main/java/io/github/belgif/rest/problem/spring/server/RoutingExceptionsHandler.java @@ -1,4 +1,4 @@ -package io.github.belgif.rest.problem.spring; +package io.github.belgif.rest.problem.spring.server; import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication; import org.springframework.core.annotation.Order; diff --git a/belgif-rest-problem-spring-boot-3-server/src/test/java/io/github/belgif/rest/problem/spring/InvalidRequestExceptionHandlerTest.java b/belgif-rest-problem-spring-boot-3-server/src/test/java/io/github/belgif/rest/problem/spring/server/InvalidRequestExceptionHandlerTest.java similarity index 97% rename from belgif-rest-problem-spring-boot-3-server/src/test/java/io/github/belgif/rest/problem/spring/InvalidRequestExceptionHandlerTest.java rename to belgif-rest-problem-spring-boot-3-server/src/test/java/io/github/belgif/rest/problem/spring/server/InvalidRequestExceptionHandlerTest.java index c49ef943..ce4528c5 100644 --- a/belgif-rest-problem-spring-boot-3-server/src/test/java/io/github/belgif/rest/problem/spring/InvalidRequestExceptionHandlerTest.java +++ b/belgif-rest-problem-spring-boot-3-server/src/test/java/io/github/belgif/rest/problem/spring/server/InvalidRequestExceptionHandlerTest.java @@ -1,4 +1,4 @@ -package io.github.belgif.rest.problem.spring; +package io.github.belgif.rest.problem.spring.server; import static org.assertj.core.api.Assertions.*; diff --git a/belgif-rest-problem-spring-boot-4-client/src/main/java/io/github/belgif/rest/problem/spring/ProblemResponseErrorHandler.java b/belgif-rest-problem-spring-boot-4-client/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemResponseErrorHandler.java similarity index 90% rename from belgif-rest-problem-spring-boot-4-client/src/main/java/io/github/belgif/rest/problem/spring/ProblemResponseErrorHandler.java rename to belgif-rest-problem-spring-boot-4-client/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemResponseErrorHandler.java index e92cf6bb..7e71d553 100644 --- a/belgif-rest-problem-spring-boot-4-client/src/main/java/io/github/belgif/rest/problem/spring/ProblemResponseErrorHandler.java +++ b/belgif-rest-problem-spring-boot-4-client/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemResponseErrorHandler.java @@ -1,4 +1,4 @@ -package io.github.belgif.rest.problem.spring; +package io.github.belgif.rest.problem.spring.client; import org.springframework.stereotype.Component; diff --git a/belgif-rest-problem-spring-boot-4-client/src/main/java/io/github/belgif/rest/problem/spring/ProblemRestClientCustomizer.java b/belgif-rest-problem-spring-boot-4-client/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemRestClientCustomizer.java similarity index 92% rename from belgif-rest-problem-spring-boot-4-client/src/main/java/io/github/belgif/rest/problem/spring/ProblemRestClientCustomizer.java rename to belgif-rest-problem-spring-boot-4-client/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemRestClientCustomizer.java index 7c9f4188..1a227d45 100644 --- a/belgif-rest-problem-spring-boot-4-client/src/main/java/io/github/belgif/rest/problem/spring/ProblemRestClientCustomizer.java +++ b/belgif-rest-problem-spring-boot-4-client/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemRestClientCustomizer.java @@ -1,4 +1,4 @@ -package io.github.belgif.rest.problem.spring; +package io.github.belgif.rest.problem.spring.client; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.restclient.RestClientCustomizer; diff --git a/belgif-rest-problem-spring-boot-4-client/src/main/java/io/github/belgif/rest/problem/spring/ProblemRestTemplateCustomizer.java b/belgif-rest-problem-spring-boot-4-client/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemRestTemplateCustomizer.java similarity index 93% rename from belgif-rest-problem-spring-boot-4-client/src/main/java/io/github/belgif/rest/problem/spring/ProblemRestTemplateCustomizer.java rename to belgif-rest-problem-spring-boot-4-client/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemRestTemplateCustomizer.java index 02c7b37c..f0283dbf 100644 --- a/belgif-rest-problem-spring-boot-4-client/src/main/java/io/github/belgif/rest/problem/spring/ProblemRestTemplateCustomizer.java +++ b/belgif-rest-problem-spring-boot-4-client/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemRestTemplateCustomizer.java @@ -1,4 +1,4 @@ -package io.github.belgif.rest.problem.spring; +package io.github.belgif.rest.problem.spring.client; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.restclient.RestTemplateCustomizer; diff --git a/belgif-rest-problem-spring-boot-4-client/src/main/java/io/github/belgif/rest/problem/spring/ProblemWebClientCustomizer.java b/belgif-rest-problem-spring-boot-4-client/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemWebClientCustomizer.java similarity index 91% rename from belgif-rest-problem-spring-boot-4-client/src/main/java/io/github/belgif/rest/problem/spring/ProblemWebClientCustomizer.java rename to belgif-rest-problem-spring-boot-4-client/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemWebClientCustomizer.java index f7ad2295..25b4e2cb 100644 --- a/belgif-rest-problem-spring-boot-4-client/src/main/java/io/github/belgif/rest/problem/spring/ProblemWebClientCustomizer.java +++ b/belgif-rest-problem-spring-boot-4-client/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemWebClientCustomizer.java @@ -1,4 +1,4 @@ -package io.github.belgif.rest.problem.spring; +package io.github.belgif.rest.problem.spring.client; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.webclient.WebClientCustomizer; diff --git a/belgif-rest-problem-spring-boot-4-server/src/main/java/io/github/belgif/rest/problem/spring/InvalidRequestExceptionHandler.java b/belgif-rest-problem-spring-boot-4-server/src/main/java/io/github/belgif/rest/problem/spring/server/InvalidRequestExceptionHandler.java similarity index 98% rename from belgif-rest-problem-spring-boot-4-server/src/main/java/io/github/belgif/rest/problem/spring/InvalidRequestExceptionHandler.java rename to belgif-rest-problem-spring-boot-4-server/src/main/java/io/github/belgif/rest/problem/spring/server/InvalidRequestExceptionHandler.java index 8e7725af..c33372a7 100644 --- a/belgif-rest-problem-spring-boot-4-server/src/main/java/io/github/belgif/rest/problem/spring/InvalidRequestExceptionHandler.java +++ b/belgif-rest-problem-spring-boot-4-server/src/main/java/io/github/belgif/rest/problem/spring/server/InvalidRequestExceptionHandler.java @@ -1,4 +1,4 @@ -package io.github.belgif.rest.problem.spring; +package io.github.belgif.rest.problem.spring.server; import java.io.IOException; import java.io.InputStream; diff --git a/belgif-rest-problem-spring-boot-4-server/src/main/java/io/github/belgif/rest/problem/spring/ProblemValidationConfigurationCustomizer.java b/belgif-rest-problem-spring-boot-4-server/src/main/java/io/github/belgif/rest/problem/spring/server/ProblemValidationConfigurationCustomizer.java similarity index 92% rename from belgif-rest-problem-spring-boot-4-server/src/main/java/io/github/belgif/rest/problem/spring/ProblemValidationConfigurationCustomizer.java rename to belgif-rest-problem-spring-boot-4-server/src/main/java/io/github/belgif/rest/problem/spring/server/ProblemValidationConfigurationCustomizer.java index 8e7fbbfb..9c485599 100644 --- a/belgif-rest-problem-spring-boot-4-server/src/main/java/io/github/belgif/rest/problem/spring/ProblemValidationConfigurationCustomizer.java +++ b/belgif-rest-problem-spring-boot-4-server/src/main/java/io/github/belgif/rest/problem/spring/server/ProblemValidationConfigurationCustomizer.java @@ -1,4 +1,4 @@ -package io.github.belgif.rest.problem.spring; +package io.github.belgif.rest.problem.spring.server; import jakarta.validation.Configuration; diff --git a/belgif-rest-problem-spring-boot-4-server/src/main/java/io/github/belgif/rest/problem/spring/RoutingExceptionsHandler.java b/belgif-rest-problem-spring-boot-4-server/src/main/java/io/github/belgif/rest/problem/spring/server/RoutingExceptionsHandler.java similarity index 96% rename from belgif-rest-problem-spring-boot-4-server/src/main/java/io/github/belgif/rest/problem/spring/RoutingExceptionsHandler.java rename to belgif-rest-problem-spring-boot-4-server/src/main/java/io/github/belgif/rest/problem/spring/server/RoutingExceptionsHandler.java index 4c3a4956..777f9bc9 100644 --- a/belgif-rest-problem-spring-boot-4-server/src/main/java/io/github/belgif/rest/problem/spring/RoutingExceptionsHandler.java +++ b/belgif-rest-problem-spring-boot-4-server/src/main/java/io/github/belgif/rest/problem/spring/server/RoutingExceptionsHandler.java @@ -1,4 +1,4 @@ -package io.github.belgif.rest.problem.spring; +package io.github.belgif.rest.problem.spring.server; import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication; import org.springframework.core.annotation.Order; diff --git a/belgif-rest-problem-spring-boot-4-server/src/test/java/io/github/belgif/rest/problem/spring/InvalidRequestExceptionHandlerTest.java b/belgif-rest-problem-spring-boot-4-server/src/test/java/io/github/belgif/rest/problem/spring/server/InvalidRequestExceptionHandlerTest.java similarity index 97% rename from belgif-rest-problem-spring-boot-4-server/src/test/java/io/github/belgif/rest/problem/spring/InvalidRequestExceptionHandlerTest.java rename to belgif-rest-problem-spring-boot-4-server/src/test/java/io/github/belgif/rest/problem/spring/server/InvalidRequestExceptionHandlerTest.java index 103831e2..a0e30ae6 100644 --- a/belgif-rest-problem-spring-boot-4-server/src/test/java/io/github/belgif/rest/problem/spring/InvalidRequestExceptionHandlerTest.java +++ b/belgif-rest-problem-spring-boot-4-server/src/test/java/io/github/belgif/rest/problem/spring/server/InvalidRequestExceptionHandlerTest.java @@ -1,4 +1,4 @@ -package io.github.belgif.rest.problem.spring; +package io.github.belgif.rest.problem.spring.server; import static org.assertj.core.api.Assertions.*; diff --git a/belgif-rest-problem-spring-boot-common-client/src/main/java/io/github/belgif/rest/problem/spring/AbstractProblemResponseErrorHandler.java b/belgif-rest-problem-spring-boot-common-client/src/main/java/io/github/belgif/rest/problem/spring/client/AbstractProblemResponseErrorHandler.java similarity index 94% rename from belgif-rest-problem-spring-boot-common-client/src/main/java/io/github/belgif/rest/problem/spring/AbstractProblemResponseErrorHandler.java rename to belgif-rest-problem-spring-boot-common-client/src/main/java/io/github/belgif/rest/problem/spring/client/AbstractProblemResponseErrorHandler.java index e1248fd2..f4dc49a2 100644 --- a/belgif-rest-problem-spring-boot-common-client/src/main/java/io/github/belgif/rest/problem/spring/AbstractProblemResponseErrorHandler.java +++ b/belgif-rest-problem-spring-boot-common-client/src/main/java/io/github/belgif/rest/problem/spring/client/AbstractProblemResponseErrorHandler.java @@ -1,4 +1,4 @@ -package io.github.belgif.rest.problem.spring; +package io.github.belgif.rest.problem.spring.client; import java.io.IOException; import java.io.InputStream; @@ -13,6 +13,7 @@ import io.github.belgif.rest.problem.DefaultProblem; import io.github.belgif.rest.problem.api.Problem; +import io.github.belgif.rest.problem.spring.ProblemMediaType; /** * RestTemplate/RestClient error handler that converts problem responses to Problem exceptions. diff --git a/belgif-rest-problem-spring-boot-common-client/src/main/java/io/github/belgif/rest/problem/spring/AbstractProblemRestClientCustomizer.java b/belgif-rest-problem-spring-boot-common-client/src/main/java/io/github/belgif/rest/problem/spring/client/AbstractProblemRestClientCustomizer.java similarity index 92% rename from belgif-rest-problem-spring-boot-common-client/src/main/java/io/github/belgif/rest/problem/spring/AbstractProblemRestClientCustomizer.java rename to belgif-rest-problem-spring-boot-common-client/src/main/java/io/github/belgif/rest/problem/spring/client/AbstractProblemRestClientCustomizer.java index a5b70bd5..ba6eca0e 100644 --- a/belgif-rest-problem-spring-boot-common-client/src/main/java/io/github/belgif/rest/problem/spring/AbstractProblemRestClientCustomizer.java +++ b/belgif-rest-problem-spring-boot-common-client/src/main/java/io/github/belgif/rest/problem/spring/client/AbstractProblemRestClientCustomizer.java @@ -1,4 +1,4 @@ -package io.github.belgif.rest.problem.spring; +package io.github.belgif.rest.problem.spring.client; import org.springframework.web.client.RestClient; diff --git a/belgif-rest-problem-spring-boot-common-client/src/main/java/io/github/belgif/rest/problem/spring/AbstractProblemRestTemplateCustomizer.java b/belgif-rest-problem-spring-boot-common-client/src/main/java/io/github/belgif/rest/problem/spring/client/AbstractProblemRestTemplateCustomizer.java similarity index 92% rename from belgif-rest-problem-spring-boot-common-client/src/main/java/io/github/belgif/rest/problem/spring/AbstractProblemRestTemplateCustomizer.java rename to belgif-rest-problem-spring-boot-common-client/src/main/java/io/github/belgif/rest/problem/spring/client/AbstractProblemRestTemplateCustomizer.java index 6e85fe78..bde076c7 100644 --- a/belgif-rest-problem-spring-boot-common-client/src/main/java/io/github/belgif/rest/problem/spring/AbstractProblemRestTemplateCustomizer.java +++ b/belgif-rest-problem-spring-boot-common-client/src/main/java/io/github/belgif/rest/problem/spring/client/AbstractProblemRestTemplateCustomizer.java @@ -1,4 +1,4 @@ -package io.github.belgif.rest.problem.spring; +package io.github.belgif.rest.problem.spring.client; import org.springframework.web.client.RestTemplate; diff --git a/belgif-rest-problem-spring-boot-common-client/src/main/java/io/github/belgif/rest/problem/spring/AbstractProblemWebClientCustomizer.java b/belgif-rest-problem-spring-boot-common-client/src/main/java/io/github/belgif/rest/problem/spring/client/AbstractProblemWebClientCustomizer.java similarity index 91% rename from belgif-rest-problem-spring-boot-common-client/src/main/java/io/github/belgif/rest/problem/spring/AbstractProblemWebClientCustomizer.java rename to belgif-rest-problem-spring-boot-common-client/src/main/java/io/github/belgif/rest/problem/spring/client/AbstractProblemWebClientCustomizer.java index 9636e384..be79a0d4 100644 --- a/belgif-rest-problem-spring-boot-common-client/src/main/java/io/github/belgif/rest/problem/spring/AbstractProblemWebClientCustomizer.java +++ b/belgif-rest-problem-spring-boot-common-client/src/main/java/io/github/belgif/rest/problem/spring/client/AbstractProblemWebClientCustomizer.java @@ -1,10 +1,11 @@ -package io.github.belgif.rest.problem.spring; +package io.github.belgif.rest.problem.spring.client; import org.springframework.http.MediaType; import org.springframework.web.reactive.function.client.ExchangeFilterFunction; import org.springframework.web.reactive.function.client.WebClient; import io.github.belgif.rest.problem.api.Problem; +import io.github.belgif.rest.problem.spring.ProblemMediaType; import reactor.core.publisher.Mono; /** diff --git a/belgif-rest-problem-spring-boot-common-client/src/test/java/io/github/belgif/rest/problem/spring/AbstractProblemResponseErrorHandlerTest.java b/belgif-rest-problem-spring-boot-common-client/src/test/java/io/github/belgif/rest/problem/spring/client/AbstractProblemResponseErrorHandlerTest.java similarity index 95% rename from belgif-rest-problem-spring-boot-common-client/src/test/java/io/github/belgif/rest/problem/spring/AbstractProblemResponseErrorHandlerTest.java rename to belgif-rest-problem-spring-boot-common-client/src/test/java/io/github/belgif/rest/problem/spring/client/AbstractProblemResponseErrorHandlerTest.java index 8434df6f..538d2a31 100644 --- a/belgif-rest-problem-spring-boot-common-client/src/test/java/io/github/belgif/rest/problem/spring/AbstractProblemResponseErrorHandlerTest.java +++ b/belgif-rest-problem-spring-boot-common-client/src/test/java/io/github/belgif/rest/problem/spring/client/AbstractProblemResponseErrorHandlerTest.java @@ -1,4 +1,4 @@ -package io.github.belgif.rest.problem.spring; +package io.github.belgif.rest.problem.spring.client; import static org.assertj.core.api.Assertions.*; import static org.mockito.Mockito.*; @@ -22,7 +22,8 @@ import io.github.belgif.rest.problem.BadRequestProblem; import io.github.belgif.rest.problem.DefaultProblem; import io.github.belgif.rest.problem.api.Problem; -import io.github.belgif.rest.problem.spring.AbstractProblemResponseErrorHandler.ProblemReader; +import io.github.belgif.rest.problem.spring.ProblemMediaType; +import io.github.belgif.rest.problem.spring.client.AbstractProblemResponseErrorHandler.ProblemReader; @ExtendWith(MockitoExtension.class) class AbstractProblemResponseErrorHandlerTest { diff --git a/belgif-rest-problem-spring-boot-common-client/src/test/java/io/github/belgif/rest/problem/spring/AbstractProblemRestClientCustomizerTest.java b/belgif-rest-problem-spring-boot-common-client/src/test/java/io/github/belgif/rest/problem/spring/client/AbstractProblemRestClientCustomizerTest.java similarity index 93% rename from belgif-rest-problem-spring-boot-common-client/src/test/java/io/github/belgif/rest/problem/spring/AbstractProblemRestClientCustomizerTest.java rename to belgif-rest-problem-spring-boot-common-client/src/test/java/io/github/belgif/rest/problem/spring/client/AbstractProblemRestClientCustomizerTest.java index 21325ed7..af3f2a0f 100644 --- a/belgif-rest-problem-spring-boot-common-client/src/test/java/io/github/belgif/rest/problem/spring/AbstractProblemRestClientCustomizerTest.java +++ b/belgif-rest-problem-spring-boot-common-client/src/test/java/io/github/belgif/rest/problem/spring/client/AbstractProblemRestClientCustomizerTest.java @@ -1,4 +1,4 @@ -package io.github.belgif.rest.problem.spring; +package io.github.belgif.rest.problem.spring.client; import static org.assertj.core.api.Assertions.*; import static org.mockito.Mockito.*; diff --git a/belgif-rest-problem-spring-boot-common-client/src/test/java/io/github/belgif/rest/problem/spring/AbstractProblemRestTemplateCustomizerTest.java b/belgif-rest-problem-spring-boot-common-client/src/test/java/io/github/belgif/rest/problem/spring/client/AbstractProblemRestTemplateCustomizerTest.java similarity index 92% rename from belgif-rest-problem-spring-boot-common-client/src/test/java/io/github/belgif/rest/problem/spring/AbstractProblemRestTemplateCustomizerTest.java rename to belgif-rest-problem-spring-boot-common-client/src/test/java/io/github/belgif/rest/problem/spring/client/AbstractProblemRestTemplateCustomizerTest.java index 8f46d473..5e16423a 100644 --- a/belgif-rest-problem-spring-boot-common-client/src/test/java/io/github/belgif/rest/problem/spring/AbstractProblemRestTemplateCustomizerTest.java +++ b/belgif-rest-problem-spring-boot-common-client/src/test/java/io/github/belgif/rest/problem/spring/client/AbstractProblemRestTemplateCustomizerTest.java @@ -1,4 +1,4 @@ -package io.github.belgif.rest.problem.spring; +package io.github.belgif.rest.problem.spring.client; import static org.assertj.core.api.Assertions.*; import static org.mockito.Mockito.*; diff --git a/belgif-rest-problem-spring-boot-common-client/src/test/java/io/github/belgif/rest/problem/spring/AbstractProblemWebClientCustomizerTest.java b/belgif-rest-problem-spring-boot-common-client/src/test/java/io/github/belgif/rest/problem/spring/client/AbstractProblemWebClientCustomizerTest.java similarity index 98% rename from belgif-rest-problem-spring-boot-common-client/src/test/java/io/github/belgif/rest/problem/spring/AbstractProblemWebClientCustomizerTest.java rename to belgif-rest-problem-spring-boot-common-client/src/test/java/io/github/belgif/rest/problem/spring/client/AbstractProblemWebClientCustomizerTest.java index f1460e2a..82eadb73 100644 --- a/belgif-rest-problem-spring-boot-common-client/src/test/java/io/github/belgif/rest/problem/spring/AbstractProblemWebClientCustomizerTest.java +++ b/belgif-rest-problem-spring-boot-common-client/src/test/java/io/github/belgif/rest/problem/spring/client/AbstractProblemWebClientCustomizerTest.java @@ -1,4 +1,4 @@ -package io.github.belgif.rest.problem.spring; +package io.github.belgif.rest.problem.spring.client; import static org.assertj.core.api.Assertions.*; import static org.mockito.Mockito.*; diff --git a/belgif-rest-problem-spring-boot-common-server/src/main/java/io/github/belgif/rest/problem/spring/AbstractInvalidRequestExceptionHandler.java b/belgif-rest-problem-spring-boot-common-server/src/main/java/io/github/belgif/rest/problem/spring/server/AbstractInvalidRequestExceptionHandler.java similarity index 96% rename from belgif-rest-problem-spring-boot-common-server/src/main/java/io/github/belgif/rest/problem/spring/AbstractInvalidRequestExceptionHandler.java rename to belgif-rest-problem-spring-boot-common-server/src/main/java/io/github/belgif/rest/problem/spring/server/AbstractInvalidRequestExceptionHandler.java index 78bdc976..8fdde018 100644 --- a/belgif-rest-problem-spring-boot-common-server/src/main/java/io/github/belgif/rest/problem/spring/AbstractInvalidRequestExceptionHandler.java +++ b/belgif-rest-problem-spring-boot-common-server/src/main/java/io/github/belgif/rest/problem/spring/server/AbstractInvalidRequestExceptionHandler.java @@ -1,4 +1,4 @@ -package io.github.belgif.rest.problem.spring; +package io.github.belgif.rest.problem.spring.server; import java.util.ArrayList; import java.util.LinkedHashSet; @@ -22,7 +22,8 @@ import io.github.belgif.rest.problem.api.InputValidationIssue; import io.github.belgif.rest.problem.api.InputValidationIssues; import io.github.belgif.rest.problem.api.Problem; -import io.github.belgif.rest.problem.spring.internal.InvalidRequestExceptionUtil; +import io.github.belgif.rest.problem.spring.ProblemMediaType; +import io.github.belgif.rest.problem.spring.server.internal.InvalidRequestExceptionUtil; /** * RestController exception handler for InvalidRequestException thrown by Atlassian swagger-request-validator library. diff --git a/belgif-rest-problem-spring-boot-common-server/src/main/java/io/github/belgif/rest/problem/spring/AbstractProblemValidationConfigurationCustomizer.java b/belgif-rest-problem-spring-boot-common-server/src/main/java/io/github/belgif/rest/problem/spring/server/AbstractProblemValidationConfigurationCustomizer.java similarity index 87% rename from belgif-rest-problem-spring-boot-common-server/src/main/java/io/github/belgif/rest/problem/spring/AbstractProblemValidationConfigurationCustomizer.java rename to belgif-rest-problem-spring-boot-common-server/src/main/java/io/github/belgif/rest/problem/spring/server/AbstractProblemValidationConfigurationCustomizer.java index 4401ab74..277264df 100644 --- a/belgif-rest-problem-spring-boot-common-server/src/main/java/io/github/belgif/rest/problem/spring/AbstractProblemValidationConfigurationCustomizer.java +++ b/belgif-rest-problem-spring-boot-common-server/src/main/java/io/github/belgif/rest/problem/spring/server/AbstractProblemValidationConfigurationCustomizer.java @@ -1,4 +1,4 @@ -package io.github.belgif.rest.problem.spring; +package io.github.belgif.rest.problem.spring.server; import jakarta.validation.Configuration; diff --git a/belgif-rest-problem-spring-boot-common-server/src/main/java/io/github/belgif/rest/problem/spring/AbstractRoutingExceptionsHandler.java b/belgif-rest-problem-spring-boot-common-server/src/main/java/io/github/belgif/rest/problem/spring/server/AbstractRoutingExceptionsHandler.java similarity index 98% rename from belgif-rest-problem-spring-boot-common-server/src/main/java/io/github/belgif/rest/problem/spring/AbstractRoutingExceptionsHandler.java rename to belgif-rest-problem-spring-boot-common-server/src/main/java/io/github/belgif/rest/problem/spring/server/AbstractRoutingExceptionsHandler.java index 93ca4000..dbf13746 100644 --- a/belgif-rest-problem-spring-boot-common-server/src/main/java/io/github/belgif/rest/problem/spring/AbstractRoutingExceptionsHandler.java +++ b/belgif-rest-problem-spring-boot-common-server/src/main/java/io/github/belgif/rest/problem/spring/server/AbstractRoutingExceptionsHandler.java @@ -1,4 +1,4 @@ -package io.github.belgif.rest.problem.spring; +package io.github.belgif.rest.problem.spring.server; import java.util.Arrays; @@ -21,6 +21,7 @@ import io.github.belgif.rest.problem.api.InEnum; import io.github.belgif.rest.problem.api.InputValidationIssues; import io.github.belgif.rest.problem.api.Problem; +import io.github.belgif.rest.problem.spring.ProblemMediaType; /** * RestController exception handler for routing-related exceptions. diff --git a/belgif-rest-problem-spring-boot-common-server/src/main/java/io/github/belgif/rest/problem/spring/AnnotationParameterNameProvider.java b/belgif-rest-problem-spring-boot-common-server/src/main/java/io/github/belgif/rest/problem/spring/server/AnnotationParameterNameProvider.java similarity index 78% rename from belgif-rest-problem-spring-boot-common-server/src/main/java/io/github/belgif/rest/problem/spring/AnnotationParameterNameProvider.java rename to belgif-rest-problem-spring-boot-common-server/src/main/java/io/github/belgif/rest/problem/spring/server/AnnotationParameterNameProvider.java index 29ca1c54..251616fa 100644 --- a/belgif-rest-problem-spring-boot-common-server/src/main/java/io/github/belgif/rest/problem/spring/AnnotationParameterNameProvider.java +++ b/belgif-rest-problem-spring-boot-common-server/src/main/java/io/github/belgif/rest/problem/spring/server/AnnotationParameterNameProvider.java @@ -1,4 +1,4 @@ -package io.github.belgif.rest.problem.spring; +package io.github.belgif.rest.problem.spring.server; import java.util.List; import java.util.stream.Collectors; @@ -6,7 +6,7 @@ import jakarta.validation.ParameterNameProvider; -import io.github.belgif.rest.problem.spring.internal.CachedAnnotationParameterNameSupport; +import io.github.belgif.rest.problem.spring.server.internal.CachedAnnotationParameterNameSupport; /** * ParameterNameProvider that retrieves the parameter name from Spring MVC annotations (if present). diff --git a/belgif-rest-problem-spring-boot-common-server/src/main/java/io/github/belgif/rest/problem/spring/BeanValidationExceptionsHandler.java b/belgif-rest-problem-spring-boot-common-server/src/main/java/io/github/belgif/rest/problem/spring/server/BeanValidationExceptionsHandler.java similarity index 93% rename from belgif-rest-problem-spring-boot-common-server/src/main/java/io/github/belgif/rest/problem/spring/BeanValidationExceptionsHandler.java rename to belgif-rest-problem-spring-boot-common-server/src/main/java/io/github/belgif/rest/problem/spring/server/BeanValidationExceptionsHandler.java index 9e7e3046..b3c7e8f3 100644 --- a/belgif-rest-problem-spring-boot-common-server/src/main/java/io/github/belgif/rest/problem/spring/BeanValidationExceptionsHandler.java +++ b/belgif-rest-problem-spring-boot-common-server/src/main/java/io/github/belgif/rest/problem/spring/server/BeanValidationExceptionsHandler.java @@ -1,4 +1,4 @@ -package io.github.belgif.rest.problem.spring; +package io.github.belgif.rest.problem.spring.server; import java.util.Comparator; import java.util.List; @@ -22,8 +22,9 @@ import io.github.belgif.rest.problem.api.InputValidationIssue; import io.github.belgif.rest.problem.api.InputValidationIssues; import io.github.belgif.rest.problem.api.Problem; -import io.github.belgif.rest.problem.spring.internal.BeanValidationExceptionUtil; -import io.github.belgif.rest.problem.spring.internal.DetermineSourceUtil; +import io.github.belgif.rest.problem.spring.ProblemMediaType; +import io.github.belgif.rest.problem.spring.server.internal.BeanValidationExceptionUtil; +import io.github.belgif.rest.problem.spring.server.internal.DetermineSourceUtil; /** * RestController exception handler for exceptions related to bean validation. diff --git a/belgif-rest-problem-spring-boot-common-server/src/main/java/io/github/belgif/rest/problem/spring/ProblemExceptionHandler.java b/belgif-rest-problem-spring-boot-common-server/src/main/java/io/github/belgif/rest/problem/spring/server/ProblemExceptionHandler.java similarity index 91% rename from belgif-rest-problem-spring-boot-common-server/src/main/java/io/github/belgif/rest/problem/spring/ProblemExceptionHandler.java rename to belgif-rest-problem-spring-boot-common-server/src/main/java/io/github/belgif/rest/problem/spring/server/ProblemExceptionHandler.java index 4ebeb48a..40c7c35b 100644 --- a/belgif-rest-problem-spring-boot-common-server/src/main/java/io/github/belgif/rest/problem/spring/ProblemExceptionHandler.java +++ b/belgif-rest-problem-spring-boot-common-server/src/main/java/io/github/belgif/rest/problem/spring/server/ProblemExceptionHandler.java @@ -1,4 +1,4 @@ -package io.github.belgif.rest.problem.spring; +package io.github.belgif.rest.problem.spring.server; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -9,6 +9,7 @@ import io.github.belgif.rest.problem.InternalServerErrorProblem; import io.github.belgif.rest.problem.api.Problem; +import io.github.belgif.rest.problem.spring.ProblemMediaType; /** * Exception handler for RestControllers. diff --git a/belgif-rest-problem-spring-boot-common-server/src/main/java/io/github/belgif/rest/problem/spring/i18n/LocaleContextHolderLocaleResolver.java b/belgif-rest-problem-spring-boot-common-server/src/main/java/io/github/belgif/rest/problem/spring/server/i18n/LocaleContextHolderLocaleResolver.java similarity index 88% rename from belgif-rest-problem-spring-boot-common-server/src/main/java/io/github/belgif/rest/problem/spring/i18n/LocaleContextHolderLocaleResolver.java rename to belgif-rest-problem-spring-boot-common-server/src/main/java/io/github/belgif/rest/problem/spring/server/i18n/LocaleContextHolderLocaleResolver.java index 0f45a044..b3f8e3b4 100644 --- a/belgif-rest-problem-spring-boot-common-server/src/main/java/io/github/belgif/rest/problem/spring/i18n/LocaleContextHolderLocaleResolver.java +++ b/belgif-rest-problem-spring-boot-common-server/src/main/java/io/github/belgif/rest/problem/spring/server/i18n/LocaleContextHolderLocaleResolver.java @@ -1,4 +1,4 @@ -package io.github.belgif.rest.problem.spring.i18n; +package io.github.belgif.rest.problem.spring.server.i18n; import java.util.Locale; diff --git a/belgif-rest-problem-spring-boot-common-server/src/main/java/io/github/belgif/rest/problem/spring/internal/BeanValidationExceptionUtil.java b/belgif-rest-problem-spring-boot-common-server/src/main/java/io/github/belgif/rest/problem/spring/server/internal/BeanValidationExceptionUtil.java similarity index 97% rename from belgif-rest-problem-spring-boot-common-server/src/main/java/io/github/belgif/rest/problem/spring/internal/BeanValidationExceptionUtil.java rename to belgif-rest-problem-spring-boot-common-server/src/main/java/io/github/belgif/rest/problem/spring/server/internal/BeanValidationExceptionUtil.java index 38d82eef..a76fee7c 100644 --- a/belgif-rest-problem-spring-boot-common-server/src/main/java/io/github/belgif/rest/problem/spring/internal/BeanValidationExceptionUtil.java +++ b/belgif-rest-problem-spring-boot-common-server/src/main/java/io/github/belgif/rest/problem/spring/server/internal/BeanValidationExceptionUtil.java @@ -1,4 +1,4 @@ -package io.github.belgif.rest.problem.spring.internal; +package io.github.belgif.rest.problem.spring.server.internal; import java.util.Iterator; import java.util.LinkedList; diff --git a/belgif-rest-problem-spring-boot-common-server/src/main/java/io/github/belgif/rest/problem/spring/internal/CachedAnnotationParameterNameSupport.java b/belgif-rest-problem-spring-boot-common-server/src/main/java/io/github/belgif/rest/problem/spring/server/internal/CachedAnnotationParameterNameSupport.java similarity index 97% rename from belgif-rest-problem-spring-boot-common-server/src/main/java/io/github/belgif/rest/problem/spring/internal/CachedAnnotationParameterNameSupport.java rename to belgif-rest-problem-spring-boot-common-server/src/main/java/io/github/belgif/rest/problem/spring/server/internal/CachedAnnotationParameterNameSupport.java index 68ac4b1b..fd26d46d 100644 --- a/belgif-rest-problem-spring-boot-common-server/src/main/java/io/github/belgif/rest/problem/spring/internal/CachedAnnotationParameterNameSupport.java +++ b/belgif-rest-problem-spring-boot-common-server/src/main/java/io/github/belgif/rest/problem/spring/server/internal/CachedAnnotationParameterNameSupport.java @@ -1,4 +1,4 @@ -package io.github.belgif.rest.problem.spring.internal; +package io.github.belgif.rest.problem.spring.server.internal; import java.lang.annotation.Annotation; import java.lang.reflect.Constructor; diff --git a/belgif-rest-problem-spring-boot-common-server/src/main/java/io/github/belgif/rest/problem/spring/internal/DetermineSourceUtil.java b/belgif-rest-problem-spring-boot-common-server/src/main/java/io/github/belgif/rest/problem/spring/server/internal/DetermineSourceUtil.java similarity index 98% rename from belgif-rest-problem-spring-boot-common-server/src/main/java/io/github/belgif/rest/problem/spring/internal/DetermineSourceUtil.java rename to belgif-rest-problem-spring-boot-common-server/src/main/java/io/github/belgif/rest/problem/spring/server/internal/DetermineSourceUtil.java index 3c7c5e65..069a25d8 100644 --- a/belgif-rest-problem-spring-boot-common-server/src/main/java/io/github/belgif/rest/problem/spring/internal/DetermineSourceUtil.java +++ b/belgif-rest-problem-spring-boot-common-server/src/main/java/io/github/belgif/rest/problem/spring/server/internal/DetermineSourceUtil.java @@ -1,4 +1,4 @@ -package io.github.belgif.rest.problem.spring.internal; +package io.github.belgif.rest.problem.spring.server.internal; import java.lang.annotation.Annotation; import java.lang.reflect.Method; diff --git a/belgif-rest-problem-spring-boot-common-server/src/main/java/io/github/belgif/rest/problem/spring/internal/InvalidRequestExceptionUtil.java b/belgif-rest-problem-spring-boot-common-server/src/main/java/io/github/belgif/rest/problem/spring/server/internal/InvalidRequestExceptionUtil.java similarity index 97% rename from belgif-rest-problem-spring-boot-common-server/src/main/java/io/github/belgif/rest/problem/spring/internal/InvalidRequestExceptionUtil.java rename to belgif-rest-problem-spring-boot-common-server/src/main/java/io/github/belgif/rest/problem/spring/server/internal/InvalidRequestExceptionUtil.java index 0461bcb8..e7142299 100644 --- a/belgif-rest-problem-spring-boot-common-server/src/main/java/io/github/belgif/rest/problem/spring/internal/InvalidRequestExceptionUtil.java +++ b/belgif-rest-problem-spring-boot-common-server/src/main/java/io/github/belgif/rest/problem/spring/server/internal/InvalidRequestExceptionUtil.java @@ -1,4 +1,4 @@ -package io.github.belgif.rest.problem.spring.internal; +package io.github.belgif.rest.problem.spring.server.internal; import java.util.regex.Matcher; import java.util.regex.Pattern; diff --git a/belgif-rest-problem-spring-boot-common-server/src/main/resources/META-INF/services/io.github.belgif.rest.problem.i18n.LocaleResolver b/belgif-rest-problem-spring-boot-common-server/src/main/resources/META-INF/services/io.github.belgif.rest.problem.i18n.LocaleResolver index 8ac9f41a..7b3287f1 100644 --- a/belgif-rest-problem-spring-boot-common-server/src/main/resources/META-INF/services/io.github.belgif.rest.problem.i18n.LocaleResolver +++ b/belgif-rest-problem-spring-boot-common-server/src/main/resources/META-INF/services/io.github.belgif.rest.problem.i18n.LocaleResolver @@ -1 +1 @@ -io.github.belgif.rest.problem.spring.i18n.LocaleContextHolderLocaleResolver \ No newline at end of file +io.github.belgif.rest.problem.spring.server.i18n.LocaleContextHolderLocaleResolver \ No newline at end of file diff --git a/belgif-rest-problem-spring-boot-common-server/src/test/java/io/github/belgif/rest/problem/spring/AbstractInvalidRequestExceptionHandlerTest.java b/belgif-rest-problem-spring-boot-common-server/src/test/java/io/github/belgif/rest/problem/spring/server/AbstractInvalidRequestExceptionHandlerTest.java similarity index 99% rename from belgif-rest-problem-spring-boot-common-server/src/test/java/io/github/belgif/rest/problem/spring/AbstractInvalidRequestExceptionHandlerTest.java rename to belgif-rest-problem-spring-boot-common-server/src/test/java/io/github/belgif/rest/problem/spring/server/AbstractInvalidRequestExceptionHandlerTest.java index b7a77a60..02a999f4 100644 --- a/belgif-rest-problem-spring-boot-common-server/src/test/java/io/github/belgif/rest/problem/spring/AbstractInvalidRequestExceptionHandlerTest.java +++ b/belgif-rest-problem-spring-boot-common-server/src/test/java/io/github/belgif/rest/problem/spring/server/AbstractInvalidRequestExceptionHandlerTest.java @@ -1,4 +1,4 @@ -package io.github.belgif.rest.problem.spring; +package io.github.belgif.rest.problem.spring.server; import static org.assertj.core.api.Assertions.*; diff --git a/belgif-rest-problem-spring-boot-common-server/src/test/java/io/github/belgif/rest/problem/spring/AbstractProblemValidationConfigurationCustomizerTest.java b/belgif-rest-problem-spring-boot-common-server/src/test/java/io/github/belgif/rest/problem/spring/server/AbstractProblemValidationConfigurationCustomizerTest.java similarity index 95% rename from belgif-rest-problem-spring-boot-common-server/src/test/java/io/github/belgif/rest/problem/spring/AbstractProblemValidationConfigurationCustomizerTest.java rename to belgif-rest-problem-spring-boot-common-server/src/test/java/io/github/belgif/rest/problem/spring/server/AbstractProblemValidationConfigurationCustomizerTest.java index 4a4cf774..a135fa04 100644 --- a/belgif-rest-problem-spring-boot-common-server/src/test/java/io/github/belgif/rest/problem/spring/AbstractProblemValidationConfigurationCustomizerTest.java +++ b/belgif-rest-problem-spring-boot-common-server/src/test/java/io/github/belgif/rest/problem/spring/server/AbstractProblemValidationConfigurationCustomizerTest.java @@ -1,4 +1,4 @@ -package io.github.belgif.rest.problem.spring; +package io.github.belgif.rest.problem.spring.server; import static org.assertj.core.api.Assertions.*; import static org.mockito.Mockito.*; diff --git a/belgif-rest-problem-spring-boot-common-server/src/test/java/io/github/belgif/rest/problem/spring/AbstractRoutingExceptionsHandlerTest.java b/belgif-rest-problem-spring-boot-common-server/src/test/java/io/github/belgif/rest/problem/spring/server/AbstractRoutingExceptionsHandlerTest.java similarity index 99% rename from belgif-rest-problem-spring-boot-common-server/src/test/java/io/github/belgif/rest/problem/spring/AbstractRoutingExceptionsHandlerTest.java rename to belgif-rest-problem-spring-boot-common-server/src/test/java/io/github/belgif/rest/problem/spring/server/AbstractRoutingExceptionsHandlerTest.java index 79920daa..e3f39da2 100644 --- a/belgif-rest-problem-spring-boot-common-server/src/test/java/io/github/belgif/rest/problem/spring/AbstractRoutingExceptionsHandlerTest.java +++ b/belgif-rest-problem-spring-boot-common-server/src/test/java/io/github/belgif/rest/problem/spring/server/AbstractRoutingExceptionsHandlerTest.java @@ -1,4 +1,4 @@ -package io.github.belgif.rest.problem.spring; +package io.github.belgif.rest.problem.spring.server; import static io.github.belgif.rest.problem.api.InputValidationIssues.*; import static org.assertj.core.api.Assertions.*; @@ -34,6 +34,7 @@ import io.github.belgif.rest.problem.api.InEnum; import io.github.belgif.rest.problem.api.Problem; import io.github.belgif.rest.problem.internal.Jackson2Util; +import io.github.belgif.rest.problem.spring.ProblemMediaType; class AbstractRoutingExceptionsHandlerTest { diff --git a/belgif-rest-problem-spring-boot-common-server/src/test/java/io/github/belgif/rest/problem/spring/AnnotationParameterNameProviderTest.java b/belgif-rest-problem-spring-boot-common-server/src/test/java/io/github/belgif/rest/problem/spring/server/AnnotationParameterNameProviderTest.java similarity index 88% rename from belgif-rest-problem-spring-boot-common-server/src/test/java/io/github/belgif/rest/problem/spring/AnnotationParameterNameProviderTest.java rename to belgif-rest-problem-spring-boot-common-server/src/test/java/io/github/belgif/rest/problem/spring/server/AnnotationParameterNameProviderTest.java index 5781c398..573c52d8 100644 --- a/belgif-rest-problem-spring-boot-common-server/src/test/java/io/github/belgif/rest/problem/spring/AnnotationParameterNameProviderTest.java +++ b/belgif-rest-problem-spring-boot-common-server/src/test/java/io/github/belgif/rest/problem/spring/server/AnnotationParameterNameProviderTest.java @@ -1,4 +1,4 @@ -package io.github.belgif.rest.problem.spring; +package io.github.belgif.rest.problem.spring.server; import static org.assertj.core.api.Assertions.*; diff --git a/belgif-rest-problem-spring-boot-common-server/src/test/java/io/github/belgif/rest/problem/spring/BeanValidationExceptionsHandlerTest.java b/belgif-rest-problem-spring-boot-common-server/src/test/java/io/github/belgif/rest/problem/spring/server/BeanValidationExceptionsHandlerTest.java similarity index 98% rename from belgif-rest-problem-spring-boot-common-server/src/test/java/io/github/belgif/rest/problem/spring/BeanValidationExceptionsHandlerTest.java rename to belgif-rest-problem-spring-boot-common-server/src/test/java/io/github/belgif/rest/problem/spring/server/BeanValidationExceptionsHandlerTest.java index 4e818c31..20017d1c 100644 --- a/belgif-rest-problem-spring-boot-common-server/src/test/java/io/github/belgif/rest/problem/spring/BeanValidationExceptionsHandlerTest.java +++ b/belgif-rest-problem-spring-boot-common-server/src/test/java/io/github/belgif/rest/problem/spring/server/BeanValidationExceptionsHandlerTest.java @@ -1,4 +1,4 @@ -package io.github.belgif.rest.problem.spring; +package io.github.belgif.rest.problem.spring.server; import static org.assertj.core.api.Assertions.*; @@ -25,6 +25,7 @@ import io.github.belgif.rest.problem.BadRequestProblem; import io.github.belgif.rest.problem.api.InEnum; import io.github.belgif.rest.problem.api.Problem; +import io.github.belgif.rest.problem.spring.ProblemMediaType; class BeanValidationExceptionsHandlerTest { diff --git a/belgif-rest-problem-spring-boot-common-server/src/test/java/io/github/belgif/rest/problem/spring/ProblemExceptionHandlerTest.java b/belgif-rest-problem-spring-boot-common-server/src/test/java/io/github/belgif/rest/problem/spring/server/ProblemExceptionHandlerTest.java similarity index 96% rename from belgif-rest-problem-spring-boot-common-server/src/test/java/io/github/belgif/rest/problem/spring/ProblemExceptionHandlerTest.java rename to belgif-rest-problem-spring-boot-common-server/src/test/java/io/github/belgif/rest/problem/spring/server/ProblemExceptionHandlerTest.java index 02019f67..f9207acc 100644 --- a/belgif-rest-problem-spring-boot-common-server/src/test/java/io/github/belgif/rest/problem/spring/ProblemExceptionHandlerTest.java +++ b/belgif-rest-problem-spring-boot-common-server/src/test/java/io/github/belgif/rest/problem/spring/server/ProblemExceptionHandlerTest.java @@ -1,4 +1,4 @@ -package io.github.belgif.rest.problem.spring; +package io.github.belgif.rest.problem.spring.server; import static org.assertj.core.api.Assertions.*; diff --git a/belgif-rest-problem-spring-boot-common-server/src/test/java/io/github/belgif/rest/problem/spring/i18n/LocaleContextHolderLocaleResolverTest.java b/belgif-rest-problem-spring-boot-common-server/src/test/java/io/github/belgif/rest/problem/spring/server/i18n/LocaleContextHolderLocaleResolverTest.java similarity index 91% rename from belgif-rest-problem-spring-boot-common-server/src/test/java/io/github/belgif/rest/problem/spring/i18n/LocaleContextHolderLocaleResolverTest.java rename to belgif-rest-problem-spring-boot-common-server/src/test/java/io/github/belgif/rest/problem/spring/server/i18n/LocaleContextHolderLocaleResolverTest.java index 2d5c48ea..6263636f 100644 --- a/belgif-rest-problem-spring-boot-common-server/src/test/java/io/github/belgif/rest/problem/spring/i18n/LocaleContextHolderLocaleResolverTest.java +++ b/belgif-rest-problem-spring-boot-common-server/src/test/java/io/github/belgif/rest/problem/spring/server/i18n/LocaleContextHolderLocaleResolverTest.java @@ -1,4 +1,4 @@ -package io.github.belgif.rest.problem.spring.i18n; +package io.github.belgif.rest.problem.spring.server.i18n; import static org.assertj.core.api.Assertions.*; diff --git a/belgif-rest-problem-spring-boot-common-server/src/test/java/io/github/belgif/rest/problem/spring/internal/BeanValidationExceptionUtilTest.java b/belgif-rest-problem-spring-boot-common-server/src/test/java/io/github/belgif/rest/problem/spring/server/internal/BeanValidationExceptionUtilTest.java similarity index 99% rename from belgif-rest-problem-spring-boot-common-server/src/test/java/io/github/belgif/rest/problem/spring/internal/BeanValidationExceptionUtilTest.java rename to belgif-rest-problem-spring-boot-common-server/src/test/java/io/github/belgif/rest/problem/spring/server/internal/BeanValidationExceptionUtilTest.java index 8bdf5eeb..7ec42ec8 100644 --- a/belgif-rest-problem-spring-boot-common-server/src/test/java/io/github/belgif/rest/problem/spring/internal/BeanValidationExceptionUtilTest.java +++ b/belgif-rest-problem-spring-boot-common-server/src/test/java/io/github/belgif/rest/problem/spring/server/internal/BeanValidationExceptionUtilTest.java @@ -1,4 +1,4 @@ -package io.github.belgif.rest.problem.spring.internal; +package io.github.belgif.rest.problem.spring.server.internal; import static org.assertj.core.api.Assertions.*; diff --git a/belgif-rest-problem-spring-boot-common-server/src/test/java/io/github/belgif/rest/problem/spring/internal/CachedAnnotationParameterNameSupportTest.java b/belgif-rest-problem-spring-boot-common-server/src/test/java/io/github/belgif/rest/problem/spring/server/internal/CachedAnnotationParameterNameSupportTest.java similarity index 97% rename from belgif-rest-problem-spring-boot-common-server/src/test/java/io/github/belgif/rest/problem/spring/internal/CachedAnnotationParameterNameSupportTest.java rename to belgif-rest-problem-spring-boot-common-server/src/test/java/io/github/belgif/rest/problem/spring/server/internal/CachedAnnotationParameterNameSupportTest.java index 900a2d17..cabb7625 100644 --- a/belgif-rest-problem-spring-boot-common-server/src/test/java/io/github/belgif/rest/problem/spring/internal/CachedAnnotationParameterNameSupportTest.java +++ b/belgif-rest-problem-spring-boot-common-server/src/test/java/io/github/belgif/rest/problem/spring/server/internal/CachedAnnotationParameterNameSupportTest.java @@ -1,4 +1,4 @@ -package io.github.belgif.rest.problem.spring.internal; +package io.github.belgif.rest.problem.spring.server.internal; import static org.assertj.core.api.Assertions.*; diff --git a/belgif-rest-problem-spring-boot-common-server/src/test/java/io/github/belgif/rest/problem/spring/internal/DetermineSourceUtilTest.java b/belgif-rest-problem-spring-boot-common-server/src/test/java/io/github/belgif/rest/problem/spring/server/internal/DetermineSourceUtilTest.java similarity index 98% rename from belgif-rest-problem-spring-boot-common-server/src/test/java/io/github/belgif/rest/problem/spring/internal/DetermineSourceUtilTest.java rename to belgif-rest-problem-spring-boot-common-server/src/test/java/io/github/belgif/rest/problem/spring/server/internal/DetermineSourceUtilTest.java index 47e8a8d6..c0f5acd8 100644 --- a/belgif-rest-problem-spring-boot-common-server/src/test/java/io/github/belgif/rest/problem/spring/internal/DetermineSourceUtilTest.java +++ b/belgif-rest-problem-spring-boot-common-server/src/test/java/io/github/belgif/rest/problem/spring/server/internal/DetermineSourceUtilTest.java @@ -1,4 +1,4 @@ -package io.github.belgif.rest.problem.spring.internal; +package io.github.belgif.rest.problem.spring.server.internal; import static org.assertj.core.api.Assertions.*; import static org.mockito.Mockito.*; diff --git a/belgif-rest-problem-spring-boot-common-server/src/test/java/io/github/belgif/rest/problem/spring/internal/InvalidRequestExceptionUtilTest.java b/belgif-rest-problem-spring-boot-common-server/src/test/java/io/github/belgif/rest/problem/spring/server/internal/InvalidRequestExceptionUtilTest.java similarity index 99% rename from belgif-rest-problem-spring-boot-common-server/src/test/java/io/github/belgif/rest/problem/spring/internal/InvalidRequestExceptionUtilTest.java rename to belgif-rest-problem-spring-boot-common-server/src/test/java/io/github/belgif/rest/problem/spring/server/internal/InvalidRequestExceptionUtilTest.java index 10f6197f..31c49cce 100644 --- a/belgif-rest-problem-spring-boot-common-server/src/test/java/io/github/belgif/rest/problem/spring/internal/InvalidRequestExceptionUtilTest.java +++ b/belgif-rest-problem-spring-boot-common-server/src/test/java/io/github/belgif/rest/problem/spring/server/internal/InvalidRequestExceptionUtilTest.java @@ -1,4 +1,4 @@ -package io.github.belgif.rest.problem.spring.internal; +package io.github.belgif.rest.problem.spring.server.internal; import static org.assertj.core.api.Assertions.*; From ca4cd23e375354d8ebacae4517f3434619848c33 Mon Sep 17 00:00:00 2001 From: pvdb Date: Mon, 23 Feb 2026 14:25:04 +0100 Subject: [PATCH 04/23] [spring] merge all spring common-* and *-core modules (WIP) --- belgif-rest-problem-bom/pom.xml | 6 +- .../pom.xml | 7 +- .../pom.xml | 70 ---------------- .../pom.xml | 7 +- .../pom.xml | 9 +- .../pom.xml | 70 ---------------- .../src/test/resources/logback-test.xml | 32 -------- .../pom.xml | 9 +- .../pom.xml | 82 ------------------- .../src/test/resources/logback-test.xml | 32 -------- .../src/test/resources/logback-test.xml | 32 -------- .../pom.xml | 76 ----------------- .../src/test/resources/logback-test.xml | 32 -------- .../pom.xml | 48 +++++++---- .../spring/ProblemAutoConfiguration.java | 0 .../ProblemConfigurationProperties.java | 0 .../ProblemExtConfigurationProperties.java | 0 .../rest/problem/spring/ProblemMediaType.java | 0 .../problem/spring/SpringProblemModule.java | 0 .../spring/SpringProblemModuleJackson3.java | 4 +- .../spring/SpringProblemTypeRegistry.java | 0 .../AbstractProblemResponseErrorHandler.java | 0 .../AbstractProblemRestClientCustomizer.java | 0 ...AbstractProblemRestTemplateCustomizer.java | 0 .../AbstractProblemWebClientCustomizer.java | 0 ...bstractInvalidRequestExceptionHandler.java | 0 ...blemValidationConfigurationCustomizer.java | 0 .../AbstractRoutingExceptionsHandler.java | 0 .../AnnotationParameterNameProvider.java | 0 .../BeanValidationExceptionsHandler.java | 0 .../server/ProblemExceptionHandler.java | 0 .../LocaleContextHolderLocaleResolver.java | 0 .../internal/BeanValidationExceptionUtil.java | 0 .../CachedAnnotationParameterNameSupport.java | 0 .../server/internal/DetermineSourceUtil.java | 0 .../internal/InvalidRequestExceptionUtil.java | 0 ...ub.belgif.rest.problem.i18n.LocaleResolver | 0 ...ot.autoconfigure.AutoConfiguration.imports | 0 .../spring/ProblemAutoConfigurationTest.java | 0 .../ProblemConfigurationPropertiesTest.java | 0 ...ProblemExtConfigurationPropertiesTest.java | 0 .../problem/spring/ProblemMediaTypeTest.java | 0 .../SpringProblemModuleJackson3Test.java | 4 +- .../spring/SpringProblemModuleTest.java | 0 .../spring/SpringProblemTypeRegistryTest.java | 0 ...stractProblemResponseErrorHandlerTest.java | 0 ...stractProblemRestClientCustomizerTest.java | 0 ...ractProblemRestTemplateCustomizerTest.java | 0 ...bstractProblemWebClientCustomizerTest.java | 0 ...actInvalidRequestExceptionHandlerTest.java | 14 ++-- ...ValidationConfigurationCustomizerTest.java | 0 .../AbstractRoutingExceptionsHandlerTest.java | 0 .../AnnotationParameterNameProviderTest.java | 0 .../BeanValidationExceptionsHandlerTest.java | 0 .../server/ProblemExceptionHandlerTest.java | 0 ...LocaleContextHolderLocaleResolverTest.java | 0 .../BeanValidationExceptionUtilTest.java | 0 ...hedAnnotationParameterNameSupportTest.java | 0 .../internal/DetermineSourceUtilTest.java | 0 .../InvalidRequestExceptionUtilTest.java | 0 .../src/test/resources/logback-test.xml | 0 pom.xml | 14 +--- 62 files changed, 57 insertions(+), 491 deletions(-) delete mode 100644 belgif-rest-problem-spring-boot-3-core/pom.xml delete mode 100644 belgif-rest-problem-spring-boot-4-core/pom.xml delete mode 100644 belgif-rest-problem-spring-boot-4-core/src/test/resources/logback-test.xml delete mode 100644 belgif-rest-problem-spring-boot-common-client/pom.xml delete mode 100644 belgif-rest-problem-spring-boot-common-client/src/test/resources/logback-test.xml delete mode 100644 belgif-rest-problem-spring-boot-common-server/src/test/resources/logback-test.xml delete mode 100644 belgif-rest-problem-spring-boot-common/pom.xml delete mode 100644 belgif-rest-problem-spring-boot-common/src/test/resources/logback-test.xml rename {belgif-rest-problem-spring-boot-common-server => belgif-rest-problem-spring-common}/pom.xml (76%) rename {belgif-rest-problem-spring-boot-common => belgif-rest-problem-spring-common}/src/main/java/io/github/belgif/rest/problem/spring/ProblemAutoConfiguration.java (100%) rename {belgif-rest-problem-spring-boot-common => belgif-rest-problem-spring-common}/src/main/java/io/github/belgif/rest/problem/spring/ProblemConfigurationProperties.java (100%) rename {belgif-rest-problem-spring-boot-common => belgif-rest-problem-spring-common}/src/main/java/io/github/belgif/rest/problem/spring/ProblemExtConfigurationProperties.java (100%) rename {belgif-rest-problem-spring-boot-common => belgif-rest-problem-spring-common}/src/main/java/io/github/belgif/rest/problem/spring/ProblemMediaType.java (100%) rename {belgif-rest-problem-spring-boot-3-core => belgif-rest-problem-spring-common}/src/main/java/io/github/belgif/rest/problem/spring/SpringProblemModule.java (100%) rename belgif-rest-problem-spring-boot-4-core/src/main/java/io/github/belgif/rest/problem/spring/SpringProblemModule.java => belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/SpringProblemModuleJackson3.java (66%) rename {belgif-rest-problem-spring-boot-common => belgif-rest-problem-spring-common}/src/main/java/io/github/belgif/rest/problem/spring/SpringProblemTypeRegistry.java (100%) rename {belgif-rest-problem-spring-boot-common-client => belgif-rest-problem-spring-common}/src/main/java/io/github/belgif/rest/problem/spring/client/AbstractProblemResponseErrorHandler.java (100%) rename {belgif-rest-problem-spring-boot-common-client => belgif-rest-problem-spring-common}/src/main/java/io/github/belgif/rest/problem/spring/client/AbstractProblemRestClientCustomizer.java (100%) rename {belgif-rest-problem-spring-boot-common-client => belgif-rest-problem-spring-common}/src/main/java/io/github/belgif/rest/problem/spring/client/AbstractProblemRestTemplateCustomizer.java (100%) rename {belgif-rest-problem-spring-boot-common-client => belgif-rest-problem-spring-common}/src/main/java/io/github/belgif/rest/problem/spring/client/AbstractProblemWebClientCustomizer.java (100%) rename {belgif-rest-problem-spring-boot-common-server => belgif-rest-problem-spring-common}/src/main/java/io/github/belgif/rest/problem/spring/server/AbstractInvalidRequestExceptionHandler.java (100%) rename {belgif-rest-problem-spring-boot-common-server => belgif-rest-problem-spring-common}/src/main/java/io/github/belgif/rest/problem/spring/server/AbstractProblemValidationConfigurationCustomizer.java (100%) rename {belgif-rest-problem-spring-boot-common-server => belgif-rest-problem-spring-common}/src/main/java/io/github/belgif/rest/problem/spring/server/AbstractRoutingExceptionsHandler.java (100%) rename {belgif-rest-problem-spring-boot-common-server => belgif-rest-problem-spring-common}/src/main/java/io/github/belgif/rest/problem/spring/server/AnnotationParameterNameProvider.java (100%) rename {belgif-rest-problem-spring-boot-common-server => belgif-rest-problem-spring-common}/src/main/java/io/github/belgif/rest/problem/spring/server/BeanValidationExceptionsHandler.java (100%) rename {belgif-rest-problem-spring-boot-common-server => belgif-rest-problem-spring-common}/src/main/java/io/github/belgif/rest/problem/spring/server/ProblemExceptionHandler.java (100%) rename {belgif-rest-problem-spring-boot-common-server => belgif-rest-problem-spring-common}/src/main/java/io/github/belgif/rest/problem/spring/server/i18n/LocaleContextHolderLocaleResolver.java (100%) rename {belgif-rest-problem-spring-boot-common-server => belgif-rest-problem-spring-common}/src/main/java/io/github/belgif/rest/problem/spring/server/internal/BeanValidationExceptionUtil.java (100%) rename {belgif-rest-problem-spring-boot-common-server => belgif-rest-problem-spring-common}/src/main/java/io/github/belgif/rest/problem/spring/server/internal/CachedAnnotationParameterNameSupport.java (100%) rename {belgif-rest-problem-spring-boot-common-server => belgif-rest-problem-spring-common}/src/main/java/io/github/belgif/rest/problem/spring/server/internal/DetermineSourceUtil.java (100%) rename {belgif-rest-problem-spring-boot-common-server => belgif-rest-problem-spring-common}/src/main/java/io/github/belgif/rest/problem/spring/server/internal/InvalidRequestExceptionUtil.java (100%) rename {belgif-rest-problem-spring-boot-common-server => belgif-rest-problem-spring-common}/src/main/resources/META-INF/services/io.github.belgif.rest.problem.i18n.LocaleResolver (100%) rename {belgif-rest-problem-spring-boot-common => belgif-rest-problem-spring-common}/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports (100%) rename {belgif-rest-problem-spring-boot-common => belgif-rest-problem-spring-common}/src/test/java/io/github/belgif/rest/problem/spring/ProblemAutoConfigurationTest.java (100%) rename {belgif-rest-problem-spring-boot-common => belgif-rest-problem-spring-common}/src/test/java/io/github/belgif/rest/problem/spring/ProblemConfigurationPropertiesTest.java (100%) rename {belgif-rest-problem-spring-boot-common => belgif-rest-problem-spring-common}/src/test/java/io/github/belgif/rest/problem/spring/ProblemExtConfigurationPropertiesTest.java (100%) rename {belgif-rest-problem-spring-boot-common => belgif-rest-problem-spring-common}/src/test/java/io/github/belgif/rest/problem/spring/ProblemMediaTypeTest.java (100%) rename belgif-rest-problem-spring-boot-4-core/src/test/java/io/github/belgif/rest/problem/spring/SpringProblemModuleTest.java => belgif-rest-problem-spring-common/src/test/java/io/github/belgif/rest/problem/spring/SpringProblemModuleJackson3Test.java (86%) rename {belgif-rest-problem-spring-boot-3-core => belgif-rest-problem-spring-common}/src/test/java/io/github/belgif/rest/problem/spring/SpringProblemModuleTest.java (100%) rename {belgif-rest-problem-spring-boot-common => belgif-rest-problem-spring-common}/src/test/java/io/github/belgif/rest/problem/spring/SpringProblemTypeRegistryTest.java (100%) rename {belgif-rest-problem-spring-boot-common-client => belgif-rest-problem-spring-common}/src/test/java/io/github/belgif/rest/problem/spring/client/AbstractProblemResponseErrorHandlerTest.java (100%) rename {belgif-rest-problem-spring-boot-common-client => belgif-rest-problem-spring-common}/src/test/java/io/github/belgif/rest/problem/spring/client/AbstractProblemRestClientCustomizerTest.java (100%) rename {belgif-rest-problem-spring-boot-common-client => belgif-rest-problem-spring-common}/src/test/java/io/github/belgif/rest/problem/spring/client/AbstractProblemRestTemplateCustomizerTest.java (100%) rename {belgif-rest-problem-spring-boot-common-client => belgif-rest-problem-spring-common}/src/test/java/io/github/belgif/rest/problem/spring/client/AbstractProblemWebClientCustomizerTest.java (100%) rename {belgif-rest-problem-spring-boot-common-server => belgif-rest-problem-spring-common}/src/test/java/io/github/belgif/rest/problem/spring/server/AbstractInvalidRequestExceptionHandlerTest.java (97%) rename {belgif-rest-problem-spring-boot-common-server => belgif-rest-problem-spring-common}/src/test/java/io/github/belgif/rest/problem/spring/server/AbstractProblemValidationConfigurationCustomizerTest.java (100%) rename {belgif-rest-problem-spring-boot-common-server => belgif-rest-problem-spring-common}/src/test/java/io/github/belgif/rest/problem/spring/server/AbstractRoutingExceptionsHandlerTest.java (100%) rename {belgif-rest-problem-spring-boot-common-server => belgif-rest-problem-spring-common}/src/test/java/io/github/belgif/rest/problem/spring/server/AnnotationParameterNameProviderTest.java (100%) rename {belgif-rest-problem-spring-boot-common-server => belgif-rest-problem-spring-common}/src/test/java/io/github/belgif/rest/problem/spring/server/BeanValidationExceptionsHandlerTest.java (100%) rename {belgif-rest-problem-spring-boot-common-server => belgif-rest-problem-spring-common}/src/test/java/io/github/belgif/rest/problem/spring/server/ProblemExceptionHandlerTest.java (100%) rename {belgif-rest-problem-spring-boot-common-server => belgif-rest-problem-spring-common}/src/test/java/io/github/belgif/rest/problem/spring/server/i18n/LocaleContextHolderLocaleResolverTest.java (100%) rename {belgif-rest-problem-spring-boot-common-server => belgif-rest-problem-spring-common}/src/test/java/io/github/belgif/rest/problem/spring/server/internal/BeanValidationExceptionUtilTest.java (100%) rename {belgif-rest-problem-spring-boot-common-server => belgif-rest-problem-spring-common}/src/test/java/io/github/belgif/rest/problem/spring/server/internal/CachedAnnotationParameterNameSupportTest.java (100%) rename {belgif-rest-problem-spring-boot-common-server => belgif-rest-problem-spring-common}/src/test/java/io/github/belgif/rest/problem/spring/server/internal/DetermineSourceUtilTest.java (100%) rename {belgif-rest-problem-spring-boot-common-server => belgif-rest-problem-spring-common}/src/test/java/io/github/belgif/rest/problem/spring/server/internal/InvalidRequestExceptionUtilTest.java (100%) rename {belgif-rest-problem-spring-boot-3-core => belgif-rest-problem-spring-common}/src/test/resources/logback-test.xml (100%) diff --git a/belgif-rest-problem-bom/pom.xml b/belgif-rest-problem-bom/pom.xml index 1605625d..417f99be 100644 --- a/belgif-rest-problem-bom/pom.xml +++ b/belgif-rest-problem-bom/pom.xml @@ -63,7 +63,7 @@ io.github.belgif.rest.problem - belgif-rest-problem-spring-boot-common + belgif-rest-problem-spring-common ${project.version} @@ -108,12 +108,12 @@ io.github.belgif.rest.problem - belgif-rest-problem-spring-boot-4-client + belgif-rest-problem-spring-boot-4-client-starter ${project.version} io.github.belgif.rest.problem - belgif-rest-problem-spring-boot-4-server + belgif-rest-problem-server-spring-boot-4-starter ${project.version} diff --git a/belgif-rest-problem-spring-boot-3-client/pom.xml b/belgif-rest-problem-spring-boot-3-client/pom.xml index fbd0af4a..d0176484 100644 --- a/belgif-rest-problem-spring-boot-3-client/pom.xml +++ b/belgif-rest-problem-spring-boot-3-client/pom.xml @@ -32,12 +32,7 @@ io.github.belgif.rest.problem - belgif-rest-problem-spring-boot-3-core - ${project.version} - - - io.github.belgif.rest.problem - belgif-rest-problem-spring-boot-common-client + belgif-rest-problem-spring-common ${project.version} diff --git a/belgif-rest-problem-spring-boot-3-core/pom.xml b/belgif-rest-problem-spring-boot-3-core/pom.xml deleted file mode 100644 index 791c8e52..00000000 --- a/belgif-rest-problem-spring-boot-3-core/pom.xml +++ /dev/null @@ -1,70 +0,0 @@ - - - 4.0.0 - - - io.github.belgif.rest.problem - belgif-rest-problem-parent - ${revision} - - - belgif-rest-problem-spring-boot-3-core - ${project.groupId}:${project.artifactId} - jar - - - 17 - - - - - - org.springframework.boot - spring-boot-dependencies - ${version.spring.boot.3} - pom - import - - - - - - - io.github.belgif.rest.problem - belgif-rest-problem-spring-boot-common - ${project.version} - - - org.springframework.boot - spring-boot-autoconfigure - provided - - - org.slf4j - slf4j-api - provided - - - com.fasterxml.jackson.core - jackson-databind - provided - - - org.springframework.boot - spring-boot-starter-test - test - - - org.junit.jupiter - junit-jupiter - test - - - org.assertj - assertj-core - test - - - - diff --git a/belgif-rest-problem-spring-boot-3-server/pom.xml b/belgif-rest-problem-spring-boot-3-server/pom.xml index 80f1419b..78bbbbdc 100644 --- a/belgif-rest-problem-spring-boot-3-server/pom.xml +++ b/belgif-rest-problem-spring-boot-3-server/pom.xml @@ -32,12 +32,7 @@ io.github.belgif.rest.problem - belgif-rest-problem-spring-boot-3-core - ${project.version} - - - io.github.belgif.rest.problem - belgif-rest-problem-spring-boot-common-server + belgif-rest-problem-spring-common ${project.version} diff --git a/belgif-rest-problem-spring-boot-4-client/pom.xml b/belgif-rest-problem-spring-boot-4-client/pom.xml index 56d9c6a6..e6391c6e 100644 --- a/belgif-rest-problem-spring-boot-4-client/pom.xml +++ b/belgif-rest-problem-spring-boot-4-client/pom.xml @@ -9,7 +9,7 @@ ${revision} - belgif-rest-problem-spring-boot-4-client + belgif-rest-problem-spring-boot-4-client-starter ${project.groupId}:${project.artifactId} jar @@ -32,12 +32,7 @@ io.github.belgif.rest.problem - belgif-rest-problem-spring-boot-4-core - ${project.version} - - - io.github.belgif.rest.problem - belgif-rest-problem-spring-boot-common-client + belgif-rest-problem-spring-common ${project.version} diff --git a/belgif-rest-problem-spring-boot-4-core/pom.xml b/belgif-rest-problem-spring-boot-4-core/pom.xml deleted file mode 100644 index 612ac9e6..00000000 --- a/belgif-rest-problem-spring-boot-4-core/pom.xml +++ /dev/null @@ -1,70 +0,0 @@ - - - 4.0.0 - - - io.github.belgif.rest.problem - belgif-rest-problem-parent - ${revision} - - - belgif-rest-problem-spring-boot-4-core - ${project.groupId}:${project.artifactId} - jar - - - 17 - - - - - - org.springframework.boot - spring-boot-dependencies - ${version.spring.boot.4} - pom - import - - - - - - - io.github.belgif.rest.problem - belgif-rest-problem-spring-boot-common - ${project.version} - - - org.springframework.boot - spring-boot-autoconfigure - provided - - - org.springframework.boot - spring-boot-starter-jackson - provided - - - org.slf4j - slf4j-api - provided - - - org.springframework.boot - spring-boot-starter-test - test - - - org.junit.jupiter - junit-jupiter - test - - - org.assertj - assertj-core - test - - - - diff --git a/belgif-rest-problem-spring-boot-4-core/src/test/resources/logback-test.xml b/belgif-rest-problem-spring-boot-4-core/src/test/resources/logback-test.xml deleted file mode 100644 index fe45af16..00000000 --- a/belgif-rest-problem-spring-boot-4-core/src/test/resources/logback-test.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - - %d [%thread] %.-1level %logger{36} %M - %msg%n - - - ERROR - DENY - ACCEPT - - System.out - - - - - %d [%thread] %.-1level %logger{36} %M - %msg%n - - - ERROR - ACCEPT - DENY - - System.err - - - - - - - - diff --git a/belgif-rest-problem-spring-boot-4-server/pom.xml b/belgif-rest-problem-spring-boot-4-server/pom.xml index 825b1920..adaef7cd 100644 --- a/belgif-rest-problem-spring-boot-4-server/pom.xml +++ b/belgif-rest-problem-spring-boot-4-server/pom.xml @@ -9,7 +9,7 @@ ${revision} - belgif-rest-problem-spring-boot-4-server + belgif-rest-problem-server-spring-boot-4-server ${project.groupId}:${project.artifactId} jar @@ -32,12 +32,7 @@ io.github.belgif.rest.problem - belgif-rest-problem-spring-boot-4-core - ${project.version} - - - io.github.belgif.rest.problem - belgif-rest-problem-spring-boot-common-server + belgif-rest-problem-spring-common ${project.version} diff --git a/belgif-rest-problem-spring-boot-common-client/pom.xml b/belgif-rest-problem-spring-boot-common-client/pom.xml deleted file mode 100644 index 5ebfcea6..00000000 --- a/belgif-rest-problem-spring-boot-common-client/pom.xml +++ /dev/null @@ -1,82 +0,0 @@ - - - 4.0.0 - - - io.github.belgif.rest.problem - belgif-rest-problem-parent - ${revision} - - - belgif-rest-problem-spring-boot-common-client - ${project.groupId}:${project.artifactId} - Contains shared client components that are common between Spring Boot versions - jar - - - 17 - - - - - - org.springframework.boot - spring-boot-dependencies - ${version.spring.boot.3} - pom - import - - - - - - - io.github.belgif.rest.problem - belgif-rest-problem-spring-boot-common - ${project.version} - - - org.springframework.boot - spring-boot-autoconfigure - provided - - - org.springframework - spring-web - provided - - - org.springframework - spring-webflux - provided - true - - - org.slf4j - slf4j-api - provided - - - com.fasterxml.jackson.core - jackson-databind - provided - - - org.springframework.boot - spring-boot-starter-test - test - - - org.junit.jupiter - junit-jupiter - test - - - org.assertj - assertj-core - test - - - - diff --git a/belgif-rest-problem-spring-boot-common-client/src/test/resources/logback-test.xml b/belgif-rest-problem-spring-boot-common-client/src/test/resources/logback-test.xml deleted file mode 100644 index fe45af16..00000000 --- a/belgif-rest-problem-spring-boot-common-client/src/test/resources/logback-test.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - - %d [%thread] %.-1level %logger{36} %M - %msg%n - - - ERROR - DENY - ACCEPT - - System.out - - - - - %d [%thread] %.-1level %logger{36} %M - %msg%n - - - ERROR - ACCEPT - DENY - - System.err - - - - - - - - diff --git a/belgif-rest-problem-spring-boot-common-server/src/test/resources/logback-test.xml b/belgif-rest-problem-spring-boot-common-server/src/test/resources/logback-test.xml deleted file mode 100644 index fe45af16..00000000 --- a/belgif-rest-problem-spring-boot-common-server/src/test/resources/logback-test.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - - %d [%thread] %.-1level %logger{36} %M - %msg%n - - - ERROR - DENY - ACCEPT - - System.out - - - - - %d [%thread] %.-1level %logger{36} %M - %msg%n - - - ERROR - ACCEPT - DENY - - System.err - - - - - - - - diff --git a/belgif-rest-problem-spring-boot-common/pom.xml b/belgif-rest-problem-spring-boot-common/pom.xml deleted file mode 100644 index cd7feac7..00000000 --- a/belgif-rest-problem-spring-boot-common/pom.xml +++ /dev/null @@ -1,76 +0,0 @@ - - - 4.0.0 - - - io.github.belgif.rest.problem - belgif-rest-problem-parent - ${revision} - - - belgif-rest-problem-spring-boot-common - ${project.groupId}:${project.artifactId} - Contains shared components that are common between Spring Boot versions - jar - - - 17 - - - - - - org.springframework.boot - spring-boot-dependencies - ${version.spring.boot.3} - pom - import - - - - - - - io.github.belgif.rest.problem - belgif-rest-problem - ${project.version} - - - org.springframework.boot - spring-boot-autoconfigure - provided - - - org.springframework - spring-web - provided - - - org.slf4j - slf4j-api - provided - - - com.fasterxml.jackson.core - jackson-databind - provided - - - org.springframework.boot - spring-boot-starter-test - test - - - org.junit.jupiter - junit-jupiter - test - - - org.assertj - assertj-core - test - - - - diff --git a/belgif-rest-problem-spring-boot-common/src/test/resources/logback-test.xml b/belgif-rest-problem-spring-boot-common/src/test/resources/logback-test.xml deleted file mode 100644 index fe45af16..00000000 --- a/belgif-rest-problem-spring-boot-common/src/test/resources/logback-test.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - - %d [%thread] %.-1level %logger{36} %M - %msg%n - - - ERROR - DENY - ACCEPT - - System.out - - - - - %d [%thread] %.-1level %logger{36} %M - %msg%n - - - ERROR - ACCEPT - DENY - - System.err - - - - - - - - diff --git a/belgif-rest-problem-spring-boot-common-server/pom.xml b/belgif-rest-problem-spring-common/pom.xml similarity index 76% rename from belgif-rest-problem-spring-boot-common-server/pom.xml rename to belgif-rest-problem-spring-common/pom.xml index 27b4fcff..43162d14 100644 --- a/belgif-rest-problem-spring-boot-common-server/pom.xml +++ b/belgif-rest-problem-spring-common/pom.xml @@ -9,9 +9,9 @@ ${revision} - belgif-rest-problem-spring-boot-common-server + belgif-rest-problem-spring-common ${project.groupId}:${project.artifactId} - Contains shared server components that are common between Spring Boot versions + Contains shared components that are common between Spring Boot versions jar @@ -33,7 +33,7 @@ io.github.belgif.rest.problem - belgif-rest-problem-spring-boot-common + belgif-rest-problem ${project.version} @@ -46,10 +46,23 @@ spring-web provided + + org.springframework + spring-webflux + provided + true + org.springframework spring-webmvc provided + true + + + com.atlassian.oai + swagger-request-validator-springmvc + 2.46.0 + true org.slf4j @@ -62,31 +75,38 @@ provided - jakarta.validation - jakarta.validation-api + jakarta.servlet + jakarta.servlet-api provided + - jakarta.servlet - jakarta.servlet-api + org.hibernate.validator + hibernate-validator provided + true - com.atlassian.oai - swagger-request-validator-springmvc - 2.46.0 + jakarta.validation + jakarta.validation-api + provided true + - org.springframework.boot - spring-boot-starter-test - test + tools.jackson.core + jackson-databind + 3.0.4 + provided + true + org.springframework.boot - spring-boot-starter-validation + spring-boot-starter-test test + org.junit.jupiter junit-jupiter diff --git a/belgif-rest-problem-spring-boot-common/src/main/java/io/github/belgif/rest/problem/spring/ProblemAutoConfiguration.java b/belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/ProblemAutoConfiguration.java similarity index 100% rename from belgif-rest-problem-spring-boot-common/src/main/java/io/github/belgif/rest/problem/spring/ProblemAutoConfiguration.java rename to belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/ProblemAutoConfiguration.java diff --git a/belgif-rest-problem-spring-boot-common/src/main/java/io/github/belgif/rest/problem/spring/ProblemConfigurationProperties.java b/belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/ProblemConfigurationProperties.java similarity index 100% rename from belgif-rest-problem-spring-boot-common/src/main/java/io/github/belgif/rest/problem/spring/ProblemConfigurationProperties.java rename to belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/ProblemConfigurationProperties.java diff --git a/belgif-rest-problem-spring-boot-common/src/main/java/io/github/belgif/rest/problem/spring/ProblemExtConfigurationProperties.java b/belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/ProblemExtConfigurationProperties.java similarity index 100% rename from belgif-rest-problem-spring-boot-common/src/main/java/io/github/belgif/rest/problem/spring/ProblemExtConfigurationProperties.java rename to belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/ProblemExtConfigurationProperties.java diff --git a/belgif-rest-problem-spring-boot-common/src/main/java/io/github/belgif/rest/problem/spring/ProblemMediaType.java b/belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/ProblemMediaType.java similarity index 100% rename from belgif-rest-problem-spring-boot-common/src/main/java/io/github/belgif/rest/problem/spring/ProblemMediaType.java rename to belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/ProblemMediaType.java diff --git a/belgif-rest-problem-spring-boot-3-core/src/main/java/io/github/belgif/rest/problem/spring/SpringProblemModule.java b/belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/SpringProblemModule.java similarity index 100% rename from belgif-rest-problem-spring-boot-3-core/src/main/java/io/github/belgif/rest/problem/spring/SpringProblemModule.java rename to belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/SpringProblemModule.java diff --git a/belgif-rest-problem-spring-boot-4-core/src/main/java/io/github/belgif/rest/problem/spring/SpringProblemModule.java b/belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/SpringProblemModuleJackson3.java similarity index 66% rename from belgif-rest-problem-spring-boot-4-core/src/main/java/io/github/belgif/rest/problem/spring/SpringProblemModule.java rename to belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/SpringProblemModuleJackson3.java index 708a3a9e..d45158d2 100644 --- a/belgif-rest-problem-spring-boot-4-core/src/main/java/io/github/belgif/rest/problem/spring/SpringProblemModule.java +++ b/belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/SpringProblemModuleJackson3.java @@ -10,9 +10,9 @@ * @see SpringProblemTypeRegistry */ @Component -public class SpringProblemModule extends ProblemModuleJackson3 { +public class SpringProblemModuleJackson3 extends ProblemModuleJackson3 { - public SpringProblemModule(SpringProblemTypeRegistry springProblemTypeRegistry) { + public SpringProblemModuleJackson3(SpringProblemTypeRegistry springProblemTypeRegistry) { super(springProblemTypeRegistry); } diff --git a/belgif-rest-problem-spring-boot-common/src/main/java/io/github/belgif/rest/problem/spring/SpringProblemTypeRegistry.java b/belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/SpringProblemTypeRegistry.java similarity index 100% rename from belgif-rest-problem-spring-boot-common/src/main/java/io/github/belgif/rest/problem/spring/SpringProblemTypeRegistry.java rename to belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/SpringProblemTypeRegistry.java diff --git a/belgif-rest-problem-spring-boot-common-client/src/main/java/io/github/belgif/rest/problem/spring/client/AbstractProblemResponseErrorHandler.java b/belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/client/AbstractProblemResponseErrorHandler.java similarity index 100% rename from belgif-rest-problem-spring-boot-common-client/src/main/java/io/github/belgif/rest/problem/spring/client/AbstractProblemResponseErrorHandler.java rename to belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/client/AbstractProblemResponseErrorHandler.java diff --git a/belgif-rest-problem-spring-boot-common-client/src/main/java/io/github/belgif/rest/problem/spring/client/AbstractProblemRestClientCustomizer.java b/belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/client/AbstractProblemRestClientCustomizer.java similarity index 100% rename from belgif-rest-problem-spring-boot-common-client/src/main/java/io/github/belgif/rest/problem/spring/client/AbstractProblemRestClientCustomizer.java rename to belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/client/AbstractProblemRestClientCustomizer.java diff --git a/belgif-rest-problem-spring-boot-common-client/src/main/java/io/github/belgif/rest/problem/spring/client/AbstractProblemRestTemplateCustomizer.java b/belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/client/AbstractProblemRestTemplateCustomizer.java similarity index 100% rename from belgif-rest-problem-spring-boot-common-client/src/main/java/io/github/belgif/rest/problem/spring/client/AbstractProblemRestTemplateCustomizer.java rename to belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/client/AbstractProblemRestTemplateCustomizer.java diff --git a/belgif-rest-problem-spring-boot-common-client/src/main/java/io/github/belgif/rest/problem/spring/client/AbstractProblemWebClientCustomizer.java b/belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/client/AbstractProblemWebClientCustomizer.java similarity index 100% rename from belgif-rest-problem-spring-boot-common-client/src/main/java/io/github/belgif/rest/problem/spring/client/AbstractProblemWebClientCustomizer.java rename to belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/client/AbstractProblemWebClientCustomizer.java diff --git a/belgif-rest-problem-spring-boot-common-server/src/main/java/io/github/belgif/rest/problem/spring/server/AbstractInvalidRequestExceptionHandler.java b/belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/server/AbstractInvalidRequestExceptionHandler.java similarity index 100% rename from belgif-rest-problem-spring-boot-common-server/src/main/java/io/github/belgif/rest/problem/spring/server/AbstractInvalidRequestExceptionHandler.java rename to belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/server/AbstractInvalidRequestExceptionHandler.java diff --git a/belgif-rest-problem-spring-boot-common-server/src/main/java/io/github/belgif/rest/problem/spring/server/AbstractProblemValidationConfigurationCustomizer.java b/belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/server/AbstractProblemValidationConfigurationCustomizer.java similarity index 100% rename from belgif-rest-problem-spring-boot-common-server/src/main/java/io/github/belgif/rest/problem/spring/server/AbstractProblemValidationConfigurationCustomizer.java rename to belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/server/AbstractProblemValidationConfigurationCustomizer.java diff --git a/belgif-rest-problem-spring-boot-common-server/src/main/java/io/github/belgif/rest/problem/spring/server/AbstractRoutingExceptionsHandler.java b/belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/server/AbstractRoutingExceptionsHandler.java similarity index 100% rename from belgif-rest-problem-spring-boot-common-server/src/main/java/io/github/belgif/rest/problem/spring/server/AbstractRoutingExceptionsHandler.java rename to belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/server/AbstractRoutingExceptionsHandler.java diff --git a/belgif-rest-problem-spring-boot-common-server/src/main/java/io/github/belgif/rest/problem/spring/server/AnnotationParameterNameProvider.java b/belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/server/AnnotationParameterNameProvider.java similarity index 100% rename from belgif-rest-problem-spring-boot-common-server/src/main/java/io/github/belgif/rest/problem/spring/server/AnnotationParameterNameProvider.java rename to belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/server/AnnotationParameterNameProvider.java diff --git a/belgif-rest-problem-spring-boot-common-server/src/main/java/io/github/belgif/rest/problem/spring/server/BeanValidationExceptionsHandler.java b/belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/server/BeanValidationExceptionsHandler.java similarity index 100% rename from belgif-rest-problem-spring-boot-common-server/src/main/java/io/github/belgif/rest/problem/spring/server/BeanValidationExceptionsHandler.java rename to belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/server/BeanValidationExceptionsHandler.java diff --git a/belgif-rest-problem-spring-boot-common-server/src/main/java/io/github/belgif/rest/problem/spring/server/ProblemExceptionHandler.java b/belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/server/ProblemExceptionHandler.java similarity index 100% rename from belgif-rest-problem-spring-boot-common-server/src/main/java/io/github/belgif/rest/problem/spring/server/ProblemExceptionHandler.java rename to belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/server/ProblemExceptionHandler.java diff --git a/belgif-rest-problem-spring-boot-common-server/src/main/java/io/github/belgif/rest/problem/spring/server/i18n/LocaleContextHolderLocaleResolver.java b/belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/server/i18n/LocaleContextHolderLocaleResolver.java similarity index 100% rename from belgif-rest-problem-spring-boot-common-server/src/main/java/io/github/belgif/rest/problem/spring/server/i18n/LocaleContextHolderLocaleResolver.java rename to belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/server/i18n/LocaleContextHolderLocaleResolver.java diff --git a/belgif-rest-problem-spring-boot-common-server/src/main/java/io/github/belgif/rest/problem/spring/server/internal/BeanValidationExceptionUtil.java b/belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/server/internal/BeanValidationExceptionUtil.java similarity index 100% rename from belgif-rest-problem-spring-boot-common-server/src/main/java/io/github/belgif/rest/problem/spring/server/internal/BeanValidationExceptionUtil.java rename to belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/server/internal/BeanValidationExceptionUtil.java diff --git a/belgif-rest-problem-spring-boot-common-server/src/main/java/io/github/belgif/rest/problem/spring/server/internal/CachedAnnotationParameterNameSupport.java b/belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/server/internal/CachedAnnotationParameterNameSupport.java similarity index 100% rename from belgif-rest-problem-spring-boot-common-server/src/main/java/io/github/belgif/rest/problem/spring/server/internal/CachedAnnotationParameterNameSupport.java rename to belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/server/internal/CachedAnnotationParameterNameSupport.java diff --git a/belgif-rest-problem-spring-boot-common-server/src/main/java/io/github/belgif/rest/problem/spring/server/internal/DetermineSourceUtil.java b/belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/server/internal/DetermineSourceUtil.java similarity index 100% rename from belgif-rest-problem-spring-boot-common-server/src/main/java/io/github/belgif/rest/problem/spring/server/internal/DetermineSourceUtil.java rename to belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/server/internal/DetermineSourceUtil.java diff --git a/belgif-rest-problem-spring-boot-common-server/src/main/java/io/github/belgif/rest/problem/spring/server/internal/InvalidRequestExceptionUtil.java b/belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/server/internal/InvalidRequestExceptionUtil.java similarity index 100% rename from belgif-rest-problem-spring-boot-common-server/src/main/java/io/github/belgif/rest/problem/spring/server/internal/InvalidRequestExceptionUtil.java rename to belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/server/internal/InvalidRequestExceptionUtil.java diff --git a/belgif-rest-problem-spring-boot-common-server/src/main/resources/META-INF/services/io.github.belgif.rest.problem.i18n.LocaleResolver b/belgif-rest-problem-spring-common/src/main/resources/META-INF/services/io.github.belgif.rest.problem.i18n.LocaleResolver similarity index 100% rename from belgif-rest-problem-spring-boot-common-server/src/main/resources/META-INF/services/io.github.belgif.rest.problem.i18n.LocaleResolver rename to belgif-rest-problem-spring-common/src/main/resources/META-INF/services/io.github.belgif.rest.problem.i18n.LocaleResolver diff --git a/belgif-rest-problem-spring-boot-common/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/belgif-rest-problem-spring-common/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports similarity index 100% rename from belgif-rest-problem-spring-boot-common/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports rename to belgif-rest-problem-spring-common/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports diff --git a/belgif-rest-problem-spring-boot-common/src/test/java/io/github/belgif/rest/problem/spring/ProblemAutoConfigurationTest.java b/belgif-rest-problem-spring-common/src/test/java/io/github/belgif/rest/problem/spring/ProblemAutoConfigurationTest.java similarity index 100% rename from belgif-rest-problem-spring-boot-common/src/test/java/io/github/belgif/rest/problem/spring/ProblemAutoConfigurationTest.java rename to belgif-rest-problem-spring-common/src/test/java/io/github/belgif/rest/problem/spring/ProblemAutoConfigurationTest.java diff --git a/belgif-rest-problem-spring-boot-common/src/test/java/io/github/belgif/rest/problem/spring/ProblemConfigurationPropertiesTest.java b/belgif-rest-problem-spring-common/src/test/java/io/github/belgif/rest/problem/spring/ProblemConfigurationPropertiesTest.java similarity index 100% rename from belgif-rest-problem-spring-boot-common/src/test/java/io/github/belgif/rest/problem/spring/ProblemConfigurationPropertiesTest.java rename to belgif-rest-problem-spring-common/src/test/java/io/github/belgif/rest/problem/spring/ProblemConfigurationPropertiesTest.java diff --git a/belgif-rest-problem-spring-boot-common/src/test/java/io/github/belgif/rest/problem/spring/ProblemExtConfigurationPropertiesTest.java b/belgif-rest-problem-spring-common/src/test/java/io/github/belgif/rest/problem/spring/ProblemExtConfigurationPropertiesTest.java similarity index 100% rename from belgif-rest-problem-spring-boot-common/src/test/java/io/github/belgif/rest/problem/spring/ProblemExtConfigurationPropertiesTest.java rename to belgif-rest-problem-spring-common/src/test/java/io/github/belgif/rest/problem/spring/ProblemExtConfigurationPropertiesTest.java diff --git a/belgif-rest-problem-spring-boot-common/src/test/java/io/github/belgif/rest/problem/spring/ProblemMediaTypeTest.java b/belgif-rest-problem-spring-common/src/test/java/io/github/belgif/rest/problem/spring/ProblemMediaTypeTest.java similarity index 100% rename from belgif-rest-problem-spring-boot-common/src/test/java/io/github/belgif/rest/problem/spring/ProblemMediaTypeTest.java rename to belgif-rest-problem-spring-common/src/test/java/io/github/belgif/rest/problem/spring/ProblemMediaTypeTest.java diff --git a/belgif-rest-problem-spring-boot-4-core/src/test/java/io/github/belgif/rest/problem/spring/SpringProblemModuleTest.java b/belgif-rest-problem-spring-common/src/test/java/io/github/belgif/rest/problem/spring/SpringProblemModuleJackson3Test.java similarity index 86% rename from belgif-rest-problem-spring-boot-4-core/src/test/java/io/github/belgif/rest/problem/spring/SpringProblemModuleTest.java rename to belgif-rest-problem-spring-common/src/test/java/io/github/belgif/rest/problem/spring/SpringProblemModuleJackson3Test.java index 82430cee..914c6111 100644 --- a/belgif-rest-problem-spring-boot-4-core/src/test/java/io/github/belgif/rest/problem/spring/SpringProblemModuleTest.java +++ b/belgif-rest-problem-spring-common/src/test/java/io/github/belgif/rest/problem/spring/SpringProblemModuleJackson3Test.java @@ -11,7 +11,7 @@ import tools.jackson.databind.jsontype.NamedType; @ExtendWith(MockitoExtension.class) -class SpringProblemModuleTest { +class SpringProblemModuleJackson3Test { @Mock private SetupContext setupContext; @@ -20,7 +20,7 @@ class SpringProblemModuleTest { void module() { SpringProblemTypeRegistry problemTypeRegistry = new SpringProblemTypeRegistry(new ProblemConfigurationProperties()); - SpringProblemModule module = new SpringProblemModule(problemTypeRegistry); + SpringProblemModuleJackson3 module = new SpringProblemModuleJackson3(problemTypeRegistry); module.setupModule(setupContext); verify(setupContext).registerSubtypes(problemTypeRegistry.getProblemTypes().entrySet().stream() .map(entry -> new NamedType(entry.getValue(), entry.getKey())) diff --git a/belgif-rest-problem-spring-boot-3-core/src/test/java/io/github/belgif/rest/problem/spring/SpringProblemModuleTest.java b/belgif-rest-problem-spring-common/src/test/java/io/github/belgif/rest/problem/spring/SpringProblemModuleTest.java similarity index 100% rename from belgif-rest-problem-spring-boot-3-core/src/test/java/io/github/belgif/rest/problem/spring/SpringProblemModuleTest.java rename to belgif-rest-problem-spring-common/src/test/java/io/github/belgif/rest/problem/spring/SpringProblemModuleTest.java diff --git a/belgif-rest-problem-spring-boot-common/src/test/java/io/github/belgif/rest/problem/spring/SpringProblemTypeRegistryTest.java b/belgif-rest-problem-spring-common/src/test/java/io/github/belgif/rest/problem/spring/SpringProblemTypeRegistryTest.java similarity index 100% rename from belgif-rest-problem-spring-boot-common/src/test/java/io/github/belgif/rest/problem/spring/SpringProblemTypeRegistryTest.java rename to belgif-rest-problem-spring-common/src/test/java/io/github/belgif/rest/problem/spring/SpringProblemTypeRegistryTest.java diff --git a/belgif-rest-problem-spring-boot-common-client/src/test/java/io/github/belgif/rest/problem/spring/client/AbstractProblemResponseErrorHandlerTest.java b/belgif-rest-problem-spring-common/src/test/java/io/github/belgif/rest/problem/spring/client/AbstractProblemResponseErrorHandlerTest.java similarity index 100% rename from belgif-rest-problem-spring-boot-common-client/src/test/java/io/github/belgif/rest/problem/spring/client/AbstractProblemResponseErrorHandlerTest.java rename to belgif-rest-problem-spring-common/src/test/java/io/github/belgif/rest/problem/spring/client/AbstractProblemResponseErrorHandlerTest.java diff --git a/belgif-rest-problem-spring-boot-common-client/src/test/java/io/github/belgif/rest/problem/spring/client/AbstractProblemRestClientCustomizerTest.java b/belgif-rest-problem-spring-common/src/test/java/io/github/belgif/rest/problem/spring/client/AbstractProblemRestClientCustomizerTest.java similarity index 100% rename from belgif-rest-problem-spring-boot-common-client/src/test/java/io/github/belgif/rest/problem/spring/client/AbstractProblemRestClientCustomizerTest.java rename to belgif-rest-problem-spring-common/src/test/java/io/github/belgif/rest/problem/spring/client/AbstractProblemRestClientCustomizerTest.java diff --git a/belgif-rest-problem-spring-boot-common-client/src/test/java/io/github/belgif/rest/problem/spring/client/AbstractProblemRestTemplateCustomizerTest.java b/belgif-rest-problem-spring-common/src/test/java/io/github/belgif/rest/problem/spring/client/AbstractProblemRestTemplateCustomizerTest.java similarity index 100% rename from belgif-rest-problem-spring-boot-common-client/src/test/java/io/github/belgif/rest/problem/spring/client/AbstractProblemRestTemplateCustomizerTest.java rename to belgif-rest-problem-spring-common/src/test/java/io/github/belgif/rest/problem/spring/client/AbstractProblemRestTemplateCustomizerTest.java diff --git a/belgif-rest-problem-spring-boot-common-client/src/test/java/io/github/belgif/rest/problem/spring/client/AbstractProblemWebClientCustomizerTest.java b/belgif-rest-problem-spring-common/src/test/java/io/github/belgif/rest/problem/spring/client/AbstractProblemWebClientCustomizerTest.java similarity index 100% rename from belgif-rest-problem-spring-boot-common-client/src/test/java/io/github/belgif/rest/problem/spring/client/AbstractProblemWebClientCustomizerTest.java rename to belgif-rest-problem-spring-common/src/test/java/io/github/belgif/rest/problem/spring/client/AbstractProblemWebClientCustomizerTest.java diff --git a/belgif-rest-problem-spring-boot-common-server/src/test/java/io/github/belgif/rest/problem/spring/server/AbstractInvalidRequestExceptionHandlerTest.java b/belgif-rest-problem-spring-common/src/test/java/io/github/belgif/rest/problem/spring/server/AbstractInvalidRequestExceptionHandlerTest.java similarity index 97% rename from belgif-rest-problem-spring-boot-common-server/src/test/java/io/github/belgif/rest/problem/spring/server/AbstractInvalidRequestExceptionHandlerTest.java rename to belgif-rest-problem-spring-common/src/test/java/io/github/belgif/rest/problem/spring/server/AbstractInvalidRequestExceptionHandlerTest.java index 02a999f4..e2aff911 100644 --- a/belgif-rest-problem-spring-boot-common-server/src/test/java/io/github/belgif/rest/problem/spring/server/AbstractInvalidRequestExceptionHandlerTest.java +++ b/belgif-rest-problem-spring-common/src/test/java/io/github/belgif/rest/problem/spring/server/AbstractInvalidRequestExceptionHandlerTest.java @@ -30,12 +30,14 @@ class AbstractInvalidRequestExceptionHandlerTest { - AbstractInvalidRequestExceptionHandler handler = new AbstractInvalidRequestExceptionHandler<>() { - @Override - protected String getBodyValue(String name, AtomicReference requestBody, HttpServletRequest request) { - return "myDummyValue"; - } - }; + AbstractInvalidRequestExceptionHandler handler = + new AbstractInvalidRequestExceptionHandler<>() { + @Override + protected String getBodyValue(String name, AtomicReference requestBody, + HttpServletRequest request) { + return "myDummyValue"; + } + }; @Test void inBodyTest() { diff --git a/belgif-rest-problem-spring-boot-common-server/src/test/java/io/github/belgif/rest/problem/spring/server/AbstractProblemValidationConfigurationCustomizerTest.java b/belgif-rest-problem-spring-common/src/test/java/io/github/belgif/rest/problem/spring/server/AbstractProblemValidationConfigurationCustomizerTest.java similarity index 100% rename from belgif-rest-problem-spring-boot-common-server/src/test/java/io/github/belgif/rest/problem/spring/server/AbstractProblemValidationConfigurationCustomizerTest.java rename to belgif-rest-problem-spring-common/src/test/java/io/github/belgif/rest/problem/spring/server/AbstractProblemValidationConfigurationCustomizerTest.java diff --git a/belgif-rest-problem-spring-boot-common-server/src/test/java/io/github/belgif/rest/problem/spring/server/AbstractRoutingExceptionsHandlerTest.java b/belgif-rest-problem-spring-common/src/test/java/io/github/belgif/rest/problem/spring/server/AbstractRoutingExceptionsHandlerTest.java similarity index 100% rename from belgif-rest-problem-spring-boot-common-server/src/test/java/io/github/belgif/rest/problem/spring/server/AbstractRoutingExceptionsHandlerTest.java rename to belgif-rest-problem-spring-common/src/test/java/io/github/belgif/rest/problem/spring/server/AbstractRoutingExceptionsHandlerTest.java diff --git a/belgif-rest-problem-spring-boot-common-server/src/test/java/io/github/belgif/rest/problem/spring/server/AnnotationParameterNameProviderTest.java b/belgif-rest-problem-spring-common/src/test/java/io/github/belgif/rest/problem/spring/server/AnnotationParameterNameProviderTest.java similarity index 100% rename from belgif-rest-problem-spring-boot-common-server/src/test/java/io/github/belgif/rest/problem/spring/server/AnnotationParameterNameProviderTest.java rename to belgif-rest-problem-spring-common/src/test/java/io/github/belgif/rest/problem/spring/server/AnnotationParameterNameProviderTest.java diff --git a/belgif-rest-problem-spring-boot-common-server/src/test/java/io/github/belgif/rest/problem/spring/server/BeanValidationExceptionsHandlerTest.java b/belgif-rest-problem-spring-common/src/test/java/io/github/belgif/rest/problem/spring/server/BeanValidationExceptionsHandlerTest.java similarity index 100% rename from belgif-rest-problem-spring-boot-common-server/src/test/java/io/github/belgif/rest/problem/spring/server/BeanValidationExceptionsHandlerTest.java rename to belgif-rest-problem-spring-common/src/test/java/io/github/belgif/rest/problem/spring/server/BeanValidationExceptionsHandlerTest.java diff --git a/belgif-rest-problem-spring-boot-common-server/src/test/java/io/github/belgif/rest/problem/spring/server/ProblemExceptionHandlerTest.java b/belgif-rest-problem-spring-common/src/test/java/io/github/belgif/rest/problem/spring/server/ProblemExceptionHandlerTest.java similarity index 100% rename from belgif-rest-problem-spring-boot-common-server/src/test/java/io/github/belgif/rest/problem/spring/server/ProblemExceptionHandlerTest.java rename to belgif-rest-problem-spring-common/src/test/java/io/github/belgif/rest/problem/spring/server/ProblemExceptionHandlerTest.java diff --git a/belgif-rest-problem-spring-boot-common-server/src/test/java/io/github/belgif/rest/problem/spring/server/i18n/LocaleContextHolderLocaleResolverTest.java b/belgif-rest-problem-spring-common/src/test/java/io/github/belgif/rest/problem/spring/server/i18n/LocaleContextHolderLocaleResolverTest.java similarity index 100% rename from belgif-rest-problem-spring-boot-common-server/src/test/java/io/github/belgif/rest/problem/spring/server/i18n/LocaleContextHolderLocaleResolverTest.java rename to belgif-rest-problem-spring-common/src/test/java/io/github/belgif/rest/problem/spring/server/i18n/LocaleContextHolderLocaleResolverTest.java diff --git a/belgif-rest-problem-spring-boot-common-server/src/test/java/io/github/belgif/rest/problem/spring/server/internal/BeanValidationExceptionUtilTest.java b/belgif-rest-problem-spring-common/src/test/java/io/github/belgif/rest/problem/spring/server/internal/BeanValidationExceptionUtilTest.java similarity index 100% rename from belgif-rest-problem-spring-boot-common-server/src/test/java/io/github/belgif/rest/problem/spring/server/internal/BeanValidationExceptionUtilTest.java rename to belgif-rest-problem-spring-common/src/test/java/io/github/belgif/rest/problem/spring/server/internal/BeanValidationExceptionUtilTest.java diff --git a/belgif-rest-problem-spring-boot-common-server/src/test/java/io/github/belgif/rest/problem/spring/server/internal/CachedAnnotationParameterNameSupportTest.java b/belgif-rest-problem-spring-common/src/test/java/io/github/belgif/rest/problem/spring/server/internal/CachedAnnotationParameterNameSupportTest.java similarity index 100% rename from belgif-rest-problem-spring-boot-common-server/src/test/java/io/github/belgif/rest/problem/spring/server/internal/CachedAnnotationParameterNameSupportTest.java rename to belgif-rest-problem-spring-common/src/test/java/io/github/belgif/rest/problem/spring/server/internal/CachedAnnotationParameterNameSupportTest.java diff --git a/belgif-rest-problem-spring-boot-common-server/src/test/java/io/github/belgif/rest/problem/spring/server/internal/DetermineSourceUtilTest.java b/belgif-rest-problem-spring-common/src/test/java/io/github/belgif/rest/problem/spring/server/internal/DetermineSourceUtilTest.java similarity index 100% rename from belgif-rest-problem-spring-boot-common-server/src/test/java/io/github/belgif/rest/problem/spring/server/internal/DetermineSourceUtilTest.java rename to belgif-rest-problem-spring-common/src/test/java/io/github/belgif/rest/problem/spring/server/internal/DetermineSourceUtilTest.java diff --git a/belgif-rest-problem-spring-boot-common-server/src/test/java/io/github/belgif/rest/problem/spring/server/internal/InvalidRequestExceptionUtilTest.java b/belgif-rest-problem-spring-common/src/test/java/io/github/belgif/rest/problem/spring/server/internal/InvalidRequestExceptionUtilTest.java similarity index 100% rename from belgif-rest-problem-spring-boot-common-server/src/test/java/io/github/belgif/rest/problem/spring/server/internal/InvalidRequestExceptionUtilTest.java rename to belgif-rest-problem-spring-common/src/test/java/io/github/belgif/rest/problem/spring/server/internal/InvalidRequestExceptionUtilTest.java diff --git a/belgif-rest-problem-spring-boot-3-core/src/test/resources/logback-test.xml b/belgif-rest-problem-spring-common/src/test/resources/logback-test.xml similarity index 100% rename from belgif-rest-problem-spring-boot-3-core/src/test/resources/logback-test.xml rename to belgif-rest-problem-spring-common/src/test/resources/logback-test.xml diff --git a/pom.xml b/pom.xml index c4a8c8c8..d225120b 100644 --- a/pom.xml +++ b/pom.xml @@ -380,8 +380,6 @@ belgif-rest-problem-jakarta-ee-client belgif-rest-problem-jakarta-ee-server belgif-rest-problem-spring-boot-common - belgif-rest-problem-spring-boot-common-client - belgif-rest-problem-spring-boot-common-server belgif-rest-problem-spring-boot-3 belgif-rest-problem-spring-boot-3-core belgif-rest-problem-spring-boot-3-client @@ -503,15 +501,11 @@ belgif-rest-problem-jakarta-ee-core belgif-rest-problem-jakarta-ee-client belgif-rest-problem-jakarta-ee-server - belgif-rest-problem-spring-boot-common - belgif-rest-problem-spring-boot-common-client - belgif-rest-problem-spring-boot-common-server + belgif-rest-problem-spring-common belgif-rest-problem-spring-boot-3 - belgif-rest-problem-spring-boot-3-core belgif-rest-problem-spring-boot-3-client belgif-rest-problem-spring-boot-3-server belgif-rest-problem-spring-boot-4 - belgif-rest-problem-spring-boot-4-core belgif-rest-problem-spring-boot-4-client belgif-rest-problem-spring-boot-4-server belgif-rest-problem-quarkus @@ -562,15 +556,11 @@ spring-only belgif-rest-problem - belgif-rest-problem-spring-boot-common - belgif-rest-problem-spring-boot-common-client - belgif-rest-problem-spring-boot-common-server + belgif-rest-problem-spring-common belgif-rest-problem-spring-boot-3 - belgif-rest-problem-spring-boot-3-core belgif-rest-problem-spring-boot-3-client belgif-rest-problem-spring-boot-3-server belgif-rest-problem-spring-boot-4 - belgif-rest-problem-spring-boot-4-core belgif-rest-problem-spring-boot-4-client belgif-rest-problem-spring-boot-4-server From b69e65fd4548b1719a8aabcc1bcc9ef18cc940b5 Mon Sep 17 00:00:00 2001 From: pvdb Date: Mon, 23 Feb 2026 22:18:12 +0100 Subject: [PATCH 05/23] spring refactoring WIP: - create autoconfiguration for each client or server module, without componentscan - move integration tests to a subpackage to avoid autowiring problems with the problem modules --- .../pom.xml | 4 +- .../rest/problem/{ => it}/Application.java | 2 +- .../problem/{ => it}/BackendController.java | 3 +- .../belgif/rest/problem/it}/Client.java | 2 +- .../rest/problem/it}/ControllerInterface.java | 2 +- .../problem/{ => it}/FrontendController.java | 5 +- .../{ => it}/OpenApiValidationConfig.java | 2 +- .../it}/OpenApiValidationController.java | 14 ++--- ...ProblemOpenApiValidationSpringBoot3IT.java | 3 +- .../{ => it}/RestProblemSpringBoot3ExtIT.java | 3 +- .../{ => it}/RestProblemSpringBoot3IT.java | 3 +- .../pom.xml | 4 +- .../rest/problem/{ => it}/Application.java | 2 +- .../problem/{ => it}/BackendController.java | 3 +- .../belgif/rest/problem/it}/Client.java | 2 +- .../rest/problem/it}/ControllerInterface.java | 2 +- .../problem/{ => it}/FrontendController.java | 5 +- .../{ => it}/OpenApiValidationConfig.java | 2 +- .../it}/OpenApiValidationController.java | 12 ++-- ...ProblemOpenApiValidationSpringBoot4IT.java | 3 +- .../{ => it}/RestProblemSpringBoot4ExtIT.java | 3 +- .../{ => it}/RestProblemSpringBoot4IT.java | 3 +- .../ClientProblemAutoConfiguration.java | 49 ++++++++++++++++ .../client/ProblemRestClientCustomizer.java | 5 -- .../client/ProblemRestTemplateCustomizer.java | 5 -- .../client/ProblemWebClientCustomizer.java | 5 -- ...ot.autoconfigure.AutoConfiguration.imports | 1 + .../ClientProblemAutoConfigurationTest.java | 22 ++++++++ .../InvalidRequestExceptionHandler.java | 5 -- ...blemValidationConfigurationCustomizer.java | 6 -- .../server/RoutingExceptionsHandler.java | 2 - .../ServerProblemAutoConfiguration.java | 55 ++++++++++++++++++ ...ot.autoconfigure.AutoConfiguration.imports | 1 + .../ServerProblemAutoConfigurationTest.java | 23 ++++++++ .../pom.xml | 2 +- .../ClientProblemAutoConfiguration.java | 48 ++++++++++++++++ .../client/ProblemRestClientCustomizer.java | 5 -- .../client/ProblemRestTemplateCustomizer.java | 6 -- .../client/ProblemWebClientCustomizer.java | 5 -- ...ot.autoconfigure.AutoConfiguration.imports | 1 + .../ClientProblemAutoConfigurationTest.java | 22 ++++++++ .../pom.xml | 2 +- .../InvalidRequestExceptionHandler.java | 6 -- ...blemValidationConfigurationCustomizer.java | 6 -- .../server/RoutingExceptionsHandler.java | 3 +- .../ServerProblemAutoConfiguration.java | 56 +++++++++++++++++++ ...ot.autoconfigure.AutoConfiguration.imports | 1 + .../ServerProblemAutoConfigurationTest.java | 23 ++++++++ belgif-rest-problem-spring-common/pom.xml | 34 ++++++----- .../spring/ProblemAutoConfiguration.java | 13 ----- .../spring/ProblemJackson2Configuration.java | 10 ++++ .../spring/ProblemJackson3Configuration.java | 10 ++++ .../BeanValidationExceptionsHandler.java | 4 -- .../server/ProblemExceptionHandler.java | 2 - ...ot.autoconfigure.AutoConfiguration.imports | 1 - .../spring/ProblemAutoConfigurationTest.java | 14 ----- .../spring/SpringProblemTypeRegistryTest.java | 11 +++- pom.xml | 4 +- 58 files changed, 395 insertions(+), 157 deletions(-) rename belgif-rest-problem-it/belgif-rest-problem-spring-boot-3-it/src/main/java/io/github/belgif/rest/problem/{ => it}/Application.java (87%) rename belgif-rest-problem-it/belgif-rest-problem-spring-boot-3-it/src/main/java/io/github/belgif/rest/problem/{ => it}/BackendController.java (94%) rename belgif-rest-problem-it/{belgif-rest-problem-spring-boot-4-it/src/main/java/io/github/belgif/rest/problem => belgif-rest-problem-spring-boot-3-it/src/main/java/io/github/belgif/rest/problem/it}/Client.java (62%) rename belgif-rest-problem-it/{belgif-rest-problem-spring-boot-4-it/src/main/java/io/github/belgif/rest/problem => belgif-rest-problem-spring-boot-3-it/src/main/java/io/github/belgif/rest/problem/it}/ControllerInterface.java (95%) rename belgif-rest-problem-it/belgif-rest-problem-spring-boot-3-it/src/main/java/io/github/belgif/rest/problem/{ => it}/FrontendController.java (98%) rename belgif-rest-problem-it/belgif-rest-problem-spring-boot-3-it/src/main/java/io/github/belgif/rest/problem/{ => it}/OpenApiValidationConfig.java (97%) rename belgif-rest-problem-it/{belgif-rest-problem-spring-boot-4-it/src/main/java/io/github/belgif/rest/problem => belgif-rest-problem-spring-boot-3-it/src/main/java/io/github/belgif/rest/problem/it}/OpenApiValidationController.java (71%) rename belgif-rest-problem-it/belgif-rest-problem-spring-boot-3-it/src/test/java/io/github/belgif/rest/problem/{ => it}/RestProblemOpenApiValidationSpringBoot3IT.java (85%) rename belgif-rest-problem-it/belgif-rest-problem-spring-boot-3-it/src/test/java/io/github/belgif/rest/problem/{ => it}/RestProblemSpringBoot3ExtIT.java (87%) rename belgif-rest-problem-it/belgif-rest-problem-spring-boot-3-it/src/test/java/io/github/belgif/rest/problem/{ => it}/RestProblemSpringBoot3IT.java (88%) rename belgif-rest-problem-it/belgif-rest-problem-spring-boot-4-it/src/main/java/io/github/belgif/rest/problem/{ => it}/Application.java (87%) rename belgif-rest-problem-it/belgif-rest-problem-spring-boot-4-it/src/main/java/io/github/belgif/rest/problem/{ => it}/BackendController.java (94%) rename belgif-rest-problem-it/{belgif-rest-problem-spring-boot-3-it/src/main/java/io/github/belgif/rest/problem => belgif-rest-problem-spring-boot-4-it/src/main/java/io/github/belgif/rest/problem/it}/Client.java (62%) rename belgif-rest-problem-it/{belgif-rest-problem-spring-boot-3-it/src/main/java/io/github/belgif/rest/problem => belgif-rest-problem-spring-boot-4-it/src/main/java/io/github/belgif/rest/problem/it}/ControllerInterface.java (95%) rename belgif-rest-problem-it/belgif-rest-problem-spring-boot-4-it/src/main/java/io/github/belgif/rest/problem/{ => it}/FrontendController.java (98%) rename belgif-rest-problem-it/belgif-rest-problem-spring-boot-4-it/src/main/java/io/github/belgif/rest/problem/{ => it}/OpenApiValidationConfig.java (97%) rename belgif-rest-problem-it/{belgif-rest-problem-spring-boot-3-it/src/main/java/io/github/belgif/rest/problem => belgif-rest-problem-spring-boot-4-it/src/main/java/io/github/belgif/rest/problem/it}/OpenApiValidationController.java (71%) rename belgif-rest-problem-it/belgif-rest-problem-spring-boot-4-it/src/test/java/io/github/belgif/rest/problem/{ => it}/RestProblemOpenApiValidationSpringBoot4IT.java (85%) rename belgif-rest-problem-it/belgif-rest-problem-spring-boot-4-it/src/test/java/io/github/belgif/rest/problem/{ => it}/RestProblemSpringBoot4ExtIT.java (87%) rename belgif-rest-problem-it/belgif-rest-problem-spring-boot-4-it/src/test/java/io/github/belgif/rest/problem/{ => it}/RestProblemSpringBoot4IT.java (88%) create mode 100644 belgif-rest-problem-spring-boot-3-client/src/main/java/io/github/belgif/rest/problem/spring/client/ClientProblemAutoConfiguration.java create mode 100644 belgif-rest-problem-spring-boot-3-client/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports create mode 100644 belgif-rest-problem-spring-boot-3-client/src/test/java/io/github/belgif/rest/problem/spring/client/ClientProblemAutoConfigurationTest.java create mode 100644 belgif-rest-problem-spring-boot-3-server/src/main/java/io/github/belgif/rest/problem/spring/server/ServerProblemAutoConfiguration.java create mode 100644 belgif-rest-problem-spring-boot-3-server/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports create mode 100644 belgif-rest-problem-spring-boot-3-server/src/test/java/io/github/belgif/rest/problem/spring/server/ServerProblemAutoConfigurationTest.java create mode 100644 belgif-rest-problem-spring-boot-4-client/src/main/java/io/github/belgif/rest/problem/spring/client/ClientProblemAutoConfiguration.java create mode 100644 belgif-rest-problem-spring-boot-4-client/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports create mode 100644 belgif-rest-problem-spring-boot-4-client/src/test/java/io/github/belgif/rest/problem/spring/client/ClientProblemAutoConfigurationTest.java create mode 100644 belgif-rest-problem-spring-boot-4-server/src/main/java/io/github/belgif/rest/problem/spring/server/ServerProblemAutoConfiguration.java create mode 100644 belgif-rest-problem-spring-boot-4-server/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports create mode 100644 belgif-rest-problem-spring-boot-4-server/src/test/java/io/github/belgif/rest/problem/spring/server/ServerProblemAutoConfigurationTest.java delete mode 100644 belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/ProblemAutoConfiguration.java create mode 100644 belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/ProblemJackson2Configuration.java create mode 100644 belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/ProblemJackson3Configuration.java delete mode 100644 belgif-rest-problem-spring-common/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports delete mode 100644 belgif-rest-problem-spring-common/src/test/java/io/github/belgif/rest/problem/spring/ProblemAutoConfigurationTest.java diff --git a/belgif-rest-problem-it/belgif-rest-problem-spring-boot-3-it/pom.xml b/belgif-rest-problem-it/belgif-rest-problem-spring-boot-3-it/pom.xml index e19b6479..bfd3afee 100644 --- a/belgif-rest-problem-it/belgif-rest-problem-spring-boot-3-it/pom.xml +++ b/belgif-rest-problem-it/belgif-rest-problem-spring-boot-3-it/pom.xml @@ -87,8 +87,8 @@ ${project.basedir}/../belgif-rest-problem-it-common/src/main/resources/openapi.yaml spring - io.github.belgif.rest.problem.openapi.validation.sb3.api - io.github.belgif.rest.problem.openapi.validation.sb3.model + io.github.belgif.rest.problem.it.openapi.validation.sb3.api + io.github.belgif.rest.problem.it.openapi.validation.sb3.model REF_AS_PARENT_IN_ALLOF=true false diff --git a/belgif-rest-problem-it/belgif-rest-problem-spring-boot-3-it/src/main/java/io/github/belgif/rest/problem/Application.java b/belgif-rest-problem-it/belgif-rest-problem-spring-boot-3-it/src/main/java/io/github/belgif/rest/problem/it/Application.java similarity index 87% rename from belgif-rest-problem-it/belgif-rest-problem-spring-boot-3-it/src/main/java/io/github/belgif/rest/problem/Application.java rename to belgif-rest-problem-it/belgif-rest-problem-spring-boot-3-it/src/main/java/io/github/belgif/rest/problem/it/Application.java index 39f16429..72206306 100644 --- a/belgif-rest-problem-it/belgif-rest-problem-spring-boot-3-it/src/main/java/io/github/belgif/rest/problem/Application.java +++ b/belgif-rest-problem-it/belgif-rest-problem-spring-boot-3-it/src/main/java/io/github/belgif/rest/problem/it/Application.java @@ -1,4 +1,4 @@ -package io.github.belgif.rest.problem; +package io.github.belgif.rest.problem.it; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; diff --git a/belgif-rest-problem-it/belgif-rest-problem-spring-boot-3-it/src/main/java/io/github/belgif/rest/problem/BackendController.java b/belgif-rest-problem-it/belgif-rest-problem-spring-boot-3-it/src/main/java/io/github/belgif/rest/problem/it/BackendController.java similarity index 94% rename from belgif-rest-problem-it/belgif-rest-problem-spring-boot-3-it/src/main/java/io/github/belgif/rest/problem/BackendController.java rename to belgif-rest-problem-it/belgif-rest-problem-spring-boot-3-it/src/main/java/io/github/belgif/rest/problem/it/BackendController.java index b3d6af05..8a627e80 100644 --- a/belgif-rest-problem-it/belgif-rest-problem-spring-boot-3-it/src/main/java/io/github/belgif/rest/problem/BackendController.java +++ b/belgif-rest-problem-it/belgif-rest-problem-spring-boot-3-it/src/main/java/io/github/belgif/rest/problem/it/BackendController.java @@ -1,4 +1,4 @@ -package io.github.belgif.rest.problem; +package io.github.belgif.rest.problem.it; import java.net.URI; @@ -9,6 +9,7 @@ import com.acme.custom.CustomProblem; +import io.github.belgif.rest.problem.BadRequestProblem; import io.github.belgif.rest.problem.api.Problem; import io.github.belgif.rest.problem.it.model.JacksonModel; diff --git a/belgif-rest-problem-it/belgif-rest-problem-spring-boot-4-it/src/main/java/io/github/belgif/rest/problem/Client.java b/belgif-rest-problem-it/belgif-rest-problem-spring-boot-3-it/src/main/java/io/github/belgif/rest/problem/it/Client.java similarity index 62% rename from belgif-rest-problem-it/belgif-rest-problem-spring-boot-4-it/src/main/java/io/github/belgif/rest/problem/Client.java rename to belgif-rest-problem-it/belgif-rest-problem-spring-boot-3-it/src/main/java/io/github/belgif/rest/problem/it/Client.java index 0a4f64af..bbc54c9d 100644 --- a/belgif-rest-problem-it/belgif-rest-problem-spring-boot-4-it/src/main/java/io/github/belgif/rest/problem/Client.java +++ b/belgif-rest-problem-it/belgif-rest-problem-spring-boot-3-it/src/main/java/io/github/belgif/rest/problem/it/Client.java @@ -1,4 +1,4 @@ -package io.github.belgif.rest.problem; +package io.github.belgif.rest.problem.it; public enum Client { diff --git a/belgif-rest-problem-it/belgif-rest-problem-spring-boot-4-it/src/main/java/io/github/belgif/rest/problem/ControllerInterface.java b/belgif-rest-problem-it/belgif-rest-problem-spring-boot-3-it/src/main/java/io/github/belgif/rest/problem/it/ControllerInterface.java similarity index 95% rename from belgif-rest-problem-it/belgif-rest-problem-spring-boot-4-it/src/main/java/io/github/belgif/rest/problem/ControllerInterface.java rename to belgif-rest-problem-it/belgif-rest-problem-spring-boot-3-it/src/main/java/io/github/belgif/rest/problem/it/ControllerInterface.java index 3d39fd72..60516423 100644 --- a/belgif-rest-problem-it/belgif-rest-problem-spring-boot-4-it/src/main/java/io/github/belgif/rest/problem/ControllerInterface.java +++ b/belgif-rest-problem-it/belgif-rest-problem-spring-boot-3-it/src/main/java/io/github/belgif/rest/problem/it/ControllerInterface.java @@ -1,4 +1,4 @@ -package io.github.belgif.rest.problem; +package io.github.belgif.rest.problem.it; import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.Positive; diff --git a/belgif-rest-problem-it/belgif-rest-problem-spring-boot-3-it/src/main/java/io/github/belgif/rest/problem/FrontendController.java b/belgif-rest-problem-it/belgif-rest-problem-spring-boot-3-it/src/main/java/io/github/belgif/rest/problem/it/FrontendController.java similarity index 98% rename from belgif-rest-problem-it/belgif-rest-problem-spring-boot-3-it/src/main/java/io/github/belgif/rest/problem/FrontendController.java rename to belgif-rest-problem-it/belgif-rest-problem-spring-boot-3-it/src/main/java/io/github/belgif/rest/problem/it/FrontendController.java index 1a4ca8e3..69e08e6e 100644 --- a/belgif-rest-problem-it/belgif-rest-problem-spring-boot-3-it/src/main/java/io/github/belgif/rest/problem/FrontendController.java +++ b/belgif-rest-problem-it/belgif-rest-problem-spring-boot-3-it/src/main/java/io/github/belgif/rest/problem/it/FrontendController.java @@ -1,4 +1,4 @@ -package io.github.belgif.rest.problem; +package io.github.belgif.rest.problem.it; import java.net.URI; @@ -26,6 +26,9 @@ import com.acme.custom.CustomProblem; +import io.github.belgif.rest.problem.BadRequestProblem; +import io.github.belgif.rest.problem.DefaultProblem; +import io.github.belgif.rest.problem.ServiceUnavailableProblem; import io.github.belgif.rest.problem.api.Input; import io.github.belgif.rest.problem.api.Problem; import io.github.belgif.rest.problem.i18n.I18N; diff --git a/belgif-rest-problem-it/belgif-rest-problem-spring-boot-3-it/src/main/java/io/github/belgif/rest/problem/OpenApiValidationConfig.java b/belgif-rest-problem-it/belgif-rest-problem-spring-boot-3-it/src/main/java/io/github/belgif/rest/problem/it/OpenApiValidationConfig.java similarity index 97% rename from belgif-rest-problem-it/belgif-rest-problem-spring-boot-3-it/src/main/java/io/github/belgif/rest/problem/OpenApiValidationConfig.java rename to belgif-rest-problem-it/belgif-rest-problem-spring-boot-3-it/src/main/java/io/github/belgif/rest/problem/it/OpenApiValidationConfig.java index b6ecd1fd..b40769d3 100644 --- a/belgif-rest-problem-it/belgif-rest-problem-spring-boot-3-it/src/main/java/io/github/belgif/rest/problem/OpenApiValidationConfig.java +++ b/belgif-rest-problem-it/belgif-rest-problem-spring-boot-3-it/src/main/java/io/github/belgif/rest/problem/it/OpenApiValidationConfig.java @@ -1,4 +1,4 @@ -package io.github.belgif.rest.problem; +package io.github.belgif.rest.problem.it; import java.util.Collections; diff --git a/belgif-rest-problem-it/belgif-rest-problem-spring-boot-4-it/src/main/java/io/github/belgif/rest/problem/OpenApiValidationController.java b/belgif-rest-problem-it/belgif-rest-problem-spring-boot-3-it/src/main/java/io/github/belgif/rest/problem/it/OpenApiValidationController.java similarity index 71% rename from belgif-rest-problem-it/belgif-rest-problem-spring-boot-4-it/src/main/java/io/github/belgif/rest/problem/OpenApiValidationController.java rename to belgif-rest-problem-it/belgif-rest-problem-spring-boot-3-it/src/main/java/io/github/belgif/rest/problem/it/OpenApiValidationController.java index 1d3f6a2a..8c5cfc6a 100644 --- a/belgif-rest-problem-it/belgif-rest-problem-spring-boot-4-it/src/main/java/io/github/belgif/rest/problem/OpenApiValidationController.java +++ b/belgif-rest-problem-it/belgif-rest-problem-spring-boot-3-it/src/main/java/io/github/belgif/rest/problem/it/OpenApiValidationController.java @@ -1,15 +1,15 @@ -package io.github.belgif.rest.problem; +package io.github.belgif.rest.problem.it; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import io.github.belgif.rest.problem.openapi.validation.sb4.api.MyFirstPathApi; -import io.github.belgif.rest.problem.openapi.validation.sb4.api.MyHeaderPathApi; -import io.github.belgif.rest.problem.openapi.validation.sb4.api.MyQueryPathApi; -import io.github.belgif.rest.problem.openapi.validation.sb4.model.MyRequestBodySchema; -import io.github.belgif.rest.problem.openapi.validation.sb4.model.PostOperationWithAllOfSchemaRequest; -import io.github.belgif.rest.problem.openapi.validation.sb4.model.PostOperationWithOneOfSchemaRequest; +import io.github.belgif.rest.problem.it.openapi.validation.sb3.api.MyFirstPathApi; +import io.github.belgif.rest.problem.it.openapi.validation.sb3.api.MyHeaderPathApi; +import io.github.belgif.rest.problem.it.openapi.validation.sb3.api.MyQueryPathApi; +import io.github.belgif.rest.problem.it.openapi.validation.sb3.model.MyRequestBodySchema; +import io.github.belgif.rest.problem.it.openapi.validation.sb3.model.PostOperationWithAllOfSchemaRequest; +import io.github.belgif.rest.problem.it.openapi.validation.sb3.model.PostOperationWithOneOfSchemaRequest; @RestController @RequestMapping("/openapi-validation") diff --git a/belgif-rest-problem-it/belgif-rest-problem-spring-boot-3-it/src/test/java/io/github/belgif/rest/problem/RestProblemOpenApiValidationSpringBoot3IT.java b/belgif-rest-problem-it/belgif-rest-problem-spring-boot-3-it/src/test/java/io/github/belgif/rest/problem/it/RestProblemOpenApiValidationSpringBoot3IT.java similarity index 85% rename from belgif-rest-problem-it/belgif-rest-problem-spring-boot-3-it/src/test/java/io/github/belgif/rest/problem/RestProblemOpenApiValidationSpringBoot3IT.java rename to belgif-rest-problem-it/belgif-rest-problem-spring-boot-3-it/src/test/java/io/github/belgif/rest/problem/it/RestProblemOpenApiValidationSpringBoot3IT.java index fcf01eef..4310f8ee 100644 --- a/belgif-rest-problem-it/belgif-rest-problem-spring-boot-3-it/src/test/java/io/github/belgif/rest/problem/RestProblemOpenApiValidationSpringBoot3IT.java +++ b/belgif-rest-problem-it/belgif-rest-problem-spring-boot-3-it/src/test/java/io/github/belgif/rest/problem/it/RestProblemOpenApiValidationSpringBoot3IT.java @@ -1,10 +1,9 @@ -package io.github.belgif.rest.problem; +package io.github.belgif.rest.problem.it; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.web.server.LocalServerPort; import org.springframework.test.annotation.DirtiesContext; -import io.github.belgif.rest.problem.it.AbstractOpenApiValidationSpringBootIT; import io.restassured.RestAssured; import io.restassured.specification.RequestSpecification; diff --git a/belgif-rest-problem-it/belgif-rest-problem-spring-boot-3-it/src/test/java/io/github/belgif/rest/problem/RestProblemSpringBoot3ExtIT.java b/belgif-rest-problem-it/belgif-rest-problem-spring-boot-3-it/src/test/java/io/github/belgif/rest/problem/it/RestProblemSpringBoot3ExtIT.java similarity index 87% rename from belgif-rest-problem-it/belgif-rest-problem-spring-boot-3-it/src/test/java/io/github/belgif/rest/problem/RestProblemSpringBoot3ExtIT.java rename to belgif-rest-problem-it/belgif-rest-problem-spring-boot-3-it/src/test/java/io/github/belgif/rest/problem/it/RestProblemSpringBoot3ExtIT.java index 565266ad..75c8f388 100644 --- a/belgif-rest-problem-it/belgif-rest-problem-spring-boot-3-it/src/test/java/io/github/belgif/rest/problem/RestProblemSpringBoot3ExtIT.java +++ b/belgif-rest-problem-it/belgif-rest-problem-spring-boot-3-it/src/test/java/io/github/belgif/rest/problem/it/RestProblemSpringBoot3ExtIT.java @@ -1,11 +1,10 @@ -package io.github.belgif.rest.problem; +package io.github.belgif.rest.problem.it; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.web.server.LocalServerPort; import org.springframework.test.annotation.DirtiesContext; import org.springframework.test.context.ActiveProfiles; -import io.github.belgif.rest.problem.it.AbstractRestProblemExtIT; import io.restassured.RestAssured; import io.restassured.specification.RequestSpecification; diff --git a/belgif-rest-problem-it/belgif-rest-problem-spring-boot-3-it/src/test/java/io/github/belgif/rest/problem/RestProblemSpringBoot3IT.java b/belgif-rest-problem-it/belgif-rest-problem-spring-boot-3-it/src/test/java/io/github/belgif/rest/problem/it/RestProblemSpringBoot3IT.java similarity index 88% rename from belgif-rest-problem-it/belgif-rest-problem-spring-boot-3-it/src/test/java/io/github/belgif/rest/problem/RestProblemSpringBoot3IT.java rename to belgif-rest-problem-it/belgif-rest-problem-spring-boot-3-it/src/test/java/io/github/belgif/rest/problem/it/RestProblemSpringBoot3IT.java index 6675d0f0..7cb4174f 100644 --- a/belgif-rest-problem-it/belgif-rest-problem-spring-boot-3-it/src/test/java/io/github/belgif/rest/problem/RestProblemSpringBoot3IT.java +++ b/belgif-rest-problem-it/belgif-rest-problem-spring-boot-3-it/src/test/java/io/github/belgif/rest/problem/it/RestProblemSpringBoot3IT.java @@ -1,4 +1,4 @@ -package io.github.belgif.rest.problem; +package io.github.belgif.rest.problem.it; import java.util.Arrays; import java.util.stream.Stream; @@ -7,7 +7,6 @@ import org.springframework.boot.test.web.server.LocalServerPort; import org.springframework.test.annotation.DirtiesContext; -import io.github.belgif.rest.problem.it.AbstractRestProblemSpringBootIT; import io.restassured.RestAssured; import io.restassured.specification.RequestSpecification; diff --git a/belgif-rest-problem-it/belgif-rest-problem-spring-boot-4-it/pom.xml b/belgif-rest-problem-it/belgif-rest-problem-spring-boot-4-it/pom.xml index 86ec535a..29dc77c4 100644 --- a/belgif-rest-problem-it/belgif-rest-problem-spring-boot-4-it/pom.xml +++ b/belgif-rest-problem-it/belgif-rest-problem-spring-boot-4-it/pom.xml @@ -104,8 +104,8 @@ ${project.basedir}/../belgif-rest-problem-it-common/src/main/resources/openapi.yaml spring - io.github.belgif.rest.problem.openapi.validation.sb4.api - io.github.belgif.rest.problem.openapi.validation.sb4.model + io.github.belgif.rest.problem.it.openapi.validation.sb4.api + io.github.belgif.rest.problem.it.openapi.validation.sb4.model REF_AS_PARENT_IN_ALLOF=true false diff --git a/belgif-rest-problem-it/belgif-rest-problem-spring-boot-4-it/src/main/java/io/github/belgif/rest/problem/Application.java b/belgif-rest-problem-it/belgif-rest-problem-spring-boot-4-it/src/main/java/io/github/belgif/rest/problem/it/Application.java similarity index 87% rename from belgif-rest-problem-it/belgif-rest-problem-spring-boot-4-it/src/main/java/io/github/belgif/rest/problem/Application.java rename to belgif-rest-problem-it/belgif-rest-problem-spring-boot-4-it/src/main/java/io/github/belgif/rest/problem/it/Application.java index 39f16429..72206306 100644 --- a/belgif-rest-problem-it/belgif-rest-problem-spring-boot-4-it/src/main/java/io/github/belgif/rest/problem/Application.java +++ b/belgif-rest-problem-it/belgif-rest-problem-spring-boot-4-it/src/main/java/io/github/belgif/rest/problem/it/Application.java @@ -1,4 +1,4 @@ -package io.github.belgif.rest.problem; +package io.github.belgif.rest.problem.it; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; diff --git a/belgif-rest-problem-it/belgif-rest-problem-spring-boot-4-it/src/main/java/io/github/belgif/rest/problem/BackendController.java b/belgif-rest-problem-it/belgif-rest-problem-spring-boot-4-it/src/main/java/io/github/belgif/rest/problem/it/BackendController.java similarity index 94% rename from belgif-rest-problem-it/belgif-rest-problem-spring-boot-4-it/src/main/java/io/github/belgif/rest/problem/BackendController.java rename to belgif-rest-problem-it/belgif-rest-problem-spring-boot-4-it/src/main/java/io/github/belgif/rest/problem/it/BackendController.java index b3d6af05..8a627e80 100644 --- a/belgif-rest-problem-it/belgif-rest-problem-spring-boot-4-it/src/main/java/io/github/belgif/rest/problem/BackendController.java +++ b/belgif-rest-problem-it/belgif-rest-problem-spring-boot-4-it/src/main/java/io/github/belgif/rest/problem/it/BackendController.java @@ -1,4 +1,4 @@ -package io.github.belgif.rest.problem; +package io.github.belgif.rest.problem.it; import java.net.URI; @@ -9,6 +9,7 @@ import com.acme.custom.CustomProblem; +import io.github.belgif.rest.problem.BadRequestProblem; import io.github.belgif.rest.problem.api.Problem; import io.github.belgif.rest.problem.it.model.JacksonModel; diff --git a/belgif-rest-problem-it/belgif-rest-problem-spring-boot-3-it/src/main/java/io/github/belgif/rest/problem/Client.java b/belgif-rest-problem-it/belgif-rest-problem-spring-boot-4-it/src/main/java/io/github/belgif/rest/problem/it/Client.java similarity index 62% rename from belgif-rest-problem-it/belgif-rest-problem-spring-boot-3-it/src/main/java/io/github/belgif/rest/problem/Client.java rename to belgif-rest-problem-it/belgif-rest-problem-spring-boot-4-it/src/main/java/io/github/belgif/rest/problem/it/Client.java index 0a4f64af..bbc54c9d 100644 --- a/belgif-rest-problem-it/belgif-rest-problem-spring-boot-3-it/src/main/java/io/github/belgif/rest/problem/Client.java +++ b/belgif-rest-problem-it/belgif-rest-problem-spring-boot-4-it/src/main/java/io/github/belgif/rest/problem/it/Client.java @@ -1,4 +1,4 @@ -package io.github.belgif.rest.problem; +package io.github.belgif.rest.problem.it; public enum Client { diff --git a/belgif-rest-problem-it/belgif-rest-problem-spring-boot-3-it/src/main/java/io/github/belgif/rest/problem/ControllerInterface.java b/belgif-rest-problem-it/belgif-rest-problem-spring-boot-4-it/src/main/java/io/github/belgif/rest/problem/it/ControllerInterface.java similarity index 95% rename from belgif-rest-problem-it/belgif-rest-problem-spring-boot-3-it/src/main/java/io/github/belgif/rest/problem/ControllerInterface.java rename to belgif-rest-problem-it/belgif-rest-problem-spring-boot-4-it/src/main/java/io/github/belgif/rest/problem/it/ControllerInterface.java index 3d39fd72..60516423 100644 --- a/belgif-rest-problem-it/belgif-rest-problem-spring-boot-3-it/src/main/java/io/github/belgif/rest/problem/ControllerInterface.java +++ b/belgif-rest-problem-it/belgif-rest-problem-spring-boot-4-it/src/main/java/io/github/belgif/rest/problem/it/ControllerInterface.java @@ -1,4 +1,4 @@ -package io.github.belgif.rest.problem; +package io.github.belgif.rest.problem.it; import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.Positive; diff --git a/belgif-rest-problem-it/belgif-rest-problem-spring-boot-4-it/src/main/java/io/github/belgif/rest/problem/FrontendController.java b/belgif-rest-problem-it/belgif-rest-problem-spring-boot-4-it/src/main/java/io/github/belgif/rest/problem/it/FrontendController.java similarity index 98% rename from belgif-rest-problem-it/belgif-rest-problem-spring-boot-4-it/src/main/java/io/github/belgif/rest/problem/FrontendController.java rename to belgif-rest-problem-it/belgif-rest-problem-spring-boot-4-it/src/main/java/io/github/belgif/rest/problem/it/FrontendController.java index 8821242d..1494824e 100644 --- a/belgif-rest-problem-it/belgif-rest-problem-spring-boot-4-it/src/main/java/io/github/belgif/rest/problem/FrontendController.java +++ b/belgif-rest-problem-it/belgif-rest-problem-spring-boot-4-it/src/main/java/io/github/belgif/rest/problem/it/FrontendController.java @@ -1,4 +1,4 @@ -package io.github.belgif.rest.problem; +package io.github.belgif.rest.problem.it; import java.net.URI; @@ -26,6 +26,9 @@ import com.acme.custom.CustomProblem; +import io.github.belgif.rest.problem.BadRequestProblem; +import io.github.belgif.rest.problem.DefaultProblem; +import io.github.belgif.rest.problem.ServiceUnavailableProblem; import io.github.belgif.rest.problem.api.Input; import io.github.belgif.rest.problem.api.Problem; import io.github.belgif.rest.problem.i18n.I18N; diff --git a/belgif-rest-problem-it/belgif-rest-problem-spring-boot-4-it/src/main/java/io/github/belgif/rest/problem/OpenApiValidationConfig.java b/belgif-rest-problem-it/belgif-rest-problem-spring-boot-4-it/src/main/java/io/github/belgif/rest/problem/it/OpenApiValidationConfig.java similarity index 97% rename from belgif-rest-problem-it/belgif-rest-problem-spring-boot-4-it/src/main/java/io/github/belgif/rest/problem/OpenApiValidationConfig.java rename to belgif-rest-problem-it/belgif-rest-problem-spring-boot-4-it/src/main/java/io/github/belgif/rest/problem/it/OpenApiValidationConfig.java index 97506597..2ef7ca3c 100644 --- a/belgif-rest-problem-it/belgif-rest-problem-spring-boot-4-it/src/main/java/io/github/belgif/rest/problem/OpenApiValidationConfig.java +++ b/belgif-rest-problem-it/belgif-rest-problem-spring-boot-4-it/src/main/java/io/github/belgif/rest/problem/it/OpenApiValidationConfig.java @@ -1,4 +1,4 @@ -package io.github.belgif.rest.problem; +package io.github.belgif.rest.problem.it; import java.util.Collections; diff --git a/belgif-rest-problem-it/belgif-rest-problem-spring-boot-3-it/src/main/java/io/github/belgif/rest/problem/OpenApiValidationController.java b/belgif-rest-problem-it/belgif-rest-problem-spring-boot-4-it/src/main/java/io/github/belgif/rest/problem/it/OpenApiValidationController.java similarity index 71% rename from belgif-rest-problem-it/belgif-rest-problem-spring-boot-3-it/src/main/java/io/github/belgif/rest/problem/OpenApiValidationController.java rename to belgif-rest-problem-it/belgif-rest-problem-spring-boot-4-it/src/main/java/io/github/belgif/rest/problem/it/OpenApiValidationController.java index 5d61539b..cf0fc1e9 100644 --- a/belgif-rest-problem-it/belgif-rest-problem-spring-boot-3-it/src/main/java/io/github/belgif/rest/problem/OpenApiValidationController.java +++ b/belgif-rest-problem-it/belgif-rest-problem-spring-boot-4-it/src/main/java/io/github/belgif/rest/problem/it/OpenApiValidationController.java @@ -1,13 +1,15 @@ -package io.github.belgif.rest.problem; +package io.github.belgif.rest.problem.it; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import io.github.belgif.rest.problem.openapi.validation.sb3.api.*; -import io.github.belgif.rest.problem.openapi.validation.sb3.model.MyRequestBodySchema; -import io.github.belgif.rest.problem.openapi.validation.sb3.model.PostOperationWithAllOfSchemaRequest; -import io.github.belgif.rest.problem.openapi.validation.sb3.model.PostOperationWithOneOfSchemaRequest; +import io.github.belgif.rest.problem.it.openapi.validation.sb4.api.MyFirstPathApi; +import io.github.belgif.rest.problem.it.openapi.validation.sb4.api.MyHeaderPathApi; +import io.github.belgif.rest.problem.it.openapi.validation.sb4.api.MyQueryPathApi; +import io.github.belgif.rest.problem.it.openapi.validation.sb4.model.MyRequestBodySchema; +import io.github.belgif.rest.problem.it.openapi.validation.sb4.model.PostOperationWithAllOfSchemaRequest; +import io.github.belgif.rest.problem.it.openapi.validation.sb4.model.PostOperationWithOneOfSchemaRequest; @RestController @RequestMapping("/openapi-validation") diff --git a/belgif-rest-problem-it/belgif-rest-problem-spring-boot-4-it/src/test/java/io/github/belgif/rest/problem/RestProblemOpenApiValidationSpringBoot4IT.java b/belgif-rest-problem-it/belgif-rest-problem-spring-boot-4-it/src/test/java/io/github/belgif/rest/problem/it/RestProblemOpenApiValidationSpringBoot4IT.java similarity index 85% rename from belgif-rest-problem-it/belgif-rest-problem-spring-boot-4-it/src/test/java/io/github/belgif/rest/problem/RestProblemOpenApiValidationSpringBoot4IT.java rename to belgif-rest-problem-it/belgif-rest-problem-spring-boot-4-it/src/test/java/io/github/belgif/rest/problem/it/RestProblemOpenApiValidationSpringBoot4IT.java index 863d2502..d20c375d 100644 --- a/belgif-rest-problem-it/belgif-rest-problem-spring-boot-4-it/src/test/java/io/github/belgif/rest/problem/RestProblemOpenApiValidationSpringBoot4IT.java +++ b/belgif-rest-problem-it/belgif-rest-problem-spring-boot-4-it/src/test/java/io/github/belgif/rest/problem/it/RestProblemOpenApiValidationSpringBoot4IT.java @@ -1,10 +1,9 @@ -package io.github.belgif.rest.problem; +package io.github.belgif.rest.problem.it; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.web.server.LocalServerPort; import org.springframework.test.annotation.DirtiesContext; -import io.github.belgif.rest.problem.it.AbstractOpenApiValidationSpringBootIT; import io.restassured.RestAssured; import io.restassured.specification.RequestSpecification; diff --git a/belgif-rest-problem-it/belgif-rest-problem-spring-boot-4-it/src/test/java/io/github/belgif/rest/problem/RestProblemSpringBoot4ExtIT.java b/belgif-rest-problem-it/belgif-rest-problem-spring-boot-4-it/src/test/java/io/github/belgif/rest/problem/it/RestProblemSpringBoot4ExtIT.java similarity index 87% rename from belgif-rest-problem-it/belgif-rest-problem-spring-boot-4-it/src/test/java/io/github/belgif/rest/problem/RestProblemSpringBoot4ExtIT.java rename to belgif-rest-problem-it/belgif-rest-problem-spring-boot-4-it/src/test/java/io/github/belgif/rest/problem/it/RestProblemSpringBoot4ExtIT.java index 8e7b2551..638e3455 100644 --- a/belgif-rest-problem-it/belgif-rest-problem-spring-boot-4-it/src/test/java/io/github/belgif/rest/problem/RestProblemSpringBoot4ExtIT.java +++ b/belgif-rest-problem-it/belgif-rest-problem-spring-boot-4-it/src/test/java/io/github/belgif/rest/problem/it/RestProblemSpringBoot4ExtIT.java @@ -1,11 +1,10 @@ -package io.github.belgif.rest.problem; +package io.github.belgif.rest.problem.it; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.web.server.LocalServerPort; import org.springframework.test.annotation.DirtiesContext; import org.springframework.test.context.ActiveProfiles; -import io.github.belgif.rest.problem.it.AbstractRestProblemExtIT; import io.restassured.RestAssured; import io.restassured.specification.RequestSpecification; diff --git a/belgif-rest-problem-it/belgif-rest-problem-spring-boot-4-it/src/test/java/io/github/belgif/rest/problem/RestProblemSpringBoot4IT.java b/belgif-rest-problem-it/belgif-rest-problem-spring-boot-4-it/src/test/java/io/github/belgif/rest/problem/it/RestProblemSpringBoot4IT.java similarity index 88% rename from belgif-rest-problem-it/belgif-rest-problem-spring-boot-4-it/src/test/java/io/github/belgif/rest/problem/RestProblemSpringBoot4IT.java rename to belgif-rest-problem-it/belgif-rest-problem-spring-boot-4-it/src/test/java/io/github/belgif/rest/problem/it/RestProblemSpringBoot4IT.java index b2928c16..6c9b01df 100644 --- a/belgif-rest-problem-it/belgif-rest-problem-spring-boot-4-it/src/test/java/io/github/belgif/rest/problem/RestProblemSpringBoot4IT.java +++ b/belgif-rest-problem-it/belgif-rest-problem-spring-boot-4-it/src/test/java/io/github/belgif/rest/problem/it/RestProblemSpringBoot4IT.java @@ -1,4 +1,4 @@ -package io.github.belgif.rest.problem; +package io.github.belgif.rest.problem.it; import java.util.Arrays; import java.util.stream.Stream; @@ -7,7 +7,6 @@ import org.springframework.boot.test.web.server.LocalServerPort; import org.springframework.test.annotation.DirtiesContext; -import io.github.belgif.rest.problem.it.AbstractRestProblemSpringBootIT; import io.restassured.RestAssured; import io.restassured.specification.RequestSpecification; diff --git a/belgif-rest-problem-spring-boot-3-client/src/main/java/io/github/belgif/rest/problem/spring/client/ClientProblemAutoConfiguration.java b/belgif-rest-problem-spring-boot-3-client/src/main/java/io/github/belgif/rest/problem/spring/client/ClientProblemAutoConfiguration.java new file mode 100644 index 00000000..3c0745cf --- /dev/null +++ b/belgif-rest-problem-spring-boot-3-client/src/main/java/io/github/belgif/rest/problem/spring/client/ClientProblemAutoConfiguration.java @@ -0,0 +1,49 @@ +package io.github.belgif.rest.problem.spring.client; + +import org.springframework.boot.autoconfigure.AutoConfiguration; +import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; +import org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration; +import org.springframework.boot.web.client.RestClientCustomizer; +import org.springframework.boot.web.client.RestTemplateCustomizer; +import org.springframework.boot.web.reactive.function.client.WebClientCustomizer; +import org.springframework.context.annotation.Import; +import org.springframework.web.client.RestClient; +import org.springframework.web.client.RestTemplate; +import org.springframework.web.reactive.function.client.WebClient; + +import com.fasterxml.jackson.databind.ObjectMapper; + +import io.github.belgif.rest.problem.spring.ProblemJackson2Configuration; + +/** + * Spring Boot AutoConfiguration for rest-problem-spring. + */ +@AutoConfiguration +@Import({ ProblemJackson2Configuration.class, JacksonAutoConfiguration.class, ProblemResponseErrorHandler.class }) +public class ClientProblemAutoConfiguration { + + private ObjectMapper objectMapper; + + private ProblemResponseErrorHandler problemResponseErrorHandler; + + public ClientProblemAutoConfiguration(ObjectMapper objectMapper, + ProblemResponseErrorHandler problemResponseErrorHandler) { + this.objectMapper = objectMapper; + this.problemResponseErrorHandler = problemResponseErrorHandler; + } + + @ConditionalOnClass({ RestClient.class, RestClientCustomizer.class }) + public ProblemRestClientCustomizer problemRestClientCustomizer() { + return new ProblemRestClientCustomizer(problemResponseErrorHandler); + } + + @ConditionalOnClass({ RestTemplate.class, RestTemplateCustomizer.class }) + public ProblemRestTemplateCustomizer problemRestTemplateCustomizer() { + return new ProblemRestTemplateCustomizer(problemResponseErrorHandler); + } + + @ConditionalOnClass({ WebClient.class, WebClientCustomizer.class }) + public ProblemWebClientCustomizer problemWebClientCustomizer() { + return new ProblemWebClientCustomizer(); + } +} diff --git a/belgif-rest-problem-spring-boot-3-client/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemRestClientCustomizer.java b/belgif-rest-problem-spring-boot-3-client/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemRestClientCustomizer.java index 7070322a..72da1b8a 100644 --- a/belgif-rest-problem-spring-boot-3-client/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemRestClientCustomizer.java +++ b/belgif-rest-problem-spring-boot-3-client/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemRestClientCustomizer.java @@ -1,17 +1,12 @@ package io.github.belgif.rest.problem.spring.client; -import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.web.client.RestClientCustomizer; -import org.springframework.stereotype.Component; -import org.springframework.web.client.RestClient; /** * RestClientCustomizer that registers the {@link ProblemResponseErrorHandler}. * * @see ProblemResponseErrorHandler */ -@Component -@ConditionalOnClass({ RestClient.class, RestClientCustomizer.class }) public class ProblemRestClientCustomizer extends AbstractProblemRestClientCustomizer implements RestClientCustomizer { public ProblemRestClientCustomizer(ProblemResponseErrorHandler errorHandler) { diff --git a/belgif-rest-problem-spring-boot-3-client/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemRestTemplateCustomizer.java b/belgif-rest-problem-spring-boot-3-client/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemRestTemplateCustomizer.java index dee9f85c..2a536fa3 100644 --- a/belgif-rest-problem-spring-boot-3-client/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemRestTemplateCustomizer.java +++ b/belgif-rest-problem-spring-boot-3-client/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemRestTemplateCustomizer.java @@ -1,17 +1,12 @@ package io.github.belgif.rest.problem.spring.client; -import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.web.client.RestTemplateCustomizer; -import org.springframework.stereotype.Component; -import org.springframework.web.client.RestTemplate; /** * RestTemplateCustomizer that registers the {@link ProblemResponseErrorHandler}. * * @see ProblemResponseErrorHandler */ -@Component -@ConditionalOnClass({ RestTemplate.class, RestTemplateCustomizer.class }) public class ProblemRestTemplateCustomizer extends AbstractProblemRestTemplateCustomizer implements RestTemplateCustomizer { diff --git a/belgif-rest-problem-spring-boot-3-client/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemWebClientCustomizer.java b/belgif-rest-problem-spring-boot-3-client/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemWebClientCustomizer.java index 88fe183f..396977d7 100644 --- a/belgif-rest-problem-spring-boot-3-client/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemWebClientCustomizer.java +++ b/belgif-rest-problem-spring-boot-3-client/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemWebClientCustomizer.java @@ -1,15 +1,10 @@ package io.github.belgif.rest.problem.spring.client; -import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.web.reactive.function.client.WebClientCustomizer; -import org.springframework.stereotype.Component; -import org.springframework.web.reactive.function.client.WebClient; /** * WebClientCustomizer that registers a filter that converts problem responses to Problem exceptions. */ -@Component -@ConditionalOnClass({ WebClient.class, WebClientCustomizer.class }) public class ProblemWebClientCustomizer extends AbstractProblemWebClientCustomizer implements WebClientCustomizer { } diff --git a/belgif-rest-problem-spring-boot-3-client/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/belgif-rest-problem-spring-boot-3-client/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports new file mode 100644 index 00000000..94df1c39 --- /dev/null +++ b/belgif-rest-problem-spring-boot-3-client/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -0,0 +1 @@ +io.github.belgif.rest.problem.spring.client.ClientProblemAutoConfiguration \ No newline at end of file diff --git a/belgif-rest-problem-spring-boot-3-client/src/test/java/io/github/belgif/rest/problem/spring/client/ClientProblemAutoConfigurationTest.java b/belgif-rest-problem-spring-boot-3-client/src/test/java/io/github/belgif/rest/problem/spring/client/ClientProblemAutoConfigurationTest.java new file mode 100644 index 00000000..bc1e4f2a --- /dev/null +++ b/belgif-rest-problem-spring-boot-3-client/src/test/java/io/github/belgif/rest/problem/spring/client/ClientProblemAutoConfigurationTest.java @@ -0,0 +1,22 @@ +package io.github.belgif.rest.problem.spring.client; + +import static org.assertj.core.api.Assertions.assertThat; + +import org.junit.jupiter.api.Test; +import org.springframework.boot.autoconfigure.AutoConfigurations; +import org.springframework.boot.test.context.runner.ApplicationContextRunner; + +import io.github.belgif.rest.problem.spring.ProblemJackson2Configuration; + +class ClientProblemAutoConfigurationTest { + + private final ApplicationContextRunner contextRunner = new ApplicationContextRunner() + .withConfiguration(AutoConfigurations.of(ClientProblemAutoConfiguration.class)); + + @Test + void autoConfiguration() { + contextRunner.run((context) -> { + assertThat(context).hasSingleBean(ProblemJackson2Configuration.class); + }); + } +} diff --git a/belgif-rest-problem-spring-boot-3-server/src/main/java/io/github/belgif/rest/problem/spring/server/InvalidRequestExceptionHandler.java b/belgif-rest-problem-spring-boot-3-server/src/main/java/io/github/belgif/rest/problem/spring/server/InvalidRequestExceptionHandler.java index 750e4fd3..e86856a7 100644 --- a/belgif-rest-problem-spring-boot-3-server/src/main/java/io/github/belgif/rest/problem/spring/server/InvalidRequestExceptionHandler.java +++ b/belgif-rest-problem-spring-boot-3-server/src/main/java/io/github/belgif/rest/problem/spring/server/InvalidRequestExceptionHandler.java @@ -8,12 +8,9 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; -import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication; import org.springframework.core.annotation.Order; import org.springframework.web.bind.annotation.RestControllerAdvice; -import com.atlassian.oai.validator.springmvc.InvalidRequestException; import com.fasterxml.jackson.core.JsonPointer; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; @@ -22,8 +19,6 @@ * RestController exception handler for InvalidRequestException thrown by Atlassian swagger-request-validator library. */ @RestControllerAdvice -@ConditionalOnWebApplication -@ConditionalOnClass(InvalidRequestException.class) @Order(1) // @Order(1) to take precedence over io.github.belgif.rest.problem.spring.ProblemExceptionHandler public class InvalidRequestExceptionHandler extends AbstractInvalidRequestExceptionHandler { diff --git a/belgif-rest-problem-spring-boot-3-server/src/main/java/io/github/belgif/rest/problem/spring/server/ProblemValidationConfigurationCustomizer.java b/belgif-rest-problem-spring-boot-3-server/src/main/java/io/github/belgif/rest/problem/spring/server/ProblemValidationConfigurationCustomizer.java index 83c6902c..d805ff5a 100644 --- a/belgif-rest-problem-spring-boot-3-server/src/main/java/io/github/belgif/rest/problem/spring/server/ProblemValidationConfigurationCustomizer.java +++ b/belgif-rest-problem-spring-boot-3-server/src/main/java/io/github/belgif/rest/problem/spring/server/ProblemValidationConfigurationCustomizer.java @@ -1,16 +1,10 @@ package io.github.belgif.rest.problem.spring.server; -import jakarta.validation.Configuration; - -import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.validation.ValidationConfigurationCustomizer; -import org.springframework.stereotype.Component; /** * ValidationConfigurationCustomizer that registers the AnnotationParameterNameProvider. */ -@Component -@ConditionalOnClass({ Configuration.class, ValidationConfigurationCustomizer.class }) public class ProblemValidationConfigurationCustomizer extends AbstractProblemValidationConfigurationCustomizer implements ValidationConfigurationCustomizer { diff --git a/belgif-rest-problem-spring-boot-3-server/src/main/java/io/github/belgif/rest/problem/spring/server/RoutingExceptionsHandler.java b/belgif-rest-problem-spring-boot-3-server/src/main/java/io/github/belgif/rest/problem/spring/server/RoutingExceptionsHandler.java index 83af205f..6963daf7 100644 --- a/belgif-rest-problem-spring-boot-3-server/src/main/java/io/github/belgif/rest/problem/spring/server/RoutingExceptionsHandler.java +++ b/belgif-rest-problem-spring-boot-3-server/src/main/java/io/github/belgif/rest/problem/spring/server/RoutingExceptionsHandler.java @@ -1,6 +1,5 @@ package io.github.belgif.rest.problem.spring.server; -import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication; import org.springframework.core.annotation.Order; import org.springframework.web.bind.annotation.RestControllerAdvice; @@ -15,7 +14,6 @@ * RestController exception handler for routing-related exceptions. */ @RestControllerAdvice -@ConditionalOnWebApplication @Order(1) // @Order(1) to take precedence over org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver // and io.github.belgif.rest.problem.spring.ProblemExceptionHandler diff --git a/belgif-rest-problem-spring-boot-3-server/src/main/java/io/github/belgif/rest/problem/spring/server/ServerProblemAutoConfiguration.java b/belgif-rest-problem-spring-boot-3-server/src/main/java/io/github/belgif/rest/problem/spring/server/ServerProblemAutoConfiguration.java new file mode 100644 index 00000000..0e65e593 --- /dev/null +++ b/belgif-rest-problem-spring-boot-3-server/src/main/java/io/github/belgif/rest/problem/spring/server/ServerProblemAutoConfiguration.java @@ -0,0 +1,55 @@ +package io.github.belgif.rest.problem.spring.server; + +import jakarta.validation.Configuration; +import jakarta.validation.ConstraintViolationException; + +import org.springframework.boot.autoconfigure.AutoConfiguration; +import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; +import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication; +import org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration; +import org.springframework.boot.autoconfigure.validation.ValidationConfigurationCustomizer; +import org.springframework.context.annotation.Import; + +import com.atlassian.oai.validator.springmvc.InvalidRequestException; +import com.fasterxml.jackson.databind.ObjectMapper; + +/** + * Spring Boot AutoConfiguration for rest-problem-spring. + */ +@AutoConfiguration +@Import({ io.github.belgif.rest.problem.spring.ProblemJackson2Configuration.class, JacksonAutoConfiguration.class }) +public class ServerProblemAutoConfiguration { + + private ObjectMapper objectMapper; + + public ServerProblemAutoConfiguration(ObjectMapper objectMapper) { + this.objectMapper = objectMapper; + } + + @ConditionalOnClass(ConstraintViolationException.class) + @ConditionalOnWebApplication + public BeanValidationExceptionsHandler beanValidationExceptionsHandler() { + return new BeanValidationExceptionsHandler(); + } + + @ConditionalOnWebApplication + public ProblemExceptionHandler problemExceptionHandler() { + return new ProblemExceptionHandler(); + } + + @ConditionalOnWebApplication + public RoutingExceptionsHandler routingExceptionsHandler() { + return new RoutingExceptionsHandler(); + } + + @ConditionalOnClass({ Configuration.class, ValidationConfigurationCustomizer.class }) + public ProblemValidationConfigurationCustomizer problemValidationConfigurationCustomizer() { + return new ProblemValidationConfigurationCustomizer(); + } + + @ConditionalOnWebApplication + @ConditionalOnClass(InvalidRequestException.class) + public InvalidRequestExceptionHandler invalidRequestExceptionHandler() { + return new InvalidRequestExceptionHandler(objectMapper); + } +} diff --git a/belgif-rest-problem-spring-boot-3-server/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/belgif-rest-problem-spring-boot-3-server/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports new file mode 100644 index 00000000..379d1750 --- /dev/null +++ b/belgif-rest-problem-spring-boot-3-server/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -0,0 +1 @@ +io.github.belgif.rest.problem.spring.server.ServerProblemAutoConfiguration \ No newline at end of file diff --git a/belgif-rest-problem-spring-boot-3-server/src/test/java/io/github/belgif/rest/problem/spring/server/ServerProblemAutoConfigurationTest.java b/belgif-rest-problem-spring-boot-3-server/src/test/java/io/github/belgif/rest/problem/spring/server/ServerProblemAutoConfigurationTest.java new file mode 100644 index 00000000..44245f70 --- /dev/null +++ b/belgif-rest-problem-spring-boot-3-server/src/test/java/io/github/belgif/rest/problem/spring/server/ServerProblemAutoConfigurationTest.java @@ -0,0 +1,23 @@ +package io.github.belgif.rest.problem.spring.server; + +import static org.assertj.core.api.Assertions.assertThat; + +import org.junit.jupiter.api.Test; +import org.springframework.boot.autoconfigure.AutoConfigurations; +import org.springframework.boot.test.context.runner.ApplicationContextRunner; + +import io.github.belgif.rest.problem.spring.ProblemJackson2Configuration; + +class ServerProblemAutoConfigurationTest { + + private final ApplicationContextRunner contextRunner = new ApplicationContextRunner() + .withConfiguration(AutoConfigurations.of(ServerProblemAutoConfiguration.class)); + + @Test + void autoConfiguration() { + contextRunner.run((context) -> { + assertThat(context).hasSingleBean(ProblemJackson2Configuration.class); + }); + } + +} diff --git a/belgif-rest-problem-spring-boot-4-client/pom.xml b/belgif-rest-problem-spring-boot-4-client/pom.xml index e6391c6e..a78d8b67 100644 --- a/belgif-rest-problem-spring-boot-4-client/pom.xml +++ b/belgif-rest-problem-spring-boot-4-client/pom.xml @@ -9,7 +9,7 @@ ${revision} - belgif-rest-problem-spring-boot-4-client-starter + belgif-rest-problem-spring-boot-4-client ${project.groupId}:${project.artifactId} jar diff --git a/belgif-rest-problem-spring-boot-4-client/src/main/java/io/github/belgif/rest/problem/spring/client/ClientProblemAutoConfiguration.java b/belgif-rest-problem-spring-boot-4-client/src/main/java/io/github/belgif/rest/problem/spring/client/ClientProblemAutoConfiguration.java new file mode 100644 index 00000000..0c6c461f --- /dev/null +++ b/belgif-rest-problem-spring-boot-4-client/src/main/java/io/github/belgif/rest/problem/spring/client/ClientProblemAutoConfiguration.java @@ -0,0 +1,48 @@ +package io.github.belgif.rest.problem.spring.client; + +import org.springframework.boot.autoconfigure.AutoConfiguration; +import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; +import org.springframework.boot.jackson.autoconfigure.JacksonAutoConfiguration; +import org.springframework.boot.restclient.RestClientCustomizer; +import org.springframework.boot.restclient.RestTemplateCustomizer; +import org.springframework.boot.webclient.WebClientCustomizer; +import org.springframework.context.annotation.Import; +import org.springframework.web.client.RestClient; +import org.springframework.web.client.RestTemplate; +import org.springframework.web.reactive.function.client.WebClient; + +import tools.jackson.databind.ObjectMapper; + +/** + * Spring Boot AutoConfiguration for rest-problem-spring. + */ +@AutoConfiguration +@Import({ io.github.belgif.rest.problem.spring.ProblemJackson3Configuration.class, JacksonAutoConfiguration.class, + ProblemResponseErrorHandler.class }) +public class ClientProblemAutoConfiguration { + + private ObjectMapper objectMapper; + + private ProblemResponseErrorHandler problemResponseErrorHandler; + + public ClientProblemAutoConfiguration(ObjectMapper objectMapper, + ProblemResponseErrorHandler problemResponseErrorHandler) { + this.objectMapper = objectMapper; + this.problemResponseErrorHandler = problemResponseErrorHandler; + } + + @ConditionalOnClass({ RestClient.class, RestClientCustomizer.class }) + public ProblemRestClientCustomizer problemRestClientCustomizer() { + return new ProblemRestClientCustomizer(problemResponseErrorHandler); + } + + @ConditionalOnClass({ RestTemplate.class, RestTemplateCustomizer.class }) + public ProblemRestTemplateCustomizer problemRestTemplateCustomizer() { + return new ProblemRestTemplateCustomizer(problemResponseErrorHandler); + } + + @ConditionalOnClass({ WebClient.class, WebClientCustomizer.class }) + public ProblemWebClientCustomizer problemWebClientCustomizer() { + return new ProblemWebClientCustomizer(); + } +} diff --git a/belgif-rest-problem-spring-boot-4-client/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemRestClientCustomizer.java b/belgif-rest-problem-spring-boot-4-client/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemRestClientCustomizer.java index 1a227d45..e5b7d6f4 100644 --- a/belgif-rest-problem-spring-boot-4-client/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemRestClientCustomizer.java +++ b/belgif-rest-problem-spring-boot-4-client/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemRestClientCustomizer.java @@ -1,17 +1,12 @@ package io.github.belgif.rest.problem.spring.client; -import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.restclient.RestClientCustomizer; -import org.springframework.stereotype.Component; -import org.springframework.web.client.RestClient; /** * RestClientCustomizer that registers the {@link ProblemResponseErrorHandler}. * * @see ProblemResponseErrorHandler */ -@Component -@ConditionalOnClass({ RestClient.class, RestClientCustomizer.class }) public class ProblemRestClientCustomizer extends AbstractProblemRestClientCustomizer implements RestClientCustomizer { public ProblemRestClientCustomizer(ProblemResponseErrorHandler errorHandler) { diff --git a/belgif-rest-problem-spring-boot-4-client/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemRestTemplateCustomizer.java b/belgif-rest-problem-spring-boot-4-client/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemRestTemplateCustomizer.java index f0283dbf..9d00e73f 100644 --- a/belgif-rest-problem-spring-boot-4-client/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemRestTemplateCustomizer.java +++ b/belgif-rest-problem-spring-boot-4-client/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemRestTemplateCustomizer.java @@ -1,22 +1,16 @@ package io.github.belgif.rest.problem.spring.client; -import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.restclient.RestTemplateCustomizer; -import org.springframework.stereotype.Component; -import org.springframework.web.client.RestTemplate; /** * RestTemplateCustomizer that registers the {@link ProblemResponseErrorHandler}. * * @see ProblemResponseErrorHandler */ -@Component -@ConditionalOnClass({ RestTemplate.class, RestTemplateCustomizer.class }) public class ProblemRestTemplateCustomizer extends AbstractProblemRestTemplateCustomizer implements RestTemplateCustomizer { public ProblemRestTemplateCustomizer(ProblemResponseErrorHandler problemResponseErrorHandler) { super(problemResponseErrorHandler); } - } diff --git a/belgif-rest-problem-spring-boot-4-client/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemWebClientCustomizer.java b/belgif-rest-problem-spring-boot-4-client/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemWebClientCustomizer.java index 25b4e2cb..568824b9 100644 --- a/belgif-rest-problem-spring-boot-4-client/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemWebClientCustomizer.java +++ b/belgif-rest-problem-spring-boot-4-client/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemWebClientCustomizer.java @@ -1,15 +1,10 @@ package io.github.belgif.rest.problem.spring.client; -import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.webclient.WebClientCustomizer; -import org.springframework.stereotype.Component; -import org.springframework.web.reactive.function.client.WebClient; /** * WebClientCustomizer that registers a filter that converts problem responses to Problem exceptions. */ -@Component -@ConditionalOnClass({ WebClient.class, WebClientCustomizer.class }) public class ProblemWebClientCustomizer extends AbstractProblemWebClientCustomizer implements WebClientCustomizer { } diff --git a/belgif-rest-problem-spring-boot-4-client/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/belgif-rest-problem-spring-boot-4-client/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports new file mode 100644 index 00000000..94df1c39 --- /dev/null +++ b/belgif-rest-problem-spring-boot-4-client/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -0,0 +1 @@ +io.github.belgif.rest.problem.spring.client.ClientProblemAutoConfiguration \ No newline at end of file diff --git a/belgif-rest-problem-spring-boot-4-client/src/test/java/io/github/belgif/rest/problem/spring/client/ClientProblemAutoConfigurationTest.java b/belgif-rest-problem-spring-boot-4-client/src/test/java/io/github/belgif/rest/problem/spring/client/ClientProblemAutoConfigurationTest.java new file mode 100644 index 00000000..175e9ecd --- /dev/null +++ b/belgif-rest-problem-spring-boot-4-client/src/test/java/io/github/belgif/rest/problem/spring/client/ClientProblemAutoConfigurationTest.java @@ -0,0 +1,22 @@ +package io.github.belgif.rest.problem.spring.client; + +import static org.assertj.core.api.Assertions.assertThat; + +import org.junit.jupiter.api.Test; +import org.springframework.boot.autoconfigure.AutoConfigurations; +import org.springframework.boot.test.context.runner.ApplicationContextRunner; + +import io.github.belgif.rest.problem.spring.ProblemJackson3Configuration; + +class ClientProblemAutoConfigurationTest { + + private final ApplicationContextRunner contextRunner = new ApplicationContextRunner() + .withConfiguration(AutoConfigurations.of(ClientProblemAutoConfiguration.class)); + + @Test + void autoConfiguration() { + contextRunner.run((context) -> { + assertThat(context).hasSingleBean(ProblemJackson3Configuration.class); + }); + } +} diff --git a/belgif-rest-problem-spring-boot-4-server/pom.xml b/belgif-rest-problem-spring-boot-4-server/pom.xml index adaef7cd..263bfd91 100644 --- a/belgif-rest-problem-spring-boot-4-server/pom.xml +++ b/belgif-rest-problem-spring-boot-4-server/pom.xml @@ -9,7 +9,7 @@ ${revision} - belgif-rest-problem-server-spring-boot-4-server + belgif-rest-problem-spring-boot-4-server ${project.groupId}:${project.artifactId} jar diff --git a/belgif-rest-problem-spring-boot-4-server/src/main/java/io/github/belgif/rest/problem/spring/server/InvalidRequestExceptionHandler.java b/belgif-rest-problem-spring-boot-4-server/src/main/java/io/github/belgif/rest/problem/spring/server/InvalidRequestExceptionHandler.java index c33372a7..6baff505 100644 --- a/belgif-rest-problem-spring-boot-4-server/src/main/java/io/github/belgif/rest/problem/spring/server/InvalidRequestExceptionHandler.java +++ b/belgif-rest-problem-spring-boot-4-server/src/main/java/io/github/belgif/rest/problem/spring/server/InvalidRequestExceptionHandler.java @@ -8,13 +8,9 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; -import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication; import org.springframework.core.annotation.Order; import org.springframework.web.bind.annotation.RestControllerAdvice; -import com.atlassian.oai.validator.springmvc.InvalidRequestException; - import tools.jackson.core.JsonPointer; import tools.jackson.databind.JsonNode; import tools.jackson.databind.ObjectMapper; @@ -23,8 +19,6 @@ * RestController exception handler for InvalidRequestException thrown by Atlassian swagger-request-validator library. */ @RestControllerAdvice -@ConditionalOnWebApplication -@ConditionalOnClass(InvalidRequestException.class) @Order(1) // @Order(1) to take precedence over io.github.belgif.rest.problem.spring.ProblemExceptionHandler public class InvalidRequestExceptionHandler extends AbstractInvalidRequestExceptionHandler { diff --git a/belgif-rest-problem-spring-boot-4-server/src/main/java/io/github/belgif/rest/problem/spring/server/ProblemValidationConfigurationCustomizer.java b/belgif-rest-problem-spring-boot-4-server/src/main/java/io/github/belgif/rest/problem/spring/server/ProblemValidationConfigurationCustomizer.java index 9c485599..66a5ab8e 100644 --- a/belgif-rest-problem-spring-boot-4-server/src/main/java/io/github/belgif/rest/problem/spring/server/ProblemValidationConfigurationCustomizer.java +++ b/belgif-rest-problem-spring-boot-4-server/src/main/java/io/github/belgif/rest/problem/spring/server/ProblemValidationConfigurationCustomizer.java @@ -1,16 +1,10 @@ package io.github.belgif.rest.problem.spring.server; -import jakarta.validation.Configuration; - -import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.validation.autoconfigure.ValidationConfigurationCustomizer; -import org.springframework.stereotype.Component; /** * ValidationConfigurationCustomizer that registers the AnnotationParameterNameProvider. */ -@Component -@ConditionalOnClass({ Configuration.class, ValidationConfigurationCustomizer.class }) public class ProblemValidationConfigurationCustomizer extends AbstractProblemValidationConfigurationCustomizer implements ValidationConfigurationCustomizer { diff --git a/belgif-rest-problem-spring-boot-4-server/src/main/java/io/github/belgif/rest/problem/spring/server/RoutingExceptionsHandler.java b/belgif-rest-problem-spring-boot-4-server/src/main/java/io/github/belgif/rest/problem/spring/server/RoutingExceptionsHandler.java index 777f9bc9..3085fc26 100644 --- a/belgif-rest-problem-spring-boot-4-server/src/main/java/io/github/belgif/rest/problem/spring/server/RoutingExceptionsHandler.java +++ b/belgif-rest-problem-spring-boot-4-server/src/main/java/io/github/belgif/rest/problem/spring/server/RoutingExceptionsHandler.java @@ -1,6 +1,5 @@ package io.github.belgif.rest.problem.spring.server; -import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication; import org.springframework.core.annotation.Order; import org.springframework.web.bind.annotation.RestControllerAdvice; @@ -14,10 +13,10 @@ * RestController exception handler for routing-related exceptions. */ @RestControllerAdvice -@ConditionalOnWebApplication @Order(1) // @Order(1) to take precedence over org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver // and io.github.belgif.rest.problem.spring.ProblemExceptionHandler +//TODO: move to reinstated spring(-7) module? public class RoutingExceptionsHandler extends AbstractRoutingExceptionsHandler { public RoutingExceptionsHandler() { diff --git a/belgif-rest-problem-spring-boot-4-server/src/main/java/io/github/belgif/rest/problem/spring/server/ServerProblemAutoConfiguration.java b/belgif-rest-problem-spring-boot-4-server/src/main/java/io/github/belgif/rest/problem/spring/server/ServerProblemAutoConfiguration.java new file mode 100644 index 00000000..7bc09ed2 --- /dev/null +++ b/belgif-rest-problem-spring-boot-4-server/src/main/java/io/github/belgif/rest/problem/spring/server/ServerProblemAutoConfiguration.java @@ -0,0 +1,56 @@ +package io.github.belgif.rest.problem.spring.server; + +import jakarta.validation.Configuration; +import jakarta.validation.ConstraintViolationException; + +import org.springframework.boot.autoconfigure.AutoConfiguration; +import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; +import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication; +import org.springframework.boot.jackson.autoconfigure.JacksonAutoConfiguration; +import org.springframework.boot.validation.autoconfigure.ValidationConfigurationCustomizer; +import org.springframework.context.annotation.Import; + +import com.atlassian.oai.validator.springmvc.InvalidRequestException; + +import tools.jackson.databind.ObjectMapper; + +/** + * Spring Boot AutoConfiguration for rest-problem-spring. + */ +@AutoConfiguration +@Import({ io.github.belgif.rest.problem.spring.ProblemJackson3Configuration.class, JacksonAutoConfiguration.class }) +public class ServerProblemAutoConfiguration { + + private ObjectMapper objectMapper; + + public ServerProblemAutoConfiguration(ObjectMapper objectMapper) { + this.objectMapper = objectMapper; + } + + @ConditionalOnClass(ConstraintViolationException.class) + @ConditionalOnWebApplication + public BeanValidationExceptionsHandler beanValidationExceptionsHandler() { + return new BeanValidationExceptionsHandler(); + } + + @ConditionalOnWebApplication + public ProblemExceptionHandler problemExceptionHandler() { + return new ProblemExceptionHandler(); + } + + @ConditionalOnWebApplication + public RoutingExceptionsHandler routingExceptionsHandler() { + return new RoutingExceptionsHandler(); + } + + @ConditionalOnClass({ Configuration.class, ValidationConfigurationCustomizer.class }) + public ProblemValidationConfigurationCustomizer problemValidationConfigurationCustomizer() { + return new ProblemValidationConfigurationCustomizer(); + } + + @ConditionalOnWebApplication + @ConditionalOnClass(InvalidRequestException.class) + public InvalidRequestExceptionHandler invalidRequestExceptionHandler() { + return new InvalidRequestExceptionHandler(objectMapper); + } +} diff --git a/belgif-rest-problem-spring-boot-4-server/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/belgif-rest-problem-spring-boot-4-server/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports new file mode 100644 index 00000000..379d1750 --- /dev/null +++ b/belgif-rest-problem-spring-boot-4-server/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -0,0 +1 @@ +io.github.belgif.rest.problem.spring.server.ServerProblemAutoConfiguration \ No newline at end of file diff --git a/belgif-rest-problem-spring-boot-4-server/src/test/java/io/github/belgif/rest/problem/spring/server/ServerProblemAutoConfigurationTest.java b/belgif-rest-problem-spring-boot-4-server/src/test/java/io/github/belgif/rest/problem/spring/server/ServerProblemAutoConfigurationTest.java new file mode 100644 index 00000000..795d8059 --- /dev/null +++ b/belgif-rest-problem-spring-boot-4-server/src/test/java/io/github/belgif/rest/problem/spring/server/ServerProblemAutoConfigurationTest.java @@ -0,0 +1,23 @@ +package io.github.belgif.rest.problem.spring.server; + +import static org.assertj.core.api.Assertions.assertThat; + +import org.junit.jupiter.api.Test; +import org.springframework.boot.autoconfigure.AutoConfigurations; +import org.springframework.boot.test.context.runner.ApplicationContextRunner; + +import io.github.belgif.rest.problem.spring.ProblemJackson3Configuration; + +class ServerProblemAutoConfigurationTest { + + private final ApplicationContextRunner contextRunner = new ApplicationContextRunner() + .withConfiguration(AutoConfigurations.of(ServerProblemAutoConfiguration.class)); + + @Test + void autoConfiguration() { + contextRunner.run((context) -> { + assertThat(context).hasSingleBean(ProblemJackson3Configuration.class); + }); + } + +} diff --git a/belgif-rest-problem-spring-common/pom.xml b/belgif-rest-problem-spring-common/pom.xml index 43162d14..78116c1c 100644 --- a/belgif-rest-problem-spring-common/pom.xml +++ b/belgif-rest-problem-spring-common/pom.xml @@ -36,11 +36,6 @@ belgif-rest-problem ${project.version} - - org.springframework.boot - spring-boot-autoconfigure - provided - org.springframework spring-web @@ -74,6 +69,13 @@ jackson-databind provided + + tools.jackson.core + jackson-databind + 3.0.4 + provided + + jakarta.servlet jakarta.servlet-api @@ -94,27 +96,23 @@ - tools.jackson.core - jackson-databind - 3.0.4 - provided - true + org.junit.jupiter + junit-jupiter + test - - org.springframework.boot - spring-boot-starter-test + org.assertj + assertj-core test - - org.junit.jupiter - junit-jupiter + org.mockito + mockito-junit-jupiter test - org.assertj - assertj-core + org.springframework + spring-test test diff --git a/belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/ProblemAutoConfiguration.java b/belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/ProblemAutoConfiguration.java deleted file mode 100644 index 96c2ab73..00000000 --- a/belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/ProblemAutoConfiguration.java +++ /dev/null @@ -1,13 +0,0 @@ -package io.github.belgif.rest.problem.spring; - -import org.springframework.boot.autoconfigure.AutoConfiguration; -import org.springframework.context.annotation.ComponentScan; - -/** - * Spring Boot AutoConfiguration for rest-problem-spring. - */ -@AutoConfiguration -@ComponentScan("io.github.belgif.rest.problem") -public class ProblemAutoConfiguration { - -} diff --git a/belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/ProblemJackson2Configuration.java b/belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/ProblemJackson2Configuration.java new file mode 100644 index 00000000..f4a0c5b7 --- /dev/null +++ b/belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/ProblemJackson2Configuration.java @@ -0,0 +1,10 @@ +package io.github.belgif.rest.problem.spring; + +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Import; + +@Configuration +@Import({ SpringProblemModule.class, ProblemConfigurationProperties.class, ProblemExtConfigurationProperties.class, + SpringProblemTypeRegistry.class }) +public class ProblemJackson2Configuration { +} diff --git a/belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/ProblemJackson3Configuration.java b/belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/ProblemJackson3Configuration.java new file mode 100644 index 00000000..54ec9826 --- /dev/null +++ b/belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/ProblemJackson3Configuration.java @@ -0,0 +1,10 @@ +package io.github.belgif.rest.problem.spring; + +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Import; + +@Configuration +@Import({ SpringProblemModuleJackson3.class, ProblemConfigurationProperties.class, + ProblemExtConfigurationProperties.class, SpringProblemTypeRegistry.class }) +public class ProblemJackson3Configuration { +} diff --git a/belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/server/BeanValidationExceptionsHandler.java b/belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/server/BeanValidationExceptionsHandler.java index b3c7e8f3..45bea08b 100644 --- a/belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/server/BeanValidationExceptionsHandler.java +++ b/belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/server/BeanValidationExceptionsHandler.java @@ -6,8 +6,6 @@ import jakarta.validation.ConstraintViolationException; -import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; -import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication; import org.springframework.core.annotation.Order; import org.springframework.http.ResponseEntity; import org.springframework.validation.BindException; @@ -30,8 +28,6 @@ * RestController exception handler for exceptions related to bean validation. */ @RestControllerAdvice -@ConditionalOnClass(ConstraintViolationException.class) -@ConditionalOnWebApplication @Order(1) // @Order(1) to take precedence over io.github.belgif.rest.problem.spring.ProblemExceptionHandler public class BeanValidationExceptionsHandler { diff --git a/belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/server/ProblemExceptionHandler.java b/belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/server/ProblemExceptionHandler.java index 40c7c35b..3b3086b8 100644 --- a/belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/server/ProblemExceptionHandler.java +++ b/belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/server/ProblemExceptionHandler.java @@ -2,7 +2,6 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.RestControllerAdvice; @@ -20,7 +19,6 @@ *

*/ @RestControllerAdvice -@ConditionalOnWebApplication public class ProblemExceptionHandler { private static final Logger LOGGER = LoggerFactory.getLogger(ProblemExceptionHandler.class); diff --git a/belgif-rest-problem-spring-common/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/belgif-rest-problem-spring-common/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports deleted file mode 100644 index f115dc5b..00000000 --- a/belgif-rest-problem-spring-common/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports +++ /dev/null @@ -1 +0,0 @@ -io.github.belgif.rest.problem.spring.ProblemAutoConfiguration \ No newline at end of file diff --git a/belgif-rest-problem-spring-common/src/test/java/io/github/belgif/rest/problem/spring/ProblemAutoConfigurationTest.java b/belgif-rest-problem-spring-common/src/test/java/io/github/belgif/rest/problem/spring/ProblemAutoConfigurationTest.java deleted file mode 100644 index c5a5c66b..00000000 --- a/belgif-rest-problem-spring-common/src/test/java/io/github/belgif/rest/problem/spring/ProblemAutoConfigurationTest.java +++ /dev/null @@ -1,14 +0,0 @@ -package io.github.belgif.rest.problem.spring; - -import static org.assertj.core.api.Assertions.*; - -import org.junit.jupiter.api.Test; - -class ProblemAutoConfigurationTest { - - @Test - void autoConfiguration() { - assertThatNoException().isThrownBy(ProblemAutoConfiguration::new); - } - -} diff --git a/belgif-rest-problem-spring-common/src/test/java/io/github/belgif/rest/problem/spring/SpringProblemTypeRegistryTest.java b/belgif-rest-problem-spring-common/src/test/java/io/github/belgif/rest/problem/spring/SpringProblemTypeRegistryTest.java index 1418a167..c2fddc18 100644 --- a/belgif-rest-problem-spring-common/src/test/java/io/github/belgif/rest/problem/spring/SpringProblemTypeRegistryTest.java +++ b/belgif-rest-problem-spring-common/src/test/java/io/github/belgif/rest/problem/spring/SpringProblemTypeRegistryTest.java @@ -7,22 +7,29 @@ import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration; +import org.springframework.context.annotation.Bean; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit.jupiter.SpringExtension; +import com.fasterxml.jackson.databind.ObjectMapper; + import io.github.belgif.rest.problem.BadRequestProblem; import io.github.belgif.rest.problem.api.ClientProblem; import io.github.belgif.rest.problem.api.ProblemType; import io.github.belgif.rest.problem.registry.ProblemTypeRegistry; @ExtendWith(SpringExtension.class) -@ContextConfiguration(classes = { ProblemAutoConfiguration.class, JacksonAutoConfiguration.class }) +@ContextConfiguration(classes = { ProblemJackson2Configuration.class }) class SpringProblemTypeRegistryTest { @Autowired private ProblemTypeRegistry problemTypeRegistry; + @Bean + public ObjectMapper objectMapper() { + return new ObjectMapper(); + } + @Test void getProblemTypes() { assertThat(problemTypeRegistry.getProblemTypes()).isNotEmpty(); diff --git a/pom.xml b/pom.xml index d225120b..c4744cd6 100644 --- a/pom.xml +++ b/pom.xml @@ -379,13 +379,11 @@ belgif-rest-problem-jakarta-ee-core belgif-rest-problem-jakarta-ee-client belgif-rest-problem-jakarta-ee-server - belgif-rest-problem-spring-boot-common + belgif-rest-problem-spring-common belgif-rest-problem-spring-boot-3 - belgif-rest-problem-spring-boot-3-core belgif-rest-problem-spring-boot-3-client belgif-rest-problem-spring-boot-3-server belgif-rest-problem-spring-boot-4 - belgif-rest-problem-spring-boot-4-core belgif-rest-problem-spring-boot-4-client belgif-rest-problem-spring-boot-4-server belgif-rest-problem-quarkus From ed3f0f0e0c21665b77425808f7f1ab1ce89e42bf Mon Sep 17 00:00:00 2001 From: pvdb Date: Tue, 24 Feb 2026 10:19:44 +0100 Subject: [PATCH 06/23] spring refactoring WIP: - add missing @Bean annotations - move error and exception handlers to common spring module --- .../client/ClientProblemAutoConfiguration.java | 11 ++++++++--- .../spring/client/ProblemRestClientCustomizer.java | 6 +++--- .../client/ProblemRestTemplateCustomizer.java | 6 +++--- .../server/ServerProblemAutoConfiguration.java | 14 ++++++++++---- .../client/ClientProblemAutoConfiguration.java | 10 +++++++--- .../spring/client/ProblemRestClientCustomizer.java | 6 +++--- .../client/ProblemRestTemplateCustomizer.java | 6 +++--- .../server/ServerProblemAutoConfiguration.java | 14 ++++++++++---- .../ProblemResponseJackson2ErrorHandler.java | 4 ++-- .../ProblemResponseJackson3ErrorHandler.java | 4 ++-- .../InvalidRequestExceptionJackson2Handler.java | 6 +++--- .../InvalidRequestExceptionJackson3Handler.java | 6 +++--- .../server/RoutingExceptionsJackson2Handler.java | 4 ++-- .../server/RoutingExceptionsJackson3Handler.java | 4 ++-- ...InvalidRequestExceptionJackson2HandlerTest.java | 4 ++-- ...InvalidRequestExceptionJackson3HandlerTest.java | 4 ++-- 16 files changed, 65 insertions(+), 44 deletions(-) rename belgif-rest-problem-spring-boot-3-client/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemResponseErrorHandler.java => belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemResponseJackson2ErrorHandler.java (70%) rename belgif-rest-problem-spring-boot-4-client/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemResponseErrorHandler.java => belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemResponseJackson3ErrorHandler.java (69%) rename belgif-rest-problem-spring-boot-3-server/src/main/java/io/github/belgif/rest/problem/spring/server/InvalidRequestExceptionHandler.java => belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/server/InvalidRequestExceptionJackson2Handler.java (89%) rename belgif-rest-problem-spring-boot-4-server/src/main/java/io/github/belgif/rest/problem/spring/server/InvalidRequestExceptionHandler.java => belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/server/InvalidRequestExceptionJackson3Handler.java (91%) rename belgif-rest-problem-spring-boot-3-server/src/main/java/io/github/belgif/rest/problem/spring/server/RoutingExceptionsHandler.java => belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/server/RoutingExceptionsJackson2Handler.java (89%) rename belgif-rest-problem-spring-boot-4-server/src/main/java/io/github/belgif/rest/problem/spring/server/RoutingExceptionsHandler.java => belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/server/RoutingExceptionsJackson3Handler.java (89%) rename belgif-rest-problem-spring-boot-3-server/src/test/java/io/github/belgif/rest/problem/spring/server/InvalidRequestExceptionHandlerTest.java => belgif-rest-problem-spring-common/src/test/java/io/github/belgif/rest/problem/spring/server/InvalidRequestExceptionJackson2HandlerTest.java (92%) rename belgif-rest-problem-spring-boot-4-server/src/test/java/io/github/belgif/rest/problem/spring/server/InvalidRequestExceptionHandlerTest.java => belgif-rest-problem-spring-common/src/test/java/io/github/belgif/rest/problem/spring/server/InvalidRequestExceptionJackson3HandlerTest.java (92%) diff --git a/belgif-rest-problem-spring-boot-3-client/src/main/java/io/github/belgif/rest/problem/spring/client/ClientProblemAutoConfiguration.java b/belgif-rest-problem-spring-boot-3-client/src/main/java/io/github/belgif/rest/problem/spring/client/ClientProblemAutoConfiguration.java index 3c0745cf..860b2854 100644 --- a/belgif-rest-problem-spring-boot-3-client/src/main/java/io/github/belgif/rest/problem/spring/client/ClientProblemAutoConfiguration.java +++ b/belgif-rest-problem-spring-boot-3-client/src/main/java/io/github/belgif/rest/problem/spring/client/ClientProblemAutoConfiguration.java @@ -6,6 +6,7 @@ import org.springframework.boot.web.client.RestClientCustomizer; import org.springframework.boot.web.client.RestTemplateCustomizer; import org.springframework.boot.web.reactive.function.client.WebClientCustomizer; +import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Import; import org.springframework.web.client.RestClient; import org.springframework.web.client.RestTemplate; @@ -19,30 +20,34 @@ * Spring Boot AutoConfiguration for rest-problem-spring. */ @AutoConfiguration -@Import({ ProblemJackson2Configuration.class, JacksonAutoConfiguration.class, ProblemResponseErrorHandler.class }) +@Import({ ProblemJackson2Configuration.class, JacksonAutoConfiguration.class, + ProblemResponseJackson2ErrorHandler.class }) public class ClientProblemAutoConfiguration { private ObjectMapper objectMapper; - private ProblemResponseErrorHandler problemResponseErrorHandler; + private ProblemResponseJackson2ErrorHandler problemResponseErrorHandler; public ClientProblemAutoConfiguration(ObjectMapper objectMapper, - ProblemResponseErrorHandler problemResponseErrorHandler) { + ProblemResponseJackson2ErrorHandler problemResponseErrorHandler) { this.objectMapper = objectMapper; this.problemResponseErrorHandler = problemResponseErrorHandler; } @ConditionalOnClass({ RestClient.class, RestClientCustomizer.class }) + @Bean public ProblemRestClientCustomizer problemRestClientCustomizer() { return new ProblemRestClientCustomizer(problemResponseErrorHandler); } @ConditionalOnClass({ RestTemplate.class, RestTemplateCustomizer.class }) + @Bean public ProblemRestTemplateCustomizer problemRestTemplateCustomizer() { return new ProblemRestTemplateCustomizer(problemResponseErrorHandler); } @ConditionalOnClass({ WebClient.class, WebClientCustomizer.class }) + @Bean public ProblemWebClientCustomizer problemWebClientCustomizer() { return new ProblemWebClientCustomizer(); } diff --git a/belgif-rest-problem-spring-boot-3-client/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemRestClientCustomizer.java b/belgif-rest-problem-spring-boot-3-client/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemRestClientCustomizer.java index 72da1b8a..7cfe234c 100644 --- a/belgif-rest-problem-spring-boot-3-client/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemRestClientCustomizer.java +++ b/belgif-rest-problem-spring-boot-3-client/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemRestClientCustomizer.java @@ -3,13 +3,13 @@ import org.springframework.boot.web.client.RestClientCustomizer; /** - * RestClientCustomizer that registers the {@link ProblemResponseErrorHandler}. + * RestClientCustomizer that registers the {@link ProblemResponseJackson2ErrorHandler}. * - * @see ProblemResponseErrorHandler + * @see ProblemResponseJackson2ErrorHandler */ public class ProblemRestClientCustomizer extends AbstractProblemRestClientCustomizer implements RestClientCustomizer { - public ProblemRestClientCustomizer(ProblemResponseErrorHandler errorHandler) { + public ProblemRestClientCustomizer(AbstractProblemResponseErrorHandler errorHandler) { super(errorHandler); } } diff --git a/belgif-rest-problem-spring-boot-3-client/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemRestTemplateCustomizer.java b/belgif-rest-problem-spring-boot-3-client/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemRestTemplateCustomizer.java index 2a536fa3..da441e40 100644 --- a/belgif-rest-problem-spring-boot-3-client/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemRestTemplateCustomizer.java +++ b/belgif-rest-problem-spring-boot-3-client/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemRestTemplateCustomizer.java @@ -3,14 +3,14 @@ import org.springframework.boot.web.client.RestTemplateCustomizer; /** - * RestTemplateCustomizer that registers the {@link ProblemResponseErrorHandler}. + * RestTemplateCustomizer that registers the {@link ProblemResponseJackson2ErrorHandler}. * - * @see ProblemResponseErrorHandler + * @see ProblemResponseJackson2ErrorHandler */ public class ProblemRestTemplateCustomizer extends AbstractProblemRestTemplateCustomizer implements RestTemplateCustomizer { - public ProblemRestTemplateCustomizer(ProblemResponseErrorHandler problemResponseErrorHandler) { + public ProblemRestTemplateCustomizer(AbstractProblemResponseErrorHandler problemResponseErrorHandler) { super(problemResponseErrorHandler); } diff --git a/belgif-rest-problem-spring-boot-3-server/src/main/java/io/github/belgif/rest/problem/spring/server/ServerProblemAutoConfiguration.java b/belgif-rest-problem-spring-boot-3-server/src/main/java/io/github/belgif/rest/problem/spring/server/ServerProblemAutoConfiguration.java index 0e65e593..f0913492 100644 --- a/belgif-rest-problem-spring-boot-3-server/src/main/java/io/github/belgif/rest/problem/spring/server/ServerProblemAutoConfiguration.java +++ b/belgif-rest-problem-spring-boot-3-server/src/main/java/io/github/belgif/rest/problem/spring/server/ServerProblemAutoConfiguration.java @@ -8,6 +8,7 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication; import org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration; import org.springframework.boot.autoconfigure.validation.ValidationConfigurationCustomizer; +import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Import; import com.atlassian.oai.validator.springmvc.InvalidRequestException; @@ -28,28 +29,33 @@ public ServerProblemAutoConfiguration(ObjectMapper objectMapper) { @ConditionalOnClass(ConstraintViolationException.class) @ConditionalOnWebApplication + @Bean public BeanValidationExceptionsHandler beanValidationExceptionsHandler() { return new BeanValidationExceptionsHandler(); } @ConditionalOnWebApplication + @Bean public ProblemExceptionHandler problemExceptionHandler() { return new ProblemExceptionHandler(); } @ConditionalOnWebApplication - public RoutingExceptionsHandler routingExceptionsHandler() { - return new RoutingExceptionsHandler(); + @Bean + public RoutingExceptionsJackson2Handler routingExceptionsHandler() { + return new RoutingExceptionsJackson2Handler(); } @ConditionalOnClass({ Configuration.class, ValidationConfigurationCustomizer.class }) + @Bean public ProblemValidationConfigurationCustomizer problemValidationConfigurationCustomizer() { return new ProblemValidationConfigurationCustomizer(); } @ConditionalOnWebApplication @ConditionalOnClass(InvalidRequestException.class) - public InvalidRequestExceptionHandler invalidRequestExceptionHandler() { - return new InvalidRequestExceptionHandler(objectMapper); + @Bean + public InvalidRequestExceptionJackson2Handler invalidRequestExceptionHandler() { + return new InvalidRequestExceptionJackson2Handler(objectMapper); } } diff --git a/belgif-rest-problem-spring-boot-4-client/src/main/java/io/github/belgif/rest/problem/spring/client/ClientProblemAutoConfiguration.java b/belgif-rest-problem-spring-boot-4-client/src/main/java/io/github/belgif/rest/problem/spring/client/ClientProblemAutoConfiguration.java index 0c6c461f..63b45516 100644 --- a/belgif-rest-problem-spring-boot-4-client/src/main/java/io/github/belgif/rest/problem/spring/client/ClientProblemAutoConfiguration.java +++ b/belgif-rest-problem-spring-boot-4-client/src/main/java/io/github/belgif/rest/problem/spring/client/ClientProblemAutoConfiguration.java @@ -6,6 +6,7 @@ import org.springframework.boot.restclient.RestClientCustomizer; import org.springframework.boot.restclient.RestTemplateCustomizer; import org.springframework.boot.webclient.WebClientCustomizer; +import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Import; import org.springframework.web.client.RestClient; import org.springframework.web.client.RestTemplate; @@ -18,30 +19,33 @@ */ @AutoConfiguration @Import({ io.github.belgif.rest.problem.spring.ProblemJackson3Configuration.class, JacksonAutoConfiguration.class, - ProblemResponseErrorHandler.class }) + ProblemResponseJackson3ErrorHandler.class }) public class ClientProblemAutoConfiguration { private ObjectMapper objectMapper; - private ProblemResponseErrorHandler problemResponseErrorHandler; + private ProblemResponseJackson3ErrorHandler problemResponseErrorHandler; public ClientProblemAutoConfiguration(ObjectMapper objectMapper, - ProblemResponseErrorHandler problemResponseErrorHandler) { + ProblemResponseJackson3ErrorHandler problemResponseErrorHandler) { this.objectMapper = objectMapper; this.problemResponseErrorHandler = problemResponseErrorHandler; } @ConditionalOnClass({ RestClient.class, RestClientCustomizer.class }) + @Bean public ProblemRestClientCustomizer problemRestClientCustomizer() { return new ProblemRestClientCustomizer(problemResponseErrorHandler); } @ConditionalOnClass({ RestTemplate.class, RestTemplateCustomizer.class }) + @Bean public ProblemRestTemplateCustomizer problemRestTemplateCustomizer() { return new ProblemRestTemplateCustomizer(problemResponseErrorHandler); } @ConditionalOnClass({ WebClient.class, WebClientCustomizer.class }) + @Bean public ProblemWebClientCustomizer problemWebClientCustomizer() { return new ProblemWebClientCustomizer(); } diff --git a/belgif-rest-problem-spring-boot-4-client/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemRestClientCustomizer.java b/belgif-rest-problem-spring-boot-4-client/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemRestClientCustomizer.java index e5b7d6f4..82d21ec8 100644 --- a/belgif-rest-problem-spring-boot-4-client/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemRestClientCustomizer.java +++ b/belgif-rest-problem-spring-boot-4-client/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemRestClientCustomizer.java @@ -3,13 +3,13 @@ import org.springframework.boot.restclient.RestClientCustomizer; /** - * RestClientCustomizer that registers the {@link ProblemResponseErrorHandler}. + * RestClientCustomizer that registers the {@link ProblemResponseJackson3ErrorHandler}. * - * @see ProblemResponseErrorHandler + * @see ProblemResponseJackson3ErrorHandler */ public class ProblemRestClientCustomizer extends AbstractProblemRestClientCustomizer implements RestClientCustomizer { - public ProblemRestClientCustomizer(ProblemResponseErrorHandler errorHandler) { + public ProblemRestClientCustomizer(AbstractProblemResponseErrorHandler errorHandler) { super(errorHandler); } diff --git a/belgif-rest-problem-spring-boot-4-client/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemRestTemplateCustomizer.java b/belgif-rest-problem-spring-boot-4-client/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemRestTemplateCustomizer.java index 9d00e73f..205ff42a 100644 --- a/belgif-rest-problem-spring-boot-4-client/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemRestTemplateCustomizer.java +++ b/belgif-rest-problem-spring-boot-4-client/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemRestTemplateCustomizer.java @@ -3,14 +3,14 @@ import org.springframework.boot.restclient.RestTemplateCustomizer; /** - * RestTemplateCustomizer that registers the {@link ProblemResponseErrorHandler}. + * RestTemplateCustomizer that registers the {@link ProblemResponseJackson3ErrorHandler}. * - * @see ProblemResponseErrorHandler + * @see ProblemResponseJackson3ErrorHandler */ public class ProblemRestTemplateCustomizer extends AbstractProblemRestTemplateCustomizer implements RestTemplateCustomizer { - public ProblemRestTemplateCustomizer(ProblemResponseErrorHandler problemResponseErrorHandler) { + public ProblemRestTemplateCustomizer(AbstractProblemResponseErrorHandler problemResponseErrorHandler) { super(problemResponseErrorHandler); } } diff --git a/belgif-rest-problem-spring-boot-4-server/src/main/java/io/github/belgif/rest/problem/spring/server/ServerProblemAutoConfiguration.java b/belgif-rest-problem-spring-boot-4-server/src/main/java/io/github/belgif/rest/problem/spring/server/ServerProblemAutoConfiguration.java index 7bc09ed2..c3adfa5c 100644 --- a/belgif-rest-problem-spring-boot-4-server/src/main/java/io/github/belgif/rest/problem/spring/server/ServerProblemAutoConfiguration.java +++ b/belgif-rest-problem-spring-boot-4-server/src/main/java/io/github/belgif/rest/problem/spring/server/ServerProblemAutoConfiguration.java @@ -8,6 +8,7 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication; import org.springframework.boot.jackson.autoconfigure.JacksonAutoConfiguration; import org.springframework.boot.validation.autoconfigure.ValidationConfigurationCustomizer; +import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Import; import com.atlassian.oai.validator.springmvc.InvalidRequestException; @@ -29,28 +30,33 @@ public ServerProblemAutoConfiguration(ObjectMapper objectMapper) { @ConditionalOnClass(ConstraintViolationException.class) @ConditionalOnWebApplication + @Bean public BeanValidationExceptionsHandler beanValidationExceptionsHandler() { return new BeanValidationExceptionsHandler(); } @ConditionalOnWebApplication + @Bean public ProblemExceptionHandler problemExceptionHandler() { return new ProblemExceptionHandler(); } @ConditionalOnWebApplication - public RoutingExceptionsHandler routingExceptionsHandler() { - return new RoutingExceptionsHandler(); + @Bean + public RoutingExceptionsJackson3Handler routingExceptionsHandler() { + return new RoutingExceptionsJackson3Handler(); } @ConditionalOnClass({ Configuration.class, ValidationConfigurationCustomizer.class }) + @Bean public ProblemValidationConfigurationCustomizer problemValidationConfigurationCustomizer() { return new ProblemValidationConfigurationCustomizer(); } @ConditionalOnWebApplication @ConditionalOnClass(InvalidRequestException.class) - public InvalidRequestExceptionHandler invalidRequestExceptionHandler() { - return new InvalidRequestExceptionHandler(objectMapper); + @Bean + public InvalidRequestExceptionJackson3Handler invalidRequestExceptionHandler() { + return new InvalidRequestExceptionJackson3Handler(objectMapper); } } diff --git a/belgif-rest-problem-spring-boot-3-client/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemResponseErrorHandler.java b/belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemResponseJackson2ErrorHandler.java similarity index 70% rename from belgif-rest-problem-spring-boot-3-client/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemResponseErrorHandler.java rename to belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemResponseJackson2ErrorHandler.java index 8563eb24..7b1ef42e 100644 --- a/belgif-rest-problem-spring-boot-3-client/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemResponseErrorHandler.java +++ b/belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemResponseJackson2ErrorHandler.java @@ -10,9 +10,9 @@ * RestTemplate/RestClient error handler that converts problem responses to Problem exceptions. */ @Component -public class ProblemResponseErrorHandler extends AbstractProblemResponseErrorHandler { +public class ProblemResponseJackson2ErrorHandler extends AbstractProblemResponseErrorHandler { - public ProblemResponseErrorHandler(ObjectMapper objectMapper) { + public ProblemResponseJackson2ErrorHandler(ObjectMapper objectMapper) { super(input -> objectMapper.readValue(input, Problem.class)); } diff --git a/belgif-rest-problem-spring-boot-4-client/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemResponseErrorHandler.java b/belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemResponseJackson3ErrorHandler.java similarity index 69% rename from belgif-rest-problem-spring-boot-4-client/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemResponseErrorHandler.java rename to belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemResponseJackson3ErrorHandler.java index 7e71d553..9a72d778 100644 --- a/belgif-rest-problem-spring-boot-4-client/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemResponseErrorHandler.java +++ b/belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemResponseJackson3ErrorHandler.java @@ -9,9 +9,9 @@ * RestTemplate/RestClient error handler that converts problem responses to Problem exceptions. */ @Component -public class ProblemResponseErrorHandler extends AbstractProblemResponseErrorHandler { +public class ProblemResponseJackson3ErrorHandler extends AbstractProblemResponseErrorHandler { - public ProblemResponseErrorHandler(ObjectMapper objectMapper) { + public ProblemResponseJackson3ErrorHandler(ObjectMapper objectMapper) { super(input -> objectMapper.readValue(input, Problem.class)); } diff --git a/belgif-rest-problem-spring-boot-3-server/src/main/java/io/github/belgif/rest/problem/spring/server/InvalidRequestExceptionHandler.java b/belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/server/InvalidRequestExceptionJackson2Handler.java similarity index 89% rename from belgif-rest-problem-spring-boot-3-server/src/main/java/io/github/belgif/rest/problem/spring/server/InvalidRequestExceptionHandler.java rename to belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/server/InvalidRequestExceptionJackson2Handler.java index e86856a7..51e6d110 100644 --- a/belgif-rest-problem-spring-boot-3-server/src/main/java/io/github/belgif/rest/problem/spring/server/InvalidRequestExceptionHandler.java +++ b/belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/server/InvalidRequestExceptionJackson2Handler.java @@ -21,13 +21,13 @@ @RestControllerAdvice @Order(1) // @Order(1) to take precedence over io.github.belgif.rest.problem.spring.ProblemExceptionHandler -public class InvalidRequestExceptionHandler extends AbstractInvalidRequestExceptionHandler { +public class InvalidRequestExceptionJackson2Handler extends AbstractInvalidRequestExceptionHandler { - private static final Logger LOGGER = LoggerFactory.getLogger(InvalidRequestExceptionHandler.class); + private static final Logger LOGGER = LoggerFactory.getLogger(InvalidRequestExceptionJackson2Handler.class); private final ObjectMapper mapper; - public InvalidRequestExceptionHandler(ObjectMapper mapper) { + public InvalidRequestExceptionJackson2Handler(ObjectMapper mapper) { this.mapper = mapper; } diff --git a/belgif-rest-problem-spring-boot-4-server/src/main/java/io/github/belgif/rest/problem/spring/server/InvalidRequestExceptionHandler.java b/belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/server/InvalidRequestExceptionJackson3Handler.java similarity index 91% rename from belgif-rest-problem-spring-boot-4-server/src/main/java/io/github/belgif/rest/problem/spring/server/InvalidRequestExceptionHandler.java rename to belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/server/InvalidRequestExceptionJackson3Handler.java index 6baff505..6fe9f74f 100644 --- a/belgif-rest-problem-spring-boot-4-server/src/main/java/io/github/belgif/rest/problem/spring/server/InvalidRequestExceptionHandler.java +++ b/belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/server/InvalidRequestExceptionJackson3Handler.java @@ -21,13 +21,13 @@ @RestControllerAdvice @Order(1) // @Order(1) to take precedence over io.github.belgif.rest.problem.spring.ProblemExceptionHandler -public class InvalidRequestExceptionHandler extends AbstractInvalidRequestExceptionHandler { +public class InvalidRequestExceptionJackson3Handler extends AbstractInvalidRequestExceptionHandler { - private static final Logger LOGGER = LoggerFactory.getLogger(InvalidRequestExceptionHandler.class); + private static final Logger LOGGER = LoggerFactory.getLogger(InvalidRequestExceptionJackson3Handler.class); private final ObjectMapper mapper; - public InvalidRequestExceptionHandler(ObjectMapper mapper) { + public InvalidRequestExceptionJackson3Handler(ObjectMapper mapper) { this.mapper = mapper; } diff --git a/belgif-rest-problem-spring-boot-3-server/src/main/java/io/github/belgif/rest/problem/spring/server/RoutingExceptionsHandler.java b/belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/server/RoutingExceptionsJackson2Handler.java similarity index 89% rename from belgif-rest-problem-spring-boot-3-server/src/main/java/io/github/belgif/rest/problem/spring/server/RoutingExceptionsHandler.java rename to belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/server/RoutingExceptionsJackson2Handler.java index 6963daf7..436ff91d 100644 --- a/belgif-rest-problem-spring-boot-3-server/src/main/java/io/github/belgif/rest/problem/spring/server/RoutingExceptionsHandler.java +++ b/belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/server/RoutingExceptionsJackson2Handler.java @@ -17,9 +17,9 @@ @Order(1) // @Order(1) to take precedence over org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver // and io.github.belgif.rest.problem.spring.ProblemExceptionHandler -public class RoutingExceptionsHandler extends AbstractRoutingExceptionsHandler { +public class RoutingExceptionsJackson2Handler extends AbstractRoutingExceptionsHandler { - public RoutingExceptionsHandler() { + public RoutingExceptionsJackson2Handler() { super(JacksonException.class); } diff --git a/belgif-rest-problem-spring-boot-4-server/src/main/java/io/github/belgif/rest/problem/spring/server/RoutingExceptionsHandler.java b/belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/server/RoutingExceptionsJackson3Handler.java similarity index 89% rename from belgif-rest-problem-spring-boot-4-server/src/main/java/io/github/belgif/rest/problem/spring/server/RoutingExceptionsHandler.java rename to belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/server/RoutingExceptionsJackson3Handler.java index 3085fc26..862e2c68 100644 --- a/belgif-rest-problem-spring-boot-4-server/src/main/java/io/github/belgif/rest/problem/spring/server/RoutingExceptionsHandler.java +++ b/belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/server/RoutingExceptionsJackson3Handler.java @@ -17,9 +17,9 @@ // @Order(1) to take precedence over org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver // and io.github.belgif.rest.problem.spring.ProblemExceptionHandler //TODO: move to reinstated spring(-7) module? -public class RoutingExceptionsHandler extends AbstractRoutingExceptionsHandler { +public class RoutingExceptionsJackson3Handler extends AbstractRoutingExceptionsHandler { - public RoutingExceptionsHandler() { + public RoutingExceptionsJackson3Handler() { super(JacksonException.class); } diff --git a/belgif-rest-problem-spring-boot-3-server/src/test/java/io/github/belgif/rest/problem/spring/server/InvalidRequestExceptionHandlerTest.java b/belgif-rest-problem-spring-common/src/test/java/io/github/belgif/rest/problem/spring/server/InvalidRequestExceptionJackson2HandlerTest.java similarity index 92% rename from belgif-rest-problem-spring-boot-3-server/src/test/java/io/github/belgif/rest/problem/spring/server/InvalidRequestExceptionHandlerTest.java rename to belgif-rest-problem-spring-common/src/test/java/io/github/belgif/rest/problem/spring/server/InvalidRequestExceptionJackson2HandlerTest.java index ce4528c5..834fc17a 100644 --- a/belgif-rest-problem-spring-boot-3-server/src/test/java/io/github/belgif/rest/problem/spring/server/InvalidRequestExceptionHandlerTest.java +++ b/belgif-rest-problem-spring-common/src/test/java/io/github/belgif/rest/problem/spring/server/InvalidRequestExceptionJackson2HandlerTest.java @@ -15,11 +15,11 @@ import io.github.belgif.rest.problem.api.InEnum; import io.github.belgif.rest.problem.api.Problem; -class InvalidRequestExceptionHandlerTest { +class InvalidRequestExceptionJackson2HandlerTest { private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper(); - InvalidRequestExceptionHandler handler = new InvalidRequestExceptionHandler(OBJECT_MAPPER); + InvalidRequestExceptionJackson2Handler handler = new InvalidRequestExceptionJackson2Handler(OBJECT_MAPPER); @Test void inBodyTest() { diff --git a/belgif-rest-problem-spring-boot-4-server/src/test/java/io/github/belgif/rest/problem/spring/server/InvalidRequestExceptionHandlerTest.java b/belgif-rest-problem-spring-common/src/test/java/io/github/belgif/rest/problem/spring/server/InvalidRequestExceptionJackson3HandlerTest.java similarity index 92% rename from belgif-rest-problem-spring-boot-4-server/src/test/java/io/github/belgif/rest/problem/spring/server/InvalidRequestExceptionHandlerTest.java rename to belgif-rest-problem-spring-common/src/test/java/io/github/belgif/rest/problem/spring/server/InvalidRequestExceptionJackson3HandlerTest.java index a0e30ae6..5c5bb642 100644 --- a/belgif-rest-problem-spring-boot-4-server/src/test/java/io/github/belgif/rest/problem/spring/server/InvalidRequestExceptionHandlerTest.java +++ b/belgif-rest-problem-spring-common/src/test/java/io/github/belgif/rest/problem/spring/server/InvalidRequestExceptionJackson3HandlerTest.java @@ -15,11 +15,11 @@ import io.github.belgif.rest.problem.api.Problem; import tools.jackson.databind.ObjectMapper; -class InvalidRequestExceptionHandlerTest { +class InvalidRequestExceptionJackson3HandlerTest { private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper(); - InvalidRequestExceptionHandler handler = new InvalidRequestExceptionHandler(OBJECT_MAPPER); + InvalidRequestExceptionJackson3Handler handler = new InvalidRequestExceptionJackson3Handler(OBJECT_MAPPER); @Test void inBodyTest() { From c65484950a0c1831191337b4cc730cb8e4452c21 Mon Sep 17 00:00:00 2001 From: pvdb Date: Tue, 24 Feb 2026 11:06:22 +0100 Subject: [PATCH 07/23] rename spring modules --- belgif-rest-problem-bom/pom.xml | 8 ++-- .../pom.xml | 2 +- .../pom.xml | 4 +- .../ClientProblemAutoConfiguration.java | 0 .../client/ProblemRestClientCustomizer.java | 0 .../client/ProblemRestTemplateCustomizer.java | 0 .../client/ProblemWebClientCustomizer.java | 0 ...ot.autoconfigure.AutoConfiguration.imports | 0 .../ClientProblemAutoConfigurationTest.java | 0 .../src/test/resources/logback-test.xml | 0 .../pom.xml | 4 +- ...blemValidationConfigurationCustomizer.java | 0 .../ServerProblemAutoConfiguration.java | 0 ...ot.autoconfigure.AutoConfiguration.imports | 0 .../ServerProblemAutoConfigurationTest.java | 0 .../src/test/resources/logback-test.xml | 0 belgif-rest-problem-spring-boot-3/pom.xml | 4 +- .../pom.xml | 4 +- .../ClientProblemAutoConfiguration.java | 0 .../client/ProblemRestClientCustomizer.java | 0 .../client/ProblemRestTemplateCustomizer.java | 0 .../client/ProblemWebClientCustomizer.java | 0 ...ot.autoconfigure.AutoConfiguration.imports | 0 .../ClientProblemAutoConfigurationTest.java | 0 .../src/test/resources/logback-test.xml | 0 .../pom.xml | 4 +- ...blemValidationConfigurationCustomizer.java | 0 .../ServerProblemAutoConfiguration.java | 0 ...ot.autoconfigure.AutoConfiguration.imports | 0 .../ServerProblemAutoConfigurationTest.java | 0 .../src/test/resources/logback-test.xml | 0 .../pom.xml | 6 +-- .../pom.xml | 2 +- .../ProblemConfigurationProperties.java | 0 .../ProblemExtConfigurationProperties.java | 0 .../spring/ProblemJackson2Configuration.java | 0 .../spring/ProblemJackson3Configuration.java | 0 .../rest/problem/spring/ProblemMediaType.java | 0 .../problem/spring/SpringProblemModule.java | 0 .../spring/SpringProblemModuleJackson3.java | 0 .../spring/SpringProblemTypeRegistry.java | 0 .../AbstractProblemResponseErrorHandler.java | 0 .../AbstractProblemRestClientCustomizer.java | 0 ...AbstractProblemRestTemplateCustomizer.java | 0 .../AbstractProblemWebClientCustomizer.java | 0 .../ProblemResponseJackson2ErrorHandler.java | 0 .../ProblemResponseJackson3ErrorHandler.java | 0 ...bstractInvalidRequestExceptionHandler.java | 0 ...blemValidationConfigurationCustomizer.java | 0 .../AbstractRoutingExceptionsHandler.java | 0 .../AnnotationParameterNameProvider.java | 0 .../BeanValidationExceptionsHandler.java | 0 ...nvalidRequestExceptionJackson2Handler.java | 0 ...nvalidRequestExceptionJackson3Handler.java | 0 .../server/ProblemExceptionHandler.java | 0 .../RoutingExceptionsJackson2Handler.java | 0 .../RoutingExceptionsJackson3Handler.java | 0 .../LocaleContextHolderLocaleResolver.java | 0 .../internal/BeanValidationExceptionUtil.java | 0 .../CachedAnnotationParameterNameSupport.java | 0 .../server/internal/DetermineSourceUtil.java | 0 .../internal/InvalidRequestExceptionUtil.java | 0 ...ub.belgif.rest.problem.i18n.LocaleResolver | 0 .../ProblemConfigurationPropertiesTest.java | 0 ...ProblemExtConfigurationPropertiesTest.java | 0 .../problem/spring/ProblemMediaTypeTest.java | 0 .../SpringProblemModuleJackson3Test.java | 0 .../spring/SpringProblemModuleTest.java | 0 .../spring/SpringProblemTypeRegistryTest.java | 0 ...stractProblemResponseErrorHandlerTest.java | 0 ...stractProblemRestClientCustomizerTest.java | 0 ...ractProblemRestTemplateCustomizerTest.java | 0 ...bstractProblemWebClientCustomizerTest.java | 0 ...actInvalidRequestExceptionHandlerTest.java | 0 ...ValidationConfigurationCustomizerTest.java | 0 .../AbstractRoutingExceptionsHandlerTest.java | 0 .../AnnotationParameterNameProviderTest.java | 0 .../BeanValidationExceptionsHandlerTest.java | 0 ...idRequestExceptionJackson2HandlerTest.java | 0 ...idRequestExceptionJackson3HandlerTest.java | 0 .../server/ProblemExceptionHandlerTest.java | 0 ...LocaleContextHolderLocaleResolverTest.java | 0 .../BeanValidationExceptionUtilTest.java | 0 ...hedAnnotationParameterNameSupportTest.java | 0 .../internal/DetermineSourceUtilTest.java | 0 .../InvalidRequestExceptionUtilTest.java | 0 .../src/test/resources/logback-test.xml | 0 pom.xml | 41 +++++++++---------- 88 files changed, 39 insertions(+), 40 deletions(-) rename {belgif-rest-problem-spring-boot-3-client => belgif-rest-problem-spring-boot-3-client-starter}/pom.xml (94%) rename {belgif-rest-problem-spring-boot-3-client => belgif-rest-problem-spring-boot-3-client-starter}/src/main/java/io/github/belgif/rest/problem/spring/client/ClientProblemAutoConfiguration.java (100%) rename {belgif-rest-problem-spring-boot-3-client => belgif-rest-problem-spring-boot-3-client-starter}/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemRestClientCustomizer.java (100%) rename {belgif-rest-problem-spring-boot-3-client => belgif-rest-problem-spring-boot-3-client-starter}/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemRestTemplateCustomizer.java (100%) rename {belgif-rest-problem-spring-boot-3-client => belgif-rest-problem-spring-boot-3-client-starter}/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemWebClientCustomizer.java (100%) rename {belgif-rest-problem-spring-boot-3-client => belgif-rest-problem-spring-boot-3-client-starter}/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports (100%) rename {belgif-rest-problem-spring-boot-3-client => belgif-rest-problem-spring-boot-3-client-starter}/src/test/java/io/github/belgif/rest/problem/spring/client/ClientProblemAutoConfigurationTest.java (100%) rename {belgif-rest-problem-spring-boot-3-client => belgif-rest-problem-spring-boot-3-client-starter}/src/test/resources/logback-test.xml (100%) rename {belgif-rest-problem-spring-boot-3-server => belgif-rest-problem-spring-boot-3-server-starter}/pom.xml (95%) rename {belgif-rest-problem-spring-boot-3-server => belgif-rest-problem-spring-boot-3-server-starter}/src/main/java/io/github/belgif/rest/problem/spring/server/ProblemValidationConfigurationCustomizer.java (100%) rename {belgif-rest-problem-spring-boot-3-server => belgif-rest-problem-spring-boot-3-server-starter}/src/main/java/io/github/belgif/rest/problem/spring/server/ServerProblemAutoConfiguration.java (100%) rename {belgif-rest-problem-spring-boot-3-server => belgif-rest-problem-spring-boot-3-server-starter}/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports (100%) rename {belgif-rest-problem-spring-boot-3-server => belgif-rest-problem-spring-boot-3-server-starter}/src/test/java/io/github/belgif/rest/problem/spring/server/ServerProblemAutoConfigurationTest.java (100%) rename {belgif-rest-problem-spring-boot-3-server => belgif-rest-problem-spring-boot-3-server-starter}/src/test/resources/logback-test.xml (100%) rename {belgif-rest-problem-spring-boot-4-client => belgif-rest-problem-spring-boot-4-client-starter}/pom.xml (95%) rename {belgif-rest-problem-spring-boot-4-client => belgif-rest-problem-spring-boot-4-client-starter}/src/main/java/io/github/belgif/rest/problem/spring/client/ClientProblemAutoConfiguration.java (100%) rename {belgif-rest-problem-spring-boot-4-client => belgif-rest-problem-spring-boot-4-client-starter}/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemRestClientCustomizer.java (100%) rename {belgif-rest-problem-spring-boot-4-client => belgif-rest-problem-spring-boot-4-client-starter}/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemRestTemplateCustomizer.java (100%) rename {belgif-rest-problem-spring-boot-4-client => belgif-rest-problem-spring-boot-4-client-starter}/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemWebClientCustomizer.java (100%) rename {belgif-rest-problem-spring-boot-4-client => belgif-rest-problem-spring-boot-4-client-starter}/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports (100%) rename {belgif-rest-problem-spring-boot-4-client => belgif-rest-problem-spring-boot-4-client-starter}/src/test/java/io/github/belgif/rest/problem/spring/client/ClientProblemAutoConfigurationTest.java (100%) rename {belgif-rest-problem-spring-boot-4-client => belgif-rest-problem-spring-boot-4-client-starter}/src/test/resources/logback-test.xml (100%) rename {belgif-rest-problem-spring-boot-4-server => belgif-rest-problem-spring-boot-4-server-starter}/pom.xml (95%) rename {belgif-rest-problem-spring-boot-4-server => belgif-rest-problem-spring-boot-4-server-starter}/src/main/java/io/github/belgif/rest/problem/spring/server/ProblemValidationConfigurationCustomizer.java (100%) rename {belgif-rest-problem-spring-boot-4-server => belgif-rest-problem-spring-boot-4-server-starter}/src/main/java/io/github/belgif/rest/problem/spring/server/ServerProblemAutoConfiguration.java (100%) rename {belgif-rest-problem-spring-boot-4-server => belgif-rest-problem-spring-boot-4-server-starter}/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports (100%) rename {belgif-rest-problem-spring-boot-4-server => belgif-rest-problem-spring-boot-4-server-starter}/src/test/java/io/github/belgif/rest/problem/spring/server/ServerProblemAutoConfigurationTest.java (100%) rename {belgif-rest-problem-spring-boot-4-server => belgif-rest-problem-spring-boot-4-server-starter}/src/test/resources/logback-test.xml (100%) rename {belgif-rest-problem-spring-boot-4 => belgif-rest-problem-spring-boot-4-starter}/pom.xml (78%) rename {belgif-rest-problem-spring-common => belgif-rest-problem-spring}/pom.xml (98%) rename {belgif-rest-problem-spring-common => belgif-rest-problem-spring}/src/main/java/io/github/belgif/rest/problem/spring/ProblemConfigurationProperties.java (100%) rename {belgif-rest-problem-spring-common => belgif-rest-problem-spring}/src/main/java/io/github/belgif/rest/problem/spring/ProblemExtConfigurationProperties.java (100%) rename {belgif-rest-problem-spring-common => belgif-rest-problem-spring}/src/main/java/io/github/belgif/rest/problem/spring/ProblemJackson2Configuration.java (100%) rename {belgif-rest-problem-spring-common => belgif-rest-problem-spring}/src/main/java/io/github/belgif/rest/problem/spring/ProblemJackson3Configuration.java (100%) rename {belgif-rest-problem-spring-common => belgif-rest-problem-spring}/src/main/java/io/github/belgif/rest/problem/spring/ProblemMediaType.java (100%) rename {belgif-rest-problem-spring-common => belgif-rest-problem-spring}/src/main/java/io/github/belgif/rest/problem/spring/SpringProblemModule.java (100%) rename {belgif-rest-problem-spring-common => belgif-rest-problem-spring}/src/main/java/io/github/belgif/rest/problem/spring/SpringProblemModuleJackson3.java (100%) rename {belgif-rest-problem-spring-common => belgif-rest-problem-spring}/src/main/java/io/github/belgif/rest/problem/spring/SpringProblemTypeRegistry.java (100%) rename {belgif-rest-problem-spring-common => belgif-rest-problem-spring}/src/main/java/io/github/belgif/rest/problem/spring/client/AbstractProblemResponseErrorHandler.java (100%) rename {belgif-rest-problem-spring-common => belgif-rest-problem-spring}/src/main/java/io/github/belgif/rest/problem/spring/client/AbstractProblemRestClientCustomizer.java (100%) rename {belgif-rest-problem-spring-common => belgif-rest-problem-spring}/src/main/java/io/github/belgif/rest/problem/spring/client/AbstractProblemRestTemplateCustomizer.java (100%) rename {belgif-rest-problem-spring-common => belgif-rest-problem-spring}/src/main/java/io/github/belgif/rest/problem/spring/client/AbstractProblemWebClientCustomizer.java (100%) rename {belgif-rest-problem-spring-common => belgif-rest-problem-spring}/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemResponseJackson2ErrorHandler.java (100%) rename {belgif-rest-problem-spring-common => belgif-rest-problem-spring}/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemResponseJackson3ErrorHandler.java (100%) rename {belgif-rest-problem-spring-common => belgif-rest-problem-spring}/src/main/java/io/github/belgif/rest/problem/spring/server/AbstractInvalidRequestExceptionHandler.java (100%) rename {belgif-rest-problem-spring-common => belgif-rest-problem-spring}/src/main/java/io/github/belgif/rest/problem/spring/server/AbstractProblemValidationConfigurationCustomizer.java (100%) rename {belgif-rest-problem-spring-common => belgif-rest-problem-spring}/src/main/java/io/github/belgif/rest/problem/spring/server/AbstractRoutingExceptionsHandler.java (100%) rename {belgif-rest-problem-spring-common => belgif-rest-problem-spring}/src/main/java/io/github/belgif/rest/problem/spring/server/AnnotationParameterNameProvider.java (100%) rename {belgif-rest-problem-spring-common => belgif-rest-problem-spring}/src/main/java/io/github/belgif/rest/problem/spring/server/BeanValidationExceptionsHandler.java (100%) rename {belgif-rest-problem-spring-common => belgif-rest-problem-spring}/src/main/java/io/github/belgif/rest/problem/spring/server/InvalidRequestExceptionJackson2Handler.java (100%) rename {belgif-rest-problem-spring-common => belgif-rest-problem-spring}/src/main/java/io/github/belgif/rest/problem/spring/server/InvalidRequestExceptionJackson3Handler.java (100%) rename {belgif-rest-problem-spring-common => belgif-rest-problem-spring}/src/main/java/io/github/belgif/rest/problem/spring/server/ProblemExceptionHandler.java (100%) rename {belgif-rest-problem-spring-common => belgif-rest-problem-spring}/src/main/java/io/github/belgif/rest/problem/spring/server/RoutingExceptionsJackson2Handler.java (100%) rename {belgif-rest-problem-spring-common => belgif-rest-problem-spring}/src/main/java/io/github/belgif/rest/problem/spring/server/RoutingExceptionsJackson3Handler.java (100%) rename {belgif-rest-problem-spring-common => belgif-rest-problem-spring}/src/main/java/io/github/belgif/rest/problem/spring/server/i18n/LocaleContextHolderLocaleResolver.java (100%) rename {belgif-rest-problem-spring-common => belgif-rest-problem-spring}/src/main/java/io/github/belgif/rest/problem/spring/server/internal/BeanValidationExceptionUtil.java (100%) rename {belgif-rest-problem-spring-common => belgif-rest-problem-spring}/src/main/java/io/github/belgif/rest/problem/spring/server/internal/CachedAnnotationParameterNameSupport.java (100%) rename {belgif-rest-problem-spring-common => belgif-rest-problem-spring}/src/main/java/io/github/belgif/rest/problem/spring/server/internal/DetermineSourceUtil.java (100%) rename {belgif-rest-problem-spring-common => belgif-rest-problem-spring}/src/main/java/io/github/belgif/rest/problem/spring/server/internal/InvalidRequestExceptionUtil.java (100%) rename {belgif-rest-problem-spring-common => belgif-rest-problem-spring}/src/main/resources/META-INF/services/io.github.belgif.rest.problem.i18n.LocaleResolver (100%) rename {belgif-rest-problem-spring-common => belgif-rest-problem-spring}/src/test/java/io/github/belgif/rest/problem/spring/ProblemConfigurationPropertiesTest.java (100%) rename {belgif-rest-problem-spring-common => belgif-rest-problem-spring}/src/test/java/io/github/belgif/rest/problem/spring/ProblemExtConfigurationPropertiesTest.java (100%) rename {belgif-rest-problem-spring-common => belgif-rest-problem-spring}/src/test/java/io/github/belgif/rest/problem/spring/ProblemMediaTypeTest.java (100%) rename {belgif-rest-problem-spring-common => belgif-rest-problem-spring}/src/test/java/io/github/belgif/rest/problem/spring/SpringProblemModuleJackson3Test.java (100%) rename {belgif-rest-problem-spring-common => belgif-rest-problem-spring}/src/test/java/io/github/belgif/rest/problem/spring/SpringProblemModuleTest.java (100%) rename {belgif-rest-problem-spring-common => belgif-rest-problem-spring}/src/test/java/io/github/belgif/rest/problem/spring/SpringProblemTypeRegistryTest.java (100%) rename {belgif-rest-problem-spring-common => belgif-rest-problem-spring}/src/test/java/io/github/belgif/rest/problem/spring/client/AbstractProblemResponseErrorHandlerTest.java (100%) rename {belgif-rest-problem-spring-common => belgif-rest-problem-spring}/src/test/java/io/github/belgif/rest/problem/spring/client/AbstractProblemRestClientCustomizerTest.java (100%) rename {belgif-rest-problem-spring-common => belgif-rest-problem-spring}/src/test/java/io/github/belgif/rest/problem/spring/client/AbstractProblemRestTemplateCustomizerTest.java (100%) rename {belgif-rest-problem-spring-common => belgif-rest-problem-spring}/src/test/java/io/github/belgif/rest/problem/spring/client/AbstractProblemWebClientCustomizerTest.java (100%) rename {belgif-rest-problem-spring-common => belgif-rest-problem-spring}/src/test/java/io/github/belgif/rest/problem/spring/server/AbstractInvalidRequestExceptionHandlerTest.java (100%) rename {belgif-rest-problem-spring-common => belgif-rest-problem-spring}/src/test/java/io/github/belgif/rest/problem/spring/server/AbstractProblemValidationConfigurationCustomizerTest.java (100%) rename {belgif-rest-problem-spring-common => belgif-rest-problem-spring}/src/test/java/io/github/belgif/rest/problem/spring/server/AbstractRoutingExceptionsHandlerTest.java (100%) rename {belgif-rest-problem-spring-common => belgif-rest-problem-spring}/src/test/java/io/github/belgif/rest/problem/spring/server/AnnotationParameterNameProviderTest.java (100%) rename {belgif-rest-problem-spring-common => belgif-rest-problem-spring}/src/test/java/io/github/belgif/rest/problem/spring/server/BeanValidationExceptionsHandlerTest.java (100%) rename {belgif-rest-problem-spring-common => belgif-rest-problem-spring}/src/test/java/io/github/belgif/rest/problem/spring/server/InvalidRequestExceptionJackson2HandlerTest.java (100%) rename {belgif-rest-problem-spring-common => belgif-rest-problem-spring}/src/test/java/io/github/belgif/rest/problem/spring/server/InvalidRequestExceptionJackson3HandlerTest.java (100%) rename {belgif-rest-problem-spring-common => belgif-rest-problem-spring}/src/test/java/io/github/belgif/rest/problem/spring/server/ProblemExceptionHandlerTest.java (100%) rename {belgif-rest-problem-spring-common => belgif-rest-problem-spring}/src/test/java/io/github/belgif/rest/problem/spring/server/i18n/LocaleContextHolderLocaleResolverTest.java (100%) rename {belgif-rest-problem-spring-common => belgif-rest-problem-spring}/src/test/java/io/github/belgif/rest/problem/spring/server/internal/BeanValidationExceptionUtilTest.java (100%) rename {belgif-rest-problem-spring-common => belgif-rest-problem-spring}/src/test/java/io/github/belgif/rest/problem/spring/server/internal/CachedAnnotationParameterNameSupportTest.java (100%) rename {belgif-rest-problem-spring-common => belgif-rest-problem-spring}/src/test/java/io/github/belgif/rest/problem/spring/server/internal/DetermineSourceUtilTest.java (100%) rename {belgif-rest-problem-spring-common => belgif-rest-problem-spring}/src/test/java/io/github/belgif/rest/problem/spring/server/internal/InvalidRequestExceptionUtilTest.java (100%) rename {belgif-rest-problem-spring-common => belgif-rest-problem-spring}/src/test/resources/logback-test.xml (100%) diff --git a/belgif-rest-problem-bom/pom.xml b/belgif-rest-problem-bom/pom.xml index 417f99be..0befad49 100644 --- a/belgif-rest-problem-bom/pom.xml +++ b/belgif-rest-problem-bom/pom.xml @@ -63,7 +63,7 @@
io.github.belgif.rest.problem - belgif-rest-problem-spring-common + belgif-rest-problem-spring ${project.version} @@ -88,17 +88,17 @@ io.github.belgif.rest.problem - belgif-rest-problem-spring-boot-3-client + belgif-rest-problem-spring-boot-3-client-starter ${project.version} io.github.belgif.rest.problem - belgif-rest-problem-spring-boot-3-server + belgif-rest-problem-spring-boot-3-server-starter ${project.version} io.github.belgif.rest.problem - belgif-rest-problem-spring-boot-4 + belgif-rest-problem-spring-boot-4-starter ${project.version} diff --git a/belgif-rest-problem-it/belgif-rest-problem-spring-boot-4-it/pom.xml b/belgif-rest-problem-it/belgif-rest-problem-spring-boot-4-it/pom.xml index 29dc77c4..5acbf944 100644 --- a/belgif-rest-problem-it/belgif-rest-problem-spring-boot-4-it/pom.xml +++ b/belgif-rest-problem-it/belgif-rest-problem-spring-boot-4-it/pom.xml @@ -32,7 +32,7 @@ io.github.belgif.rest.problem - belgif-rest-problem-spring-boot-4 + belgif-rest-problem-spring-boot-4-starter ${project.version} diff --git a/belgif-rest-problem-spring-boot-3-client/pom.xml b/belgif-rest-problem-spring-boot-3-client-starter/pom.xml similarity index 94% rename from belgif-rest-problem-spring-boot-3-client/pom.xml rename to belgif-rest-problem-spring-boot-3-client-starter/pom.xml index d0176484..45277ce8 100644 --- a/belgif-rest-problem-spring-boot-3-client/pom.xml +++ b/belgif-rest-problem-spring-boot-3-client-starter/pom.xml @@ -9,7 +9,7 @@ ${revision} - belgif-rest-problem-spring-boot-3-client + belgif-rest-problem-spring-boot-3-client-starter ${project.groupId}:${project.artifactId} jar @@ -32,7 +32,7 @@ io.github.belgif.rest.problem - belgif-rest-problem-spring-common + belgif-rest-problem-spring ${project.version} diff --git a/belgif-rest-problem-spring-boot-3-client/src/main/java/io/github/belgif/rest/problem/spring/client/ClientProblemAutoConfiguration.java b/belgif-rest-problem-spring-boot-3-client-starter/src/main/java/io/github/belgif/rest/problem/spring/client/ClientProblemAutoConfiguration.java similarity index 100% rename from belgif-rest-problem-spring-boot-3-client/src/main/java/io/github/belgif/rest/problem/spring/client/ClientProblemAutoConfiguration.java rename to belgif-rest-problem-spring-boot-3-client-starter/src/main/java/io/github/belgif/rest/problem/spring/client/ClientProblemAutoConfiguration.java diff --git a/belgif-rest-problem-spring-boot-3-client/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemRestClientCustomizer.java b/belgif-rest-problem-spring-boot-3-client-starter/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemRestClientCustomizer.java similarity index 100% rename from belgif-rest-problem-spring-boot-3-client/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemRestClientCustomizer.java rename to belgif-rest-problem-spring-boot-3-client-starter/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemRestClientCustomizer.java diff --git a/belgif-rest-problem-spring-boot-3-client/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemRestTemplateCustomizer.java b/belgif-rest-problem-spring-boot-3-client-starter/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemRestTemplateCustomizer.java similarity index 100% rename from belgif-rest-problem-spring-boot-3-client/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemRestTemplateCustomizer.java rename to belgif-rest-problem-spring-boot-3-client-starter/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemRestTemplateCustomizer.java diff --git a/belgif-rest-problem-spring-boot-3-client/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemWebClientCustomizer.java b/belgif-rest-problem-spring-boot-3-client-starter/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemWebClientCustomizer.java similarity index 100% rename from belgif-rest-problem-spring-boot-3-client/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemWebClientCustomizer.java rename to belgif-rest-problem-spring-boot-3-client-starter/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemWebClientCustomizer.java diff --git a/belgif-rest-problem-spring-boot-3-client/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/belgif-rest-problem-spring-boot-3-client-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports similarity index 100% rename from belgif-rest-problem-spring-boot-3-client/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports rename to belgif-rest-problem-spring-boot-3-client-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports diff --git a/belgif-rest-problem-spring-boot-3-client/src/test/java/io/github/belgif/rest/problem/spring/client/ClientProblemAutoConfigurationTest.java b/belgif-rest-problem-spring-boot-3-client-starter/src/test/java/io/github/belgif/rest/problem/spring/client/ClientProblemAutoConfigurationTest.java similarity index 100% rename from belgif-rest-problem-spring-boot-3-client/src/test/java/io/github/belgif/rest/problem/spring/client/ClientProblemAutoConfigurationTest.java rename to belgif-rest-problem-spring-boot-3-client-starter/src/test/java/io/github/belgif/rest/problem/spring/client/ClientProblemAutoConfigurationTest.java diff --git a/belgif-rest-problem-spring-boot-3-client/src/test/resources/logback-test.xml b/belgif-rest-problem-spring-boot-3-client-starter/src/test/resources/logback-test.xml similarity index 100% rename from belgif-rest-problem-spring-boot-3-client/src/test/resources/logback-test.xml rename to belgif-rest-problem-spring-boot-3-client-starter/src/test/resources/logback-test.xml diff --git a/belgif-rest-problem-spring-boot-3-server/pom.xml b/belgif-rest-problem-spring-boot-3-server-starter/pom.xml similarity index 95% rename from belgif-rest-problem-spring-boot-3-server/pom.xml rename to belgif-rest-problem-spring-boot-3-server-starter/pom.xml index 78bbbbdc..7b2b2890 100644 --- a/belgif-rest-problem-spring-boot-3-server/pom.xml +++ b/belgif-rest-problem-spring-boot-3-server-starter/pom.xml @@ -9,7 +9,7 @@ ${revision} - belgif-rest-problem-spring-boot-3-server + belgif-rest-problem-spring-boot-3-server-starter ${project.groupId}:${project.artifactId} jar @@ -32,7 +32,7 @@ io.github.belgif.rest.problem - belgif-rest-problem-spring-common + belgif-rest-problem-spring ${project.version} diff --git a/belgif-rest-problem-spring-boot-3-server/src/main/java/io/github/belgif/rest/problem/spring/server/ProblemValidationConfigurationCustomizer.java b/belgif-rest-problem-spring-boot-3-server-starter/src/main/java/io/github/belgif/rest/problem/spring/server/ProblemValidationConfigurationCustomizer.java similarity index 100% rename from belgif-rest-problem-spring-boot-3-server/src/main/java/io/github/belgif/rest/problem/spring/server/ProblemValidationConfigurationCustomizer.java rename to belgif-rest-problem-spring-boot-3-server-starter/src/main/java/io/github/belgif/rest/problem/spring/server/ProblemValidationConfigurationCustomizer.java diff --git a/belgif-rest-problem-spring-boot-3-server/src/main/java/io/github/belgif/rest/problem/spring/server/ServerProblemAutoConfiguration.java b/belgif-rest-problem-spring-boot-3-server-starter/src/main/java/io/github/belgif/rest/problem/spring/server/ServerProblemAutoConfiguration.java similarity index 100% rename from belgif-rest-problem-spring-boot-3-server/src/main/java/io/github/belgif/rest/problem/spring/server/ServerProblemAutoConfiguration.java rename to belgif-rest-problem-spring-boot-3-server-starter/src/main/java/io/github/belgif/rest/problem/spring/server/ServerProblemAutoConfiguration.java diff --git a/belgif-rest-problem-spring-boot-3-server/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/belgif-rest-problem-spring-boot-3-server-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports similarity index 100% rename from belgif-rest-problem-spring-boot-3-server/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports rename to belgif-rest-problem-spring-boot-3-server-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports diff --git a/belgif-rest-problem-spring-boot-3-server/src/test/java/io/github/belgif/rest/problem/spring/server/ServerProblemAutoConfigurationTest.java b/belgif-rest-problem-spring-boot-3-server-starter/src/test/java/io/github/belgif/rest/problem/spring/server/ServerProblemAutoConfigurationTest.java similarity index 100% rename from belgif-rest-problem-spring-boot-3-server/src/test/java/io/github/belgif/rest/problem/spring/server/ServerProblemAutoConfigurationTest.java rename to belgif-rest-problem-spring-boot-3-server-starter/src/test/java/io/github/belgif/rest/problem/spring/server/ServerProblemAutoConfigurationTest.java diff --git a/belgif-rest-problem-spring-boot-3-server/src/test/resources/logback-test.xml b/belgif-rest-problem-spring-boot-3-server-starter/src/test/resources/logback-test.xml similarity index 100% rename from belgif-rest-problem-spring-boot-3-server/src/test/resources/logback-test.xml rename to belgif-rest-problem-spring-boot-3-server-starter/src/test/resources/logback-test.xml diff --git a/belgif-rest-problem-spring-boot-3/pom.xml b/belgif-rest-problem-spring-boot-3/pom.xml index af707bb5..d0fcfe73 100644 --- a/belgif-rest-problem-spring-boot-3/pom.xml +++ b/belgif-rest-problem-spring-boot-3/pom.xml @@ -16,12 +16,12 @@ io.github.belgif.rest.problem - belgif-rest-problem-spring-boot-3-client + belgif-rest-problem-spring-boot-3-client-starter ${project.version} io.github.belgif.rest.problem - belgif-rest-problem-spring-boot-3-server + belgif-rest-problem-spring-boot-3-server-starter ${project.version} diff --git a/belgif-rest-problem-spring-boot-4-client/pom.xml b/belgif-rest-problem-spring-boot-4-client-starter/pom.xml similarity index 95% rename from belgif-rest-problem-spring-boot-4-client/pom.xml rename to belgif-rest-problem-spring-boot-4-client-starter/pom.xml index a78d8b67..238ec2ee 100644 --- a/belgif-rest-problem-spring-boot-4-client/pom.xml +++ b/belgif-rest-problem-spring-boot-4-client-starter/pom.xml @@ -9,7 +9,7 @@ ${revision} - belgif-rest-problem-spring-boot-4-client + belgif-rest-problem-spring-boot-4-client-starter ${project.groupId}:${project.artifactId} jar @@ -32,7 +32,7 @@ io.github.belgif.rest.problem - belgif-rest-problem-spring-common + belgif-rest-problem-spring ${project.version} diff --git a/belgif-rest-problem-spring-boot-4-client/src/main/java/io/github/belgif/rest/problem/spring/client/ClientProblemAutoConfiguration.java b/belgif-rest-problem-spring-boot-4-client-starter/src/main/java/io/github/belgif/rest/problem/spring/client/ClientProblemAutoConfiguration.java similarity index 100% rename from belgif-rest-problem-spring-boot-4-client/src/main/java/io/github/belgif/rest/problem/spring/client/ClientProblemAutoConfiguration.java rename to belgif-rest-problem-spring-boot-4-client-starter/src/main/java/io/github/belgif/rest/problem/spring/client/ClientProblemAutoConfiguration.java diff --git a/belgif-rest-problem-spring-boot-4-client/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemRestClientCustomizer.java b/belgif-rest-problem-spring-boot-4-client-starter/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemRestClientCustomizer.java similarity index 100% rename from belgif-rest-problem-spring-boot-4-client/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemRestClientCustomizer.java rename to belgif-rest-problem-spring-boot-4-client-starter/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemRestClientCustomizer.java diff --git a/belgif-rest-problem-spring-boot-4-client/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemRestTemplateCustomizer.java b/belgif-rest-problem-spring-boot-4-client-starter/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemRestTemplateCustomizer.java similarity index 100% rename from belgif-rest-problem-spring-boot-4-client/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemRestTemplateCustomizer.java rename to belgif-rest-problem-spring-boot-4-client-starter/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemRestTemplateCustomizer.java diff --git a/belgif-rest-problem-spring-boot-4-client/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemWebClientCustomizer.java b/belgif-rest-problem-spring-boot-4-client-starter/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemWebClientCustomizer.java similarity index 100% rename from belgif-rest-problem-spring-boot-4-client/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemWebClientCustomizer.java rename to belgif-rest-problem-spring-boot-4-client-starter/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemWebClientCustomizer.java diff --git a/belgif-rest-problem-spring-boot-4-client/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/belgif-rest-problem-spring-boot-4-client-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports similarity index 100% rename from belgif-rest-problem-spring-boot-4-client/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports rename to belgif-rest-problem-spring-boot-4-client-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports diff --git a/belgif-rest-problem-spring-boot-4-client/src/test/java/io/github/belgif/rest/problem/spring/client/ClientProblemAutoConfigurationTest.java b/belgif-rest-problem-spring-boot-4-client-starter/src/test/java/io/github/belgif/rest/problem/spring/client/ClientProblemAutoConfigurationTest.java similarity index 100% rename from belgif-rest-problem-spring-boot-4-client/src/test/java/io/github/belgif/rest/problem/spring/client/ClientProblemAutoConfigurationTest.java rename to belgif-rest-problem-spring-boot-4-client-starter/src/test/java/io/github/belgif/rest/problem/spring/client/ClientProblemAutoConfigurationTest.java diff --git a/belgif-rest-problem-spring-boot-4-client/src/test/resources/logback-test.xml b/belgif-rest-problem-spring-boot-4-client-starter/src/test/resources/logback-test.xml similarity index 100% rename from belgif-rest-problem-spring-boot-4-client/src/test/resources/logback-test.xml rename to belgif-rest-problem-spring-boot-4-client-starter/src/test/resources/logback-test.xml diff --git a/belgif-rest-problem-spring-boot-4-server/pom.xml b/belgif-rest-problem-spring-boot-4-server-starter/pom.xml similarity index 95% rename from belgif-rest-problem-spring-boot-4-server/pom.xml rename to belgif-rest-problem-spring-boot-4-server-starter/pom.xml index 263bfd91..75b0d368 100644 --- a/belgif-rest-problem-spring-boot-4-server/pom.xml +++ b/belgif-rest-problem-spring-boot-4-server-starter/pom.xml @@ -9,7 +9,7 @@ ${revision} - belgif-rest-problem-spring-boot-4-server + belgif-rest-problem-spring-boot-4-server-starter ${project.groupId}:${project.artifactId} jar @@ -32,7 +32,7 @@ io.github.belgif.rest.problem - belgif-rest-problem-spring-common + belgif-rest-problem-spring ${project.version} diff --git a/belgif-rest-problem-spring-boot-4-server/src/main/java/io/github/belgif/rest/problem/spring/server/ProblemValidationConfigurationCustomizer.java b/belgif-rest-problem-spring-boot-4-server-starter/src/main/java/io/github/belgif/rest/problem/spring/server/ProblemValidationConfigurationCustomizer.java similarity index 100% rename from belgif-rest-problem-spring-boot-4-server/src/main/java/io/github/belgif/rest/problem/spring/server/ProblemValidationConfigurationCustomizer.java rename to belgif-rest-problem-spring-boot-4-server-starter/src/main/java/io/github/belgif/rest/problem/spring/server/ProblemValidationConfigurationCustomizer.java diff --git a/belgif-rest-problem-spring-boot-4-server/src/main/java/io/github/belgif/rest/problem/spring/server/ServerProblemAutoConfiguration.java b/belgif-rest-problem-spring-boot-4-server-starter/src/main/java/io/github/belgif/rest/problem/spring/server/ServerProblemAutoConfiguration.java similarity index 100% rename from belgif-rest-problem-spring-boot-4-server/src/main/java/io/github/belgif/rest/problem/spring/server/ServerProblemAutoConfiguration.java rename to belgif-rest-problem-spring-boot-4-server-starter/src/main/java/io/github/belgif/rest/problem/spring/server/ServerProblemAutoConfiguration.java diff --git a/belgif-rest-problem-spring-boot-4-server/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/belgif-rest-problem-spring-boot-4-server-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports similarity index 100% rename from belgif-rest-problem-spring-boot-4-server/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports rename to belgif-rest-problem-spring-boot-4-server-starter/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports diff --git a/belgif-rest-problem-spring-boot-4-server/src/test/java/io/github/belgif/rest/problem/spring/server/ServerProblemAutoConfigurationTest.java b/belgif-rest-problem-spring-boot-4-server-starter/src/test/java/io/github/belgif/rest/problem/spring/server/ServerProblemAutoConfigurationTest.java similarity index 100% rename from belgif-rest-problem-spring-boot-4-server/src/test/java/io/github/belgif/rest/problem/spring/server/ServerProblemAutoConfigurationTest.java rename to belgif-rest-problem-spring-boot-4-server-starter/src/test/java/io/github/belgif/rest/problem/spring/server/ServerProblemAutoConfigurationTest.java diff --git a/belgif-rest-problem-spring-boot-4-server/src/test/resources/logback-test.xml b/belgif-rest-problem-spring-boot-4-server-starter/src/test/resources/logback-test.xml similarity index 100% rename from belgif-rest-problem-spring-boot-4-server/src/test/resources/logback-test.xml rename to belgif-rest-problem-spring-boot-4-server-starter/src/test/resources/logback-test.xml diff --git a/belgif-rest-problem-spring-boot-4/pom.xml b/belgif-rest-problem-spring-boot-4-starter/pom.xml similarity index 78% rename from belgif-rest-problem-spring-boot-4/pom.xml rename to belgif-rest-problem-spring-boot-4-starter/pom.xml index 4ff85f26..dcc2589e 100644 --- a/belgif-rest-problem-spring-boot-4/pom.xml +++ b/belgif-rest-problem-spring-boot-4-starter/pom.xml @@ -9,19 +9,19 @@ ${revision} - belgif-rest-problem-spring-boot-4 + belgif-rest-problem-spring-boot-4-starter ${project.groupId}:${project.artifactId} jar io.github.belgif.rest.problem - belgif-rest-problem-spring-boot-4-client + belgif-rest-problem-spring-boot-4-client-starter ${project.version} io.github.belgif.rest.problem - belgif-rest-problem-spring-boot-4-server + belgif-rest-problem-spring-boot-4-server-starter ${project.version} diff --git a/belgif-rest-problem-spring-common/pom.xml b/belgif-rest-problem-spring/pom.xml similarity index 98% rename from belgif-rest-problem-spring-common/pom.xml rename to belgif-rest-problem-spring/pom.xml index 78116c1c..72708738 100644 --- a/belgif-rest-problem-spring-common/pom.xml +++ b/belgif-rest-problem-spring/pom.xml @@ -9,7 +9,7 @@ ${revision} - belgif-rest-problem-spring-common + belgif-rest-problem-spring ${project.groupId}:${project.artifactId} Contains shared components that are common between Spring Boot versions jar diff --git a/belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/ProblemConfigurationProperties.java b/belgif-rest-problem-spring/src/main/java/io/github/belgif/rest/problem/spring/ProblemConfigurationProperties.java similarity index 100% rename from belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/ProblemConfigurationProperties.java rename to belgif-rest-problem-spring/src/main/java/io/github/belgif/rest/problem/spring/ProblemConfigurationProperties.java diff --git a/belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/ProblemExtConfigurationProperties.java b/belgif-rest-problem-spring/src/main/java/io/github/belgif/rest/problem/spring/ProblemExtConfigurationProperties.java similarity index 100% rename from belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/ProblemExtConfigurationProperties.java rename to belgif-rest-problem-spring/src/main/java/io/github/belgif/rest/problem/spring/ProblemExtConfigurationProperties.java diff --git a/belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/ProblemJackson2Configuration.java b/belgif-rest-problem-spring/src/main/java/io/github/belgif/rest/problem/spring/ProblemJackson2Configuration.java similarity index 100% rename from belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/ProblemJackson2Configuration.java rename to belgif-rest-problem-spring/src/main/java/io/github/belgif/rest/problem/spring/ProblemJackson2Configuration.java diff --git a/belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/ProblemJackson3Configuration.java b/belgif-rest-problem-spring/src/main/java/io/github/belgif/rest/problem/spring/ProblemJackson3Configuration.java similarity index 100% rename from belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/ProblemJackson3Configuration.java rename to belgif-rest-problem-spring/src/main/java/io/github/belgif/rest/problem/spring/ProblemJackson3Configuration.java diff --git a/belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/ProblemMediaType.java b/belgif-rest-problem-spring/src/main/java/io/github/belgif/rest/problem/spring/ProblemMediaType.java similarity index 100% rename from belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/ProblemMediaType.java rename to belgif-rest-problem-spring/src/main/java/io/github/belgif/rest/problem/spring/ProblemMediaType.java diff --git a/belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/SpringProblemModule.java b/belgif-rest-problem-spring/src/main/java/io/github/belgif/rest/problem/spring/SpringProblemModule.java similarity index 100% rename from belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/SpringProblemModule.java rename to belgif-rest-problem-spring/src/main/java/io/github/belgif/rest/problem/spring/SpringProblemModule.java diff --git a/belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/SpringProblemModuleJackson3.java b/belgif-rest-problem-spring/src/main/java/io/github/belgif/rest/problem/spring/SpringProblemModuleJackson3.java similarity index 100% rename from belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/SpringProblemModuleJackson3.java rename to belgif-rest-problem-spring/src/main/java/io/github/belgif/rest/problem/spring/SpringProblemModuleJackson3.java diff --git a/belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/SpringProblemTypeRegistry.java b/belgif-rest-problem-spring/src/main/java/io/github/belgif/rest/problem/spring/SpringProblemTypeRegistry.java similarity index 100% rename from belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/SpringProblemTypeRegistry.java rename to belgif-rest-problem-spring/src/main/java/io/github/belgif/rest/problem/spring/SpringProblemTypeRegistry.java diff --git a/belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/client/AbstractProblemResponseErrorHandler.java b/belgif-rest-problem-spring/src/main/java/io/github/belgif/rest/problem/spring/client/AbstractProblemResponseErrorHandler.java similarity index 100% rename from belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/client/AbstractProblemResponseErrorHandler.java rename to belgif-rest-problem-spring/src/main/java/io/github/belgif/rest/problem/spring/client/AbstractProblemResponseErrorHandler.java diff --git a/belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/client/AbstractProblemRestClientCustomizer.java b/belgif-rest-problem-spring/src/main/java/io/github/belgif/rest/problem/spring/client/AbstractProblemRestClientCustomizer.java similarity index 100% rename from belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/client/AbstractProblemRestClientCustomizer.java rename to belgif-rest-problem-spring/src/main/java/io/github/belgif/rest/problem/spring/client/AbstractProblemRestClientCustomizer.java diff --git a/belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/client/AbstractProblemRestTemplateCustomizer.java b/belgif-rest-problem-spring/src/main/java/io/github/belgif/rest/problem/spring/client/AbstractProblemRestTemplateCustomizer.java similarity index 100% rename from belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/client/AbstractProblemRestTemplateCustomizer.java rename to belgif-rest-problem-spring/src/main/java/io/github/belgif/rest/problem/spring/client/AbstractProblemRestTemplateCustomizer.java diff --git a/belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/client/AbstractProblemWebClientCustomizer.java b/belgif-rest-problem-spring/src/main/java/io/github/belgif/rest/problem/spring/client/AbstractProblemWebClientCustomizer.java similarity index 100% rename from belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/client/AbstractProblemWebClientCustomizer.java rename to belgif-rest-problem-spring/src/main/java/io/github/belgif/rest/problem/spring/client/AbstractProblemWebClientCustomizer.java diff --git a/belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemResponseJackson2ErrorHandler.java b/belgif-rest-problem-spring/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemResponseJackson2ErrorHandler.java similarity index 100% rename from belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemResponseJackson2ErrorHandler.java rename to belgif-rest-problem-spring/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemResponseJackson2ErrorHandler.java diff --git a/belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemResponseJackson3ErrorHandler.java b/belgif-rest-problem-spring/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemResponseJackson3ErrorHandler.java similarity index 100% rename from belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemResponseJackson3ErrorHandler.java rename to belgif-rest-problem-spring/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemResponseJackson3ErrorHandler.java diff --git a/belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/server/AbstractInvalidRequestExceptionHandler.java b/belgif-rest-problem-spring/src/main/java/io/github/belgif/rest/problem/spring/server/AbstractInvalidRequestExceptionHandler.java similarity index 100% rename from belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/server/AbstractInvalidRequestExceptionHandler.java rename to belgif-rest-problem-spring/src/main/java/io/github/belgif/rest/problem/spring/server/AbstractInvalidRequestExceptionHandler.java diff --git a/belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/server/AbstractProblemValidationConfigurationCustomizer.java b/belgif-rest-problem-spring/src/main/java/io/github/belgif/rest/problem/spring/server/AbstractProblemValidationConfigurationCustomizer.java similarity index 100% rename from belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/server/AbstractProblemValidationConfigurationCustomizer.java rename to belgif-rest-problem-spring/src/main/java/io/github/belgif/rest/problem/spring/server/AbstractProblemValidationConfigurationCustomizer.java diff --git a/belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/server/AbstractRoutingExceptionsHandler.java b/belgif-rest-problem-spring/src/main/java/io/github/belgif/rest/problem/spring/server/AbstractRoutingExceptionsHandler.java similarity index 100% rename from belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/server/AbstractRoutingExceptionsHandler.java rename to belgif-rest-problem-spring/src/main/java/io/github/belgif/rest/problem/spring/server/AbstractRoutingExceptionsHandler.java diff --git a/belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/server/AnnotationParameterNameProvider.java b/belgif-rest-problem-spring/src/main/java/io/github/belgif/rest/problem/spring/server/AnnotationParameterNameProvider.java similarity index 100% rename from belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/server/AnnotationParameterNameProvider.java rename to belgif-rest-problem-spring/src/main/java/io/github/belgif/rest/problem/spring/server/AnnotationParameterNameProvider.java diff --git a/belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/server/BeanValidationExceptionsHandler.java b/belgif-rest-problem-spring/src/main/java/io/github/belgif/rest/problem/spring/server/BeanValidationExceptionsHandler.java similarity index 100% rename from belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/server/BeanValidationExceptionsHandler.java rename to belgif-rest-problem-spring/src/main/java/io/github/belgif/rest/problem/spring/server/BeanValidationExceptionsHandler.java diff --git a/belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/server/InvalidRequestExceptionJackson2Handler.java b/belgif-rest-problem-spring/src/main/java/io/github/belgif/rest/problem/spring/server/InvalidRequestExceptionJackson2Handler.java similarity index 100% rename from belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/server/InvalidRequestExceptionJackson2Handler.java rename to belgif-rest-problem-spring/src/main/java/io/github/belgif/rest/problem/spring/server/InvalidRequestExceptionJackson2Handler.java diff --git a/belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/server/InvalidRequestExceptionJackson3Handler.java b/belgif-rest-problem-spring/src/main/java/io/github/belgif/rest/problem/spring/server/InvalidRequestExceptionJackson3Handler.java similarity index 100% rename from belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/server/InvalidRequestExceptionJackson3Handler.java rename to belgif-rest-problem-spring/src/main/java/io/github/belgif/rest/problem/spring/server/InvalidRequestExceptionJackson3Handler.java diff --git a/belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/server/ProblemExceptionHandler.java b/belgif-rest-problem-spring/src/main/java/io/github/belgif/rest/problem/spring/server/ProblemExceptionHandler.java similarity index 100% rename from belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/server/ProblemExceptionHandler.java rename to belgif-rest-problem-spring/src/main/java/io/github/belgif/rest/problem/spring/server/ProblemExceptionHandler.java diff --git a/belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/server/RoutingExceptionsJackson2Handler.java b/belgif-rest-problem-spring/src/main/java/io/github/belgif/rest/problem/spring/server/RoutingExceptionsJackson2Handler.java similarity index 100% rename from belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/server/RoutingExceptionsJackson2Handler.java rename to belgif-rest-problem-spring/src/main/java/io/github/belgif/rest/problem/spring/server/RoutingExceptionsJackson2Handler.java diff --git a/belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/server/RoutingExceptionsJackson3Handler.java b/belgif-rest-problem-spring/src/main/java/io/github/belgif/rest/problem/spring/server/RoutingExceptionsJackson3Handler.java similarity index 100% rename from belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/server/RoutingExceptionsJackson3Handler.java rename to belgif-rest-problem-spring/src/main/java/io/github/belgif/rest/problem/spring/server/RoutingExceptionsJackson3Handler.java diff --git a/belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/server/i18n/LocaleContextHolderLocaleResolver.java b/belgif-rest-problem-spring/src/main/java/io/github/belgif/rest/problem/spring/server/i18n/LocaleContextHolderLocaleResolver.java similarity index 100% rename from belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/server/i18n/LocaleContextHolderLocaleResolver.java rename to belgif-rest-problem-spring/src/main/java/io/github/belgif/rest/problem/spring/server/i18n/LocaleContextHolderLocaleResolver.java diff --git a/belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/server/internal/BeanValidationExceptionUtil.java b/belgif-rest-problem-spring/src/main/java/io/github/belgif/rest/problem/spring/server/internal/BeanValidationExceptionUtil.java similarity index 100% rename from belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/server/internal/BeanValidationExceptionUtil.java rename to belgif-rest-problem-spring/src/main/java/io/github/belgif/rest/problem/spring/server/internal/BeanValidationExceptionUtil.java diff --git a/belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/server/internal/CachedAnnotationParameterNameSupport.java b/belgif-rest-problem-spring/src/main/java/io/github/belgif/rest/problem/spring/server/internal/CachedAnnotationParameterNameSupport.java similarity index 100% rename from belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/server/internal/CachedAnnotationParameterNameSupport.java rename to belgif-rest-problem-spring/src/main/java/io/github/belgif/rest/problem/spring/server/internal/CachedAnnotationParameterNameSupport.java diff --git a/belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/server/internal/DetermineSourceUtil.java b/belgif-rest-problem-spring/src/main/java/io/github/belgif/rest/problem/spring/server/internal/DetermineSourceUtil.java similarity index 100% rename from belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/server/internal/DetermineSourceUtil.java rename to belgif-rest-problem-spring/src/main/java/io/github/belgif/rest/problem/spring/server/internal/DetermineSourceUtil.java diff --git a/belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/server/internal/InvalidRequestExceptionUtil.java b/belgif-rest-problem-spring/src/main/java/io/github/belgif/rest/problem/spring/server/internal/InvalidRequestExceptionUtil.java similarity index 100% rename from belgif-rest-problem-spring-common/src/main/java/io/github/belgif/rest/problem/spring/server/internal/InvalidRequestExceptionUtil.java rename to belgif-rest-problem-spring/src/main/java/io/github/belgif/rest/problem/spring/server/internal/InvalidRequestExceptionUtil.java diff --git a/belgif-rest-problem-spring-common/src/main/resources/META-INF/services/io.github.belgif.rest.problem.i18n.LocaleResolver b/belgif-rest-problem-spring/src/main/resources/META-INF/services/io.github.belgif.rest.problem.i18n.LocaleResolver similarity index 100% rename from belgif-rest-problem-spring-common/src/main/resources/META-INF/services/io.github.belgif.rest.problem.i18n.LocaleResolver rename to belgif-rest-problem-spring/src/main/resources/META-INF/services/io.github.belgif.rest.problem.i18n.LocaleResolver diff --git a/belgif-rest-problem-spring-common/src/test/java/io/github/belgif/rest/problem/spring/ProblemConfigurationPropertiesTest.java b/belgif-rest-problem-spring/src/test/java/io/github/belgif/rest/problem/spring/ProblemConfigurationPropertiesTest.java similarity index 100% rename from belgif-rest-problem-spring-common/src/test/java/io/github/belgif/rest/problem/spring/ProblemConfigurationPropertiesTest.java rename to belgif-rest-problem-spring/src/test/java/io/github/belgif/rest/problem/spring/ProblemConfigurationPropertiesTest.java diff --git a/belgif-rest-problem-spring-common/src/test/java/io/github/belgif/rest/problem/spring/ProblemExtConfigurationPropertiesTest.java b/belgif-rest-problem-spring/src/test/java/io/github/belgif/rest/problem/spring/ProblemExtConfigurationPropertiesTest.java similarity index 100% rename from belgif-rest-problem-spring-common/src/test/java/io/github/belgif/rest/problem/spring/ProblemExtConfigurationPropertiesTest.java rename to belgif-rest-problem-spring/src/test/java/io/github/belgif/rest/problem/spring/ProblemExtConfigurationPropertiesTest.java diff --git a/belgif-rest-problem-spring-common/src/test/java/io/github/belgif/rest/problem/spring/ProblemMediaTypeTest.java b/belgif-rest-problem-spring/src/test/java/io/github/belgif/rest/problem/spring/ProblemMediaTypeTest.java similarity index 100% rename from belgif-rest-problem-spring-common/src/test/java/io/github/belgif/rest/problem/spring/ProblemMediaTypeTest.java rename to belgif-rest-problem-spring/src/test/java/io/github/belgif/rest/problem/spring/ProblemMediaTypeTest.java diff --git a/belgif-rest-problem-spring-common/src/test/java/io/github/belgif/rest/problem/spring/SpringProblemModuleJackson3Test.java b/belgif-rest-problem-spring/src/test/java/io/github/belgif/rest/problem/spring/SpringProblemModuleJackson3Test.java similarity index 100% rename from belgif-rest-problem-spring-common/src/test/java/io/github/belgif/rest/problem/spring/SpringProblemModuleJackson3Test.java rename to belgif-rest-problem-spring/src/test/java/io/github/belgif/rest/problem/spring/SpringProblemModuleJackson3Test.java diff --git a/belgif-rest-problem-spring-common/src/test/java/io/github/belgif/rest/problem/spring/SpringProblemModuleTest.java b/belgif-rest-problem-spring/src/test/java/io/github/belgif/rest/problem/spring/SpringProblemModuleTest.java similarity index 100% rename from belgif-rest-problem-spring-common/src/test/java/io/github/belgif/rest/problem/spring/SpringProblemModuleTest.java rename to belgif-rest-problem-spring/src/test/java/io/github/belgif/rest/problem/spring/SpringProblemModuleTest.java diff --git a/belgif-rest-problem-spring-common/src/test/java/io/github/belgif/rest/problem/spring/SpringProblemTypeRegistryTest.java b/belgif-rest-problem-spring/src/test/java/io/github/belgif/rest/problem/spring/SpringProblemTypeRegistryTest.java similarity index 100% rename from belgif-rest-problem-spring-common/src/test/java/io/github/belgif/rest/problem/spring/SpringProblemTypeRegistryTest.java rename to belgif-rest-problem-spring/src/test/java/io/github/belgif/rest/problem/spring/SpringProblemTypeRegistryTest.java diff --git a/belgif-rest-problem-spring-common/src/test/java/io/github/belgif/rest/problem/spring/client/AbstractProblemResponseErrorHandlerTest.java b/belgif-rest-problem-spring/src/test/java/io/github/belgif/rest/problem/spring/client/AbstractProblemResponseErrorHandlerTest.java similarity index 100% rename from belgif-rest-problem-spring-common/src/test/java/io/github/belgif/rest/problem/spring/client/AbstractProblemResponseErrorHandlerTest.java rename to belgif-rest-problem-spring/src/test/java/io/github/belgif/rest/problem/spring/client/AbstractProblemResponseErrorHandlerTest.java diff --git a/belgif-rest-problem-spring-common/src/test/java/io/github/belgif/rest/problem/spring/client/AbstractProblemRestClientCustomizerTest.java b/belgif-rest-problem-spring/src/test/java/io/github/belgif/rest/problem/spring/client/AbstractProblemRestClientCustomizerTest.java similarity index 100% rename from belgif-rest-problem-spring-common/src/test/java/io/github/belgif/rest/problem/spring/client/AbstractProblemRestClientCustomizerTest.java rename to belgif-rest-problem-spring/src/test/java/io/github/belgif/rest/problem/spring/client/AbstractProblemRestClientCustomizerTest.java diff --git a/belgif-rest-problem-spring-common/src/test/java/io/github/belgif/rest/problem/spring/client/AbstractProblemRestTemplateCustomizerTest.java b/belgif-rest-problem-spring/src/test/java/io/github/belgif/rest/problem/spring/client/AbstractProblemRestTemplateCustomizerTest.java similarity index 100% rename from belgif-rest-problem-spring-common/src/test/java/io/github/belgif/rest/problem/spring/client/AbstractProblemRestTemplateCustomizerTest.java rename to belgif-rest-problem-spring/src/test/java/io/github/belgif/rest/problem/spring/client/AbstractProblemRestTemplateCustomizerTest.java diff --git a/belgif-rest-problem-spring-common/src/test/java/io/github/belgif/rest/problem/spring/client/AbstractProblemWebClientCustomizerTest.java b/belgif-rest-problem-spring/src/test/java/io/github/belgif/rest/problem/spring/client/AbstractProblemWebClientCustomizerTest.java similarity index 100% rename from belgif-rest-problem-spring-common/src/test/java/io/github/belgif/rest/problem/spring/client/AbstractProblemWebClientCustomizerTest.java rename to belgif-rest-problem-spring/src/test/java/io/github/belgif/rest/problem/spring/client/AbstractProblemWebClientCustomizerTest.java diff --git a/belgif-rest-problem-spring-common/src/test/java/io/github/belgif/rest/problem/spring/server/AbstractInvalidRequestExceptionHandlerTest.java b/belgif-rest-problem-spring/src/test/java/io/github/belgif/rest/problem/spring/server/AbstractInvalidRequestExceptionHandlerTest.java similarity index 100% rename from belgif-rest-problem-spring-common/src/test/java/io/github/belgif/rest/problem/spring/server/AbstractInvalidRequestExceptionHandlerTest.java rename to belgif-rest-problem-spring/src/test/java/io/github/belgif/rest/problem/spring/server/AbstractInvalidRequestExceptionHandlerTest.java diff --git a/belgif-rest-problem-spring-common/src/test/java/io/github/belgif/rest/problem/spring/server/AbstractProblemValidationConfigurationCustomizerTest.java b/belgif-rest-problem-spring/src/test/java/io/github/belgif/rest/problem/spring/server/AbstractProblemValidationConfigurationCustomizerTest.java similarity index 100% rename from belgif-rest-problem-spring-common/src/test/java/io/github/belgif/rest/problem/spring/server/AbstractProblemValidationConfigurationCustomizerTest.java rename to belgif-rest-problem-spring/src/test/java/io/github/belgif/rest/problem/spring/server/AbstractProblemValidationConfigurationCustomizerTest.java diff --git a/belgif-rest-problem-spring-common/src/test/java/io/github/belgif/rest/problem/spring/server/AbstractRoutingExceptionsHandlerTest.java b/belgif-rest-problem-spring/src/test/java/io/github/belgif/rest/problem/spring/server/AbstractRoutingExceptionsHandlerTest.java similarity index 100% rename from belgif-rest-problem-spring-common/src/test/java/io/github/belgif/rest/problem/spring/server/AbstractRoutingExceptionsHandlerTest.java rename to belgif-rest-problem-spring/src/test/java/io/github/belgif/rest/problem/spring/server/AbstractRoutingExceptionsHandlerTest.java diff --git a/belgif-rest-problem-spring-common/src/test/java/io/github/belgif/rest/problem/spring/server/AnnotationParameterNameProviderTest.java b/belgif-rest-problem-spring/src/test/java/io/github/belgif/rest/problem/spring/server/AnnotationParameterNameProviderTest.java similarity index 100% rename from belgif-rest-problem-spring-common/src/test/java/io/github/belgif/rest/problem/spring/server/AnnotationParameterNameProviderTest.java rename to belgif-rest-problem-spring/src/test/java/io/github/belgif/rest/problem/spring/server/AnnotationParameterNameProviderTest.java diff --git a/belgif-rest-problem-spring-common/src/test/java/io/github/belgif/rest/problem/spring/server/BeanValidationExceptionsHandlerTest.java b/belgif-rest-problem-spring/src/test/java/io/github/belgif/rest/problem/spring/server/BeanValidationExceptionsHandlerTest.java similarity index 100% rename from belgif-rest-problem-spring-common/src/test/java/io/github/belgif/rest/problem/spring/server/BeanValidationExceptionsHandlerTest.java rename to belgif-rest-problem-spring/src/test/java/io/github/belgif/rest/problem/spring/server/BeanValidationExceptionsHandlerTest.java diff --git a/belgif-rest-problem-spring-common/src/test/java/io/github/belgif/rest/problem/spring/server/InvalidRequestExceptionJackson2HandlerTest.java b/belgif-rest-problem-spring/src/test/java/io/github/belgif/rest/problem/spring/server/InvalidRequestExceptionJackson2HandlerTest.java similarity index 100% rename from belgif-rest-problem-spring-common/src/test/java/io/github/belgif/rest/problem/spring/server/InvalidRequestExceptionJackson2HandlerTest.java rename to belgif-rest-problem-spring/src/test/java/io/github/belgif/rest/problem/spring/server/InvalidRequestExceptionJackson2HandlerTest.java diff --git a/belgif-rest-problem-spring-common/src/test/java/io/github/belgif/rest/problem/spring/server/InvalidRequestExceptionJackson3HandlerTest.java b/belgif-rest-problem-spring/src/test/java/io/github/belgif/rest/problem/spring/server/InvalidRequestExceptionJackson3HandlerTest.java similarity index 100% rename from belgif-rest-problem-spring-common/src/test/java/io/github/belgif/rest/problem/spring/server/InvalidRequestExceptionJackson3HandlerTest.java rename to belgif-rest-problem-spring/src/test/java/io/github/belgif/rest/problem/spring/server/InvalidRequestExceptionJackson3HandlerTest.java diff --git a/belgif-rest-problem-spring-common/src/test/java/io/github/belgif/rest/problem/spring/server/ProblemExceptionHandlerTest.java b/belgif-rest-problem-spring/src/test/java/io/github/belgif/rest/problem/spring/server/ProblemExceptionHandlerTest.java similarity index 100% rename from belgif-rest-problem-spring-common/src/test/java/io/github/belgif/rest/problem/spring/server/ProblemExceptionHandlerTest.java rename to belgif-rest-problem-spring/src/test/java/io/github/belgif/rest/problem/spring/server/ProblemExceptionHandlerTest.java diff --git a/belgif-rest-problem-spring-common/src/test/java/io/github/belgif/rest/problem/spring/server/i18n/LocaleContextHolderLocaleResolverTest.java b/belgif-rest-problem-spring/src/test/java/io/github/belgif/rest/problem/spring/server/i18n/LocaleContextHolderLocaleResolverTest.java similarity index 100% rename from belgif-rest-problem-spring-common/src/test/java/io/github/belgif/rest/problem/spring/server/i18n/LocaleContextHolderLocaleResolverTest.java rename to belgif-rest-problem-spring/src/test/java/io/github/belgif/rest/problem/spring/server/i18n/LocaleContextHolderLocaleResolverTest.java diff --git a/belgif-rest-problem-spring-common/src/test/java/io/github/belgif/rest/problem/spring/server/internal/BeanValidationExceptionUtilTest.java b/belgif-rest-problem-spring/src/test/java/io/github/belgif/rest/problem/spring/server/internal/BeanValidationExceptionUtilTest.java similarity index 100% rename from belgif-rest-problem-spring-common/src/test/java/io/github/belgif/rest/problem/spring/server/internal/BeanValidationExceptionUtilTest.java rename to belgif-rest-problem-spring/src/test/java/io/github/belgif/rest/problem/spring/server/internal/BeanValidationExceptionUtilTest.java diff --git a/belgif-rest-problem-spring-common/src/test/java/io/github/belgif/rest/problem/spring/server/internal/CachedAnnotationParameterNameSupportTest.java b/belgif-rest-problem-spring/src/test/java/io/github/belgif/rest/problem/spring/server/internal/CachedAnnotationParameterNameSupportTest.java similarity index 100% rename from belgif-rest-problem-spring-common/src/test/java/io/github/belgif/rest/problem/spring/server/internal/CachedAnnotationParameterNameSupportTest.java rename to belgif-rest-problem-spring/src/test/java/io/github/belgif/rest/problem/spring/server/internal/CachedAnnotationParameterNameSupportTest.java diff --git a/belgif-rest-problem-spring-common/src/test/java/io/github/belgif/rest/problem/spring/server/internal/DetermineSourceUtilTest.java b/belgif-rest-problem-spring/src/test/java/io/github/belgif/rest/problem/spring/server/internal/DetermineSourceUtilTest.java similarity index 100% rename from belgif-rest-problem-spring-common/src/test/java/io/github/belgif/rest/problem/spring/server/internal/DetermineSourceUtilTest.java rename to belgif-rest-problem-spring/src/test/java/io/github/belgif/rest/problem/spring/server/internal/DetermineSourceUtilTest.java diff --git a/belgif-rest-problem-spring-common/src/test/java/io/github/belgif/rest/problem/spring/server/internal/InvalidRequestExceptionUtilTest.java b/belgif-rest-problem-spring/src/test/java/io/github/belgif/rest/problem/spring/server/internal/InvalidRequestExceptionUtilTest.java similarity index 100% rename from belgif-rest-problem-spring-common/src/test/java/io/github/belgif/rest/problem/spring/server/internal/InvalidRequestExceptionUtilTest.java rename to belgif-rest-problem-spring/src/test/java/io/github/belgif/rest/problem/spring/server/internal/InvalidRequestExceptionUtilTest.java diff --git a/belgif-rest-problem-spring-common/src/test/resources/logback-test.xml b/belgif-rest-problem-spring/src/test/resources/logback-test.xml similarity index 100% rename from belgif-rest-problem-spring-common/src/test/resources/logback-test.xml rename to belgif-rest-problem-spring/src/test/resources/logback-test.xml diff --git a/pom.xml b/pom.xml index c4744cd6..a15e342d 100644 --- a/pom.xml +++ b/pom.xml @@ -235,9 +235,8 @@ jacoco-aggregator, belgif-rest-problem-spring-boot-3, - belgif-rest-problem-spring-boot-3-core, - belgif-rest-problem-spring-boot-3-client, - belgif-rest-problem-spring-boot-3-server + belgif-rest-problem-spring-boot-3-client-starter, + belgif-rest-problem-spring-boot-3-server-starter all,-missing true @@ -379,13 +378,13 @@ belgif-rest-problem-jakarta-ee-core belgif-rest-problem-jakarta-ee-client belgif-rest-problem-jakarta-ee-server - belgif-rest-problem-spring-common + belgif-rest-problem-spring belgif-rest-problem-spring-boot-3 - belgif-rest-problem-spring-boot-3-client - belgif-rest-problem-spring-boot-3-server - belgif-rest-problem-spring-boot-4 - belgif-rest-problem-spring-boot-4-client - belgif-rest-problem-spring-boot-4-server + belgif-rest-problem-spring-boot-3-client-starter + belgif-rest-problem-spring-boot-3-server-starter + belgif-rest-problem-spring-boot-4-starter + belgif-rest-problem-spring-boot-4-client-starter + belgif-rest-problem-spring-boot-4-server-starter belgif-rest-problem-quarkus belgif-rest-problem-quarkus-core belgif-rest-problem-quarkus-core-deployment @@ -499,13 +498,13 @@ belgif-rest-problem-jakarta-ee-core belgif-rest-problem-jakarta-ee-client belgif-rest-problem-jakarta-ee-server - belgif-rest-problem-spring-common + belgif-rest-problem-spring belgif-rest-problem-spring-boot-3 - belgif-rest-problem-spring-boot-3-client - belgif-rest-problem-spring-boot-3-server - belgif-rest-problem-spring-boot-4 - belgif-rest-problem-spring-boot-4-client - belgif-rest-problem-spring-boot-4-server + belgif-rest-problem-spring-boot-3-client-starter + belgif-rest-problem-spring-boot-3-server-starter + belgif-rest-problem-spring-boot-4-starter + belgif-rest-problem-spring-boot-4-client-starter + belgif-rest-problem-spring-boot-4-server-starter belgif-rest-problem-quarkus belgif-rest-problem-quarkus-core belgif-rest-problem-quarkus-core-deployment @@ -554,13 +553,13 @@ spring-only belgif-rest-problem - belgif-rest-problem-spring-common + belgif-rest-problem-spring belgif-rest-problem-spring-boot-3 - belgif-rest-problem-spring-boot-3-client - belgif-rest-problem-spring-boot-3-server - belgif-rest-problem-spring-boot-4 - belgif-rest-problem-spring-boot-4-client - belgif-rest-problem-spring-boot-4-server + belgif-rest-problem-spring-boot-3-client-starter + belgif-rest-problem-spring-boot-3-server-starter + belgif-rest-problem-spring-boot-4-starter + belgif-rest-problem-spring-boot-4-client-starter + belgif-rest-problem-spring-boot-4-server-starter belgif-rest-problem-it/belgif-rest-problem-apt belgif-rest-problem-it/belgif-rest-problem-codegen-it From bbba49f0851aca94eb6d4604c48c7aa0a9ffce9f Mon Sep 17 00:00:00 2001 From: pvdb Date: Tue, 24 Feb 2026 11:08:44 +0100 Subject: [PATCH 08/23] minor cleanup --- belgif-rest-problem-spring/pom.xml | 2 +- .../problem/spring/server/RoutingExceptionsJackson3Handler.java | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/belgif-rest-problem-spring/pom.xml b/belgif-rest-problem-spring/pom.xml index 72708738..7581ffe6 100644 --- a/belgif-rest-problem-spring/pom.xml +++ b/belgif-rest-problem-spring/pom.xml @@ -72,7 +72,7 @@ tools.jackson.core jackson-databind - 3.0.4 + ${version.jackson3.minimal} provided diff --git a/belgif-rest-problem-spring/src/main/java/io/github/belgif/rest/problem/spring/server/RoutingExceptionsJackson3Handler.java b/belgif-rest-problem-spring/src/main/java/io/github/belgif/rest/problem/spring/server/RoutingExceptionsJackson3Handler.java index 862e2c68..88853076 100644 --- a/belgif-rest-problem-spring/src/main/java/io/github/belgif/rest/problem/spring/server/RoutingExceptionsJackson3Handler.java +++ b/belgif-rest-problem-spring/src/main/java/io/github/belgif/rest/problem/spring/server/RoutingExceptionsJackson3Handler.java @@ -16,7 +16,6 @@ @Order(1) // @Order(1) to take precedence over org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver // and io.github.belgif.rest.problem.spring.ProblemExceptionHandler -//TODO: move to reinstated spring(-7) module? public class RoutingExceptionsJackson3Handler extends AbstractRoutingExceptionsHandler { public RoutingExceptionsJackson3Handler() { From 1e4f78f1c264b93ef47ec49ea7e64f6fada61dbf Mon Sep 17 00:00:00 2001 From: pvdb Date: Tue, 24 Feb 2026 11:36:42 +0100 Subject: [PATCH 09/23] fix module names in jacoco module --- jacoco-aggregator/pom.xml | 32 ++++++-------------------------- 1 file changed, 6 insertions(+), 26 deletions(-) diff --git a/jacoco-aggregator/pom.xml b/jacoco-aggregator/pom.xml index 82b30420..88068b80 100644 --- a/jacoco-aggregator/pom.xml +++ b/jacoco-aggregator/pom.xml @@ -61,17 +61,7 @@ io.github.belgif.rest.problem - belgif-rest-problem-spring-boot-common - ${project.version} - - - io.github.belgif.rest.problem - belgif-rest-problem-spring-boot-common-client - ${project.version} - - - io.github.belgif.rest.problem - belgif-rest-problem-spring-boot-common-server + belgif-rest-problem-spring ${project.version} @@ -81,37 +71,27 @@ io.github.belgif.rest.problem - belgif-rest-problem-spring-boot-3-core - ${project.version} - - - io.github.belgif.rest.problem - belgif-rest-problem-spring-boot-3-client - ${project.version} - - - io.github.belgif.rest.problem - belgif-rest-problem-spring-boot-3-server + belgif-rest-problem-spring-boot-3-client-starter ${project.version} io.github.belgif.rest.problem - belgif-rest-problem-spring-boot-4 + belgif-rest-problem-spring-boot-3-server-starter ${project.version} io.github.belgif.rest.problem - belgif-rest-problem-spring-boot-4-core + belgif-rest-problem-spring-boot-4-starter ${project.version} io.github.belgif.rest.problem - belgif-rest-problem-spring-boot-4-client + belgif-rest-problem-spring-boot-4-client-starter ${project.version} io.github.belgif.rest.problem - belgif-rest-problem-spring-boot-4-server + belgif-rest-problem-spring-boot-4-server-starter ${project.version} From 4881cc1e8e528a2f5e1dca6c44d35aa6264d2e2c Mon Sep 17 00:00:00 2001 From: pvdb Date: Tue, 24 Feb 2026 13:52:24 +0100 Subject: [PATCH 10/23] avoid exposing abstract classes to Spring users: - add WebClientFilter - add an interface ProblemResponseErrorHandler --- .../ClientProblemAutoConfiguration.java | 18 ++++------------ .../client/ProblemRestClientCustomizer.java | 6 +++--- .../client/ProblemRestTemplateCustomizer.java | 6 +++--- .../ClientProblemAutoConfiguration.java | 18 ++++------------ .../client/ProblemRestClientCustomizer.java | 6 +++--- .../client/ProblemRestTemplateCustomizer.java | 6 +++--- .../AbstractProblemResponseErrorHandler.java | 6 ++---- .../AbstractProblemRestClientCustomizer.java | 8 +++---- ...AbstractProblemRestTemplateCustomizer.java | 4 ++-- .../AbstractProblemWebClientCustomizer.java | 19 +---------------- .../client/ProblemResponseErrorHandler.java | 9 ++++++++ .../spring/client/WebClientFilter.java | 21 +++++++++++++++++++ 12 files changed, 59 insertions(+), 68 deletions(-) create mode 100644 belgif-rest-problem-spring/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemResponseErrorHandler.java create mode 100644 belgif-rest-problem-spring/src/main/java/io/github/belgif/rest/problem/spring/client/WebClientFilter.java diff --git a/belgif-rest-problem-spring-boot-3-client-starter/src/main/java/io/github/belgif/rest/problem/spring/client/ClientProblemAutoConfiguration.java b/belgif-rest-problem-spring-boot-3-client-starter/src/main/java/io/github/belgif/rest/problem/spring/client/ClientProblemAutoConfiguration.java index 860b2854..ad53bab1 100644 --- a/belgif-rest-problem-spring-boot-3-client-starter/src/main/java/io/github/belgif/rest/problem/spring/client/ClientProblemAutoConfiguration.java +++ b/belgif-rest-problem-spring-boot-3-client-starter/src/main/java/io/github/belgif/rest/problem/spring/client/ClientProblemAutoConfiguration.java @@ -12,8 +12,6 @@ import org.springframework.web.client.RestTemplate; import org.springframework.web.reactive.function.client.WebClient; -import com.fasterxml.jackson.databind.ObjectMapper; - import io.github.belgif.rest.problem.spring.ProblemJackson2Configuration; /** @@ -24,25 +22,17 @@ ProblemResponseJackson2ErrorHandler.class }) public class ClientProblemAutoConfiguration { - private ObjectMapper objectMapper; - - private ProblemResponseJackson2ErrorHandler problemResponseErrorHandler; - - public ClientProblemAutoConfiguration(ObjectMapper objectMapper, - ProblemResponseJackson2ErrorHandler problemResponseErrorHandler) { - this.objectMapper = objectMapper; - this.problemResponseErrorHandler = problemResponseErrorHandler; - } - @ConditionalOnClass({ RestClient.class, RestClientCustomizer.class }) @Bean - public ProblemRestClientCustomizer problemRestClientCustomizer() { + public ProblemRestClientCustomizer + problemRestClientCustomizer(ProblemResponseErrorHandler problemResponseErrorHandler) { return new ProblemRestClientCustomizer(problemResponseErrorHandler); } @ConditionalOnClass({ RestTemplate.class, RestTemplateCustomizer.class }) @Bean - public ProblemRestTemplateCustomizer problemRestTemplateCustomizer() { + public ProblemRestTemplateCustomizer + problemRestTemplateCustomizer(ProblemResponseErrorHandler problemResponseErrorHandler) { return new ProblemRestTemplateCustomizer(problemResponseErrorHandler); } diff --git a/belgif-rest-problem-spring-boot-3-client-starter/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemRestClientCustomizer.java b/belgif-rest-problem-spring-boot-3-client-starter/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemRestClientCustomizer.java index 7cfe234c..72da1b8a 100644 --- a/belgif-rest-problem-spring-boot-3-client-starter/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemRestClientCustomizer.java +++ b/belgif-rest-problem-spring-boot-3-client-starter/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemRestClientCustomizer.java @@ -3,13 +3,13 @@ import org.springframework.boot.web.client.RestClientCustomizer; /** - * RestClientCustomizer that registers the {@link ProblemResponseJackson2ErrorHandler}. + * RestClientCustomizer that registers the {@link ProblemResponseErrorHandler}. * - * @see ProblemResponseJackson2ErrorHandler + * @see ProblemResponseErrorHandler */ public class ProblemRestClientCustomizer extends AbstractProblemRestClientCustomizer implements RestClientCustomizer { - public ProblemRestClientCustomizer(AbstractProblemResponseErrorHandler errorHandler) { + public ProblemRestClientCustomizer(ProblemResponseErrorHandler errorHandler) { super(errorHandler); } } diff --git a/belgif-rest-problem-spring-boot-3-client-starter/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemRestTemplateCustomizer.java b/belgif-rest-problem-spring-boot-3-client-starter/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemRestTemplateCustomizer.java index da441e40..2a536fa3 100644 --- a/belgif-rest-problem-spring-boot-3-client-starter/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemRestTemplateCustomizer.java +++ b/belgif-rest-problem-spring-boot-3-client-starter/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemRestTemplateCustomizer.java @@ -3,14 +3,14 @@ import org.springframework.boot.web.client.RestTemplateCustomizer; /** - * RestTemplateCustomizer that registers the {@link ProblemResponseJackson2ErrorHandler}. + * RestTemplateCustomizer that registers the {@link ProblemResponseErrorHandler}. * - * @see ProblemResponseJackson2ErrorHandler + * @see ProblemResponseErrorHandler */ public class ProblemRestTemplateCustomizer extends AbstractProblemRestTemplateCustomizer implements RestTemplateCustomizer { - public ProblemRestTemplateCustomizer(AbstractProblemResponseErrorHandler problemResponseErrorHandler) { + public ProblemRestTemplateCustomizer(ProblemResponseErrorHandler problemResponseErrorHandler) { super(problemResponseErrorHandler); } diff --git a/belgif-rest-problem-spring-boot-4-client-starter/src/main/java/io/github/belgif/rest/problem/spring/client/ClientProblemAutoConfiguration.java b/belgif-rest-problem-spring-boot-4-client-starter/src/main/java/io/github/belgif/rest/problem/spring/client/ClientProblemAutoConfiguration.java index 63b45516..6c12db60 100644 --- a/belgif-rest-problem-spring-boot-4-client-starter/src/main/java/io/github/belgif/rest/problem/spring/client/ClientProblemAutoConfiguration.java +++ b/belgif-rest-problem-spring-boot-4-client-starter/src/main/java/io/github/belgif/rest/problem/spring/client/ClientProblemAutoConfiguration.java @@ -12,8 +12,6 @@ import org.springframework.web.client.RestTemplate; import org.springframework.web.reactive.function.client.WebClient; -import tools.jackson.databind.ObjectMapper; - /** * Spring Boot AutoConfiguration for rest-problem-spring. */ @@ -22,25 +20,17 @@ ProblemResponseJackson3ErrorHandler.class }) public class ClientProblemAutoConfiguration { - private ObjectMapper objectMapper; - - private ProblemResponseJackson3ErrorHandler problemResponseErrorHandler; - - public ClientProblemAutoConfiguration(ObjectMapper objectMapper, - ProblemResponseJackson3ErrorHandler problemResponseErrorHandler) { - this.objectMapper = objectMapper; - this.problemResponseErrorHandler = problemResponseErrorHandler; - } - @ConditionalOnClass({ RestClient.class, RestClientCustomizer.class }) @Bean - public ProblemRestClientCustomizer problemRestClientCustomizer() { + public ProblemRestClientCustomizer + problemRestClientCustomizer(ProblemResponseErrorHandler problemResponseErrorHandler) { return new ProblemRestClientCustomizer(problemResponseErrorHandler); } @ConditionalOnClass({ RestTemplate.class, RestTemplateCustomizer.class }) @Bean - public ProblemRestTemplateCustomizer problemRestTemplateCustomizer() { + public ProblemRestTemplateCustomizer + problemRestTemplateCustomizer(ProblemResponseErrorHandler problemResponseErrorHandler) { return new ProblemRestTemplateCustomizer(problemResponseErrorHandler); } diff --git a/belgif-rest-problem-spring-boot-4-client-starter/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemRestClientCustomizer.java b/belgif-rest-problem-spring-boot-4-client-starter/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemRestClientCustomizer.java index 82d21ec8..e5b7d6f4 100644 --- a/belgif-rest-problem-spring-boot-4-client-starter/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemRestClientCustomizer.java +++ b/belgif-rest-problem-spring-boot-4-client-starter/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemRestClientCustomizer.java @@ -3,13 +3,13 @@ import org.springframework.boot.restclient.RestClientCustomizer; /** - * RestClientCustomizer that registers the {@link ProblemResponseJackson3ErrorHandler}. + * RestClientCustomizer that registers the {@link ProblemResponseErrorHandler}. * - * @see ProblemResponseJackson3ErrorHandler + * @see ProblemResponseErrorHandler */ public class ProblemRestClientCustomizer extends AbstractProblemRestClientCustomizer implements RestClientCustomizer { - public ProblemRestClientCustomizer(AbstractProblemResponseErrorHandler errorHandler) { + public ProblemRestClientCustomizer(ProblemResponseErrorHandler errorHandler) { super(errorHandler); } diff --git a/belgif-rest-problem-spring-boot-4-client-starter/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemRestTemplateCustomizer.java b/belgif-rest-problem-spring-boot-4-client-starter/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemRestTemplateCustomizer.java index 205ff42a..9d00e73f 100644 --- a/belgif-rest-problem-spring-boot-4-client-starter/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemRestTemplateCustomizer.java +++ b/belgif-rest-problem-spring-boot-4-client-starter/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemRestTemplateCustomizer.java @@ -3,14 +3,14 @@ import org.springframework.boot.restclient.RestTemplateCustomizer; /** - * RestTemplateCustomizer that registers the {@link ProblemResponseJackson3ErrorHandler}. + * RestTemplateCustomizer that registers the {@link ProblemResponseErrorHandler}. * - * @see ProblemResponseJackson3ErrorHandler + * @see ProblemResponseErrorHandler */ public class ProblemRestTemplateCustomizer extends AbstractProblemRestTemplateCustomizer implements RestTemplateCustomizer { - public ProblemRestTemplateCustomizer(AbstractProblemResponseErrorHandler problemResponseErrorHandler) { + public ProblemRestTemplateCustomizer(ProblemResponseErrorHandler problemResponseErrorHandler) { super(problemResponseErrorHandler); } } diff --git a/belgif-rest-problem-spring/src/main/java/io/github/belgif/rest/problem/spring/client/AbstractProblemResponseErrorHandler.java b/belgif-rest-problem-spring/src/main/java/io/github/belgif/rest/problem/spring/client/AbstractProblemResponseErrorHandler.java index f4dc49a2..e7987027 100644 --- a/belgif-rest-problem-spring/src/main/java/io/github/belgif/rest/problem/spring/client/AbstractProblemResponseErrorHandler.java +++ b/belgif-rest-problem-spring/src/main/java/io/github/belgif/rest/problem/spring/client/AbstractProblemResponseErrorHandler.java @@ -15,10 +15,8 @@ import io.github.belgif.rest.problem.api.Problem; import io.github.belgif.rest.problem.spring.ProblemMediaType; -/** - * RestTemplate/RestClient error handler that converts problem responses to Problem exceptions. - */ -public abstract class AbstractProblemResponseErrorHandler extends DefaultResponseErrorHandler { +public abstract class AbstractProblemResponseErrorHandler extends DefaultResponseErrorHandler + implements ProblemResponseErrorHandler { private static final Logger LOGGER = LoggerFactory.getLogger(AbstractProblemResponseErrorHandler.class); diff --git a/belgif-rest-problem-spring/src/main/java/io/github/belgif/rest/problem/spring/client/AbstractProblemRestClientCustomizer.java b/belgif-rest-problem-spring/src/main/java/io/github/belgif/rest/problem/spring/client/AbstractProblemRestClientCustomizer.java index ba6eca0e..2d3d5272 100644 --- a/belgif-rest-problem-spring/src/main/java/io/github/belgif/rest/problem/spring/client/AbstractProblemRestClientCustomizer.java +++ b/belgif-rest-problem-spring/src/main/java/io/github/belgif/rest/problem/spring/client/AbstractProblemRestClientCustomizer.java @@ -3,15 +3,15 @@ import org.springframework.web.client.RestClient; /** - * RestClientCustomizer that registers the {@link AbstractProblemResponseErrorHandler}. + * RestClientCustomizer that registers the {@link ProblemResponseErrorHandler}. * - * @see AbstractProblemResponseErrorHandler + * @see ProblemResponseErrorHandler */ public abstract class AbstractProblemRestClientCustomizer { - private final AbstractProblemResponseErrorHandler errorHandler; + private final ProblemResponseErrorHandler errorHandler; - protected AbstractProblemRestClientCustomizer(AbstractProblemResponseErrorHandler errorHandler) { + protected AbstractProblemRestClientCustomizer(ProblemResponseErrorHandler errorHandler) { this.errorHandler = errorHandler; } diff --git a/belgif-rest-problem-spring/src/main/java/io/github/belgif/rest/problem/spring/client/AbstractProblemRestTemplateCustomizer.java b/belgif-rest-problem-spring/src/main/java/io/github/belgif/rest/problem/spring/client/AbstractProblemRestTemplateCustomizer.java index bde076c7..3c0a7e08 100644 --- a/belgif-rest-problem-spring/src/main/java/io/github/belgif/rest/problem/spring/client/AbstractProblemRestTemplateCustomizer.java +++ b/belgif-rest-problem-spring/src/main/java/io/github/belgif/rest/problem/spring/client/AbstractProblemRestTemplateCustomizer.java @@ -9,9 +9,9 @@ */ public abstract class AbstractProblemRestTemplateCustomizer { - private final AbstractProblemResponseErrorHandler problemResponseErrorHandler; + private final ProblemResponseErrorHandler problemResponseErrorHandler; - protected AbstractProblemRestTemplateCustomizer(AbstractProblemResponseErrorHandler problemResponseErrorHandler) { + protected AbstractProblemRestTemplateCustomizer(ProblemResponseErrorHandler problemResponseErrorHandler) { this.problemResponseErrorHandler = problemResponseErrorHandler; } diff --git a/belgif-rest-problem-spring/src/main/java/io/github/belgif/rest/problem/spring/client/AbstractProblemWebClientCustomizer.java b/belgif-rest-problem-spring/src/main/java/io/github/belgif/rest/problem/spring/client/AbstractProblemWebClientCustomizer.java index be79a0d4..fd9532b0 100644 --- a/belgif-rest-problem-spring/src/main/java/io/github/belgif/rest/problem/spring/client/AbstractProblemWebClientCustomizer.java +++ b/belgif-rest-problem-spring/src/main/java/io/github/belgif/rest/problem/spring/client/AbstractProblemWebClientCustomizer.java @@ -1,31 +1,14 @@ package io.github.belgif.rest.problem.spring.client; -import org.springframework.http.MediaType; -import org.springframework.web.reactive.function.client.ExchangeFilterFunction; import org.springframework.web.reactive.function.client.WebClient; -import io.github.belgif.rest.problem.api.Problem; -import io.github.belgif.rest.problem.spring.ProblemMediaType; -import reactor.core.publisher.Mono; - /** * WebClientCustomizer that registers a filter that converts problem responses to Problem exceptions. */ public abstract class AbstractProblemWebClientCustomizer { - private static final ExchangeFilterFunction PROBLEM_FILTER = - ExchangeFilterFunction.ofResponseProcessor(response -> { - MediaType mediaType = response.headers().contentType().orElse(null); - if (ProblemMediaType.INSTANCE.isCompatibleWith(mediaType) - || response.statusCode().isError() && MediaType.APPLICATION_JSON.isCompatibleWith(mediaType)) { - return response.bodyToMono(Problem.class).flatMap(Mono::error); - } else { - return Mono.just(response); - } - }); - public void customize(WebClient.Builder webClientBuilder) { - webClientBuilder.filter(PROBLEM_FILTER); + webClientBuilder.filter(WebClientFilter.PROBLEM_FILTER); } } diff --git a/belgif-rest-problem-spring/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemResponseErrorHandler.java b/belgif-rest-problem-spring/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemResponseErrorHandler.java new file mode 100644 index 00000000..f37478fd --- /dev/null +++ b/belgif-rest-problem-spring/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemResponseErrorHandler.java @@ -0,0 +1,9 @@ +package io.github.belgif.rest.problem.spring.client; + +import org.springframework.web.client.ResponseErrorHandler; + +/** + * RestTemplate/RestClient error handler that converts problem responses to Problem exceptions. + */ +public interface ProblemResponseErrorHandler extends ResponseErrorHandler { +} diff --git a/belgif-rest-problem-spring/src/main/java/io/github/belgif/rest/problem/spring/client/WebClientFilter.java b/belgif-rest-problem-spring/src/main/java/io/github/belgif/rest/problem/spring/client/WebClientFilter.java new file mode 100644 index 00000000..9dd9bf81 --- /dev/null +++ b/belgif-rest-problem-spring/src/main/java/io/github/belgif/rest/problem/spring/client/WebClientFilter.java @@ -0,0 +1,21 @@ +package io.github.belgif.rest.problem.spring.client; + +import org.springframework.http.MediaType; +import org.springframework.web.reactive.function.client.ExchangeFilterFunction; + +import io.github.belgif.rest.problem.api.Problem; +import io.github.belgif.rest.problem.spring.ProblemMediaType; +import reactor.core.publisher.Mono; + +public class WebClientFilter { + public static final ExchangeFilterFunction PROBLEM_FILTER = + ExchangeFilterFunction.ofResponseProcessor(response -> { + MediaType mediaType = response.headers().contentType().orElse(null); + if (ProblemMediaType.INSTANCE.isCompatibleWith(mediaType) + || response.statusCode().isError() && MediaType.APPLICATION_JSON.isCompatibleWith(mediaType)) { + return response.bodyToMono(Problem.class).flatMap(Mono::error); + } else { + return Mono.just(response); + } + }); +} From 9e46f35f12cb887a098f65f21b6a36a26d20c6a7 Mon Sep 17 00:00:00 2001 From: pvdb Date: Tue, 24 Feb 2026 14:05:12 +0100 Subject: [PATCH 11/23] add EnableProblemModule for use in non-Spring-Boot --- .../problem/spring/EnableProblemModule.java | 108 ++++++++++++++++++ 1 file changed, 108 insertions(+) create mode 100644 belgif-rest-problem-spring/src/main/java/io/github/belgif/rest/problem/spring/EnableProblemModule.java diff --git a/belgif-rest-problem-spring/src/main/java/io/github/belgif/rest/problem/spring/EnableProblemModule.java b/belgif-rest-problem-spring/src/main/java/io/github/belgif/rest/problem/spring/EnableProblemModule.java new file mode 100644 index 00000000..6e2d9d90 --- /dev/null +++ b/belgif-rest-problem-spring/src/main/java/io/github/belgif/rest/problem/spring/EnableProblemModule.java @@ -0,0 +1,108 @@ +package io.github.belgif.rest.problem.spring; + +import java.lang.annotation.*; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +import org.springframework.context.annotation.Import; +import org.springframework.context.annotation.ImportSelector; +import org.springframework.core.type.AnnotationMetadata; + +import io.github.belgif.rest.problem.spring.client.ProblemResponseJackson2ErrorHandler; +import io.github.belgif.rest.problem.spring.client.ProblemResponseJackson3ErrorHandler; +import io.github.belgif.rest.problem.spring.server.*; + +@Target(ElementType.TYPE) +@Retention(RetentionPolicy.RUNTIME) +@Documented +@Import(EnableProblemModule.ProblemModuleImportSelector.class) +/** + * Activate support of the belgif-rest-problem integration for spring. + * + * When running in a Spring Boot environment, use of the 'starter' modules is recommended, which require less + * configuration. + * + * Attributes select which optional integrations are activated. + * An application using this module, should provide an ObjectMapper bean on which the {@link SpringProblemModule} + * or @{@link SpringProblemModuleJackson3} support bean is registered. + */ +public @interface EnableProblemModule { + + /** + * Activate RestControllerAdvice for rest-problem support on any RestController + */ + boolean server() default true; + + /** + * Creates support beans for REST clients. + * Requires: + * - setting ProblemResponseErrorHandler as defaultStatusHandler on the client + * - or for @{@link org.springframework.web.reactive.function.client.WebClient}, setting the + * {@link io.github.belgif.rest.problem.spring.client.WebClientFilter.PROBLEM_FILTER} + */ + boolean client() default true; + + /** + * Whether to create support beans for Jackson 3, or when false, Jackson 2. + */ + boolean jackson3() default true; + + /** + * Convert Jakarta Bean Validation exceptions to badRequestProblem + * + * Only supported server-side. + * For proper problem messages, requires using the {@link AnnotationParameterNameProvider} on the used + * {@link jakarta.validation.Configuration} + */ + boolean beanValidation() default false; + + /** + * Convert input validation exceptions from the swagger-request-validator library to badRequestProblem + * + * Only supported server-side + */ + boolean swaggerRequestValidator() default false; + + class ProblemModuleImportSelector implements ImportSelector { + + @Override + public String[] selectImports(AnnotationMetadata importingClassMetadata) { + Map attributes = importingClassMetadata + .getAnnotationAttributes(EnableProblemModule.class.getName()); + boolean includeServer = (boolean) attributes.get("server"); + boolean includeClient = (boolean) attributes.get("client"); + boolean useJackson3 = (boolean) attributes.get("jackson3"); + boolean includeBeanValidation = (boolean) attributes.get("beanValidation"); + boolean includeSwaggerRequestValidator = (boolean) attributes.get("swaggerRequestValidator"); + + List imports = new ArrayList<>(); + + Class commonConfig = useJackson3 ? ProblemJackson3Configuration.class : ProblemJackson2Configuration.class; + imports.add(commonConfig.getName()); + + if (includeServer) { + imports.add(ProblemExceptionHandler.class.getName()); + Class routingExceptionsHandler = + useJackson3 ? RoutingExceptionsJackson3Handler.class : RoutingExceptionsJackson2Handler.class; + imports.add(routingExceptionsHandler.getName()); + + if (includeBeanValidation) { + imports.add(BeanValidationExceptionsHandler.class.getName()); + } + if (includeSwaggerRequestValidator) { + Class invalidRequestExceptionHandler = useJackson3 ? InvalidRequestExceptionJackson3Handler.class + : InvalidRequestExceptionJackson2Handler.class; + imports.add(invalidRequestExceptionHandler.getName()); + } + } + if (includeClient) { + Class clientConfig = + useJackson3 ? ProblemResponseJackson3ErrorHandler.class + : ProblemResponseJackson2ErrorHandler.class; + imports.add(clientConfig.getName()); + } + return imports.toArray(new String[imports.size()]); + } + } +} From aee523575232ffba8ff0f23388193871fa890e9e Mon Sep 17 00:00:00 2001 From: pvdb Date: Tue, 24 Feb 2026 14:17:46 +0100 Subject: [PATCH 12/23] - javadoc fixes - reference ProblemResponseErrorHandler interface where possible --- .../belgif/rest/problem/spring/EnableProblemModule.java | 6 +++--- .../client/AbstractProblemRestTemplateCustomizer.java | 4 ++-- .../client/AbstractProblemRestClientCustomizerTest.java | 2 +- .../client/AbstractProblemRestTemplateCustomizerTest.java | 2 +- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/belgif-rest-problem-spring/src/main/java/io/github/belgif/rest/problem/spring/EnableProblemModule.java b/belgif-rest-problem-spring/src/main/java/io/github/belgif/rest/problem/spring/EnableProblemModule.java index 6e2d9d90..4990c736 100644 --- a/belgif-rest-problem-spring/src/main/java/io/github/belgif/rest/problem/spring/EnableProblemModule.java +++ b/belgif-rest-problem-spring/src/main/java/io/github/belgif/rest/problem/spring/EnableProblemModule.java @@ -25,7 +25,7 @@ * * Attributes select which optional integrations are activated. * An application using this module, should provide an ObjectMapper bean on which the {@link SpringProblemModule} - * or @{@link SpringProblemModuleJackson3} support bean is registered. + * or {@link SpringProblemModuleJackson3} support bean is registered. */ public @interface EnableProblemModule { @@ -38,8 +38,8 @@ * Creates support beans for REST clients. * Requires: * - setting ProblemResponseErrorHandler as defaultStatusHandler on the client - * - or for @{@link org.springframework.web.reactive.function.client.WebClient}, setting the - * {@link io.github.belgif.rest.problem.spring.client.WebClientFilter.PROBLEM_FILTER} + * - or for {@link org.springframework.web.reactive.function.client.WebClient}, setting PROBLEM_FILTER from + * {@link io.github.belgif.rest.problem.spring.client.WebClientFilter} */ boolean client() default true; diff --git a/belgif-rest-problem-spring/src/main/java/io/github/belgif/rest/problem/spring/client/AbstractProblemRestTemplateCustomizer.java b/belgif-rest-problem-spring/src/main/java/io/github/belgif/rest/problem/spring/client/AbstractProblemRestTemplateCustomizer.java index 3c0a7e08..9061dc49 100644 --- a/belgif-rest-problem-spring/src/main/java/io/github/belgif/rest/problem/spring/client/AbstractProblemRestTemplateCustomizer.java +++ b/belgif-rest-problem-spring/src/main/java/io/github/belgif/rest/problem/spring/client/AbstractProblemRestTemplateCustomizer.java @@ -3,9 +3,9 @@ import org.springframework.web.client.RestTemplate; /** - * RestTemplateCustomizer that registers the {@link AbstractProblemResponseErrorHandler}. + * RestTemplateCustomizer that registers the {@link ProblemResponseErrorHandler}. * - * @see AbstractProblemResponseErrorHandler + * @see ProblemResponseErrorHandler */ public abstract class AbstractProblemRestTemplateCustomizer { diff --git a/belgif-rest-problem-spring/src/test/java/io/github/belgif/rest/problem/spring/client/AbstractProblemRestClientCustomizerTest.java b/belgif-rest-problem-spring/src/test/java/io/github/belgif/rest/problem/spring/client/AbstractProblemRestClientCustomizerTest.java index af3f2a0f..2b489637 100644 --- a/belgif-rest-problem-spring/src/test/java/io/github/belgif/rest/problem/spring/client/AbstractProblemRestClientCustomizerTest.java +++ b/belgif-rest-problem-spring/src/test/java/io/github/belgif/rest/problem/spring/client/AbstractProblemRestClientCustomizerTest.java @@ -13,7 +13,7 @@ class AbstractProblemRestClientCustomizerTest { @Test void customize() { - AbstractProblemResponseErrorHandler handler = mock(AbstractProblemResponseErrorHandler.class); + ProblemResponseErrorHandler handler = mock(ProblemResponseErrorHandler.class); AbstractProblemRestClientCustomizer customizer = new AbstractProblemRestClientCustomizer(handler) { }; RestClient.Builder builder = RestClient.builder(); diff --git a/belgif-rest-problem-spring/src/test/java/io/github/belgif/rest/problem/spring/client/AbstractProblemRestTemplateCustomizerTest.java b/belgif-rest-problem-spring/src/test/java/io/github/belgif/rest/problem/spring/client/AbstractProblemRestTemplateCustomizerTest.java index 5e16423a..4c1809d7 100644 --- a/belgif-rest-problem-spring/src/test/java/io/github/belgif/rest/problem/spring/client/AbstractProblemRestTemplateCustomizerTest.java +++ b/belgif-rest-problem-spring/src/test/java/io/github/belgif/rest/problem/spring/client/AbstractProblemRestTemplateCustomizerTest.java @@ -10,7 +10,7 @@ class AbstractProblemRestTemplateCustomizerTest { @Test void customize() { - AbstractProblemResponseErrorHandler handler = mock(AbstractProblemResponseErrorHandler.class); + ProblemResponseErrorHandler handler = mock(ProblemResponseErrorHandler.class); AbstractProblemRestTemplateCustomizer customizer = new AbstractProblemRestTemplateCustomizer(handler) { }; RestTemplate restTemplate = new RestTemplate(); From 2080a17848d19dcbced337ed32807a4746c64a27 Mon Sep 17 00:00:00 2001 From: pvdb Date: Tue, 24 Feb 2026 15:18:15 +0100 Subject: [PATCH 13/23] instantiate beans within @Configuration classes instead of @Import of component --- .../ClientProblemAutoConfiguration.java | 10 ++++++-- .../ClientProblemAutoConfiguration.java | 10 ++++++-- .../spring/ProblemJackson2Configuration.java | 25 ++++++++++++++++--- .../spring/ProblemJackson3Configuration.java | 25 ++++++++++++++++--- 4 files changed, 60 insertions(+), 10 deletions(-) diff --git a/belgif-rest-problem-spring-boot-3-client-starter/src/main/java/io/github/belgif/rest/problem/spring/client/ClientProblemAutoConfiguration.java b/belgif-rest-problem-spring-boot-3-client-starter/src/main/java/io/github/belgif/rest/problem/spring/client/ClientProblemAutoConfiguration.java index ad53bab1..ec5c39a0 100644 --- a/belgif-rest-problem-spring-boot-3-client-starter/src/main/java/io/github/belgif/rest/problem/spring/client/ClientProblemAutoConfiguration.java +++ b/belgif-rest-problem-spring-boot-3-client-starter/src/main/java/io/github/belgif/rest/problem/spring/client/ClientProblemAutoConfiguration.java @@ -12,16 +12,22 @@ import org.springframework.web.client.RestTemplate; import org.springframework.web.reactive.function.client.WebClient; +import com.fasterxml.jackson.databind.ObjectMapper; + import io.github.belgif.rest.problem.spring.ProblemJackson2Configuration; /** * Spring Boot AutoConfiguration for rest-problem-spring. */ @AutoConfiguration -@Import({ ProblemJackson2Configuration.class, JacksonAutoConfiguration.class, - ProblemResponseJackson2ErrorHandler.class }) +@Import({ ProblemJackson2Configuration.class, JacksonAutoConfiguration.class }) public class ClientProblemAutoConfiguration { + @Bean + public ProblemResponseErrorHandler problemResponseErrorHandler(ObjectMapper objectMapper) { + return new ProblemResponseJackson2ErrorHandler(objectMapper); + } + @ConditionalOnClass({ RestClient.class, RestClientCustomizer.class }) @Bean public ProblemRestClientCustomizer diff --git a/belgif-rest-problem-spring-boot-4-client-starter/src/main/java/io/github/belgif/rest/problem/spring/client/ClientProblemAutoConfiguration.java b/belgif-rest-problem-spring-boot-4-client-starter/src/main/java/io/github/belgif/rest/problem/spring/client/ClientProblemAutoConfiguration.java index 6c12db60..b9f321bd 100644 --- a/belgif-rest-problem-spring-boot-4-client-starter/src/main/java/io/github/belgif/rest/problem/spring/client/ClientProblemAutoConfiguration.java +++ b/belgif-rest-problem-spring-boot-4-client-starter/src/main/java/io/github/belgif/rest/problem/spring/client/ClientProblemAutoConfiguration.java @@ -12,14 +12,20 @@ import org.springframework.web.client.RestTemplate; import org.springframework.web.reactive.function.client.WebClient; +import tools.jackson.databind.ObjectMapper; + /** * Spring Boot AutoConfiguration for rest-problem-spring. */ @AutoConfiguration -@Import({ io.github.belgif.rest.problem.spring.ProblemJackson3Configuration.class, JacksonAutoConfiguration.class, - ProblemResponseJackson3ErrorHandler.class }) +@Import({ io.github.belgif.rest.problem.spring.ProblemJackson3Configuration.class, JacksonAutoConfiguration.class }) public class ClientProblemAutoConfiguration { + @Bean + public ProblemResponseErrorHandler problemResponseErrorHandler(ObjectMapper objectMapper) { + return new ProblemResponseJackson3ErrorHandler(objectMapper); + } + @ConditionalOnClass({ RestClient.class, RestClientCustomizer.class }) @Bean public ProblemRestClientCustomizer diff --git a/belgif-rest-problem-spring/src/main/java/io/github/belgif/rest/problem/spring/ProblemJackson2Configuration.java b/belgif-rest-problem-spring/src/main/java/io/github/belgif/rest/problem/spring/ProblemJackson2Configuration.java index f4a0c5b7..98263e7d 100644 --- a/belgif-rest-problem-spring/src/main/java/io/github/belgif/rest/problem/spring/ProblemJackson2Configuration.java +++ b/belgif-rest-problem-spring/src/main/java/io/github/belgif/rest/problem/spring/ProblemJackson2Configuration.java @@ -1,10 +1,29 @@ package io.github.belgif.rest.problem.spring; +import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.Import; @Configuration -@Import({ SpringProblemModule.class, ProblemConfigurationProperties.class, ProblemExtConfigurationProperties.class, - SpringProblemTypeRegistry.class }) public class ProblemJackson2Configuration { + + @Bean + ProblemConfigurationProperties problemConfigurationProperties() { + return new ProblemConfigurationProperties(); + } + + @Bean + public ProblemExtConfigurationProperties problemExtConfigurationProperties() { + return new ProblemExtConfigurationProperties(); + } + + @Bean + public SpringProblemTypeRegistry + springProblemTypeRegistry(ProblemConfigurationProperties problemConfigurationProperties) { + return new SpringProblemTypeRegistry(problemConfigurationProperties); + } + + @Bean + public SpringProblemModule springProblemModule(SpringProblemTypeRegistry springProblemTypeRegistry) { + return new SpringProblemModule(springProblemTypeRegistry); + } } diff --git a/belgif-rest-problem-spring/src/main/java/io/github/belgif/rest/problem/spring/ProblemJackson3Configuration.java b/belgif-rest-problem-spring/src/main/java/io/github/belgif/rest/problem/spring/ProblemJackson3Configuration.java index 54ec9826..23522461 100644 --- a/belgif-rest-problem-spring/src/main/java/io/github/belgif/rest/problem/spring/ProblemJackson3Configuration.java +++ b/belgif-rest-problem-spring/src/main/java/io/github/belgif/rest/problem/spring/ProblemJackson3Configuration.java @@ -1,10 +1,29 @@ package io.github.belgif.rest.problem.spring; +import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.Import; @Configuration -@Import({ SpringProblemModuleJackson3.class, ProblemConfigurationProperties.class, - ProblemExtConfigurationProperties.class, SpringProblemTypeRegistry.class }) public class ProblemJackson3Configuration { + + @Bean + ProblemConfigurationProperties problemConfigurationProperties() { + return new ProblemConfigurationProperties(); + } + + @Bean + public ProblemExtConfigurationProperties problemExtConfigurationProperties() { + return new ProblemExtConfigurationProperties(); + } + + @Bean + public SpringProblemTypeRegistry + springProblemTypeRegistry(ProblemConfigurationProperties problemConfigurationProperties) { + return new SpringProblemTypeRegistry(problemConfigurationProperties); + } + + @Bean + public SpringProblemModuleJackson3 springProblemModule(SpringProblemTypeRegistry springProblemTypeRegistry) { + return new SpringProblemModuleJackson3(springProblemTypeRegistry); + } } From 693e8fd64317b3e9cbfbce9affaa3e79cee1ddad Mon Sep 17 00:00:00 2001 From: pvdb Date: Thu, 26 Feb 2026 11:13:47 +0100 Subject: [PATCH 14/23] remove abstract classes for customizers in spring module, bc they're spring boot functionality and have very little code --- .../client/ProblemRestClientCustomizer.java | 13 ++++++++--- .../client/ProblemRestTemplateCustomizer.java | 13 ++++++++--- .../client/ProblemWebClientCustomizer.java | 6 ++++- ...blemValidationConfigurationCustomizer.java | 8 +++++-- .../client/ProblemRestClientCustomizer.java | 13 ++++++++--- .../client/ProblemRestTemplateCustomizer.java | 14 +++++++++--- .../client/ProblemWebClientCustomizer.java | 7 +++++- .../ProblemRestClientCustomizerTest.java | 4 ++-- .../ProblemRestTemplateCustomizerTest.java | 4 ++-- .../ProblemWebClientCustomizerTest.java | 4 ++-- ...blemValidationConfigurationCustomizer.java | 8 +++++-- ...ValidationConfigurationCustomizerTest.java | 7 +++--- .../AbstractProblemRestClientCustomizer.java | 22 ------------------- ...AbstractProblemRestTemplateCustomizer.java | 22 ------------------- .../AbstractProblemWebClientCustomizer.java | 14 ------------ 15 files changed, 73 insertions(+), 86 deletions(-) rename belgif-rest-problem-spring/src/test/java/io/github/belgif/rest/problem/spring/client/AbstractProblemRestClientCustomizerTest.java => belgif-rest-problem-spring-boot-4-client-starter/src/test/java/io/github/belgif/rest/problem/spring/client/ProblemRestClientCustomizerTest.java (81%) rename belgif-rest-problem-spring/src/test/java/io/github/belgif/rest/problem/spring/client/AbstractProblemRestTemplateCustomizerTest.java => belgif-rest-problem-spring-boot-4-client-starter/src/test/java/io/github/belgif/rest/problem/spring/client/ProblemRestTemplateCustomizerTest.java (76%) rename belgif-rest-problem-spring/src/test/java/io/github/belgif/rest/problem/spring/client/AbstractProblemWebClientCustomizerTest.java => belgif-rest-problem-spring-boot-4-client-starter/src/test/java/io/github/belgif/rest/problem/spring/client/ProblemWebClientCustomizerTest.java (96%) rename belgif-rest-problem-spring/src/test/java/io/github/belgif/rest/problem/spring/server/AbstractProblemValidationConfigurationCustomizerTest.java => belgif-rest-problem-spring-boot-4-server-starter/src/test/java/io/github/belgif/rest/problem/spring/server/ProblemValidationConfigurationCustomizerTest.java (80%) delete mode 100644 belgif-rest-problem-spring/src/main/java/io/github/belgif/rest/problem/spring/client/AbstractProblemRestClientCustomizer.java delete mode 100644 belgif-rest-problem-spring/src/main/java/io/github/belgif/rest/problem/spring/client/AbstractProblemRestTemplateCustomizer.java delete mode 100644 belgif-rest-problem-spring/src/main/java/io/github/belgif/rest/problem/spring/client/AbstractProblemWebClientCustomizer.java diff --git a/belgif-rest-problem-spring-boot-3-client-starter/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemRestClientCustomizer.java b/belgif-rest-problem-spring-boot-3-client-starter/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemRestClientCustomizer.java index 72da1b8a..582349aa 100644 --- a/belgif-rest-problem-spring-boot-3-client-starter/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemRestClientCustomizer.java +++ b/belgif-rest-problem-spring-boot-3-client-starter/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemRestClientCustomizer.java @@ -1,15 +1,22 @@ package io.github.belgif.rest.problem.spring.client; import org.springframework.boot.web.client.RestClientCustomizer; +import org.springframework.web.client.RestClient; /** * RestClientCustomizer that registers the {@link ProblemResponseErrorHandler}. * * @see ProblemResponseErrorHandler */ -public class ProblemRestClientCustomizer extends AbstractProblemRestClientCustomizer implements RestClientCustomizer { +public class ProblemRestClientCustomizer implements RestClientCustomizer { - public ProblemRestClientCustomizer(ProblemResponseErrorHandler errorHandler) { - super(errorHandler); + private final ProblemResponseErrorHandler errorHandler; + + protected ProblemRestClientCustomizer(ProblemResponseErrorHandler errorHandler) { + this.errorHandler = errorHandler; + } + + public void customize(RestClient.Builder restClientBuilder) { + restClientBuilder.defaultStatusHandler(errorHandler); } } diff --git a/belgif-rest-problem-spring-boot-3-client-starter/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemRestTemplateCustomizer.java b/belgif-rest-problem-spring-boot-3-client-starter/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemRestTemplateCustomizer.java index 2a536fa3..3a5d6abe 100644 --- a/belgif-rest-problem-spring-boot-3-client-starter/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemRestTemplateCustomizer.java +++ b/belgif-rest-problem-spring-boot-3-client-starter/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemRestTemplateCustomizer.java @@ -1,17 +1,24 @@ package io.github.belgif.rest.problem.spring.client; import org.springframework.boot.web.client.RestTemplateCustomizer; +import org.springframework.web.client.RestTemplate; /** * RestTemplateCustomizer that registers the {@link ProblemResponseErrorHandler}. * * @see ProblemResponseErrorHandler */ -public class ProblemRestTemplateCustomizer extends AbstractProblemRestTemplateCustomizer - implements RestTemplateCustomizer { +public class ProblemRestTemplateCustomizer implements RestTemplateCustomizer { + + private final ProblemResponseErrorHandler problemResponseErrorHandler; public ProblemRestTemplateCustomizer(ProblemResponseErrorHandler problemResponseErrorHandler) { - super(problemResponseErrorHandler); + this.problemResponseErrorHandler = problemResponseErrorHandler; + + } + + public void customize(RestTemplate restTemplate) { + restTemplate.setErrorHandler(problemResponseErrorHandler); } } diff --git a/belgif-rest-problem-spring-boot-3-client-starter/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemWebClientCustomizer.java b/belgif-rest-problem-spring-boot-3-client-starter/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemWebClientCustomizer.java index 396977d7..c69915f7 100644 --- a/belgif-rest-problem-spring-boot-3-client-starter/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemWebClientCustomizer.java +++ b/belgif-rest-problem-spring-boot-3-client-starter/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemWebClientCustomizer.java @@ -1,10 +1,14 @@ package io.github.belgif.rest.problem.spring.client; import org.springframework.boot.web.reactive.function.client.WebClientCustomizer; +import org.springframework.web.reactive.function.client.WebClient; /** * WebClientCustomizer that registers a filter that converts problem responses to Problem exceptions. */ -public class ProblemWebClientCustomizer extends AbstractProblemWebClientCustomizer implements WebClientCustomizer { +public class ProblemWebClientCustomizer implements WebClientCustomizer { + public void customize(WebClient.Builder webClientBuilder) { + webClientBuilder.filter(WebClientFilter.PROBLEM_FILTER); + } } diff --git a/belgif-rest-problem-spring-boot-3-server-starter/src/main/java/io/github/belgif/rest/problem/spring/server/ProblemValidationConfigurationCustomizer.java b/belgif-rest-problem-spring-boot-3-server-starter/src/main/java/io/github/belgif/rest/problem/spring/server/ProblemValidationConfigurationCustomizer.java index d805ff5a..d9e612af 100644 --- a/belgif-rest-problem-spring-boot-3-server-starter/src/main/java/io/github/belgif/rest/problem/spring/server/ProblemValidationConfigurationCustomizer.java +++ b/belgif-rest-problem-spring-boot-3-server-starter/src/main/java/io/github/belgif/rest/problem/spring/server/ProblemValidationConfigurationCustomizer.java @@ -1,11 +1,15 @@ package io.github.belgif.rest.problem.spring.server; +import jakarta.validation.Configuration; + import org.springframework.boot.autoconfigure.validation.ValidationConfigurationCustomizer; /** * ValidationConfigurationCustomizer that registers the AnnotationParameterNameProvider. */ -public class ProblemValidationConfigurationCustomizer extends AbstractProblemValidationConfigurationCustomizer - implements ValidationConfigurationCustomizer { +public class ProblemValidationConfigurationCustomizer implements ValidationConfigurationCustomizer { + public void customize(Configuration configuration) { + configuration.parameterNameProvider(new AnnotationParameterNameProvider()); + } } diff --git a/belgif-rest-problem-spring-boot-4-client-starter/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemRestClientCustomizer.java b/belgif-rest-problem-spring-boot-4-client-starter/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemRestClientCustomizer.java index e5b7d6f4..9621df39 100644 --- a/belgif-rest-problem-spring-boot-4-client-starter/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemRestClientCustomizer.java +++ b/belgif-rest-problem-spring-boot-4-client-starter/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemRestClientCustomizer.java @@ -1,16 +1,23 @@ package io.github.belgif.rest.problem.spring.client; import org.springframework.boot.restclient.RestClientCustomizer; +import org.springframework.web.client.RestClient; /** * RestClientCustomizer that registers the {@link ProblemResponseErrorHandler}. * * @see ProblemResponseErrorHandler */ -public class ProblemRestClientCustomizer extends AbstractProblemRestClientCustomizer implements RestClientCustomizer { +public class ProblemRestClientCustomizer implements RestClientCustomizer { - public ProblemRestClientCustomizer(ProblemResponseErrorHandler errorHandler) { - super(errorHandler); + private final ProblemResponseErrorHandler errorHandler; + + protected ProblemRestClientCustomizer(ProblemResponseErrorHandler errorHandler) { + this.errorHandler = errorHandler; + } + + public void customize(RestClient.Builder restClientBuilder) { + restClientBuilder.defaultStatusHandler(errorHandler); } } diff --git a/belgif-rest-problem-spring-boot-4-client-starter/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemRestTemplateCustomizer.java b/belgif-rest-problem-spring-boot-4-client-starter/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemRestTemplateCustomizer.java index 9d00e73f..c4bb7ec8 100644 --- a/belgif-rest-problem-spring-boot-4-client-starter/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemRestTemplateCustomizer.java +++ b/belgif-rest-problem-spring-boot-4-client-starter/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemRestTemplateCustomizer.java @@ -1,16 +1,24 @@ package io.github.belgif.rest.problem.spring.client; import org.springframework.boot.restclient.RestTemplateCustomizer; +import org.springframework.web.client.RestTemplate; /** * RestTemplateCustomizer that registers the {@link ProblemResponseErrorHandler}. * * @see ProblemResponseErrorHandler */ -public class ProblemRestTemplateCustomizer extends AbstractProblemRestTemplateCustomizer - implements RestTemplateCustomizer { +public class ProblemRestTemplateCustomizer implements RestTemplateCustomizer { + + private final ProblemResponseErrorHandler problemResponseErrorHandler; public ProblemRestTemplateCustomizer(ProblemResponseErrorHandler problemResponseErrorHandler) { - super(problemResponseErrorHandler); + this.problemResponseErrorHandler = problemResponseErrorHandler; + } + + public void customize(RestTemplate restTemplate) { + restTemplate.setErrorHandler(problemResponseErrorHandler); + } + } diff --git a/belgif-rest-problem-spring-boot-4-client-starter/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemWebClientCustomizer.java b/belgif-rest-problem-spring-boot-4-client-starter/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemWebClientCustomizer.java index 568824b9..797ef3d0 100644 --- a/belgif-rest-problem-spring-boot-4-client-starter/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemWebClientCustomizer.java +++ b/belgif-rest-problem-spring-boot-4-client-starter/src/main/java/io/github/belgif/rest/problem/spring/client/ProblemWebClientCustomizer.java @@ -1,10 +1,15 @@ package io.github.belgif.rest.problem.spring.client; import org.springframework.boot.webclient.WebClientCustomizer; +import org.springframework.web.reactive.function.client.WebClient; /** * WebClientCustomizer that registers a filter that converts problem responses to Problem exceptions. */ -public class ProblemWebClientCustomizer extends AbstractProblemWebClientCustomizer implements WebClientCustomizer { +public class ProblemWebClientCustomizer implements WebClientCustomizer { + + public void customize(WebClient.Builder webClientBuilder) { + webClientBuilder.filter(WebClientFilter.PROBLEM_FILTER); + } } diff --git a/belgif-rest-problem-spring/src/test/java/io/github/belgif/rest/problem/spring/client/AbstractProblemRestClientCustomizerTest.java b/belgif-rest-problem-spring-boot-4-client-starter/src/test/java/io/github/belgif/rest/problem/spring/client/ProblemRestClientCustomizerTest.java similarity index 81% rename from belgif-rest-problem-spring/src/test/java/io/github/belgif/rest/problem/spring/client/AbstractProblemRestClientCustomizerTest.java rename to belgif-rest-problem-spring-boot-4-client-starter/src/test/java/io/github/belgif/rest/problem/spring/client/ProblemRestClientCustomizerTest.java index 2b489637..ef51f745 100644 --- a/belgif-rest-problem-spring/src/test/java/io/github/belgif/rest/problem/spring/client/AbstractProblemRestClientCustomizerTest.java +++ b/belgif-rest-problem-spring-boot-4-client-starter/src/test/java/io/github/belgif/rest/problem/spring/client/ProblemRestClientCustomizerTest.java @@ -9,12 +9,12 @@ import org.springframework.test.util.ReflectionTestUtils; import org.springframework.web.client.RestClient; -class AbstractProblemRestClientCustomizerTest { +class ProblemRestClientCustomizerTest { @Test void customize() { ProblemResponseErrorHandler handler = mock(ProblemResponseErrorHandler.class); - AbstractProblemRestClientCustomizer customizer = new AbstractProblemRestClientCustomizer(handler) { + ProblemRestClientCustomizer customizer = new ProblemRestClientCustomizer(handler) { }; RestClient.Builder builder = RestClient.builder(); customizer.customize(builder); diff --git a/belgif-rest-problem-spring/src/test/java/io/github/belgif/rest/problem/spring/client/AbstractProblemRestTemplateCustomizerTest.java b/belgif-rest-problem-spring-boot-4-client-starter/src/test/java/io/github/belgif/rest/problem/spring/client/ProblemRestTemplateCustomizerTest.java similarity index 76% rename from belgif-rest-problem-spring/src/test/java/io/github/belgif/rest/problem/spring/client/AbstractProblemRestTemplateCustomizerTest.java rename to belgif-rest-problem-spring-boot-4-client-starter/src/test/java/io/github/belgif/rest/problem/spring/client/ProblemRestTemplateCustomizerTest.java index 4c1809d7..46c9a121 100644 --- a/belgif-rest-problem-spring/src/test/java/io/github/belgif/rest/problem/spring/client/AbstractProblemRestTemplateCustomizerTest.java +++ b/belgif-rest-problem-spring-boot-4-client-starter/src/test/java/io/github/belgif/rest/problem/spring/client/ProblemRestTemplateCustomizerTest.java @@ -6,12 +6,12 @@ import org.junit.jupiter.api.Test; import org.springframework.web.client.RestTemplate; -class AbstractProblemRestTemplateCustomizerTest { +class ProblemRestTemplateCustomizerTest { @Test void customize() { ProblemResponseErrorHandler handler = mock(ProblemResponseErrorHandler.class); - AbstractProblemRestTemplateCustomizer customizer = new AbstractProblemRestTemplateCustomizer(handler) { + ProblemRestTemplateCustomizer customizer = new ProblemRestTemplateCustomizer(handler) { }; RestTemplate restTemplate = new RestTemplate(); customizer.customize(restTemplate); diff --git a/belgif-rest-problem-spring/src/test/java/io/github/belgif/rest/problem/spring/client/AbstractProblemWebClientCustomizerTest.java b/belgif-rest-problem-spring-boot-4-client-starter/src/test/java/io/github/belgif/rest/problem/spring/client/ProblemWebClientCustomizerTest.java similarity index 96% rename from belgif-rest-problem-spring/src/test/java/io/github/belgif/rest/problem/spring/client/AbstractProblemWebClientCustomizerTest.java rename to belgif-rest-problem-spring-boot-4-client-starter/src/test/java/io/github/belgif/rest/problem/spring/client/ProblemWebClientCustomizerTest.java index 82eadb73..1d72d27d 100644 --- a/belgif-rest-problem-spring/src/test/java/io/github/belgif/rest/problem/spring/client/AbstractProblemWebClientCustomizerTest.java +++ b/belgif-rest-problem-spring-boot-4-client-starter/src/test/java/io/github/belgif/rest/problem/spring/client/ProblemWebClientCustomizerTest.java @@ -20,9 +20,9 @@ import reactor.core.publisher.Mono; @ExtendWith(MockitoExtension.class) -class AbstractProblemWebClientCustomizerTest { +class ProblemWebClientCustomizerTest { - private final AbstractProblemWebClientCustomizer customizer = new AbstractProblemWebClientCustomizer() { + private final ProblemWebClientCustomizer customizer = new ProblemWebClientCustomizer() { }; @Mock diff --git a/belgif-rest-problem-spring-boot-4-server-starter/src/main/java/io/github/belgif/rest/problem/spring/server/ProblemValidationConfigurationCustomizer.java b/belgif-rest-problem-spring-boot-4-server-starter/src/main/java/io/github/belgif/rest/problem/spring/server/ProblemValidationConfigurationCustomizer.java index 66a5ab8e..d779d3bc 100644 --- a/belgif-rest-problem-spring-boot-4-server-starter/src/main/java/io/github/belgif/rest/problem/spring/server/ProblemValidationConfigurationCustomizer.java +++ b/belgif-rest-problem-spring-boot-4-server-starter/src/main/java/io/github/belgif/rest/problem/spring/server/ProblemValidationConfigurationCustomizer.java @@ -1,11 +1,15 @@ package io.github.belgif.rest.problem.spring.server; +import jakarta.validation.Configuration; + import org.springframework.boot.validation.autoconfigure.ValidationConfigurationCustomizer; /** * ValidationConfigurationCustomizer that registers the AnnotationParameterNameProvider. */ -public class ProblemValidationConfigurationCustomizer extends AbstractProblemValidationConfigurationCustomizer - implements ValidationConfigurationCustomizer { +public class ProblemValidationConfigurationCustomizer implements ValidationConfigurationCustomizer { + public void customize(Configuration configuration) { + configuration.parameterNameProvider(new AnnotationParameterNameProvider()); + } } diff --git a/belgif-rest-problem-spring/src/test/java/io/github/belgif/rest/problem/spring/server/AbstractProblemValidationConfigurationCustomizerTest.java b/belgif-rest-problem-spring-boot-4-server-starter/src/test/java/io/github/belgif/rest/problem/spring/server/ProblemValidationConfigurationCustomizerTest.java similarity index 80% rename from belgif-rest-problem-spring/src/test/java/io/github/belgif/rest/problem/spring/server/AbstractProblemValidationConfigurationCustomizerTest.java rename to belgif-rest-problem-spring-boot-4-server-starter/src/test/java/io/github/belgif/rest/problem/spring/server/ProblemValidationConfigurationCustomizerTest.java index a135fa04..72d543d9 100644 --- a/belgif-rest-problem-spring/src/test/java/io/github/belgif/rest/problem/spring/server/AbstractProblemValidationConfigurationCustomizerTest.java +++ b/belgif-rest-problem-spring-boot-4-server-starter/src/test/java/io/github/belgif/rest/problem/spring/server/ProblemValidationConfigurationCustomizerTest.java @@ -14,11 +14,10 @@ import org.mockito.junit.jupiter.MockitoExtension; @ExtendWith(MockitoExtension.class) -class AbstractProblemValidationConfigurationCustomizerTest { +class ProblemValidationConfigurationCustomizerTest { - private final AbstractProblemValidationConfigurationCustomizer customizer = - new AbstractProblemValidationConfigurationCustomizer() { - }; + private final ProblemValidationConfigurationCustomizer customizer = + new ProblemValidationConfigurationCustomizer(); @Mock private Configuration configuration; diff --git a/belgif-rest-problem-spring/src/main/java/io/github/belgif/rest/problem/spring/client/AbstractProblemRestClientCustomizer.java b/belgif-rest-problem-spring/src/main/java/io/github/belgif/rest/problem/spring/client/AbstractProblemRestClientCustomizer.java deleted file mode 100644 index 2d3d5272..00000000 --- a/belgif-rest-problem-spring/src/main/java/io/github/belgif/rest/problem/spring/client/AbstractProblemRestClientCustomizer.java +++ /dev/null @@ -1,22 +0,0 @@ -package io.github.belgif.rest.problem.spring.client; - -import org.springframework.web.client.RestClient; - -/** - * RestClientCustomizer that registers the {@link ProblemResponseErrorHandler}. - * - * @see ProblemResponseErrorHandler - */ -public abstract class AbstractProblemRestClientCustomizer { - - private final ProblemResponseErrorHandler errorHandler; - - protected AbstractProblemRestClientCustomizer(ProblemResponseErrorHandler errorHandler) { - this.errorHandler = errorHandler; - } - - public void customize(RestClient.Builder restClientBuilder) { - restClientBuilder.defaultStatusHandler(errorHandler); - } - -} diff --git a/belgif-rest-problem-spring/src/main/java/io/github/belgif/rest/problem/spring/client/AbstractProblemRestTemplateCustomizer.java b/belgif-rest-problem-spring/src/main/java/io/github/belgif/rest/problem/spring/client/AbstractProblemRestTemplateCustomizer.java deleted file mode 100644 index 9061dc49..00000000 --- a/belgif-rest-problem-spring/src/main/java/io/github/belgif/rest/problem/spring/client/AbstractProblemRestTemplateCustomizer.java +++ /dev/null @@ -1,22 +0,0 @@ -package io.github.belgif.rest.problem.spring.client; - -import org.springframework.web.client.RestTemplate; - -/** - * RestTemplateCustomizer that registers the {@link ProblemResponseErrorHandler}. - * - * @see ProblemResponseErrorHandler - */ -public abstract class AbstractProblemRestTemplateCustomizer { - - private final ProblemResponseErrorHandler problemResponseErrorHandler; - - protected AbstractProblemRestTemplateCustomizer(ProblemResponseErrorHandler problemResponseErrorHandler) { - this.problemResponseErrorHandler = problemResponseErrorHandler; - } - - public void customize(RestTemplate restTemplate) { - restTemplate.setErrorHandler(problemResponseErrorHandler); - } - -} diff --git a/belgif-rest-problem-spring/src/main/java/io/github/belgif/rest/problem/spring/client/AbstractProblemWebClientCustomizer.java b/belgif-rest-problem-spring/src/main/java/io/github/belgif/rest/problem/spring/client/AbstractProblemWebClientCustomizer.java deleted file mode 100644 index fd9532b0..00000000 --- a/belgif-rest-problem-spring/src/main/java/io/github/belgif/rest/problem/spring/client/AbstractProblemWebClientCustomizer.java +++ /dev/null @@ -1,14 +0,0 @@ -package io.github.belgif.rest.problem.spring.client; - -import org.springframework.web.reactive.function.client.WebClient; - -/** - * WebClientCustomizer that registers a filter that converts problem responses to Problem exceptions. - */ -public abstract class AbstractProblemWebClientCustomizer { - - public void customize(WebClient.Builder webClientBuilder) { - webClientBuilder.filter(WebClientFilter.PROBLEM_FILTER); - } - -} From 005f51cae264643df70ebc5d8e3f075879ba426c Mon Sep 17 00:00:00 2001 From: pvdb Date: Tue, 3 Mar 2026 10:47:39 +0100 Subject: [PATCH 15/23] change the way it-common-jakarta is generated, to improve integration with tooling --- .../pom.xml | 150 ++++++++++++++++-- .../belgif-rest-problem-it-common/pom.xml | 19 ++- 2 files changed, 155 insertions(+), 14 deletions(-) diff --git a/belgif-rest-problem-it/belgif-rest-problem-it-common-jakarta/pom.xml b/belgif-rest-problem-it/belgif-rest-problem-it-common-jakarta/pom.xml index 40749991..430af252 100644 --- a/belgif-rest-problem-it/belgif-rest-problem-it-common-jakarta/pom.xml +++ b/belgif-rest-problem-it/belgif-rest-problem-it-common-jakarta/pom.xml @@ -1,6 +1,6 @@ + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 @@ -12,26 +12,150 @@ belgif-rest-problem-it-common-jakarta ${project.groupId}:${project.artifactId} + + + io.github.belgif.rest.problem + belgif-rest-problem + ${project.version} + + + io.github.belgif.rest.problem + belgif-rest-problem-apt + ${project.version} + true + + + jakarta.platform + jakarta.jakartaee-api + 9.0.0 + provided + + + com.fasterxml.jackson.core + jackson-databind + ${version.jackson.minimal} + provided + + + tools.jackson.core + jackson-databind + ${version.jackson3.minimal} + provided + + + org.junit.jupiter + junit-jupiter + provided + + + org.assertj + assertj-core + provided + + + io.rest-assured + rest-assured + provided + + - org.eclipse.transformer - transformer-maven-plugin + org.apache.maven.plugins + maven-dependency-plugin - package + unpack-core-sources + generate-sources - jar + unpack - - io.github.belgif.rest.problem - belgif-rest-problem-it-common - ${project.version} - - - true - + + + io.github.belgif.rest.problem + belgif-rest-problem-it-common + ${project.version} + sources + + ${project.build.directory}/sources-to-transform + + + + + + + + + org.codehaus.mojo + exec-maven-plugin + + + transform-to-jakarta + generate-sources + + java + + + true + false + true + + org.eclipse.transformer.cli.JakartaTransformerCLI + + + + ${project.build.directory}/sources-to-transform + + + ${project.build.directory}/generated-sources/jakarta + + + + + + + + org.eclipse.transformer + org.eclipse.transformer.cli + 1.0.0 + + + + + org.codehaus.mojo + build-helper-maven-plugin + + + add-transformed-sources + generate-sources + + add-source + + + + + ${project.build.directory}/generated-sources/jakarta + + + + + + add-resource + generate-resources + + add-resource + + + + + ${project.build.directory}/generated-sources/jakarta + + **/*.java + META-INF/** + + + diff --git a/belgif-rest-problem-it/belgif-rest-problem-it-common/pom.xml b/belgif-rest-problem-it/belgif-rest-problem-it-common/pom.xml index be20e755..c2a23a11 100644 --- a/belgif-rest-problem-it/belgif-rest-problem-it-common/pom.xml +++ b/belgif-rest-problem-it/belgif-rest-problem-it-common/pom.xml @@ -1,6 +1,6 @@ + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 @@ -12,6 +12,23 @@ belgif-rest-problem-it-common ${project.groupId}:${project.artifactId} + + + + org.apache.maven.plugins + maven-source-plugin + + + attach-sources + + jar + + + + + + + io.github.belgif.rest.problem From 6039da74336b5bb47aef6c9f012c154d95c8aaa9 Mon Sep 17 00:00:00 2001 From: pvdb Date: Tue, 3 Mar 2026 10:49:30 +0100 Subject: [PATCH 16/23] [spring-only] add missing parameterNameProvider config for bean validation --- .../problem/spring/EnableProblemModule.java | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/belgif-rest-problem-spring/src/main/java/io/github/belgif/rest/problem/spring/EnableProblemModule.java b/belgif-rest-problem-spring/src/main/java/io/github/belgif/rest/problem/spring/EnableProblemModule.java index 4990c736..002c4cb9 100644 --- a/belgif-rest-problem-spring/src/main/java/io/github/belgif/rest/problem/spring/EnableProblemModule.java +++ b/belgif-rest-problem-spring/src/main/java/io/github/belgif/rest/problem/spring/EnableProblemModule.java @@ -5,6 +5,8 @@ import java.util.List; import java.util.Map; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Import; import org.springframework.context.annotation.ImportSelector; import org.springframework.core.type.AnnotationMetadata; @@ -12,6 +14,7 @@ import io.github.belgif.rest.problem.spring.client.ProblemResponseJackson2ErrorHandler; import io.github.belgif.rest.problem.spring.client.ProblemResponseJackson3ErrorHandler; import io.github.belgif.rest.problem.spring.server.*; +import org.springframework.validation.beanvalidation.LocalValidatorFactoryBean; @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @@ -46,7 +49,7 @@ /** * Whether to create support beans for Jackson 3, or when false, Jackson 2. */ - boolean jackson3() default true; + boolean jackson3() default true; // TODO: change to enum /** * Convert Jakarta Bean Validation exceptions to badRequestProblem @@ -88,7 +91,7 @@ public String[] selectImports(AnnotationMetadata importingClassMetadata) { imports.add(routingExceptionsHandler.getName()); if (includeBeanValidation) { - imports.add(BeanValidationExceptionsHandler.class.getName()); + imports.add(BeanValidationConfiguration.class.getName()); } if (includeSwaggerRequestValidator) { Class invalidRequestExceptionHandler = useJackson3 ? InvalidRequestExceptionJackson3Handler.class @@ -105,4 +108,16 @@ public String[] selectImports(AnnotationMetadata importingClassMetadata) { return imports.toArray(new String[imports.size()]); } } + + @Configuration + @Import(BeanValidationExceptionsHandler.class) + class BeanValidationConfiguration { + @Bean + public LocalValidatorFactoryBean validator() { + LocalValidatorFactoryBean validator = new LocalValidatorFactoryBean(); + validator.setConfigurationInitializer( + configuration -> configuration.parameterNameProvider(new AnnotationParameterNameProvider())); + return validator; + } + } } From b18fa5e820930e8cc189f8b0ad94ba7b04bda00f Mon Sep 17 00:00:00 2001 From: pvdb Date: Tue, 3 Mar 2026 10:50:14 +0100 Subject: [PATCH 17/23] add integration test for spring-without-boot --- .../belgif-rest-problem-spring-it/pom.xml | 146 ++++++++++ .../rest/problem/it/BackendController.java | 59 ++++ .../github/belgif/rest/problem/it/Client.java | 7 + .../rest/problem/it/ControllerInterface.java | 24 ++ .../rest/problem/it/FrontendController.java | 270 ++++++++++++++++++ .../problem/it/OpenApiValidationConfig.java | 45 +++ .../it/OpenApiValidationController.java | 60 ++++ .../belgif/rest/problem/it/WebConfig.java | 57 ++++ .../belgif/rest/problem/it/Application.java | 12 + .../rest/problem/it/RestProblemSpringIT.java | 44 +++ .../test/resources/application-ext.properties | 2 + .../src/test/resources/application.properties | 7 + .../src/test/resources/logback-test.xml | 32 +++ pom.xml | 2 + 14 files changed, 767 insertions(+) create mode 100644 belgif-rest-problem-it/belgif-rest-problem-spring-it/pom.xml create mode 100644 belgif-rest-problem-it/belgif-rest-problem-spring-it/src/main/java/io/github/belgif/rest/problem/it/BackendController.java create mode 100644 belgif-rest-problem-it/belgif-rest-problem-spring-it/src/main/java/io/github/belgif/rest/problem/it/Client.java create mode 100644 belgif-rest-problem-it/belgif-rest-problem-spring-it/src/main/java/io/github/belgif/rest/problem/it/ControllerInterface.java create mode 100644 belgif-rest-problem-it/belgif-rest-problem-spring-it/src/main/java/io/github/belgif/rest/problem/it/FrontendController.java create mode 100644 belgif-rest-problem-it/belgif-rest-problem-spring-it/src/main/java/io/github/belgif/rest/problem/it/OpenApiValidationConfig.java create mode 100644 belgif-rest-problem-it/belgif-rest-problem-spring-it/src/main/java/io/github/belgif/rest/problem/it/OpenApiValidationController.java create mode 100644 belgif-rest-problem-it/belgif-rest-problem-spring-it/src/main/java/io/github/belgif/rest/problem/it/WebConfig.java create mode 100644 belgif-rest-problem-it/belgif-rest-problem-spring-it/src/test/java/io/github/belgif/rest/problem/it/Application.java create mode 100644 belgif-rest-problem-it/belgif-rest-problem-spring-it/src/test/java/io/github/belgif/rest/problem/it/RestProblemSpringIT.java create mode 100644 belgif-rest-problem-it/belgif-rest-problem-spring-it/src/test/resources/application-ext.properties create mode 100644 belgif-rest-problem-it/belgif-rest-problem-spring-it/src/test/resources/application.properties create mode 100644 belgif-rest-problem-it/belgif-rest-problem-spring-it/src/test/resources/logback-test.xml diff --git a/belgif-rest-problem-it/belgif-rest-problem-spring-it/pom.xml b/belgif-rest-problem-it/belgif-rest-problem-spring-it/pom.xml new file mode 100644 index 00000000..6f96b5a9 --- /dev/null +++ b/belgif-rest-problem-it/belgif-rest-problem-spring-it/pom.xml @@ -0,0 +1,146 @@ + + + 4.0.0 + + + io.github.belgif.rest.problem + belgif-rest-problem-it + ${revision} + + + belgif-rest-problem-spring-it + ${project.groupId}:${project.artifactId} + jar + + + 17 + + + + + + org.springframework.boot + spring-boot-dependencies + ${version.spring.boot.4} + pom + import + + + + + + + io.github.belgif.rest.problem + belgif-rest-problem-spring + ${project.version} + + + tools.jackson.core + jackson-databind + + + io.github.belgif.rest.problem + belgif-rest-problem-validator + ${project.version} + + + org.springframework + spring-webmvc + + + io.github.belgif.rest.problem + belgif-rest-problem-it-common-jakarta + ${project.version} + + + org.hibernate.validator + hibernate-validator + + + jakarta.validation + jakarta.validation-api + + + jakarta.annotation + jakarta.annotation-api + + + jakarta.servlet + jakarta.servlet-api + + + com.atlassian.oai + swagger-request-validator-spring-webmvc + 2.46.0 + + + org.springframework.boot + spring-boot-starter-webmvc + test + + + org.springframework.boot + spring-boot-starter-validation + test + + + org.springframework.boot + spring-boot-test + + + org.junit.jupiter + junit-jupiter + test + + + org.springframework + spring-webflux + + + org.springframework + spring-test + test + + + io.rest-assured + rest-assured + 6.0.0 + test + + + + + + + org.openapitools + openapi-generator-maven-plugin + + + + generate + + + ${project.basedir}/../belgif-rest-problem-it-common/src/main/resources/openapi.yaml + spring + io.github.belgif.rest.problem.it.openapi.validation.sb4.api + io.github.belgif.rest.problem.it.openapi.validation.sb4.model + REF_AS_PARENT_IN_ALLOF=true + false + + true + true + true + false + none + none + false + + + + + + + + + diff --git a/belgif-rest-problem-it/belgif-rest-problem-spring-it/src/main/java/io/github/belgif/rest/problem/it/BackendController.java b/belgif-rest-problem-it/belgif-rest-problem-spring-it/src/main/java/io/github/belgif/rest/problem/it/BackendController.java new file mode 100644 index 00000000..8a627e80 --- /dev/null +++ b/belgif-rest-problem-it/belgif-rest-problem-spring-it/src/main/java/io/github/belgif/rest/problem/it/BackendController.java @@ -0,0 +1,59 @@ +package io.github.belgif.rest.problem.it; + +import java.net.URI; + +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import com.acme.custom.CustomProblem; + +import io.github.belgif.rest.problem.BadRequestProblem; +import io.github.belgif.rest.problem.api.Problem; +import io.github.belgif.rest.problem.it.model.JacksonModel; + +@RestController +@RequestMapping("/backend") +public class BackendController { + + @GetMapping("/ok") + public ResponseEntity ok() { + return ResponseEntity.ok("OK"); + } + + @GetMapping("/badRequest") + public void badRequest() { + BadRequestProblem problem = new BadRequestProblem(); + problem.setDetail("Bad Request from backend"); + throw problem; + } + + @GetMapping("/custom") + public void custom() { + throw new CustomProblem("value from backend"); + } + + @GetMapping("/unmapped") + public void unmapped() { + Problem unmapped = new Problem(URI.create("urn:problem-type:belgif:test:unmapped"), "Unmapped problem", 400) { + }; + unmapped.setDetail("Unmapped problem from backend"); + throw unmapped; + } + + @GetMapping("/applicationJsonProblem") + public ResponseEntity applicationJsonProblem() { + BadRequestProblem problem = new BadRequestProblem(); + problem.setDetail("Bad Request with application/json media type from backend"); + return ResponseEntity.badRequest().body(problem); + } + + @GetMapping("/jacksonMismatchedInput") + public ResponseEntity mismatchedInput() { + JacksonModel model = new JacksonModel(null); + model.setDescription("description"); + return ResponseEntity.ok(model); + } + +} diff --git a/belgif-rest-problem-it/belgif-rest-problem-spring-it/src/main/java/io/github/belgif/rest/problem/it/Client.java b/belgif-rest-problem-it/belgif-rest-problem-spring-it/src/main/java/io/github/belgif/rest/problem/it/Client.java new file mode 100644 index 00000000..bbc54c9d --- /dev/null +++ b/belgif-rest-problem-it/belgif-rest-problem-spring-it/src/main/java/io/github/belgif/rest/problem/it/Client.java @@ -0,0 +1,7 @@ +package io.github.belgif.rest.problem.it; + +public enum Client { + + REST_TEMPLATE, WEB_CLIENT, REST_CLIENT + +} diff --git a/belgif-rest-problem-it/belgif-rest-problem-spring-it/src/main/java/io/github/belgif/rest/problem/it/ControllerInterface.java b/belgif-rest-problem-it/belgif-rest-problem-spring-it/src/main/java/io/github/belgif/rest/problem/it/ControllerInterface.java new file mode 100644 index 00000000..60516423 --- /dev/null +++ b/belgif-rest-problem-it/belgif-rest-problem-spring-it/src/main/java/io/github/belgif/rest/problem/it/ControllerInterface.java @@ -0,0 +1,24 @@ +package io.github.belgif.rest.problem.it; + +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Positive; + +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Controller; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; + +@Validated +@Controller +public interface ControllerInterface { + + @GetMapping("/beanValidation/pathParameter/inherited/{param}") + ResponseEntity beanValidationPathParameterInherited( + @PathVariable("param") @Positive @NotNull Integer p); + + @GetMapping("/beanValidation/pathParameter/overridden/{param}") + ResponseEntity beanValidationPathParameterOverridden( + @PathVariable("param") @Positive @NotNull Integer p); + +} diff --git a/belgif-rest-problem-it/belgif-rest-problem-spring-it/src/main/java/io/github/belgif/rest/problem/it/FrontendController.java b/belgif-rest-problem-it/belgif-rest-problem-spring-it/src/main/java/io/github/belgif/rest/problem/it/FrontendController.java new file mode 100644 index 00000000..b5734b38 --- /dev/null +++ b/belgif-rest-problem-it/belgif-rest-problem-spring-it/src/main/java/io/github/belgif/rest/problem/it/FrontendController.java @@ -0,0 +1,270 @@ +package io.github.belgif.rest.problem.it; + +import java.net.URI; + +import jakarta.validation.Valid; +import jakarta.validation.constraints.NotNull; +import jakarta.validation.constraints.Positive; +import jakarta.validation.constraints.Size; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.ResponseEntity; +import org.springframework.http.converter.HttpMessageConverters; +import org.springframework.http.converter.json.JacksonJsonHttpMessageConverter; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.client.RestClient; +import org.springframework.web.client.RestTemplate; +import org.springframework.web.reactive.function.client.WebClient; + +import com.acme.custom.CustomProblem; + +import io.github.belgif.rest.problem.BadRequestProblem; +import io.github.belgif.rest.problem.DefaultProblem; +import io.github.belgif.rest.problem.ServiceUnavailableProblem; +import io.github.belgif.rest.problem.api.Input; +import io.github.belgif.rest.problem.api.Problem; +import io.github.belgif.rest.problem.i18n.I18N; +import io.github.belgif.rest.problem.it.model.ChildModel; +import io.github.belgif.rest.problem.it.model.JacksonModel; +import io.github.belgif.rest.problem.it.model.Model; +import io.github.belgif.rest.problem.it.model.NestedModel; +import io.github.belgif.rest.problem.validation.RequestValidator; + +@RestController +@RequestMapping("/frontend") +@Validated +public class FrontendController implements ControllerInterface { + + private static final String DETAIL_MESSAGE_SUFFIX = " (caught successfully by frontend)"; + private static final String ILLEGAL_STATE_MESSAGE_PREFIX = "Unsupported client "; + + private WebClient.Builder webClientBuilder; + + private RestClient.Builder restClientBuilder; + + private RestTemplate restTemplate; + + private WebClient webClient; + + private RestClient restClient; + + public FrontendController(WebClient.Builder webClientBuilder, RestClient.Builder restClientBuilder) { + this.webClientBuilder = webClientBuilder; + this.restClientBuilder = restClientBuilder; + } + + public void initClients(int port) { + String apiBaseUrl = "http://localhost:" + port + "/spring/backend"; + this.webClient = this.webClientBuilder + .baseUrl(apiBaseUrl) + .build(); + this.restClient = this.restClientBuilder + .baseUrl(apiBaseUrl) + .build(); + // we're not testing RestTemplate for now + // there's no builder or baseUrl support for RestTemplate without Spring Boot, so would require more refactoring + } + + @GetMapping("/ping") + public String ping() { + return "pong"; + } + + @GetMapping("/badRequest") + public void badRequest() { + BadRequestProblem problem = new BadRequestProblem(); + problem.setDetail("Bad Request from frontend"); + throw problem; + } + + @GetMapping("/custom") + public void custom() { + throw new CustomProblem("value from frontend"); + } + + @GetMapping("/runtime") + public void runtime() { + throw new RuntimeException("oops"); + } + + @GetMapping("/unmapped") + public void unmapped() { + Problem unmapped = new Problem(URI.create("urn:problem-type:belgif:test:unmapped"), "Unmapped problem", 400) { + }; + unmapped.setDetail("Unmapped problem from frontend"); + throw unmapped; + } + + @GetMapping("/retryAfter") + public void retryAfter() { + ServiceUnavailableProblem problem = new ServiceUnavailableProblem(); + problem.setRetryAfterSec(10000L); + throw problem; + } + + @GetMapping(value = "/okFromBackend", produces = "application/json") + public ResponseEntity okFromBackend(@RequestParam("client") Client client) { + String result = null; + if (client == Client.REST_TEMPLATE) { + result = restTemplate.getForObject("/ok", String.class); + } else if (client == Client.WEB_CLIENT) { + result = webClient.get().uri("/ok").retrieve().toEntity(String.class).block().getBody(); + } else if (client == Client.REST_CLIENT) { + result = restClient.get().uri("/ok").retrieve().toEntity(String.class).getBody(); + } + return ResponseEntity.ok(result); + } + + @GetMapping("/badRequestFromBackend") + public void badRequestFromBackend(@RequestParam("client") Client client) { + try { + if (client == Client.REST_TEMPLATE) { + restTemplate.getForObject("/badRequest", String.class); + } else if (client == Client.WEB_CLIENT) { + webClient.get().uri("/badRequest").retrieve().toEntity(String.class).block(); + } else if (client == Client.REST_CLIENT) { + restClient.get().uri("/badRequest").retrieve().toEntity(String.class); + } + throw new IllegalStateException(ILLEGAL_STATE_MESSAGE_PREFIX + client); + } catch (BadRequestProblem e) { + e.setDetail(e.getDetail() + DETAIL_MESSAGE_SUFFIX); + throw e; + } + } + + @GetMapping("/customFromBackend") + public void customFromBackend(@RequestParam("client") Client client) { + try { + if (client == Client.REST_TEMPLATE) { + restTemplate.getForObject("/custom", String.class); + } else if (client == Client.WEB_CLIENT) { + webClient.get().uri("/custom").retrieve().toEntity(String.class).block(); + } else if (client == Client.REST_CLIENT) { + restClient.get().uri("/custom").retrieve().toEntity(String.class); + } + throw new IllegalStateException(ILLEGAL_STATE_MESSAGE_PREFIX + client); + } catch (CustomProblem e) { + e.setCustomField(e.getCustomField() + DETAIL_MESSAGE_SUFFIX); + throw e; + } + } + + @GetMapping("/unmappedFromBackend") + public void unmappedFromBackend(@RequestParam("client") Client client) { + try { + if (client == Client.REST_TEMPLATE) { + restTemplate.getForObject("/unmapped", String.class); + } else if (client == Client.WEB_CLIENT) { + webClient.get().uri("/unmapped").retrieve().toEntity(String.class).block(); + } else if (client == Client.REST_CLIENT) { + restClient.get().uri("/unmapped").retrieve().toEntity(String.class); + } + throw new IllegalStateException(ILLEGAL_STATE_MESSAGE_PREFIX + client); + } catch (DefaultProblem e) { + e.setDetail(e.getDetail() + DETAIL_MESSAGE_SUFFIX); + throw e; + } + } + + @GetMapping("/applicationJsonProblemFromBackend") + public void applicationJsonProblemFromBackend(@RequestParam("client") Client client) { + try { + if (client == Client.REST_TEMPLATE) { + restTemplate.getForObject("/applicationJsonProblem", String.class); + } else if (client == Client.WEB_CLIENT) { + webClient.get().uri("/applicationJsonProblem").retrieve().toEntity(String.class).block(); + } else if (client == Client.REST_CLIENT) { + restClient.get().uri("/applicationJsonProblem").retrieve().toEntity(String.class); + } + throw new IllegalStateException(ILLEGAL_STATE_MESSAGE_PREFIX + client); + } catch (BadRequestProblem e) { + e.setDetail(e.getDetail() + DETAIL_MESSAGE_SUFFIX); + throw e; + } + } + + @GetMapping("/jacksonMismatchedInputFromBackend") + public void jacksonMismatchedInputFromBackend(@RequestParam("client") Client client) { + if (client == Client.REST_TEMPLATE) { + restTemplate.getForObject("/jacksonMismatchedInput", JacksonModel.class); + } else if (client == Client.WEB_CLIENT) { + webClient.get().uri("/jacksonMismatchedInput").retrieve().toEntity(JacksonModel.class).block(); + } else if (client == Client.REST_CLIENT) { + restClient.get().uri("/jacksonMismatchedInput").retrieve().toEntity(JacksonModel.class); + } + throw new IllegalStateException(ILLEGAL_STATE_MESSAGE_PREFIX + client); + } + + @GetMapping("/beanValidation/queryParameter") + public ResponseEntity beanValidationQueryParameter( + @RequestParam("param") @Positive @NotNull Integer p, + @RequestParam @Size(max = 5) String other) { + return ResponseEntity.ok("param: " + p + ", other: " + other); + } + + @GetMapping("/beanValidation/headerParameter") + public ResponseEntity beanValidationHeaderParameter( + @RequestHeader("param") @Positive @NotNull Integer p) { + return ResponseEntity.ok("param: " + p); + } + + @GetMapping("/beanValidation/pathParameter/class/{param}") + public ResponseEntity beanValidationPathParameter( + @PathVariable("param") @Positive @NotNull Integer p) { + return ResponseEntity.ok("param: " + p); + } + + @Override + public ResponseEntity beanValidationPathParameterInherited(Integer p) { + return ResponseEntity.ok("param: " + p); + } + + @Override + @GetMapping("/beanValidation/pathParameter/overridden") + public ResponseEntity beanValidationPathParameterOverridden(@RequestParam("param") Integer p) { + return ResponseEntity.ok("param: " + p); + } + + @PostMapping("/beanValidation/body") + public ResponseEntity beanValidationBody(@Valid @RequestBody Model body) { + return ResponseEntity.ok("body: " + body); + } + + @PostMapping("/beanValidation/body/nested") + public ResponseEntity beanValidationBodyNested(@Valid @RequestBody NestedModel body) { + return ResponseEntity.ok("body: " + body); + } + + @PostMapping("/beanValidation/body/inheritance") + public ResponseEntity beanValidationBodyInheritance(@Valid @RequestBody ChildModel body) { + return ResponseEntity.ok("body: " + body); + } + + @PostMapping("/beanValidation/queryParameter/nested") + public ResponseEntity beanValidationQueryParameterNested(@Valid Model p) { + return ResponseEntity.ok("param: " + p); + } + + @PostMapping("/jackson/mismatchedInputException") + public ResponseEntity jacksonMismatchedInputException(@Valid @RequestBody JacksonModel p) { + return ResponseEntity.ok("param: " + p); + } + + @PostMapping("/i18n") + public ResponseEntity i18n(@RequestParam("enabled") boolean enabled) { + I18N.setEnabled(enabled); + return ResponseEntity.ok().build(); + } + + @GetMapping("/requestValidator") + public ResponseEntity requestValidator(@RequestParam("ssin") String ssin, + @RequestParam(name = "a", required = false) String a, + @RequestParam(name = "b", required = false) String b) { + new RequestValidator().ssin(Input.query("ssin", ssin)) + .zeroOrAllOf(Input.query("a", a), Input.query("b", b)) + .validate(); + return ResponseEntity.ok().build(); + } + +} diff --git a/belgif-rest-problem-it/belgif-rest-problem-spring-it/src/main/java/io/github/belgif/rest/problem/it/OpenApiValidationConfig.java b/belgif-rest-problem-it/belgif-rest-problem-spring-it/src/main/java/io/github/belgif/rest/problem/it/OpenApiValidationConfig.java new file mode 100644 index 00000000..e965740b --- /dev/null +++ b/belgif-rest-problem-it/belgif-rest-problem-spring-it/src/main/java/io/github/belgif/rest/problem/it/OpenApiValidationConfig.java @@ -0,0 +1,45 @@ +package io.github.belgif.rest.problem.it; + +import jakarta.servlet.Filter; +import jakarta.servlet.http.HttpServletRequest; + +import org.jspecify.annotations.NonNull; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.servlet.config.annotation.InterceptorRegistry; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; + +import com.atlassian.oai.validator.OpenApiInteractionValidator; +import com.atlassian.oai.validator.report.LevelResolver; +import com.atlassian.oai.validator.report.ValidationReport; +import com.atlassian.oai.validator.springmvc.OpenApiValidationFilter; +import com.atlassian.oai.validator.springmvc.OpenApiValidationInterceptor; + +@Configuration +public class OpenApiValidationConfig implements WebMvcConfigurer { + + @Bean + public Filter validationFilter() { + return new OpenApiValidationFilter(true, false) { + @Override + protected boolean shouldNotFilter(HttpServletRequest request) { + String path = request.getServletPath(); + return !path.startsWith("/openapi-validation"); // replaces FilterRegistrationBean in Spring Boot + } + }; + } + + @Override + public void addInterceptors(@NonNull InterceptorRegistry registry) { + OpenApiInteractionValidator validator = OpenApiInteractionValidator + .createForSpecificationUrl("/openapi.yaml") + .withLevelResolver(LevelResolver.create() + // Accept additionalProperties even if they're not defined in the schema + .withLevel("validation.schema.additionalProperties", ValidationReport.Level.IGNORE) + .build()) + .withBasePathOverride("/openapi-validation") + .build(); + registry.addInterceptor(new OpenApiValidationInterceptor(validator)); + } + +} diff --git a/belgif-rest-problem-it/belgif-rest-problem-spring-it/src/main/java/io/github/belgif/rest/problem/it/OpenApiValidationController.java b/belgif-rest-problem-it/belgif-rest-problem-spring-it/src/main/java/io/github/belgif/rest/problem/it/OpenApiValidationController.java new file mode 100644 index 00000000..cf0fc1e9 --- /dev/null +++ b/belgif-rest-problem-it/belgif-rest-problem-spring-it/src/main/java/io/github/belgif/rest/problem/it/OpenApiValidationController.java @@ -0,0 +1,60 @@ +package io.github.belgif.rest.problem.it; + +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import io.github.belgif.rest.problem.it.openapi.validation.sb4.api.MyFirstPathApi; +import io.github.belgif.rest.problem.it.openapi.validation.sb4.api.MyHeaderPathApi; +import io.github.belgif.rest.problem.it.openapi.validation.sb4.api.MyQueryPathApi; +import io.github.belgif.rest.problem.it.openapi.validation.sb4.model.MyRequestBodySchema; +import io.github.belgif.rest.problem.it.openapi.validation.sb4.model.PostOperationWithAllOfSchemaRequest; +import io.github.belgif.rest.problem.it.openapi.validation.sb4.model.PostOperationWithOneOfSchemaRequest; + +@RestController +@RequestMapping("/openapi-validation") +public class OpenApiValidationController + implements MyFirstPathApi, MyHeaderPathApi, MyQueryPathApi { + + @Override + public ResponseEntity myFirstGetOperation(String myParam) { + return buildResponse(); + } + + @Override + public ResponseEntity myFirstPostOperation(MyRequestBodySchema myRequestBodySchema) { + return buildResponse(); + } + + @Override + public ResponseEntity mySecondGetOperation(String pathParam) { + return buildResponse(); + } + + @Override + public ResponseEntity myHeaderGetOperation(String myHeader) { + return buildResponse(); + } + + @Override + public ResponseEntity myQueryParamOperation(String myParam) { + return buildResponse(); + } + + @Override + public ResponseEntity + postOperationWithAllOfSchema(PostOperationWithAllOfSchemaRequest postOperationWithAllOfSchemaRequest) { + return buildResponse(); + } + + @Override + public ResponseEntity + postOperationWithOneOfSchema(PostOperationWithOneOfSchemaRequest postOperationWithOneOfSchemaRequest) { + return buildResponse(); + } + + private ResponseEntity buildResponse() { + return ResponseEntity.ok("All good!"); + } + +} diff --git a/belgif-rest-problem-it/belgif-rest-problem-spring-it/src/main/java/io/github/belgif/rest/problem/it/WebConfig.java b/belgif-rest-problem-it/belgif-rest-problem-spring-it/src/main/java/io/github/belgif/rest/problem/it/WebConfig.java new file mode 100644 index 00000000..4b1dd63e --- /dev/null +++ b/belgif-rest-problem-it/belgif-rest-problem-spring-it/src/main/java/io/github/belgif/rest/problem/it/WebConfig.java @@ -0,0 +1,57 @@ +package io.github.belgif.rest.problem.it; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.http.codec.json.JacksonJsonDecoder; +import org.springframework.http.codec.json.JacksonJsonEncoder; +import org.springframework.http.converter.json.JacksonJsonHttpMessageConverter; +import org.springframework.web.client.RestClient; +import org.springframework.web.reactive.function.client.ExchangeStrategies; +import org.springframework.web.reactive.function.client.WebClient; + +import com.fasterxml.jackson.annotation.JsonInclude; + +import io.github.belgif.rest.problem.spring.EnableProblemModule; +import io.github.belgif.rest.problem.spring.SpringProblemModuleJackson3; +import io.github.belgif.rest.problem.spring.client.ProblemResponseErrorHandler; +import io.github.belgif.rest.problem.spring.client.WebClientFilter; +import tools.jackson.databind.DeserializationFeature; +import tools.jackson.databind.SerializationFeature; +import tools.jackson.databind.json.JsonMapper; + +@Configuration +@EnableProblemModule(beanValidation = true) +public class WebConfig { + + @Bean + public JsonMapper objectMapper(SpringProblemModuleJackson3 springProblemModule) { + return JsonMapper.builder() + .disable(DeserializationFeature.WRAP_EXCEPTIONS) + .enable(SerializationFeature.ORDER_MAP_ENTRIES_BY_KEYS) + .findAndAddModules() + .changeDefaultPropertyInclusion((incl) -> incl.withContentInclusion(JsonInclude.Include.NON_NULL) + .withValueInclusion(JsonInclude.Include.NON_NULL)) + .addModule(springProblemModule) // add springProblem module to the mapper. + .build(); + } + + @Bean + public RestClient.Builder restClientBuilder(ProblemResponseErrorHandler problemResponseErrorHandler, + JsonMapper mapper) { + return RestClient.builder() + .defaultStatusHandler(problemResponseErrorHandler) + .configureMessageConverters(converter -> converter.registerDefaults() + .withJsonConverter(new JacksonJsonHttpMessageConverter(mapper))); // change converter with + // custom json mapper + } + + @Bean + public WebClient.Builder webClientBuilder(ProblemResponseErrorHandler problemResponseErrorHandler, + JsonMapper mapper) { + ExchangeStrategies strategies = ExchangeStrategies.builder().codecs(configurer -> { + configurer.defaultCodecs().jacksonJsonEncoder(new JacksonJsonEncoder(mapper)); + configurer.defaultCodecs().jacksonJsonDecoder(new JacksonJsonDecoder(mapper)); + }).build(); + return WebClient.builder().exchangeStrategies(strategies).filter(WebClientFilter.PROBLEM_FILTER); + } +} diff --git a/belgif-rest-problem-it/belgif-rest-problem-spring-it/src/test/java/io/github/belgif/rest/problem/it/Application.java b/belgif-rest-problem-it/belgif-rest-problem-spring-it/src/test/java/io/github/belgif/rest/problem/it/Application.java new file mode 100644 index 00000000..72206306 --- /dev/null +++ b/belgif-rest-problem-it/belgif-rest-problem-spring-it/src/test/java/io/github/belgif/rest/problem/it/Application.java @@ -0,0 +1,12 @@ +package io.github.belgif.rest.problem.it; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class Application { + + public static void main(String[] args) { + SpringApplication.run(Application.class, args); + } +} diff --git a/belgif-rest-problem-it/belgif-rest-problem-spring-it/src/test/java/io/github/belgif/rest/problem/it/RestProblemSpringIT.java b/belgif-rest-problem-it/belgif-rest-problem-spring-it/src/test/java/io/github/belgif/rest/problem/it/RestProblemSpringIT.java new file mode 100644 index 00000000..60afa670 --- /dev/null +++ b/belgif-rest-problem-it/belgif-rest-problem-spring-it/src/test/java/io/github/belgif/rest/problem/it/RestProblemSpringIT.java @@ -0,0 +1,44 @@ +package io.github.belgif.rest.problem.it; + +import java.util.Arrays; +import java.util.List; +import java.util.Map;import java.util.stream.Stream; + +import org.junit.jupiter.api.BeforeEach; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.test.web.server.LocalServerPort; +import org.springframework.http.converter.HttpMessageConverters;import org.springframework.http.converter.json.JacksonJsonHttpMessageConverter;import org.springframework.test.annotation.DirtiesContext; + +import io.restassured.RestAssured; +import io.restassured.specification.RequestSpecification; +import org.springframework.web.client.RestClient; +import org.springframework.web.client.RestTemplate;import org.springframework.web.reactive.function.client.WebClient;import tools.jackson.databind.ObjectMapper;import tools.jackson.databind.json.JsonMapper; + +@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) +@DirtiesContext +// uses spring boot to start the server-side, but doesn't rely on starter integration with rest-problem +class RestProblemSpringIT extends AbstractRestProblemSpringBootIT { + + @LocalServerPort + private int port; + + @Autowired + private FrontendController frontendController; + + @BeforeEach + public void init() { + frontendController.initClients(port); + } + + + @Override + protected RequestSpecification getSpec() { + return RestAssured.with().baseUri("http://localhost").port(port).basePath("/spring/frontend"); + } + + @Override + protected Stream getClients() { + return List.of(Client.REST_CLIENT.name(), Client.WEB_CLIENT.name()).stream(); + } +} diff --git a/belgif-rest-problem-it/belgif-rest-problem-spring-it/src/test/resources/application-ext.properties b/belgif-rest-problem-it/belgif-rest-problem-spring-it/src/test/resources/application-ext.properties new file mode 100644 index 00000000..15345d91 --- /dev/null +++ b/belgif-rest-problem-it/belgif-rest-problem-spring-it/src/test/resources/application-ext.properties @@ -0,0 +1,2 @@ +io.github.belgif.rest.problem.ext.issue-types-enabled=true +io.github.belgif.rest.problem.ext.inputs-array-enabled=true diff --git a/belgif-rest-problem-it/belgif-rest-problem-spring-it/src/test/resources/application.properties b/belgif-rest-problem-it/belgif-rest-problem-spring-it/src/test/resources/application.properties new file mode 100644 index 00000000..c7602404 --- /dev/null +++ b/belgif-rest-problem-it/belgif-rest-problem-spring-it/src/test/resources/application.properties @@ -0,0 +1,7 @@ +server.servlet.context-path=/spring +io.github.belgif.rest.problem.scan-additional-problem-packages=com.acme.custom + +#If this property is not set the client will receive an InvalidRequestException or InvalidResponseException +#without knowing what is wrong with the request / response as the message field will be missing. +# https://bitbucket.org/atlassian/swagger-request-validator/src/master/swagger-request-validator-spring-webmvc/README.md#Configuration +spring.web.error.include-message=always \ No newline at end of file diff --git a/belgif-rest-problem-it/belgif-rest-problem-spring-it/src/test/resources/logback-test.xml b/belgif-rest-problem-it/belgif-rest-problem-spring-it/src/test/resources/logback-test.xml new file mode 100644 index 00000000..fe45af16 --- /dev/null +++ b/belgif-rest-problem-it/belgif-rest-problem-spring-it/src/test/resources/logback-test.xml @@ -0,0 +1,32 @@ + + + + + %d [%thread] %.-1level %logger{36} %M - %msg%n + + + ERROR + DENY + ACCEPT + + System.out + + + + + %d [%thread] %.-1level %logger{36} %M - %msg%n + + + ERROR + ACCEPT + DENY + + System.err + + + + + + + + diff --git a/pom.xml b/pom.xml index a15e342d..be04ed0a 100644 --- a/pom.xml +++ b/pom.xml @@ -466,6 +466,7 @@ belgif-rest-problem-jakarta-ee-it belgif-rest-problem-java-ee-it belgif-rest-problem-quarkus-it + belgif-rest-problem-spring-it belgif-rest-problem-spring-boot-3-it belgif-rest-problem-spring-boot-4-it @@ -568,6 +569,7 @@ belgif-rest-problem-it/belgif-rest-problem-jackson2-latest-it belgif-rest-problem-it/belgif-rest-problem-jackson2-minimal-it belgif-rest-problem-it/belgif-rest-problem-jackson3-it + belgif-rest-problem-it/belgif-rest-problem-spring-it belgif-rest-problem-it/belgif-rest-problem-spring-boot-3-it belgif-rest-problem-it/belgif-rest-problem-spring-boot-4-it belgif-rest-problem-bom From a2776521f5451102b688131f3fd5f88e480bbb57 Mon Sep 17 00:00:00 2001 From: pvdb Date: Tue, 3 Mar 2026 12:41:04 +0100 Subject: [PATCH 18/23] EnableProblemModule: use enum to configure Jackson version --- .../belgif-rest-problem-it-common-jakarta/pom.xml | 2 +- .../belgif-rest-problem-it-common/pom.xml | 2 +- .../belgif/rest/problem/it/FrontendController.java | 3 --- .../io/github/belgif/rest/problem/it/WebConfig.java | 6 +----- .../belgif/rest/problem/it/RestProblemSpringIT.java | 8 ++------ .../rest/problem/spring/EnableProblemModule.java | 12 ++++++++---- 6 files changed, 13 insertions(+), 20 deletions(-) diff --git a/belgif-rest-problem-it/belgif-rest-problem-it-common-jakarta/pom.xml b/belgif-rest-problem-it/belgif-rest-problem-it-common-jakarta/pom.xml index 430af252..95acad0f 100644 --- a/belgif-rest-problem-it/belgif-rest-problem-it-common-jakarta/pom.xml +++ b/belgif-rest-problem-it/belgif-rest-problem-it-common-jakarta/pom.xml @@ -1,6 +1,6 @@ + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 diff --git a/belgif-rest-problem-it/belgif-rest-problem-it-common/pom.xml b/belgif-rest-problem-it/belgif-rest-problem-it-common/pom.xml index c2a23a11..405f6c12 100644 --- a/belgif-rest-problem-it/belgif-rest-problem-it-common/pom.xml +++ b/belgif-rest-problem-it/belgif-rest-problem-it-common/pom.xml @@ -1,6 +1,6 @@ + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 diff --git a/belgif-rest-problem-it/belgif-rest-problem-spring-it/src/main/java/io/github/belgif/rest/problem/it/FrontendController.java b/belgif-rest-problem-it/belgif-rest-problem-spring-it/src/main/java/io/github/belgif/rest/problem/it/FrontendController.java index b5734b38..b9f93410 100644 --- a/belgif-rest-problem-it/belgif-rest-problem-spring-it/src/main/java/io/github/belgif/rest/problem/it/FrontendController.java +++ b/belgif-rest-problem-it/belgif-rest-problem-spring-it/src/main/java/io/github/belgif/rest/problem/it/FrontendController.java @@ -7,10 +7,7 @@ import jakarta.validation.constraints.Positive; import jakarta.validation.constraints.Size; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.ResponseEntity; -import org.springframework.http.converter.HttpMessageConverters; -import org.springframework.http.converter.json.JacksonJsonHttpMessageConverter; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import org.springframework.web.client.RestClient; diff --git a/belgif-rest-problem-it/belgif-rest-problem-spring-it/src/main/java/io/github/belgif/rest/problem/it/WebConfig.java b/belgif-rest-problem-it/belgif-rest-problem-spring-it/src/main/java/io/github/belgif/rest/problem/it/WebConfig.java index 4b1dd63e..39589f04 100644 --- a/belgif-rest-problem-it/belgif-rest-problem-spring-it/src/main/java/io/github/belgif/rest/problem/it/WebConfig.java +++ b/belgif-rest-problem-it/belgif-rest-problem-spring-it/src/main/java/io/github/belgif/rest/problem/it/WebConfig.java @@ -15,8 +15,6 @@ import io.github.belgif.rest.problem.spring.SpringProblemModuleJackson3; import io.github.belgif.rest.problem.spring.client.ProblemResponseErrorHandler; import io.github.belgif.rest.problem.spring.client.WebClientFilter; -import tools.jackson.databind.DeserializationFeature; -import tools.jackson.databind.SerializationFeature; import tools.jackson.databind.json.JsonMapper; @Configuration @@ -26,9 +24,7 @@ public class WebConfig { @Bean public JsonMapper objectMapper(SpringProblemModuleJackson3 springProblemModule) { return JsonMapper.builder() - .disable(DeserializationFeature.WRAP_EXCEPTIONS) - .enable(SerializationFeature.ORDER_MAP_ENTRIES_BY_KEYS) - .findAndAddModules() + // application-specific JsonMapper customizations can be added here .changeDefaultPropertyInclusion((incl) -> incl.withContentInclusion(JsonInclude.Include.NON_NULL) .withValueInclusion(JsonInclude.Include.NON_NULL)) .addModule(springProblemModule) // add springProblem module to the mapper. diff --git a/belgif-rest-problem-it/belgif-rest-problem-spring-it/src/test/java/io/github/belgif/rest/problem/it/RestProblemSpringIT.java b/belgif-rest-problem-it/belgif-rest-problem-spring-it/src/test/java/io/github/belgif/rest/problem/it/RestProblemSpringIT.java index 60afa670..894c87b9 100644 --- a/belgif-rest-problem-it/belgif-rest-problem-spring-it/src/test/java/io/github/belgif/rest/problem/it/RestProblemSpringIT.java +++ b/belgif-rest-problem-it/belgif-rest-problem-spring-it/src/test/java/io/github/belgif/rest/problem/it/RestProblemSpringIT.java @@ -1,19 +1,16 @@ package io.github.belgif.rest.problem.it; -import java.util.Arrays; import java.util.List; -import java.util.Map;import java.util.stream.Stream; +import java.util.stream.Stream; import org.junit.jupiter.api.BeforeEach; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.web.server.LocalServerPort; -import org.springframework.http.converter.HttpMessageConverters;import org.springframework.http.converter.json.JacksonJsonHttpMessageConverter;import org.springframework.test.annotation.DirtiesContext; +import org.springframework.test.annotation.DirtiesContext; import io.restassured.RestAssured; import io.restassured.specification.RequestSpecification; -import org.springframework.web.client.RestClient; -import org.springframework.web.client.RestTemplate;import org.springframework.web.reactive.function.client.WebClient;import tools.jackson.databind.ObjectMapper;import tools.jackson.databind.json.JsonMapper; @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) @DirtiesContext @@ -31,7 +28,6 @@ public void init() { frontendController.initClients(port); } - @Override protected RequestSpecification getSpec() { return RestAssured.with().baseUri("http://localhost").port(port).basePath("/spring/frontend"); diff --git a/belgif-rest-problem-spring/src/main/java/io/github/belgif/rest/problem/spring/EnableProblemModule.java b/belgif-rest-problem-spring/src/main/java/io/github/belgif/rest/problem/spring/EnableProblemModule.java index 002c4cb9..f8ce0e35 100644 --- a/belgif-rest-problem-spring/src/main/java/io/github/belgif/rest/problem/spring/EnableProblemModule.java +++ b/belgif-rest-problem-spring/src/main/java/io/github/belgif/rest/problem/spring/EnableProblemModule.java @@ -10,11 +10,11 @@ import org.springframework.context.annotation.Import; import org.springframework.context.annotation.ImportSelector; import org.springframework.core.type.AnnotationMetadata; +import org.springframework.validation.beanvalidation.LocalValidatorFactoryBean; import io.github.belgif.rest.problem.spring.client.ProblemResponseJackson2ErrorHandler; import io.github.belgif.rest.problem.spring.client.ProblemResponseJackson3ErrorHandler; import io.github.belgif.rest.problem.spring.server.*; -import org.springframework.validation.beanvalidation.LocalValidatorFactoryBean; @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @@ -47,9 +47,13 @@ boolean client() default true; /** - * Whether to create support beans for Jackson 3, or when false, Jackson 2. + * Jackson version being used */ - boolean jackson3() default true; // TODO: change to enum + JacksonVersion jacksonVersion() default JacksonVersion.JACKSON_3; + + enum JacksonVersion { + JACKSON_2, JACKSON_3 + } /** * Convert Jakarta Bean Validation exceptions to badRequestProblem @@ -75,7 +79,7 @@ public String[] selectImports(AnnotationMetadata importingClassMetadata) { .getAnnotationAttributes(EnableProblemModule.class.getName()); boolean includeServer = (boolean) attributes.get("server"); boolean includeClient = (boolean) attributes.get("client"); - boolean useJackson3 = (boolean) attributes.get("jackson3"); + boolean useJackson3 = (attributes.get("jacksonVersion") == JacksonVersion.JACKSON_3); boolean includeBeanValidation = (boolean) attributes.get("beanValidation"); boolean includeSwaggerRequestValidator = (boolean) attributes.get("swaggerRequestValidator"); From 04b60332e578137c5e4ef13077b65c6748b39f96 Mon Sep 17 00:00:00 2001 From: pvdb Date: Tue, 3 Mar 2026 12:41:20 +0100 Subject: [PATCH 19/23] update doc --- src/main/asciidoc/index.adoc | 29 ++++++++++++++++++------- src/main/asciidoc/release-notes.adoc | 32 ++++++++++++++++++++++------ 2 files changed, 47 insertions(+), 14 deletions(-) diff --git a/src/main/asciidoc/index.adoc b/src/main/asciidoc/index.adoc index b9dd0020..d2b94312 100644 --- a/src/main/asciidoc/index.adoc +++ b/src/main/asciidoc/index.adoc @@ -237,7 +237,7 @@ Otherwise, you will see parameter names like `arg0`. InvalidRequestExceptions thrown by the https://bitbucket.org/atlassian/swagger-request-validator[Atlassian swagger-request-validator] are automatically converted to a proper RFC 9457 `application/problem+json` response. -For Spring Boot 3, use https://bitbucket.org/atlassian/swagger-request-validator/src/master/swagger-request-validator-spring-webmvc[swagger-request-validator-spring-webmvc]. +When using Spring, use https://bitbucket.org/atlassian/swagger-request-validator/src/master/swagger-request-validator-spring-webmvc[swagger-request-validator-spring-webmvc]. ==== RestTemplate @@ -257,6 +257,11 @@ Problem support is automatically enabled when constructing your RestClient throu When manually constructing a RestClient instance, you'll need to apply the link:apidocs/io/github/belgif/rest/problem/spring/ProblemRestClientCustomizer.html[ProblemRestClientCustomizer] yourself. +==== Without Spring Boot + +If your application uses Spring without Spring Boot, use the link:apidocs/io/github/belgif/rest/problem/spring/ProblemRestClientCustomizer.html[`@EnableProblemModule`] annotation to activate problem support. Your application needs to provide a configured `ObjectMapper` (Jackson 2) or `JsonMapper` (Jackson3) bean. +REST clients have to be configured during their creation using beans provided by the problem module. See the `WebConfig` class in the integration test `belgif-rest-problem-spring-it` for an example. + [[getting-started-jakarta-ee]] === Jakarta EE @@ -880,10 +885,10 @@ public void setClient(Client client) { * *Jakarta EE 9+*: the main belgif-rest-problem-java-ee artifact targets Java EE (javax package namespace). A secondary artifact that targets Jakarta EE 9+ (jakarta package namespace) is available with `jakarta`. -[[belgif-rest-problem-spring-boot-3]] -=== belgif-rest-problem-spring-boot-3 +[[belgif-rest-problem-spring]] +=== belgif-rest-problem-spring -This module provides auto-configuration for components that handle Spring Boot 3 integration with the belgif-rest-problem library: +This module provides base components for Spring integration with the belgif-rest-problem library, without Spring Boot dependencies: * *SpringProblemTypeRegistry:* ProblemTypeRegistry implementation that uses classpath scanning to detect @ProblemType annotations. By default, only package `io.github.belgif.rest.problem` is scanned for @ProblemType annotations. @@ -899,18 +904,26 @@ io.github.belgif.rest.problem.scan-additional-problem-packages=com.acme.custom * *BeanValidationExceptionsHandler:* an exception handler for RestControllers that converts bean validation related exceptions to HTTP 400 BadRequestProblem. * *InvalidRequestExceptionHandler:* an exception handler for the link:https://bitbucket.org/atlassian/swagger-request-validator/src/master/[Atlassian swagger-request-validator] that converts InvalidRequestException to the correct Problem type. * *RoutingExceptionsHandler:* an exception handler for RestControllers that converts request handling exceptions to HTTP 4XX problems. +* *ProblemResponseErrorHandler:* a RestTemplate and RestClient error handler that converts problem responses to Problem exceptions. +* *AnnotationParameterNameProvider:* a bean validation ParameterNameProvider that retrieves parameter names from Spring MVC annotations + +In general, these components make it possible to use standard java exception handling (throw and try-catch) for dealing with problems in Spring Boot REST APIs. + +[[belgif-rest-problem-spring-boot-3]] +=== belgif-rest-problem-spring-boot-3 + +This module provides auto-configuration for the `belgif-rest-problem-spring` components that handle Spring Boot 3 integration with the belgif-rest-problem library: + * *ProblemWebClientCustomizer:* a WebClientCustomizer that registers a filter that converts problem responses to Problem exceptions. This handles integration with the https://docs.spring.io/spring-framework/reference/web/webflux-webclient.html[Reactive WebClient]. -* *ProblemResponseErrorHandler:* a RestTemplate and RestClient error handler that converts problem responses to Problem exceptions. * *ProblemRestTemplateCustomizer:* a RestTemplateCustomizer that registers the ProblemResponseErrorHandler. * *ProblemRestClientCustomizer:* a RestClientCustomizer that registers the ProblemResponseErrorHandler. -* *AnnotationParameterNameProvider:* a bean validation ParameterNameProvider that retrieves parameter names from Spring MVC annotations * *ProblemValidationConfigurationCustomizer:* a ValidationConfigurationCustomizer that registers the AnnotationParameterNameProvider In general, these components make it possible to use standard java exception handling (throw and try-catch) for dealing with problems in Spring Boot REST APIs. -[[belgif-rest-problem-spring-boot-4]] -=== belgif-rest-problem-spring-boot-4 +[[belgif-rest-problem-spring-boot-4-starter]] +=== belgif-rest-problem-spring-boot-4-starter This module provides auto-configuration for components that handle Spring Boot 4 integration with the belgif-rest-problem library. In general, this is very similar to the Spring Boot 3 module. diff --git a/src/main/asciidoc/release-notes.adoc b/src/main/asciidoc/release-notes.adoc index c2ef2ca0..c1afdc00 100644 --- a/src/main/asciidoc/release-notes.adoc +++ b/src/main/asciidoc/release-notes.adoc @@ -20,21 +20,41 @@ *belgif-rest-problem-spring-boot-3:* +[WARNING] +==== +*Breaking change:* Some classes were moved to `client`- and `server`-specific packages +==== + Provide separate modules in case you specifically only want to use problems either client-side or server-side. -* belgif-rest-problem-spring-boot-3-client -* belgif-rest-problem-spring-boot-3-server +* belgif-rest-problem-spring-boot-3-client-starter +* belgif-rest-problem-spring-boot-3-server-starter Note that you can keep using `belgif-rest-problem-spring-boot-3` as before if you want both client-side and server-side integration. -*belgif-rest-problem-spring-boot-4:* +*belgif-rest-problem-spring-boot-4-starter:* + +[WARNING] +==== +*Breaking changes:* + +* Users of `belgif-rest-problem-spring-boot-4` from version should now depend on the `belgif-rest-problem-spring-boot-4-starter` module. +* Some classes were moved to `client`- and `server`-specific packages +==== Provide separate modules in case you specifically only want to use problems either client-side or server-side. -* belgif-rest-problem-spring-boot-4-client -* belgif-rest-problem-spring-boot-4-server +* belgif-rest-problem-spring-boot-4-client-starter +* belgif-rest-problem-spring-boot-4-server-starter + +Note that you can use `belgif-rest-problem-spring-boot-4-starter` when you want both client-side and server-side integration. + +*belgif-rest-problem-spring:* + +Depend on this module to integrate with Spring without depending on Spring Boot. +When using one of the spring boot modules, it is added as transitive dependency. -Note that you can keep using `belgif-rest-problem-spring-boot-4` as before when you want both client-side and server-side integration. +It provides support for both Jackson 2 and 3. *belgif-rest-problem-java-ee:* From a38c4f5160f73dc1fe81185f590c244dbda14dc7 Mon Sep 17 00:00:00 2001 From: pvdb Date: Tue, 3 Mar 2026 13:37:42 +0100 Subject: [PATCH 20/23] it-jakarta: transform beans.xml --- .../belgif-rest-problem-it-common-jakarta/pom.xml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/belgif-rest-problem-it/belgif-rest-problem-it-common-jakarta/pom.xml b/belgif-rest-problem-it/belgif-rest-problem-it-common-jakarta/pom.xml index 95acad0f..7212f334 100644 --- a/belgif-rest-problem-it/belgif-rest-problem-it-common-jakarta/pom.xml +++ b/belgif-rest-problem-it/belgif-rest-problem-it-common-jakarta/pom.xml @@ -152,7 +152,8 @@ ${project.build.directory}/generated-sources/jakarta **/*.java - META-INF/** + META-INF/MANIFEST.MF + META-INF/io.github.belgif.rest.problem/** From 570fc7c2e64fd5fa1ce489b8a61db4805e4b449f Mon Sep 17 00:00:00 2001 From: pvdb Date: Tue, 3 Mar 2026 16:40:34 +0100 Subject: [PATCH 21/23] Align minimal jackson3 version with the one in spring boot 4.0 --- .github/dependabot.yml | 1 + .../belgif-rest-problem-spring-boot-4-it/pom.xml | 3 ++- pom.xml | 5 +++-- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 272c07a5..6fed9055 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -20,6 +20,7 @@ updates: - dependency-name: "org.jboss.weld:weld-junit5" - dependency-name: "org.hibernate.validator:hibernate-validator" - dependency-name: "com.fasterxml.jackson.core:jackson-databind" + - dependency-name: "tools.jackson.core:jackson-databind" groups: maven: patterns: diff --git a/belgif-rest-problem-it/belgif-rest-problem-spring-boot-4-it/pom.xml b/belgif-rest-problem-it/belgif-rest-problem-spring-boot-4-it/pom.xml index 5acbf944..24876100 100644 --- a/belgif-rest-problem-it/belgif-rest-problem-spring-boot-4-it/pom.xml +++ b/belgif-rest-problem-it/belgif-rest-problem-spring-boot-4-it/pom.xml @@ -109,7 +109,8 @@ REF_AS_PARENT_IN_ALLOF=true false - true + true + true true true false diff --git a/pom.xml b/pom.xml index 3216ee37..9708dd5b 100644 --- a/pom.xml +++ b/pom.xml @@ -21,7 +21,8 @@ UTF-8 2.12.7 - 3.1.0 + + 3.0.4 3.5.11 4.0.3 3.32.1 @@ -233,7 +234,7 @@ belgif-rest-problem-it, jacoco-aggregator, - + belgif-rest-problem-spring-boot-3, belgif-rest-problem-spring-boot-3-client-starter, belgif-rest-problem-spring-boot-3-server-starter From a7f7e98d579028cb23b5196374d7adee9ff4efcc Mon Sep 17 00:00:00 2001 From: Jimmy Praet Date: Thu, 12 Mar 2026 15:04:21 +0100 Subject: [PATCH 22/23] Cleanup referenced modules in bom and jacoco-aggregator --- belgif-rest-problem-bom/pom.xml | 19 ++----------------- belgif-rest-problem-it/pom.xml | 1 + jacoco-aggregator/pom.xml | 15 +++++++++++++++ 3 files changed, 18 insertions(+), 17 deletions(-) diff --git a/belgif-rest-problem-bom/pom.xml b/belgif-rest-problem-bom/pom.xml index 0befad49..2e334017 100644 --- a/belgif-rest-problem-bom/pom.xml +++ b/belgif-rest-problem-bom/pom.xml @@ -68,12 +68,7 @@ io.github.belgif.rest.problem - belgif-rest-problem-spring-boot-common-client - ${project.version} - - - io.github.belgif.rest.problem - belgif-rest-problem-spring-boot-common-server + belgif-rest-problem-spring-boot-common ${project.version} @@ -81,11 +76,6 @@ belgif-rest-problem-spring-boot-3 ${project.version} - - io.github.belgif.rest.problem - belgif-rest-problem-spring-boot-3-core - ${project.version} - io.github.belgif.rest.problem belgif-rest-problem-spring-boot-3-client-starter @@ -101,11 +91,6 @@ belgif-rest-problem-spring-boot-4-starter ${project.version} - - io.github.belgif.rest.problem - belgif-rest-problem-spring-boot-4-core - ${project.version} - io.github.belgif.rest.problem belgif-rest-problem-spring-boot-4-client-starter @@ -113,7 +98,7 @@ io.github.belgif.rest.problem - belgif-rest-problem-server-spring-boot-4-starter + belgif-rest-problem-spring-boot-4-server-starter ${project.version} diff --git a/belgif-rest-problem-it/pom.xml b/belgif-rest-problem-it/pom.xml index 56562119..1ce7ff5e 100644 --- a/belgif-rest-problem-it/pom.xml +++ b/belgif-rest-problem-it/pom.xml @@ -35,6 +35,7 @@ belgif-rest-problem-apt belgif-rest-problem-it-common belgif-rest-problem-it-common-jakarta + belgif-rest-problem-spring-it belgif-rest-problem-spring-boot-3-it belgif-rest-problem-spring-boot-4-it belgif-rest-problem-java-ee-it diff --git a/jacoco-aggregator/pom.xml b/jacoco-aggregator/pom.xml index 88068b80..629af1fb 100644 --- a/jacoco-aggregator/pom.xml +++ b/jacoco-aggregator/pom.xml @@ -64,6 +64,11 @@ belgif-rest-problem-spring ${project.version} + + io.github.belgif.rest.problem + belgif-rest-problem-spring-boot-common + ${project.version} + io.github.belgif.rest.problem belgif-rest-problem-spring-boot-3 @@ -151,6 +156,16 @@ belgif-rest-problem-spring-boot-3-it ${project.version} + + io.github.belgif.rest.problem + belgif-rest-problem-spring-boot-4-it + ${project.version} + + + io.github.belgif.rest.problem + belgif-rest-problem-spring-it + ${project.version} + io.github.belgif.rest.problem belgif-rest-problem-quarkus-it From 9d5016f1bcdca0dc3c5df9f98533edc7a46bf01b Mon Sep 17 00:00:00 2001 From: Jimmy Praet Date: Thu, 12 Mar 2026 15:22:06 +0100 Subject: [PATCH 23/23] Cleanup referenced modules in bom and jacoco-aggregator --- belgif-rest-problem-bom/pom.xml | 5 ----- jacoco-aggregator/pom.xml | 5 ----- 2 files changed, 10 deletions(-) diff --git a/belgif-rest-problem-bom/pom.xml b/belgif-rest-problem-bom/pom.xml index 2e334017..f4ac8e8b 100644 --- a/belgif-rest-problem-bom/pom.xml +++ b/belgif-rest-problem-bom/pom.xml @@ -66,11 +66,6 @@ belgif-rest-problem-spring ${project.version} - - io.github.belgif.rest.problem - belgif-rest-problem-spring-boot-common - ${project.version} - io.github.belgif.rest.problem belgif-rest-problem-spring-boot-3 diff --git a/jacoco-aggregator/pom.xml b/jacoco-aggregator/pom.xml index 629af1fb..8b5145e3 100644 --- a/jacoco-aggregator/pom.xml +++ b/jacoco-aggregator/pom.xml @@ -64,11 +64,6 @@ belgif-rest-problem-spring ${project.version} - - io.github.belgif.rest.problem - belgif-rest-problem-spring-boot-common - ${project.version} - io.github.belgif.rest.problem belgif-rest-problem-spring-boot-3