This is an automated email from the ASF dual-hosted git repository.
gitgabrio pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-kie-kogito-apps.git
The following commit(s) were added to refs/heads/main by this push:
new 109a7853e [incubator-kie-issues#2288] - Springboot 4.0.x upgrade
(#2331)
109a7853e is described below
commit 109a7853eda8aa49a6f865b002a4ea27fbaa732f
Author: Nithin R Krishnan <[email protected]>
AuthorDate: Mon May 18 14:04:55 2026 +0530
[incubator-kie-issues#2288] - Springboot 4.0.x upgrade (#2331)
* Update dependencies and configurations for Spring Boot 4.0 compatibility
* Refactor POM comments and update Jackson migration notes for Spring Boot
4.0 compatibility
* chore: retrigger CI
* Refactor Jackson 2 migration comments for clarity and link to issue #6702
* ci: retrigger after port-in-use flake on ProcessDataIndexMongoDBIT
* Refuse byte[] in canWrite so springdoc /v3/api-docs renders under SB4
* ci: retrigger
---
.../pom.xml | 7 ++++
.../SpringbootJPAAuditDataConfiguration.java | 2 +-
.../kogito-addons-data-audit-springboot/pom.xml | 5 +++
.../audit/springboot/DataAuditHealthIndicator.java | 4 +--
.../SpringbootAuditDataConfiguration.java | 38 +++++++++++++++++++---
.../data-index-common-addons-springboot/pom.xml | 5 +++
.../sprinboot/addon/DataIndexHealthIndicator.java | 4 +--
.../storage/DataIndexSpringbootConfiguration.java | 2 +-
.../springboot/KogitoSpringBootApplication.java | 11 +++++++
.../jpa/SpringbootJPAJobStoreConfiguration.java | 2 +-
.../kogito-addons-springboot-embedded-jobs/pom.xml | 5 +++
.../springboot/EmbeddedJobsHealthIndicator.java | 4 +--
kogito-apps-build-parent/pom.xml | 12 ++++---
13 files changed, 83 insertions(+), 18 deletions(-)
diff --git
a/apps-integration-tests/integration-tests-data-index-service/integration-tests-data-index-service-springboot/pom.xml
b/apps-integration-tests/integration-tests-data-index-service/integration-tests-data-index-service-springboot/pom.xml
index 954a439cb..f5045e191 100644
---
a/apps-integration-tests/integration-tests-data-index-service/integration-tests-data-index-service-springboot/pom.xml
+++
b/apps-integration-tests/integration-tests-data-index-service/integration-tests-data-index-service-springboot/pom.xml
@@ -61,6 +61,13 @@
<groupId>org.kie</groupId>
<artifactId>kie-addons-springboot-events-process-kafka</artifactId>
</dependency>
+ <!-- spring-boot-kafka: hosts the KafkaTemplate auto-configure used by
+ kie-addons-springboot-events-process-kafka. TODO move this into that
addon's pom upstream so
+ consumers get it transitively. -->
+ <dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-kafka</artifactId>
+ </dependency>
<dependency>
<groupId>org.kie</groupId>
<artifactId>kie-addons-springboot-process-management</artifactId>
diff --git
a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-springboot/src/main/java/org/kie/kogito/app/audit/springboot/SpringbootJPAAuditDataConfiguration.java
b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-springboot/src/main/java/org/kie/kogito/app/audit/springboot/SpringbootJPAAuditDataConfiguration.java
index 98734d9c2..c473fe38e 100644
---
a/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-springboot/src/main/java/org/kie/kogito/app/audit/springboot/SpringbootJPAAuditDataConfiguration.java
+++
b/data-audit/kogito-addons-data-audit-jpa/kogito-addons-data-audit-jpa-springboot/src/main/java/org/kie/kogito/app/audit/springboot/SpringbootJPAAuditDataConfiguration.java
@@ -18,7 +18,7 @@
*/
package org.kie.kogito.app.audit.springboot;
-import org.springframework.boot.autoconfigure.domain.EntityScan;
+import org.springframework.boot.persistence.autoconfigure.EntityScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.transaction.annotation.EnableTransactionManagement;
diff --git a/data-audit/kogito-addons-data-audit-springboot/pom.xml
b/data-audit/kogito-addons-data-audit-springboot/pom.xml
index 5beaeab35..9abd35a98 100644
--- a/data-audit/kogito-addons-data-audit-springboot/pom.xml
+++ b/data-audit/kogito-addons-data-audit-springboot/pom.xml
@@ -69,6 +69,11 @@
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-actuator</artifactId>
</dependency>
+ <!-- spring-boot-health: hosts the actuator Health SPI used by
@HealthIndicator below. -->
+ <dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-health</artifactId>
+ </dependency>
<!--testing -->
<dependency>
<groupId>org.kie.kogito</groupId>
diff --git
a/data-audit/kogito-addons-data-audit-springboot/src/main/java/org/kie/kogito/app/audit/springboot/DataAuditHealthIndicator.java
b/data-audit/kogito-addons-data-audit-springboot/src/main/java/org/kie/kogito/app/audit/springboot/DataAuditHealthIndicator.java
index 814b11ce0..63409ae2a 100644
---
a/data-audit/kogito-addons-data-audit-springboot/src/main/java/org/kie/kogito/app/audit/springboot/DataAuditHealthIndicator.java
+++
b/data-audit/kogito-addons-data-audit-springboot/src/main/java/org/kie/kogito/app/audit/springboot/DataAuditHealthIndicator.java
@@ -18,8 +18,8 @@
*/
package org.kie.kogito.app.audit.springboot;
-import org.springframework.boot.actuate.health.Health;
-import org.springframework.boot.actuate.health.HealthIndicator;
+import org.springframework.boot.health.contributor.Health;
+import org.springframework.boot.health.contributor.HealthIndicator;
import org.springframework.stereotype.Component;
@Component
diff --git
a/data-audit/kogito-addons-data-audit-springboot/src/main/java/org/kie/kogito/app/audit/springboot/SpringbootAuditDataConfiguration.java
b/data-audit/kogito-addons-data-audit-springboot/src/main/java/org/kie/kogito/app/audit/springboot/SpringbootAuditDataConfiguration.java
index da405657f..a9408a145 100644
---
a/data-audit/kogito-addons-data-audit-springboot/src/main/java/org/kie/kogito/app/audit/springboot/SpringbootAuditDataConfiguration.java
+++
b/data-audit/kogito-addons-data-audit-springboot/src/main/java/org/kie/kogito/app/audit/springboot/SpringbootAuditDataConfiguration.java
@@ -21,19 +21,49 @@ package org.kie.kogito.app.audit.springboot;
import org.springframework.beans.factory.config.BeanPostProcessor;
import org.springframework.boot.SpringBootConfiguration;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
+import
org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
+import org.springframework.http.MediaType;
+import org.springframework.http.converter.json.Jackson2ObjectMapperBuilder;
+import
org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
+import com.fasterxml.jackson.databind.ObjectMapper;
+
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan
public class SpringbootAuditDataConfiguration {
- // Hibernate 7 + Spring ORM 6.2 workaround: Hibernate 7's
SessionFactory.getSchemaManager()
- // returns org.hibernate.relational.SchemaManager, conflicting with JPA
3.2's
- // EntityManagerFactory.getSchemaManager() returning
jakarta.persistence.SchemaManager.
- // Force plain JPA interface to avoid JDK Proxy incompatible return type
error.
+ // Jackson 2 @Bean for the data-audit addon. Remove together with
+ // https://github.com/apache/incubator-kie-drools/issues/6702 (Jackson 3
migration).
+ @Bean
+ @ConditionalOnMissingBean
+ public ObjectMapper objectMapper() {
+ return Jackson2ObjectMapperBuilder.json().build();
+ }
+
+ // Jackson 2 HTTP message converter — GraphQLAuditDataRouteMapping uses
Jackson 2's JsonNode in
+ // @RequestBody. canWrite refuses String and byte[] so DMN's
pre-serialized JSON and springdoc's
+ // /v3/api-docs are not re-encoded by Jackson. Remove together with the
@Bean ObjectMapper above
+ // (same issue: #6702).
+ @Bean
+ @ConditionalOnMissingBean(MappingJackson2HttpMessageConverter.class)
+ public MappingJackson2HttpMessageConverter
mappingJackson2HttpMessageConverter(ObjectMapper objectMapper) {
+ return new MappingJackson2HttpMessageConverter(objectMapper) {
+ @Override
+ public boolean canWrite(Class<?> clazz, MediaType mediaType) {
+ if (clazz == String.class || clazz == byte[].class) {
+ return false;
+ }
+ return super.canWrite(clazz, mediaType);
+ }
+ };
+ }
+
+ // Force the plain JPA interface on the EntityManagerFactory bean.
Hibernate 7's
+ // SessionFactory.getSchemaManager() return type conflicts with JPA 3.2's,
which breaks the JDK Proxy.
@Bean
public static BeanPostProcessor auditDataEmfPostProcessor() {
return new BeanPostProcessor() {
diff --git
a/data-index/data-index-springboot/data-index-common-addons-springboot/pom.xml
b/data-index/data-index-springboot/data-index-common-addons-springboot/pom.xml
index f39fc5a11..2a2894abd 100644
---
a/data-index/data-index-springboot/data-index-common-addons-springboot/pom.xml
+++
b/data-index/data-index-springboot/data-index-common-addons-springboot/pom.xml
@@ -58,6 +58,11 @@
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-actuator</artifactId>
</dependency>
+ <!-- spring-boot-health: hosts the actuator Health SPI used by
@HealthIndicator below. -->
+ <dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-health</artifactId>
+ </dependency>
</dependencies>
<dependencyManagement>
diff --git
a/data-index/data-index-springboot/data-index-common-addons-springboot/src/main/java/org/kie/kogito/index/sprinboot/addon/DataIndexHealthIndicator.java
b/data-index/data-index-springboot/data-index-common-addons-springboot/src/main/java/org/kie/kogito/index/sprinboot/addon/DataIndexHealthIndicator.java
index 966b130a2..cf9c026a2 100644
---
a/data-index/data-index-springboot/data-index-common-addons-springboot/src/main/java/org/kie/kogito/index/sprinboot/addon/DataIndexHealthIndicator.java
+++
b/data-index/data-index-springboot/data-index-common-addons-springboot/src/main/java/org/kie/kogito/index/sprinboot/addon/DataIndexHealthIndicator.java
@@ -18,8 +18,8 @@
*/
package org.kie.kogito.index.sprinboot.addon;
-import org.springframework.boot.actuate.health.Health;
-import org.springframework.boot.actuate.health.HealthIndicator;
+import org.springframework.boot.health.contributor.Health;
+import org.springframework.boot.health.contributor.HealthIndicator;
import org.springframework.stereotype.Component;
@Component
diff --git
a/data-index/data-index-springboot/data-index-storage-jpa-springboot/src/main/java/org/kie/kogito/index/jpa/springboot/storage/DataIndexSpringbootConfiguration.java
b/data-index/data-index-springboot/data-index-storage-jpa-springboot/src/main/java/org/kie/kogito/index/jpa/springboot/storage/DataIndexSpringbootConfiguration.java
index ebae71158..414b6eb1c 100644
---
a/data-index/data-index-springboot/data-index-storage-jpa-springboot/src/main/java/org/kie/kogito/index/jpa/springboot/storage/DataIndexSpringbootConfiguration.java
+++
b/data-index/data-index-springboot/data-index-storage-jpa-springboot/src/main/java/org/kie/kogito/index/jpa/springboot/storage/DataIndexSpringbootConfiguration.java
@@ -19,7 +19,7 @@
package org.kie.kogito.index.jpa.springboot.storage;
import org.springframework.beans.factory.config.BeanPostProcessor;
-import org.springframework.boot.autoconfigure.domain.EntityScan;
+import org.springframework.boot.persistence.autoconfigure.EntityScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
diff --git
a/data-index/data-index-springboot/data-index-storage-jpa-springboot/src/test/java/org/kie/kogito/index/jpa/springboot/KogitoSpringBootApplication.java
b/data-index/data-index-springboot/data-index-storage-jpa-springboot/src/test/java/org/kie/kogito/index/jpa/springboot/KogitoSpringBootApplication.java
index 57c6ae975..75ae53ac0 100644
---
a/data-index/data-index-springboot/data-index-storage-jpa-springboot/src/test/java/org/kie/kogito/index/jpa/springboot/KogitoSpringBootApplication.java
+++
b/data-index/data-index-springboot/data-index-storage-jpa-springboot/src/test/java/org/kie/kogito/index/jpa/springboot/KogitoSpringBootApplication.java
@@ -20,6 +20,10 @@ package org.kie.kogito.index.jpa.springboot;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.context.annotation.Bean;
+import org.springframework.http.converter.json.Jackson2ObjectMapperBuilder;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
@SpringBootApplication(scanBasePackages = { "org.kie.kogito.**" })
public class KogitoSpringBootApplication {
@@ -27,4 +31,11 @@ public class KogitoSpringBootApplication {
public static void main(String[] args) {
SpringApplication.run(KogitoSpringBootApplication.class, args);
}
+
+ // Jackson 2 @Bean (data-index test fixture). Remove together with
+ // https://github.com/apache/incubator-kie-drools/issues/6702 (Jackson 3
migration).
+ @Bean
+ public ObjectMapper objectMapper() {
+ return Jackson2ObjectMapperBuilder.json().build();
+ }
}
diff --git
a/jobs/kogito-addons-embedded-jobs-jpa/kogito-addons-springboot-embedded-jobs-jpa/src/main/java/org/kie/kogito/app/jobs/springboot/jpa/SpringbootJPAJobStoreConfiguration.java
b/jobs/kogito-addons-embedded-jobs-jpa/kogito-addons-springboot-embedded-jobs-jpa/src/main/java/org/kie/kogito/app/jobs/springboot/jpa/SpringbootJPAJobStoreConfiguration.java
index 409171ff1..282bbe374 100644
---
a/jobs/kogito-addons-embedded-jobs-jpa/kogito-addons-springboot-embedded-jobs-jpa/src/main/java/org/kie/kogito/app/jobs/springboot/jpa/SpringbootJPAJobStoreConfiguration.java
+++
b/jobs/kogito-addons-embedded-jobs-jpa/kogito-addons-springboot-embedded-jobs-jpa/src/main/java/org/kie/kogito/app/jobs/springboot/jpa/SpringbootJPAJobStoreConfiguration.java
@@ -20,7 +20,7 @@ package org.kie.kogito.app.jobs.springboot.jpa;
import org.springframework.beans.factory.config.BeanPostProcessor;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
-import org.springframework.boot.autoconfigure.domain.EntityScan;
+import org.springframework.boot.persistence.autoconfigure.EntityScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
diff --git a/jobs/kogito-addons-springboot-embedded-jobs/pom.xml
b/jobs/kogito-addons-springboot-embedded-jobs/pom.xml
index c421170e5..54128e5c5 100644
--- a/jobs/kogito-addons-springboot-embedded-jobs/pom.xml
+++ b/jobs/kogito-addons-springboot-embedded-jobs/pom.xml
@@ -70,6 +70,11 @@
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-actuator</artifactId>
</dependency>
+ <!-- spring-boot-health: hosts the actuator Health SPI used by
@HealthIndicator below. -->
+ <dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-health</artifactId>
+ </dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
diff --git
a/jobs/kogito-addons-springboot-embedded-jobs/src/main/java/org/kie/kogito/app/jobs/springboot/EmbeddedJobsHealthIndicator.java
b/jobs/kogito-addons-springboot-embedded-jobs/src/main/java/org/kie/kogito/app/jobs/springboot/EmbeddedJobsHealthIndicator.java
index b4de18364..a30d1eb20 100644
---
a/jobs/kogito-addons-springboot-embedded-jobs/src/main/java/org/kie/kogito/app/jobs/springboot/EmbeddedJobsHealthIndicator.java
+++
b/jobs/kogito-addons-springboot-embedded-jobs/src/main/java/org/kie/kogito/app/jobs/springboot/EmbeddedJobsHealthIndicator.java
@@ -18,8 +18,8 @@
*/
package org.kie.kogito.app.jobs.springboot;
-import org.springframework.boot.actuate.health.Health;
-import org.springframework.boot.actuate.health.HealthIndicator;
+import org.springframework.boot.health.contributor.Health;
+import org.springframework.boot.health.contributor.HealthIndicator;
import org.springframework.stereotype.Component;
@Component
diff --git a/kogito-apps-build-parent/pom.xml b/kogito-apps-build-parent/pom.xml
index 6fcf0b379..5d52f05a4 100644
--- a/kogito-apps-build-parent/pom.xml
+++ b/kogito-apps-build-parent/pom.xml
@@ -62,7 +62,9 @@
<!-- OptaPlanner version -->
<version.org.optaplanner>${project.version}</version.org.optaplanner>
- <version.org.hibernate>7.1.14.Final</version.org.hibernate>
+ <!-- Aligned with kogito-runtimes' kogito-dependencies-bom. Pinned
7.1.x because Quarkus's
+ quarkus-hibernate-orm uses org.hibernate.internal.CoreLogging,
removed in 7.2.x. -->
+ <version.org.hibernate>7.1.18.Final</version.org.hibernate>
<version.org.apache.opennlp>2.5.9</version.org.apache.opennlp>
<version.org.apache.commons.csv>1.10.0</version.org.apache.commons.csv>
<version.org.jredisearch>2.2.0</version.org.jredisearch>
@@ -70,10 +72,10 @@
<version.org.json>20231013</version.org.json>
<version.org.mapstruct>1.5.5.Final</version.org.mapstruct>
<version.org.skyscreamer>1.5.1</version.org.skyscreamer>
- <!-- graphql-java upgraded from 22.0 to 24.3 for java-dataloader
3.4.0+ compatibility
- required by Spring Boot 3.5.x
(DataLoaderOptions.newDefaultOptions()).
- extended-scalars version must match graphql-java major version.
-->
- <version.com.graphql-java>24.3</version.com.graphql-java>
+ <!-- spring-graphql in Spring Boot 4.0.5 calls
ExecutionInput.cancel(), added in graphql-java 25.
+ extended-scalars stays at 24.0 (no 25.x release on Maven Central
yet; binary-compatible
+ for the scalars used here). -->
+ <version.com.graphql-java>25.0</version.com.graphql-java>
<version.com.graphql-java-extended-scalars>24.0</version.com.graphql-java-extended-scalars>
<!-- Explainability Toolkit version -->
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]