From 11ce4b45619e6f0abeeec6b09fc8e43c074105e4 Mon Sep 17 00:00:00 2001 From: Yanming Zhou Date: Wed, 23 Aug 2023 10:39:53 +0800 Subject: [PATCH] Polishing 1. fix deprecations 2. fix generics 3. use lambda instead of anonymous class 4. mark some fields as final --- .../gradle/maven/PublishLocalPlugin.java | 20 ++--- .../convention/JavadocApiPluginITest.java | 3 +- .../convention/SpringMavenPluginITest.java | 3 +- ...pringSessionBackedSessionRegistryTest.java | 3 +- .../http/OnCommittedResponseWrapperTests.java | 2 +- .../SpringSessionWebSessionStoreTests.java | 2 +- .../WebSocketRegistryListenerTests.java | 6 +- ...sionRepositoryMessageInterceptorTests.java | 2 +- ...bDeleteJacksonSessionVerificationTest.java | 88 ++++++++++--------- .../mongo/MongoDbLogoutVerificationTest.java | 27 +++--- .../session/data/mongo/MongoSession.java | 10 +-- .../RedisSessionExpirationPolicyTests.java | 2 +- .../redis/RedisSessionRepositoryTests.java | 6 +- ...exedHttpSessionConfigurationMockTests.java | 2 +- ...azelcastIndexedSessionRepositoryTests.java | 5 +- .../JdbcIndexedSessionRepositoryTests.java | 1 + .../JdbcHttpSessionConfigurationTests.java | 8 +- .../java/sample/config/WebSecurityConfig.java | 4 +- 18 files changed, 96 insertions(+), 98 deletions(-) diff --git a/buildSrc/src/main/java/org/springframework/gradle/maven/PublishLocalPlugin.java b/buildSrc/src/main/java/org/springframework/gradle/maven/PublishLocalPlugin.java index 54f9e497..34dcaeda 100644 --- a/buildSrc/src/main/java/org/springframework/gradle/maven/PublishLocalPlugin.java +++ b/buildSrc/src/main/java/org/springframework/gradle/maven/PublishLocalPlugin.java @@ -1,9 +1,7 @@ package org.springframework.gradle.maven; -import org.gradle.api.Action; import org.gradle.api.Plugin; import org.gradle.api.Project; -import org.gradle.api.artifacts.repositories.MavenArtifactRepository; import org.gradle.api.publish.PublishingExtension; import org.gradle.api.publish.maven.plugins.MavenPublishPlugin; @@ -12,18 +10,12 @@ import java.io.File; public class PublishLocalPlugin implements Plugin { @Override public void apply(Project project) { - project.getPlugins().withType(MavenPublishPlugin.class).all(new Action() { - @Override - public void execute(MavenPublishPlugin mavenPublish) { - PublishingExtension publishing = project.getExtensions().getByType(PublishingExtension.class); - publishing.getRepositories().maven(new Action() { - @Override - public void execute(MavenArtifactRepository maven) { - maven.setName("local"); - maven.setUrl(new File(project.getRootProject().getBuildDir(), "publications/repos")); - } - }); - } + project.getPlugins().withType(MavenPublishPlugin.class).all(mavenPublish -> { + PublishingExtension publishing = project.getExtensions().getByType(PublishingExtension.class); + publishing.getRepositories().maven(maven -> { + maven.setName("local"); + maven.setUrl(new File(project.getRootProject().getBuildDir(), "publications/repos")); + }); }); } } diff --git a/buildSrc/src/test/java/io/spring/gradle/convention/JavadocApiPluginITest.java b/buildSrc/src/test/java/io/spring/gradle/convention/JavadocApiPluginITest.java index ae43f387..30bc5f07 100644 --- a/buildSrc/src/test/java/io/spring/gradle/convention/JavadocApiPluginITest.java +++ b/buildSrc/src/test/java/io/spring/gradle/convention/JavadocApiPluginITest.java @@ -9,6 +9,7 @@ import org.junit.jupiter.api.Test; import org.junit.jupiter.api.io.TempDir; import java.io.File; +import java.nio.charset.Charset; import java.nio.file.Path; import static org.assertj.core.api.Assertions.assertThat; @@ -30,7 +31,7 @@ public class JavadocApiPluginITest { File allClasses = new File(testKit.getRootDir(), "build/api/allclasses-noframe.html"); File index = new File(testKit.getRootDir(), "build/api/allclasses-index.html"); File listing = allClasses.exists() ? allClasses : index; - String listingText = FileUtils.readFileToString(listing); + String listingText = FileUtils.readFileToString(listing, Charset.defaultCharset()); assertThat(listingText).contains("sample/Api.html"); assertThat(listingText).contains("sample/Impl.html"); assertThat(listingText).doesNotContain("sample/Sample.html"); diff --git a/buildSrc/src/test/java/io/spring/gradle/convention/SpringMavenPluginITest.java b/buildSrc/src/test/java/io/spring/gradle/convention/SpringMavenPluginITest.java index 3f0855dd..ef94edb8 100644 --- a/buildSrc/src/test/java/io/spring/gradle/convention/SpringMavenPluginITest.java +++ b/buildSrc/src/test/java/io/spring/gradle/convention/SpringMavenPluginITest.java @@ -9,6 +9,7 @@ import org.junit.jupiter.api.Test; import org.junit.jupiter.api.io.TempDir; import java.io.File; +import java.nio.charset.Charset; import java.nio.file.Files; import java.nio.file.Path; import java.util.LinkedHashMap; @@ -56,6 +57,6 @@ public class SpringMavenPluginITest { } public String getSigningKey() throws Exception { - return IOUtils.toString(getClass().getResource("/test-private.pgp")); + return IOUtils.toString(getClass().getResource("/test-private.pgp"), Charset.defaultCharset()); } } diff --git a/spring-session-core/src/test/java/org/springframework/session/security/SpringSessionBackedSessionRegistryTest.java b/spring-session-core/src/test/java/org/springframework/session/security/SpringSessionBackedSessionRegistryTest.java index 35ef46c5..03041464 100644 --- a/spring-session-core/src/test/java/org/springframework/session/security/SpringSessionBackedSessionRegistryTest.java +++ b/spring-session-core/src/test/java/org/springframework/session/security/SpringSessionBackedSessionRegistryTest.java @@ -30,6 +30,7 @@ import org.mockito.ArgumentCaptor; import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; +import org.mockito.quality.Strictness; import org.springframework.security.core.AuthenticatedPrincipal; import org.springframework.security.core.Authentication; @@ -154,7 +155,7 @@ class SpringSessionBackedSessionRegistryTest { private Session createSession(String sessionId, String userName, Instant lastAccessed) { MapSession session = new MapSession(sessionId); session.setLastAccessedTime(lastAccessed); - Authentication authentication = mock(Authentication.class, withSettings().lenient()); + Authentication authentication = mock(Authentication.class, withSettings().strictness(Strictness.LENIENT)); given(authentication.getName()).willReturn(userName); SecurityContextImpl securityContext = new SecurityContextImpl(); securityContext.setAuthentication(authentication); diff --git a/spring-session-core/src/test/java/org/springframework/session/web/http/OnCommittedResponseWrapperTests.java b/spring-session-core/src/test/java/org/springframework/session/web/http/OnCommittedResponseWrapperTests.java index 953e0551..7efd1901 100644 --- a/spring-session-core/src/test/java/org/springframework/session/web/http/OnCommittedResponseWrapperTests.java +++ b/spring-session-core/src/test/java/org/springframework/session/web/http/OnCommittedResponseWrapperTests.java @@ -39,7 +39,7 @@ class OnCommittedResponseWrapperTests { private static final String NL = "\r\n"; - @Mock(lenient = true) + @Mock(strictness = Mock.Strictness.LENIENT) HttpServletResponse delegate; @Mock diff --git a/spring-session-core/src/test/java/org/springframework/session/web/server/session/SpringSessionWebSessionStoreTests.java b/spring-session-core/src/test/java/org/springframework/session/web/server/session/SpringSessionWebSessionStoreTests.java index 6f14e514..877e8b26 100644 --- a/spring-session-core/src/test/java/org/springframework/session/web/server/session/SpringSessionWebSessionStoreTests.java +++ b/spring-session-core/src/test/java/org/springframework/session/web/server/session/SpringSessionWebSessionStoreTests.java @@ -47,7 +47,7 @@ import static org.mockito.Mockito.verify; @ExtendWith(MockitoExtension.class) class SpringSessionWebSessionStoreTests { - @Mock(lenient = true) + @Mock(strictness = Mock.Strictness.LENIENT) private ReactiveSessionRepository sessionRepository; @Mock diff --git a/spring-session-core/src/test/java/org/springframework/session/web/socket/handler/WebSocketRegistryListenerTests.java b/spring-session-core/src/test/java/org/springframework/session/web/socket/handler/WebSocketRegistryListenerTests.java index ec4ed194..5c5d93f2 100644 --- a/spring-session-core/src/test/java/org/springframework/session/web/socket/handler/WebSocketRegistryListenerTests.java +++ b/spring-session-core/src/test/java/org/springframework/session/web/socket/handler/WebSocketRegistryListenerTests.java @@ -48,13 +48,13 @@ import static org.mockito.Mockito.verify; @ExtendWith(MockitoExtension.class) class WebSocketRegistryListenerTests { - @Mock(lenient = true) + @Mock(strictness = Mock.Strictness.LENIENT) private WebSocketSession wsSession; - @Mock(lenient = true) + @Mock(strictness = Mock.Strictness.LENIENT) private WebSocketSession wsSession2; - @Mock(lenient = true) + @Mock(strictness = Mock.Strictness.LENIENT) private Message message; @Mock diff --git a/spring-session-core/src/test/java/org/springframework/session/web/socket/server/SessionRepositoryMessageInterceptorTests.java b/spring-session-core/src/test/java/org/springframework/session/web/socket/server/SessionRepositoryMessageInterceptorTests.java index ae576207..5334039a 100644 --- a/spring-session-core/src/test/java/org/springframework/session/web/socket/server/SessionRepositoryMessageInterceptorTests.java +++ b/spring-session-core/src/test/java/org/springframework/session/web/socket/server/SessionRepositoryMessageInterceptorTests.java @@ -55,7 +55,7 @@ import static org.mockito.Mockito.verifyNoMoreInteractions; @ExtendWith(MockitoExtension.class) class SessionRepositoryMessageInterceptorTests { - @Mock(lenient = true) + @Mock(strictness = Mock.Strictness.LENIENT) SessionRepository sessionRepository; @Mock diff --git a/spring-session-data-mongodb/src/integration-test/java/org/springframework/session/data/mongo/MongoDbDeleteJacksonSessionVerificationTest.java b/spring-session-data-mongodb/src/integration-test/java/org/springframework/session/data/mongo/MongoDbDeleteJacksonSessionVerificationTest.java index 8e397340..1ee791ef 100644 --- a/spring-session-data-mongodb/src/integration-test/java/org/springframework/session/data/mongo/MongoDbDeleteJacksonSessionVerificationTest.java +++ b/spring-session-data-mongodb/src/integration-test/java/org/springframework/session/data/mongo/MongoDbDeleteJacksonSessionVerificationTest.java @@ -36,6 +36,7 @@ import org.springframework.data.mongodb.core.ReactiveMongoTemplate; import org.springframework.http.HttpHeaders; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; +import org.springframework.security.config.Customizer; import org.springframework.security.config.annotation.web.reactive.EnableWebFluxSecurity; import org.springframework.security.config.web.server.ServerHttpSecurity; import org.springframework.security.core.userdetails.MapReactiveUserDetailsService; @@ -72,57 +73,62 @@ public class MongoDbDeleteJacksonSessionVerificationTest { void logoutShouldDeleteOldSessionFromMongoDB() { // 1. Login and capture the SESSION cookie value. - + // @formatter:off FluxExchangeResult loginResult = this.client.post().uri("/login") - .contentType(MediaType.APPLICATION_FORM_URLENCODED) // - .body(BodyInserters // - .fromFormData("username", "admin") // - .with("password", "password")) // - .exchange() // + .contentType(MediaType.APPLICATION_FORM_URLENCODED) + .body(BodyInserters + .fromFormData("username", "admin") + .with("password", "password")) + .exchange() .returnResult(String.class); + // @formatter:on AssertionsForClassTypes.assertThat(loginResult.getResponseHeaders().getLocation()).isEqualTo(URI.create("/")); String originalSessionId = loginResult.getResponseCookies().getFirst("SESSION").getValue(); // 2. Fetch a protected resource using the SESSION cookie. - - this.client.get().uri("/hello") // - .cookie("SESSION", originalSessionId) // - .exchange() // - .expectStatus().isOk() // - .returnResult(String.class).getResponseBody() // - .as(StepVerifier::create) // - .expectNext("HelloWorld") // + // @formatter:off + this.client.get().uri("/hello") + .cookie("SESSION", originalSessionId) + .exchange() + .expectStatus().isOk() + .returnResult(String.class).getResponseBody() + .as(StepVerifier::create) + .expectNext("HelloWorld") .verifyComplete(); + // @formatter:on // 3. Logout using the SESSION cookie, and capture the new SESSION cookie. - - String newSessionId = this.client.post().uri("/logout") // - .cookie("SESSION", originalSessionId) // - .exchange() // - .expectStatus().isFound() // + // @formatter:off + String newSessionId = this.client.post().uri("/logout") + .cookie("SESSION", originalSessionId) + .exchange() + .expectStatus().isFound() .returnResult(String.class).getResponseCookies().getFirst("SESSION").getValue(); + // @formatter:on AssertionsForClassTypes.assertThat(newSessionId).isNotEqualTo(originalSessionId); // 4. Verify the new SESSION cookie is not yet authorized. - - this.client.get().uri("/hello") // - .cookie("SESSION", newSessionId) // - .exchange() // - .expectStatus().isFound() // + // @formatter:off + this.client.get().uri("/hello") + .cookie("SESSION", newSessionId) + .exchange() + .expectStatus().isFound() .expectHeader() .value(HttpHeaders.LOCATION, (value) -> AssertionsForClassTypes.assertThat(value).isEqualTo("/login")); + // @formatter:on // 5. Verify the original SESSION cookie no longer works. - - this.client.get().uri("/hello") // - .cookie("SESSION", originalSessionId) // - .exchange() // - .expectStatus().isFound() // + // @formatter:off + this.client.get().uri("/hello") + .cookie("SESSION", originalSessionId) + .exchange() + .expectStatus().isFound() .expectHeader() .value(HttpHeaders.LOCATION, (value) -> AssertionsForClassTypes.assertThat(value).isEqualTo("/login")); + // @formatter:on } @RestController @@ -141,24 +147,24 @@ public class MongoDbDeleteJacksonSessionVerificationTest { @Bean SecurityWebFilterChain securityWebFilterChain(ServerHttpSecurity http) { - return http // - .logout()// - /**/.and() // - .formLogin() // - /**/.and() // - .csrf().disable() // - .authorizeExchange() // - .anyExchange().authenticated() // - /**/.and() // + // @formatter:off + return http + .logout(Customizer.withDefaults()) + .formLogin(Customizer.withDefaults()) + .csrf((csrf) -> csrf.disable()) + .authorizeExchange((ae) -> ae.anyExchange().authenticated()) .build(); + // @formatter:on } @Bean MapReactiveUserDetailsService userDetailsService() { - return new MapReactiveUserDetailsService(User.withUsername("admin") // - .password("{noop}password") // - .roles("USER,ADMIN") // + // @formatter:off + return new MapReactiveUserDetailsService(User.withUsername("admin") + .password("{noop}password") + .roles("USER,ADMIN") .build()); + // @formatter:on } @Bean diff --git a/spring-session-data-mongodb/src/integration-test/java/org/springframework/session/data/mongo/MongoDbLogoutVerificationTest.java b/spring-session-data-mongodb/src/integration-test/java/org/springframework/session/data/mongo/MongoDbLogoutVerificationTest.java index 17fb4eac..49de55f1 100644 --- a/spring-session-data-mongodb/src/integration-test/java/org/springframework/session/data/mongo/MongoDbLogoutVerificationTest.java +++ b/spring-session-data-mongodb/src/integration-test/java/org/springframework/session/data/mongo/MongoDbLogoutVerificationTest.java @@ -36,6 +36,7 @@ import org.springframework.data.mongodb.core.ReactiveMongoTemplate; import org.springframework.http.HttpHeaders; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; +import org.springframework.security.config.Customizer; import org.springframework.security.config.annotation.web.reactive.EnableWebFluxSecurity; import org.springframework.security.config.web.server.ServerHttpSecurity; import org.springframework.security.core.userdetails.MapReactiveUserDetailsService; @@ -141,26 +142,24 @@ public class MongoDbLogoutVerificationTest { @Bean SecurityWebFilterChain securityWebFilterChain(ServerHttpSecurity http) { - - return http // - .logout()// - /**/.and() // - .formLogin() // - /**/.and() // - .csrf().disable() // - .authorizeExchange() // - .anyExchange().authenticated() // - /**/.and() // + // @formatter:off + return http + .logout(Customizer.withDefaults()) + .formLogin(Customizer.withDefaults()) + .csrf((csrf) -> csrf.disable()) + .authorizeExchange((ae) -> ae.anyExchange().authenticated()) .build(); + // @formatter:on } @Bean MapReactiveUserDetailsService userDetailsService() { - - return new MapReactiveUserDetailsService(User.withUsername("admin") // - .password("{noop}password") // - .roles("USER,ADMIN") // + // @formatter:off + return new MapReactiveUserDetailsService(User.withUsername("admin") + .password("{noop}password") + .roles("USER,ADMIN") .build()); + // @formatter:on } } diff --git a/spring-session-data-mongodb/src/main/java/org/springframework/session/data/mongo/MongoSession.java b/spring-session-data-mongodb/src/main/java/org/springframework/session/data/mongo/MongoSession.java index 25ee1c4d..d3bb813e 100644 --- a/spring-session-data-mongodb/src/main/java/org/springframework/session/data/mongo/MongoSession.java +++ b/spring-session-data-mongodb/src/main/java/org/springframework/session/data/mongo/MongoSession.java @@ -48,15 +48,14 @@ class MongoSession implements Session { * NOTE: This was originally stored in unicode format. Delomboking the code caused it * to get converted to another encoding, which isn't supported on all systems, so we * migrated back to unicode. The same character is being represented ensuring binary - * compatibility. - * - * See https://www.compart.com/en/unicode/U+F607 + * compatibility. See https://www.compart.com/en/unicode/U+F607 */ private static final char DOT_COVER_CHAR = '\uF607'; private String id; - private String originalSessionId; + private final String originalSessionId; private long createdMillis = System.currentTimeMillis(); @@ -66,7 +65,7 @@ class MongoSession implements Session { private Date expireAt; - private Map attrs = new HashMap<>(); + private final Map attrs = new HashMap<>(); private transient SessionIdGenerator sessionIdGenerator = UuidSessionIdGenerator.getInstance(); @@ -135,6 +134,7 @@ class MongoSession implements Session { @Override @Nullable + @SuppressWarnings("unchecked") public T getAttribute(String attributeName) { return (T) this.attrs.get(coverDot(attributeName)); } diff --git a/spring-session-data-redis/src/test/java/org/springframework/session/data/redis/RedisSessionExpirationPolicyTests.java b/spring-session-data-redis/src/test/java/org/springframework/session/data/redis/RedisSessionExpirationPolicyTests.java index af471968..2249d49d 100644 --- a/spring-session-data-redis/src/test/java/org/springframework/session/data/redis/RedisSessionExpirationPolicyTests.java +++ b/spring-session-data-redis/src/test/java/org/springframework/session/data/redis/RedisSessionExpirationPolicyTests.java @@ -49,7 +49,7 @@ class RedisSessionExpirationPolicyTests { // Wed Apr 15 10:27:32 CDT 2015 private static final Long ONE_MINUTE_AGO = 1429111652346L; - @Mock(lenient = true) + @Mock(strictness = Mock.Strictness.LENIENT) RedisOperations sessionRedisOperations; @Mock diff --git a/spring-session-data-redis/src/test/java/org/springframework/session/data/redis/RedisSessionRepositoryTests.java b/spring-session-data-redis/src/test/java/org/springframework/session/data/redis/RedisSessionRepositoryTests.java index 6f930b72..9e1de8e1 100644 --- a/spring-session-data-redis/src/test/java/org/springframework/session/data/redis/RedisSessionRepositoryTests.java +++ b/spring-session-data-redis/src/test/java/org/springframework/session/data/redis/RedisSessionRepositoryTests.java @@ -59,7 +59,7 @@ class RedisSessionRepositoryTests { private static final String TEST_SESSION_KEY = getSessionKey(TEST_SESSION_ID); - @Mock(lenient = true) + @Mock(strictness = Mock.Strictness.LENIENT) private RedisOperations sessionRedisOperations; @Mock @@ -311,7 +311,6 @@ class RedisSessionRepositoryTests { } @Test - @SuppressWarnings("unchecked") void findById_SessionExists_ShouldReturnSession() { Instant now = Instant.now().truncatedTo(ChronoUnit.MILLIS); given(this.sessionHashOperations.entries(eq(TEST_SESSION_KEY))) @@ -334,7 +333,6 @@ class RedisSessionRepositoryTests { } @Test - @SuppressWarnings("unchecked") void findById_SessionExistsAndIsExpired_ShouldReturnNull() { given(this.sessionHashOperations.entries(eq(TEST_SESSION_KEY))) .willReturn(mapOf(RedisSessionMapper.CREATION_TIME_KEY, Instant.EPOCH.toEpochMilli(), @@ -410,7 +408,7 @@ class RedisSessionRepositoryTests { .plusSeconds(session.getMaxInactiveInterval().getSeconds()); } - private static Map mapOf(Object... objects) { + private static Map mapOf(Object... objects) { Map result = new HashMap<>(); if (objects != null) { for (int i = 0; i < objects.length; i += 2) { diff --git a/spring-session-data-redis/src/test/java/org/springframework/session/data/redis/config/annotation/web/http/RedisIndexedHttpSessionConfigurationMockTests.java b/spring-session-data-redis/src/test/java/org/springframework/session/data/redis/config/annotation/web/http/RedisIndexedHttpSessionConfigurationMockTests.java index 7e2ca4df..7794120f 100644 --- a/spring-session-data-redis/src/test/java/org/springframework/session/data/redis/config/annotation/web/http/RedisIndexedHttpSessionConfigurationMockTests.java +++ b/spring-session-data-redis/src/test/java/org/springframework/session/data/redis/config/annotation/web/http/RedisIndexedHttpSessionConfigurationMockTests.java @@ -37,7 +37,7 @@ import static org.mockito.Mockito.verifyNoMoreInteractions; @ExtendWith(MockitoExtension.class) class RedisIndexedHttpSessionConfigurationMockTests { - @Mock(lenient = true) + @Mock(strictness = Mock.Strictness.LENIENT) RedisConnectionFactory factory; @Mock 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 5865ce8c..243dcaef 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 @@ -61,14 +61,15 @@ import static org.mockito.Mockito.verifyNoMoreInteractions; * @author Vedran Pavic * @author Aleksandar Stojsavljevic */ +@SuppressWarnings("unchecked") class HazelcastIndexedSessionRepositoryTests { private static final String SPRING_SECURITY_CONTEXT = "SPRING_SECURITY_CONTEXT"; - private HazelcastInstance hazelcastInstance = mock(HazelcastInstance.class); + private final HazelcastInstance hazelcastInstance = mock(HazelcastInstance.class); @SuppressWarnings("unchecked") - private IMap sessions = mock(IMap.class); + private final IMap sessions = mock(IMap.class); private HazelcastIndexedSessionRepository repository; diff --git a/spring-session-jdbc/src/test/java/org/springframework/session/jdbc/JdbcIndexedSessionRepositoryTests.java b/spring-session-jdbc/src/test/java/org/springframework/session/jdbc/JdbcIndexedSessionRepositoryTests.java index 159e5982..e9e086c1 100644 --- a/spring-session-jdbc/src/test/java/org/springframework/session/jdbc/JdbcIndexedSessionRepositoryTests.java +++ b/spring-session-jdbc/src/test/java/org/springframework/session/jdbc/JdbcIndexedSessionRepositoryTests.java @@ -790,6 +790,7 @@ class JdbcIndexedSessionRepositoryTests { } @Test + @SuppressWarnings("unchecked") void findByIdWhenChangeSessionIdThenUsesSessionIdGenerator() { this.repository.setSessionIdGenerator(() -> "test"); Session saved = this.repository.new JdbcSession(new MapSession(), "primaryKey", false); diff --git a/spring-session-jdbc/src/test/java/org/springframework/session/jdbc/config/annotation/web/http/JdbcHttpSessionConfigurationTests.java b/spring-session-jdbc/src/test/java/org/springframework/session/jdbc/config/annotation/web/http/JdbcHttpSessionConfigurationTests.java index 8d1ccead..f8dadf5d 100644 --- a/spring-session-jdbc/src/test/java/org/springframework/session/jdbc/config/annotation/web/http/JdbcHttpSessionConfigurationTests.java +++ b/spring-session-jdbc/src/test/java/org/springframework/session/jdbc/config/annotation/web/http/JdbcHttpSessionConfigurationTests.java @@ -72,13 +72,11 @@ class JdbcHttpSessionConfigurationTests { private static final String CLEANUP_CRON_EXPRESSION = "0 0 * * * *"; - private AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(); + private final AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(); @AfterEach void closeContext() { - if (this.context != null) { - this.context.close(); - } + this.context.close(); } @Test @@ -407,7 +405,7 @@ class JdbcHttpSessionConfigurationTests { static class CustomMaxInactiveIntervalInSecondsSetterConfiguration extends JdbcHttpSessionConfiguration { CustomMaxInactiveIntervalInSecondsSetterConfiguration() { - setMaxInactiveIntervalInSeconds(MAX_INACTIVE_INTERVAL_IN_SECONDS); + setMaxInactiveInterval(Duration.ofSeconds(MAX_INACTIVE_INTERVAL_IN_SECONDS)); } } diff --git a/spring-session-samples/spring-session-sample-boot-websocket/src/main/java/sample/config/WebSecurityConfig.java b/spring-session-samples/spring-session-sample-boot-websocket/src/main/java/sample/config/WebSecurityConfig.java index 1c767a8c..81871ec1 100644 --- a/spring-session-samples/spring-session-sample-boot-websocket/src/main/java/sample/config/WebSecurityConfig.java +++ b/spring-session-samples/spring-session-sample-boot-websocket/src/main/java/sample/config/WebSecurityConfig.java @@ -21,7 +21,7 @@ import org.springframework.boot.autoconfigure.security.servlet.PathRequest; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; -import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity; +import org.springframework.security.config.annotation.method.configuration.EnableMethodSecurity; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.WebSecurityCustomizer; import org.springframework.security.core.userdetails.UserDetailsService; @@ -29,7 +29,7 @@ import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; import org.springframework.security.web.SecurityFilterChain; @Configuration -@EnableGlobalMethodSecurity(prePostEnabled = true) +@EnableMethodSecurity public class WebSecurityConfig { // @formatter:off