From 74c623512d5aeb74af86d1136d7b21fb7bed67cf Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 29 Dec 2025 05:52:03 +0000 Subject: [PATCH 1/3] Initial plan From 7df520ca914495f244cfdae7d3b9cf148a2b6370 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 29 Dec 2025 06:01:56 +0000 Subject: [PATCH 2/3] Upgrade Spring Boot to 4.0.1 and Wicket to 10.8.0, Wicketstuff to 10.7.0 Co-authored-by: keesvandieren <863966+keesvandieren@users.noreply.github.com> --- pom.xml | 6 +++--- .../boot/example/web/WicketWebApplicationConfig.java | 9 +-------- .../datastore/cassandra/DataStoreCassandraConfig.java | 3 --- .../datastore/hazelcast/DataStoreHazelcastConfig.java | 3 --- .../stuff/datastore/redis/DataStoreRedisConfig.java | 3 --- 5 files changed, 4 insertions(+), 20 deletions(-) diff --git a/pom.xml b/pom.xml index cf6f3914..eeaf0ae1 100644 --- a/pom.xml +++ b/pom.xml @@ -22,7 +22,7 @@ org.springframework.boot spring-boot-starter-parent - 3.5.5 + 4.0.1 @@ -54,8 +54,8 @@ UTF-8 17 2.0.5 - 10.6.0 - 10.6.0 + 10.8.0 + 10.7.0 diff --git a/wicket-spring-boot-starter-example/src/test/java/test/com/giffing/wicket/spring/boot/example/web/WicketWebApplicationConfig.java b/wicket-spring-boot-starter-example/src/test/java/test/com/giffing/wicket/spring/boot/example/web/WicketWebApplicationConfig.java index e820f437..1ce98046 100644 --- a/wicket-spring-boot-starter-example/src/test/java/test/com/giffing/wicket/spring/boot/example/web/WicketWebApplicationConfig.java +++ b/wicket-spring-boot-starter-example/src/test/java/test/com/giffing/wicket/spring/boot/example/web/WicketWebApplicationConfig.java @@ -5,9 +5,6 @@ import org.apache.wicket.markup.html.WebPage; import org.apache.wicket.resource.loader.ClassStringResourceLoader; import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.boot.autoconfigure.data.jpa.JpaRepositoriesAutoConfiguration; -import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; -import org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration; import org.springframework.context.annotation.ComponentScan; import org.springframework.transaction.annotation.EnableTransactionManagement; @@ -19,11 +16,7 @@ import com.giffing.wicket.spring.boot.starter.configuration.extensions.external.spring.security.SecureWebSession; //TODO move to test -@SpringBootApplication(exclude = { - DataSourceAutoConfiguration.class, - JpaRepositoriesAutoConfiguration.class, - HibernateJpaAutoConfiguration.class, -}) +@SpringBootApplication @ComponentScan(basePackageClasses = SpringBootWebPackageIdentifier.class) @EnableTransactionManagement public class WicketWebApplicationConfig extends WicketBootSecuredWebApplication { diff --git a/wicket-spring-boot-starter/src/main/java/com/giffing/wicket/spring/boot/starter/configuration/extensions/stuff/datastore/cassandra/DataStoreCassandraConfig.java b/wicket-spring-boot-starter/src/main/java/com/giffing/wicket/spring/boot/starter/configuration/extensions/stuff/datastore/cassandra/DataStoreCassandraConfig.java index 02b87cf4..f36813fe 100644 --- a/wicket-spring-boot-starter/src/main/java/com/giffing/wicket/spring/boot/starter/configuration/extensions/stuff/datastore/cassandra/DataStoreCassandraConfig.java +++ b/wicket-spring-boot-starter/src/main/java/com/giffing/wicket/spring/boot/starter/configuration/extensions/stuff/datastore/cassandra/DataStoreCassandraConfig.java @@ -5,8 +5,6 @@ import org.apache.wicket.pageStore.IPageStore; import org.apache.wicket.protocol.http.WebApplication; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.autoconfigure.AutoConfigureAfter; -import org.springframework.boot.autoconfigure.cassandra.CassandraAutoConfiguration; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.context.properties.EnableConfigurationProperties; @@ -37,7 +35,6 @@ @ConditionalOnProperty(prefix = DataStoreCassandraProperties.PROPERTY_PREFIX, value = "enabled", matchIfMissing = true) @ConditionalOnClass(name = "com.datastax.driver.core.Session", value = {CassandraDataStore.class}) @EnableConfigurationProperties({DataStoreCassandraProperties.class}) -@AutoConfigureAfter(CassandraAutoConfiguration.class) @RequiredArgsConstructor public class DataStoreCassandraConfig implements WicketApplicationInitConfiguration { diff --git a/wicket-spring-boot-starter/src/main/java/com/giffing/wicket/spring/boot/starter/configuration/extensions/stuff/datastore/hazelcast/DataStoreHazelcastConfig.java b/wicket-spring-boot-starter/src/main/java/com/giffing/wicket/spring/boot/starter/configuration/extensions/stuff/datastore/hazelcast/DataStoreHazelcastConfig.java index 00a657ad..6ec0ea4f 100644 --- a/wicket-spring-boot-starter/src/main/java/com/giffing/wicket/spring/boot/starter/configuration/extensions/stuff/datastore/hazelcast/DataStoreHazelcastConfig.java +++ b/wicket-spring-boot-starter/src/main/java/com/giffing/wicket/spring/boot/starter/configuration/extensions/stuff/datastore/hazelcast/DataStoreHazelcastConfig.java @@ -5,11 +5,9 @@ import org.apache.wicket.pageStore.IPageStore; import org.apache.wicket.protocol.http.WebApplication; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.autoconfigure.AutoConfigureAfter; import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; -import org.springframework.boot.autoconfigure.hazelcast.HazelcastAutoConfiguration; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.wicketstuff.datastores.common.SessionQuotaManagingDataStore; import org.wicketstuff.datastores.hazelcast.HazelcastDataStore; @@ -38,7 +36,6 @@ @ConditionalOnBean(HazelcastInstance.class) @ConditionalOnClass({HazelcastInstance.class, HazelcastDataStore.class}) @EnableConfigurationProperties({DataStoreHazelcastProperties.class}) -@AutoConfigureAfter(HazelcastAutoConfiguration.class) @RequiredArgsConstructor public class DataStoreHazelcastConfig implements WicketApplicationInitConfiguration { diff --git a/wicket-spring-boot-starter/src/main/java/com/giffing/wicket/spring/boot/starter/configuration/extensions/stuff/datastore/redis/DataStoreRedisConfig.java b/wicket-spring-boot-starter/src/main/java/com/giffing/wicket/spring/boot/starter/configuration/extensions/stuff/datastore/redis/DataStoreRedisConfig.java index c5170021..d7f8fc7f 100644 --- a/wicket-spring-boot-starter/src/main/java/com/giffing/wicket/spring/boot/starter/configuration/extensions/stuff/datastore/redis/DataStoreRedisConfig.java +++ b/wicket-spring-boot-starter/src/main/java/com/giffing/wicket/spring/boot/starter/configuration/extensions/stuff/datastore/redis/DataStoreRedisConfig.java @@ -5,10 +5,8 @@ import org.apache.wicket.pageStore.IPageStore; import org.apache.wicket.protocol.http.WebApplication; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.autoconfigure.AutoConfigureAfter; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; -import org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.wicketstuff.datastores.common.SessionQuotaManagingDataStore; import org.wicketstuff.datastores.redis.IRedisSettings; @@ -39,7 +37,6 @@ @ConditionalOnProperty(prefix = DataStoreRedisProperties.PROPERTY_PREFIX, value = "enabled", matchIfMissing = true) @ConditionalOnClass({Jedis.class, RedisDataStore.class}) @EnableConfigurationProperties({DataStoreRedisProperties.class}) -@AutoConfigureAfter(RedisAutoConfiguration.class) @RequiredArgsConstructor public class DataStoreRedisConfig implements WicketApplicationInitConfiguration { From 4714d78f71cf3d3fa1a86e61a4cc8e740617d769 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 29 Dec 2025 06:10:21 +0000 Subject: [PATCH 3/3] Fix JPA Specification null handling and add spring-boot-starter-liquibase for Spring Boot 4.0 compatibility Co-authored-by: keesvandieren <863966+keesvandieren@users.noreply.github.com> --- wicket-spring-boot-starter-example/pom.xml | 4 ++-- .../customer/CustomerRepositoryServiceImpl.java | 14 +++++++------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/wicket-spring-boot-starter-example/pom.xml b/wicket-spring-boot-starter-example/pom.xml index 42ff4770..5f9c6005 100644 --- a/wicket-spring-boot-starter-example/pom.xml +++ b/wicket-spring-boot-starter-example/pom.xml @@ -112,8 +112,8 @@ 4.0.6 - org.liquibase - liquibase-core + org.springframework.boot + spring-boot-starter-liquibase org.apache.commons diff --git a/wicket-spring-boot-starter-example/src/main/java/com/giffing/wicket/spring/boot/example/repository/services/customer/CustomerRepositoryServiceImpl.java b/wicket-spring-boot-starter-example/src/main/java/com/giffing/wicket/spring/boot/example/repository/services/customer/CustomerRepositoryServiceImpl.java index 1e419f21..64e125bf 100644 --- a/wicket-spring-boot-starter-example/src/main/java/com/giffing/wicket/spring/boot/example/repository/services/customer/CustomerRepositoryServiceImpl.java +++ b/wicket-spring-boot-starter-example/src/main/java/com/giffing/wicket/spring/boot/example/repository/services/customer/CustomerRepositoryServiceImpl.java @@ -71,13 +71,13 @@ private Specification filter(CustomerFilter filter) { specs.add(CustomerSpecs.hasActive(filter.isActive())); } - Specification spec = null; - for (Specification specification : specs) { - if (spec == null) { - spec = Specification.where(specification); - } else { - spec = spec.and(specification); - } + if (specs.isEmpty()) { + return (root, query, cb) -> cb.conjunction(); + } + + Specification spec = specs.get(0); + for (int i = 1; i < specs.size(); i++) { + spec = spec.and(specs.get(i)); } return spec;