diff --git a/build.gradle b/build.gradle index a8b4dee56..f8041e957 100644 --- a/build.gradle +++ b/build.gradle @@ -4,7 +4,7 @@ buildscript { snapshotBuild = version.endsWith('SNAPSHOT') milestoneBuild = !(releaseBuild || snapshotBuild) - springBootVersion = '2.2.7.RELEASE' + springBootVersion = '2.3.0.RELEASE' } repositories { diff --git a/spring-session-docs/spring-session-docs.gradle b/spring-session-docs/spring-session-docs.gradle index 33c9f01de..d6efa1ba2 100644 --- a/spring-session-docs/spring-session-docs.gradle +++ b/spring-session-docs/spring-session-docs.gradle @@ -16,7 +16,7 @@ dependencies { testCompile 'org.mockito:mockito-core' testCompile 'org.springframework:spring-test' testCompile 'org.assertj:assertj-core' - testCompile 'com.hazelcast:hazelcast' + testCompile 'com.hazelcast:hazelcast:4.0.1' testCompile 'io.lettuce:lettuce-core' testCompile 'javax.servlet:javax.servlet-api' testCompile 'org.junit.jupiter:junit-jupiter-api' diff --git a/spring-session-docs/src/test/java/docs/http/HazelcastHttpSessionConfig.java b/spring-session-docs/src/test/java/docs/http/HazelcastHttpSessionConfig.java index 3aad03149..3cead0f98 100644 --- a/spring-session-docs/src/test/java/docs/http/HazelcastHttpSessionConfig.java +++ b/spring-session-docs/src/test/java/docs/http/HazelcastHttpSessionConfig.java @@ -17,8 +17,9 @@ package docs.http; import com.hazelcast.config.Config; -import com.hazelcast.config.MapAttributeConfig; -import com.hazelcast.config.MapIndexConfig; +import com.hazelcast.config.AttributeConfig; +import com.hazelcast.config.IndexConfig; +import com.hazelcast.config.IndexType; import com.hazelcast.core.Hazelcast; import com.hazelcast.core.HazelcastInstance; @@ -36,12 +37,12 @@ public class HazelcastHttpSessionConfig { @Bean public HazelcastInstance hazelcastInstance() { Config config = new Config(); - MapAttributeConfig attributeConfig = new MapAttributeConfig() + AttributeConfig attributeConfig = new AttributeConfig() .setName(HazelcastIndexedSessionRepository.PRINCIPAL_NAME_ATTRIBUTE) - .setExtractor(PrincipalNameExtractor.class.getName()); + .setExtractorClassName(PrincipalNameExtractor.class.getName()); config.getMapConfig(HazelcastIndexedSessionRepository.DEFAULT_SESSION_MAP_NAME) // <2> - .addMapAttributeConfig(attributeConfig).addMapIndexConfig( - new MapIndexConfig(HazelcastIndexedSessionRepository.PRINCIPAL_NAME_ATTRIBUTE, false)); + .addAttributeConfig(attributeConfig).addIndexConfig( + new IndexConfig(IndexType.HASH, HazelcastIndexedSessionRepository.PRINCIPAL_NAME_ATTRIBUTE)); return Hazelcast.newHazelcastInstance(config); // <3> } diff --git a/spring-session-hazelcast/spring-session-hazelcast.gradle b/spring-session-hazelcast/spring-session-hazelcast.gradle index b3a675020..9d8cc17bc 100644 --- a/spring-session-hazelcast/spring-session-hazelcast.gradle +++ b/spring-session-hazelcast/spring-session-hazelcast.gradle @@ -2,7 +2,7 @@ apply plugin: 'io.spring.convention.spring-module' dependencies { compile project(':spring-session-core') - compile "com.hazelcast:hazelcast" + compile "com.hazelcast:hazelcast:4.0.1" compile "javax.annotation:javax.annotation-api" compile "org.springframework:spring-context" diff --git a/spring-session-hazelcast/src/integration-test/java/org/springframework/session/hazelcast/AbstractHazelcastIndexedSessionRepositoryITests.java b/spring-session-hazelcast/src/integration-test/java/org/springframework/session/hazelcast/AbstractHazelcastIndexedSessionRepositoryITests.java index fa2584461..78d5fe4b5 100644 --- a/spring-session-hazelcast/src/integration-test/java/org/springframework/session/hazelcast/AbstractHazelcastIndexedSessionRepositoryITests.java +++ b/spring-session-hazelcast/src/integration-test/java/org/springframework/session/hazelcast/AbstractHazelcastIndexedSessionRepositoryITests.java @@ -17,8 +17,8 @@ package org.springframework.session.hazelcast; import com.hazelcast.core.HazelcastInstance; -import com.hazelcast.core.IMap; -import com.hazelcast.instance.HazelcastInstanceProxy; +import com.hazelcast.instance.impl.HazelcastInstanceProxy; +import com.hazelcast.map.IMap; import org.junit.jupiter.api.Assumptions; import org.junit.jupiter.api.Test; diff --git a/spring-session-hazelcast/src/integration-test/java/org/springframework/session/hazelcast/ClientServerHazelcastIndexedSessionRepositoryITests.java b/spring-session-hazelcast/src/integration-test/java/org/springframework/session/hazelcast/ClientServerHazelcastIndexedSessionRepositoryITests.java index 8f43a1cce..f4a361d0e 100644 --- a/spring-session-hazelcast/src/integration-test/java/org/springframework/session/hazelcast/ClientServerHazelcastIndexedSessionRepositoryITests.java +++ b/spring-session-hazelcast/src/integration-test/java/org/springframework/session/hazelcast/ClientServerHazelcastIndexedSessionRepositoryITests.java @@ -46,7 +46,7 @@ @WebAppConfiguration class ClientServerHazelcastIndexedSessionRepositoryITests extends AbstractHazelcastIndexedSessionRepositoryITests { - private static GenericContainer container = new GenericContainer<>("hazelcast/hazelcast:3.12.3") + private static GenericContainer container = new GenericContainer<>("hazelcast/hazelcast:4.0.1") .withExposedPorts(5701).withCopyFileToContainer(MountableFile.forClasspathResource("/hazelcast-server.xml"), "/opt/hazelcast/hazelcast.xml"); diff --git a/spring-session-hazelcast/src/integration-test/java/org/springframework/session/hazelcast/HazelcastITestUtils.java b/spring-session-hazelcast/src/integration-test/java/org/springframework/session/hazelcast/HazelcastITestUtils.java index 00eec67b2..735b5734a 100644 --- a/spring-session-hazelcast/src/integration-test/java/org/springframework/session/hazelcast/HazelcastITestUtils.java +++ b/spring-session-hazelcast/src/integration-test/java/org/springframework/session/hazelcast/HazelcastITestUtils.java @@ -16,9 +16,10 @@ package org.springframework.session.hazelcast; +import com.hazelcast.config.AttributeConfig; import com.hazelcast.config.Config; -import com.hazelcast.config.MapAttributeConfig; -import com.hazelcast.config.MapIndexConfig; +import com.hazelcast.config.IndexConfig; +import com.hazelcast.config.IndexType; import com.hazelcast.config.NetworkConfig; import com.hazelcast.core.Hazelcast; import com.hazelcast.core.HazelcastInstance; @@ -42,12 +43,12 @@ static HazelcastInstance embeddedHazelcastServer() { NetworkConfig networkConfig = config.getNetworkConfig(); networkConfig.setPort(0); networkConfig.getJoin().getMulticastConfig().setEnabled(false); - MapAttributeConfig attributeConfig = new MapAttributeConfig() + AttributeConfig attributeConfig = new AttributeConfig() .setName(HazelcastIndexedSessionRepository.PRINCIPAL_NAME_ATTRIBUTE) - .setExtractor(PrincipalNameExtractor.class.getName()); + .setExtractorClassName(PrincipalNameExtractor.class.getName()); config.getMapConfig(HazelcastIndexedSessionRepository.DEFAULT_SESSION_MAP_NAME) - .addMapAttributeConfig(attributeConfig).addMapIndexConfig( - new MapIndexConfig(HazelcastIndexedSessionRepository.PRINCIPAL_NAME_ATTRIBUTE, false)); + .addAttributeConfig(attributeConfig).addIndexConfig( + new IndexConfig(IndexType.HASH, HazelcastIndexedSessionRepository.PRINCIPAL_NAME_ATTRIBUTE)); return Hazelcast.newHazelcastInstance(config); } diff --git a/spring-session-hazelcast/src/integration-test/resources/hazelcast-server.xml b/spring-session-hazelcast/src/integration-test/resources/hazelcast-server.xml index a21dd5786..cf29846c1 100644 --- a/spring-session-hazelcast/src/integration-test/resources/hazelcast-server.xml +++ b/spring-session-hazelcast/src/integration-test/resources/hazelcast-server.xml @@ -1,7 +1,7 @@ + xsi:schemaLocation="http://www.hazelcast.com/schema/config https://www.hazelcast.com/schema/config/hazelcast-config-4.0.xsd"> diff --git a/spring-session-hazelcast/src/main/java/org/springframework/session/hazelcast/HazelcastIndexedSessionRepository.java b/spring-session-hazelcast/src/main/java/org/springframework/session/hazelcast/HazelcastIndexedSessionRepository.java index 4de118c64..d8dbeee28 100644 --- a/spring-session-hazelcast/src/main/java/org/springframework/session/hazelcast/HazelcastIndexedSessionRepository.java +++ b/spring-session-hazelcast/src/main/java/org/springframework/session/hazelcast/HazelcastIndexedSessionRepository.java @@ -23,6 +23,7 @@ import java.util.HashMap; import java.util.Map; import java.util.Set; +import java.util.UUID; import java.util.concurrent.TimeUnit; import javax.annotation.PostConstruct; @@ -30,7 +31,7 @@ import com.hazelcast.core.EntryEvent; import com.hazelcast.core.HazelcastInstance; -import com.hazelcast.core.IMap; +import com.hazelcast.map.IMap; import com.hazelcast.map.listener.EntryAddedListener; import com.hazelcast.map.listener.EntryEvictedListener; import com.hazelcast.map.listener.EntryRemovedListener; @@ -152,7 +153,7 @@ public class HazelcastIndexedSessionRepository private IMap sessions; - private String sessionListenerId; + private UUID sessionListenerId; /** * Create a new {@link HazelcastIndexedSessionRepository} instance. diff --git a/spring-session-hazelcast/src/main/java/org/springframework/session/hazelcast/PrincipalNameExtractor.java b/spring-session-hazelcast/src/main/java/org/springframework/session/hazelcast/PrincipalNameExtractor.java index 6de56c6c6..b9763fb89 100644 --- a/spring-session-hazelcast/src/main/java/org/springframework/session/hazelcast/PrincipalNameExtractor.java +++ b/spring-session-hazelcast/src/main/java/org/springframework/session/hazelcast/PrincipalNameExtractor.java @@ -29,7 +29,7 @@ * @author Vedran Pavic * @since 1.3.0 */ -public class PrincipalNameExtractor extends ValueExtractor { +public class PrincipalNameExtractor implements ValueExtractor { @Override @SuppressWarnings("unchecked") diff --git a/spring-session-hazelcast/src/main/java/org/springframework/session/hazelcast/SessionUpdateEntryProcessor.java b/spring-session-hazelcast/src/main/java/org/springframework/session/hazelcast/SessionUpdateEntryProcessor.java index 9d0f0e3ef..56f3d7ca3 100644 --- a/spring-session-hazelcast/src/main/java/org/springframework/session/hazelcast/SessionUpdateEntryProcessor.java +++ b/spring-session-hazelcast/src/main/java/org/springframework/session/hazelcast/SessionUpdateEntryProcessor.java @@ -21,7 +21,6 @@ import java.util.Map; import com.hazelcast.core.Offloadable; -import com.hazelcast.map.AbstractEntryProcessor; import com.hazelcast.map.EntryProcessor; import org.springframework.session.MapSession; @@ -34,7 +33,7 @@ * @since 1.3.4 * @see HazelcastIndexedSessionRepository#save(HazelcastSession) */ -public class SessionUpdateEntryProcessor extends AbstractEntryProcessor implements Offloadable { +public class SessionUpdateEntryProcessor implements EntryProcessor, Offloadable { private Instant lastAccessedTime; diff --git a/spring-session-hazelcast/src/test/java/org/springframework/session/hazelcast/HazelcastIndexedSessionRepositoryTests.java b/spring-session-hazelcast/src/test/java/org/springframework/session/hazelcast/HazelcastIndexedSessionRepositoryTests.java index f648bfe58..5a9fcb452 100644 --- a/spring-session-hazelcast/src/test/java/org/springframework/session/hazelcast/HazelcastIndexedSessionRepositoryTests.java +++ b/spring-session-hazelcast/src/test/java/org/springframework/session/hazelcast/HazelcastIndexedSessionRepositoryTests.java @@ -24,7 +24,7 @@ import java.util.concurrent.TimeUnit; import com.hazelcast.core.HazelcastInstance; -import com.hazelcast.core.IMap; +import com.hazelcast.map.IMap; import com.hazelcast.map.EntryProcessor; import com.hazelcast.map.listener.MapListener; import com.hazelcast.query.impl.predicates.EqualPredicate; diff --git a/spring-session-hazelcast/src/test/java/org/springframework/session/hazelcast/config/annotation/web/http/HazelcastHttpSessionConfigurationTests.java b/spring-session-hazelcast/src/test/java/org/springframework/session/hazelcast/config/annotation/web/http/HazelcastHttpSessionConfigurationTests.java index eb0db925b..a424cde64 100644 --- a/spring-session-hazelcast/src/test/java/org/springframework/session/hazelcast/config/annotation/web/http/HazelcastHttpSessionConfigurationTests.java +++ b/spring-session-hazelcast/src/test/java/org/springframework/session/hazelcast/config/annotation/web/http/HazelcastHttpSessionConfigurationTests.java @@ -17,7 +17,7 @@ package org.springframework.session.hazelcast.config.annotation.web.http; import com.hazelcast.core.HazelcastInstance; -import com.hazelcast.core.IMap; +import com.hazelcast.map.IMap; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.Test; diff --git a/spring-session-samples/spring-session-sample-boot-websocket/spring-session-sample-boot-websocket.gradle b/spring-session-samples/spring-session-sample-boot-websocket/spring-session-sample-boot-websocket.gradle index ab8580f33..791c9b029 100644 --- a/spring-session-samples/spring-session-sample-boot-websocket/spring-session-sample-boot-websocket.gradle +++ b/spring-session-samples/spring-session-sample-boot-websocket/spring-session-sample-boot-websocket.gradle @@ -20,6 +20,7 @@ dependencies { compile "org.webjars:stomp-websocket" compile "org.webjars:webjars-locator-core" compile "com.h2database:h2" + compile "javax.validation:validation-api" testCompile "org.springframework.boot:spring-boot-starter-test" testCompile "org.springframework.security:spring-security-test"