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