diff --git a/spring-session-docs/modules/ROOT/examples/java/docs/IndexDocTests.java b/spring-session-docs/modules/ROOT/examples/java/docs/IndexDocTests.java index 3326c1ae..2a19061c 100644 --- a/spring-session-docs/modules/ROOT/examples/java/docs/IndexDocTests.java +++ b/spring-session-docs/modules/ROOT/examples/java/docs/IndexDocTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2014-2022 the original author or authors. + * Copyright 2014-2023 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -19,6 +19,9 @@ package docs; import java.time.Duration; import java.util.concurrent.ConcurrentHashMap; +import com.hazelcast.config.Config; +import com.hazelcast.core.Hazelcast; +import com.hazelcast.core.HazelcastInstance; import org.junit.jupiter.api.Test; import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory; @@ -36,6 +39,7 @@ import org.springframework.session.SessionRepository; import org.springframework.session.data.redis.ReactiveRedisSessionRepository; import org.springframework.session.data.redis.RedisIndexedSessionRepository; import org.springframework.session.data.redis.RedisSessionRepository; +import org.springframework.session.hazelcast.HazelcastIndexedSessionRepository; import org.springframework.session.jdbc.JdbcIndexedSessionRepository; import org.springframework.session.web.http.SessionRepositoryFilter; import org.springframework.transaction.support.TransactionTemplate; @@ -180,21 +184,20 @@ class IndexDocTests { // end::new-jdbcindexedsessionrepository[] } - // @Test - // @SuppressWarnings("unused") - // void newHazelcastIndexedSessionRepository() { - // // tag::new-hazelcastindexedsessionrepository[] - // - // Config config = new Config(); - // - // // ... configure Hazelcast ... - // - // HazelcastInstance hazelcastInstance = Hazelcast.newHazelcastInstance(config); - // - // HazelcastIndexedSessionRepository repository = new - // HazelcastIndexedSessionRepository(hazelcastInstance); - // // end::new-hazelcastindexedsessionrepository[] - // } + @Test + @SuppressWarnings("unused") + void newHazelcastIndexedSessionRepository() { + // tag::new-hazelcastindexedsessionrepository[] + + Config config = new Config(); + + // ... configure Hazelcast ... + + HazelcastInstance hazelcastInstance = Hazelcast.newHazelcastInstance(config); + + HazelcastIndexedSessionRepository repository = new HazelcastIndexedSessionRepository(hazelcastInstance); + // end::new-hazelcastindexedsessionrepository[] + } @Test void runSpringHttpSessionConfig() { diff --git a/spring-session-docs/modules/ROOT/examples/java/docs/http/HazelcastHttpSessionConfig.java b/spring-session-docs/modules/ROOT/examples/java/docs/http/HazelcastHttpSessionConfig.java index 49d149f4..fbfb6d84 100644 --- a/spring-session-docs/modules/ROOT/examples/java/docs/http/HazelcastHttpSessionConfig.java +++ b/spring-session-docs/modules/ROOT/examples/java/docs/http/HazelcastHttpSessionConfig.java @@ -1,5 +1,5 @@ /* - * Copyright 2014-2021 the original author or authors. + * Copyright 2014-2023 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,44 +16,41 @@ package docs.http; -// import com.hazelcast.config.AttributeConfig; -// import com.hazelcast.config.Config; -// import com.hazelcast.config.IndexConfig; -// import com.hazelcast.config.IndexType; -// import com.hazelcast.config.SerializerConfig; -// import com.hazelcast.core.Hazelcast; -// import com.hazelcast.core.HazelcastInstance; -// -// import org.springframework.context.annotation.Bean; -// import org.springframework.context.annotation.Configuration; -// import org.springframework.session.MapSession; -// import org.springframework.session.hazelcast.HazelcastIndexedSessionRepository; -// import org.springframework.session.hazelcast.HazelcastSessionSerializer; -// import org.springframework.session.hazelcast.PrincipalNameExtractor; -// import -// org.springframework.session.hazelcast.config.annotation.web.http.EnableHazelcastHttpSession; +import com.hazelcast.config.AttributeConfig; +import com.hazelcast.config.Config; +import com.hazelcast.config.IndexConfig; +import com.hazelcast.config.IndexType; +import com.hazelcast.config.SerializerConfig; +import com.hazelcast.core.Hazelcast; +import com.hazelcast.core.HazelcastInstance; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.session.MapSession; +import org.springframework.session.hazelcast.HazelcastIndexedSessionRepository; +import org.springframework.session.hazelcast.HazelcastSessionSerializer; +import org.springframework.session.hazelcast.PrincipalNameExtractor; +import org.springframework.session.hazelcast.config.annotation.web.http.EnableHazelcastHttpSession; // tag::config[] -// @EnableHazelcastHttpSession // <1> -// @Configuration -// public class HazelcastHttpSessionConfig { -// -// @Bean -// public HazelcastInstance hazelcastInstance() { -// Config config = new Config(); -// AttributeConfig attributeConfig = new AttributeConfig() -// .setName(HazelcastIndexedSessionRepository.PRINCIPAL_NAME_ATTRIBUTE) -// .setExtractorClassName(PrincipalNameExtractor.class.getName()); -// config.getMapConfig(HazelcastIndexedSessionRepository.DEFAULT_SESSION_MAP_NAME) // <2> -// .addAttributeConfig(attributeConfig).addIndexConfig( -// new IndexConfig(IndexType.HASH, -// HazelcastIndexedSessionRepository.PRINCIPAL_NAME_ATTRIBUTE)); -// SerializerConfig serializerConfig = new SerializerConfig(); -// serializerConfig.setImplementation(new -// HazelcastSessionSerializer()).setTypeClass(MapSession.class); -// config.getSerializationConfig().addSerializerConfig(serializerConfig); // <3> -// return Hazelcast.newHazelcastInstance(config); // <4> -// } -// -// } +@EnableHazelcastHttpSession // <1> +@Configuration +public class HazelcastHttpSessionConfig { + + @Bean + public HazelcastInstance hazelcastInstance() { + Config config = new Config(); + AttributeConfig attributeConfig = new AttributeConfig() + .setName(HazelcastIndexedSessionRepository.PRINCIPAL_NAME_ATTRIBUTE) + .setExtractorClassName(PrincipalNameExtractor.class.getName()); + config.getMapConfig(HazelcastIndexedSessionRepository.DEFAULT_SESSION_MAP_NAME) // <2> + .addAttributeConfig(attributeConfig).addIndexConfig( + new IndexConfig(IndexType.HASH, HazelcastIndexedSessionRepository.PRINCIPAL_NAME_ATTRIBUTE)); + SerializerConfig serializerConfig = new SerializerConfig(); + serializerConfig.setImplementation(new HazelcastSessionSerializer()).setTypeClass(MapSession.class); + config.getSerializationConfig().addSerializerConfig(serializerConfig); // <3> + return Hazelcast.newHazelcastInstance(config); // <4> + } + +} // end::config[] diff --git a/spring-session-docs/spring-session-docs.gradle b/spring-session-docs/spring-session-docs.gradle index c817c8b2..c7aa9540 100644 --- a/spring-session-docs/spring-session-docs.gradle +++ b/spring-session-docs/spring-session-docs.gradle @@ -9,7 +9,7 @@ apply plugin: 'io.spring.convention.spring-test' dependencies { testImplementation project(':spring-session-core') testImplementation project(':spring-session-data-redis') -// testImplementation project(':spring-session-hazelcast') + testImplementation project(':spring-session-hazelcast') testImplementation project(':spring-session-jdbc') testImplementation 'org.springframework:spring-jdbc' testImplementation 'org.springframework:spring-messaging'