diff --git a/docs/src/test/java/docs/IndexDocTests.java b/docs/src/test/java/docs/IndexDocTests.java index a368d3f5..2cd3da70 100644 --- a/docs/src/test/java/docs/IndexDocTests.java +++ b/docs/src/test/java/docs/IndexDocTests.java @@ -16,15 +16,11 @@ package docs; -import java.time.Duration; -import java.util.Optional; - import com.hazelcast.config.Config; import com.hazelcast.core.Hazelcast; import com.hazelcast.core.HazelcastInstance; import com.hazelcast.core.IMap; import org.junit.Test; - import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.datasource.DataSourceTransactionManager; @@ -40,6 +36,8 @@ import org.springframework.session.web.http.SessionRepositoryFilter; import org.springframework.transaction.PlatformTransactionManager; import org.springframework.web.context.support.AnnotationConfigWebApplicationContext; +import java.time.Duration; + import static org.assertj.core.api.Assertions.assertThat; /** @@ -73,8 +71,8 @@ public class IndexDocTests { S session = this.repository.findById(toSave.getId()); // <5> // <6> - Optional user = session.getAttribute(ATTR_USER); - assertThat(user.orElse(null)).isEqualTo(rwinch); + User user = session.getAttribute(ATTR_USER); + assertThat(user).isEqualTo(rwinch); } // ... setter methods ... diff --git a/samples/boot/findbyusername/src/main/resources/templates/index.html b/samples/boot/findbyusername/src/main/resources/templates/index.html index 9882be15..14dcb1bc 100644 --- a/samples/boot/findbyusername/src/main/resources/templates/index.html +++ b/samples/boot/findbyusername/src/main/resources/templates/index.html @@ -18,7 +18,7 @@ Information Terminate - + diff --git a/samples/javaconfig/users/src/main/java/sample/UserAccountsFilter.java b/samples/javaconfig/users/src/main/java/sample/UserAccountsFilter.java index 29f86611..c70407b7 100644 --- a/samples/javaconfig/users/src/main/java/sample/UserAccountsFilter.java +++ b/samples/javaconfig/users/src/main/java/sample/UserAccountsFilter.java @@ -16,23 +16,16 @@ package sample; +import org.springframework.session.Session; +import org.springframework.session.SessionRepository; +import org.springframework.session.web.http.HttpSessionManager; + +import javax.servlet.*; +import javax.servlet.http.HttpServletRequest; import java.io.IOException; import java.util.ArrayList; import java.util.List; import java.util.Map; -import java.util.Optional; - -import javax.servlet.Filter; -import javax.servlet.FilterChain; -import javax.servlet.FilterConfig; -import javax.servlet.ServletException; -import javax.servlet.ServletRequest; -import javax.servlet.ServletResponse; -import javax.servlet.http.HttpServletRequest; - -import org.springframework.session.Session; -import org.springframework.session.SessionRepository; -import org.springframework.session.web.http.HttpSessionManager; public class UserAccountsFilter implements Filter { @@ -67,15 +60,15 @@ public class UserAccountsFilter implements Filter { continue; } - Optional username = session.getAttribute("username"); - if (!username.isPresent()) { + String username = session.getAttribute("username"); + if (username == null) { unauthenticatedAlias = alias; continue; } String logoutUrl = sessionManager.encodeURL("./logout", alias); String switchAccountUrl = sessionManager.encodeURL("./", alias); - Account account = new Account(username.get(), logoutUrl, switchAccountUrl); + Account account = new Account(username, logoutUrl, switchAccountUrl); if (currentSessionAlias.equals(alias)) { currentAccount = account; } diff --git a/spring-session-core/src/main/java/org/springframework/session/MapSession.java b/spring-session-core/src/main/java/org/springframework/session/MapSession.java index e9977481..51c8de8e 100644 --- a/spring-session-core/src/main/java/org/springframework/session/MapSession.java +++ b/spring-session-core/src/main/java/org/springframework/session/MapSession.java @@ -21,7 +21,6 @@ import java.time.Duration; import java.time.Instant; import java.util.HashMap; import java.util.Map; -import java.util.Optional; import java.util.Set; import java.util.UUID; @@ -94,8 +93,10 @@ public final class MapSession implements Session, Serializable { this.sessionAttrs = new HashMap<>( session.getAttributeNames().size()); for (String attrName : session.getAttributeNames()) { - session.getAttribute(attrName) - .ifPresent(attrValue -> this.sessionAttrs.put(attrName, attrValue)); + Object attrValue = session.getAttribute(attrName); + if(attrValue != null) { + this.sessionAttrs.put(attrName, attrValue); + } } this.lastAccessedTime = session.getLastAccessedTime(); this.creationTime = session.getCreationTime(); @@ -138,8 +139,8 @@ public final class MapSession implements Session, Serializable { } @SuppressWarnings("unchecked") - public Optional getAttribute(String attributeName) { - return Optional.ofNullable((T) this.sessionAttrs.get(attributeName)); + public T getAttribute(String attributeName) { + return (T) this.sessionAttrs.get(attributeName); } public Set getAttributeNames() { diff --git a/spring-session-core/src/main/java/org/springframework/session/Session.java b/spring-session-core/src/main/java/org/springframework/session/Session.java index eaee7fd8..b0922154 100644 --- a/spring-session-core/src/main/java/org/springframework/session/Session.java +++ b/spring-session-core/src/main/java/org/springframework/session/Session.java @@ -18,7 +18,6 @@ package org.springframework.session; import java.time.Duration; import java.time.Instant; -import java.util.Optional; import java.util.Set; /** @@ -42,12 +41,12 @@ public interface Session { * Gets the Object associated with the specified name or null if no Object is * associated to that name. * + * @param The return type of the attribute * @param attributeName the name of the attribute to get * @return the Object associated with the specified name or null if no Object is * associated to that name - * @param The return type of the attribute */ - Optional getAttribute(String attributeName); + T getAttribute(String attributeName); /** * Gets the attribute names that have a value associated with it. Each value can be diff --git a/spring-session-core/src/main/java/org/springframework/session/security/SpringSessionBackedSessionInformation.java b/spring-session-core/src/main/java/org/springframework/session/security/SpringSessionBackedSessionInformation.java index d78aec29..d7baeb21 100644 --- a/spring-session-core/src/main/java/org/springframework/session/security/SpringSessionBackedSessionInformation.java +++ b/spring-session-core/src/main/java/org/springframework/session/security/SpringSessionBackedSessionInformation.java @@ -17,7 +17,6 @@ package org.springframework.session.security; import java.util.Date; -import java.util.Optional; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -55,11 +54,10 @@ class SpringSessionBackedSessionInformation super(resolvePrincipal(session), session.getId(), Date.from(session.getLastAccessedTime())); this.sessionRepository = sessionRepository; - session.getAttribute(EXPIRED_ATTR).ifPresent(expired -> { - if (Boolean.TRUE.equals(expired)) { - super.expireNow(); - } - }); + Boolean expired = session.getAttribute(EXPIRED_ATTR); + if (Boolean.TRUE.equals(expired)) { + super.expireNow(); + } } /** @@ -69,16 +67,16 @@ class SpringSessionBackedSessionInformation * @return the principal's name, or empty String if it couldn't be determined */ private static String resolvePrincipal(Session session) { - Optional principalName = session + String principalName = session .getAttribute(FindByIndexNameSessionRepository.PRINCIPAL_NAME_INDEX_NAME); - if (principalName.isPresent()) { - return principalName.get(); + if (principalName != null) { + return principalName; } - Optional securityContext = session + SecurityContext securityContext = session .getAttribute(SPRING_SECURITY_CONTEXT); - if (securityContext.isPresent() - && securityContext.get().getAuthentication() != null) { - return securityContext.get().getAuthentication().getName(); + if (securityContext != null + && securityContext.getAuthentication() != null) { + return securityContext.getAuthentication().getName(); } return ""; } diff --git a/spring-session-core/src/main/java/org/springframework/session/security/SpringSessionBackedSessionRegistry.java b/spring-session-core/src/main/java/org/springframework/session/security/SpringSessionBackedSessionRegistry.java index 59d950fa..563bd42f 100644 --- a/spring-session-core/src/main/java/org/springframework/session/security/SpringSessionBackedSessionRegistry.java +++ b/spring-session-core/src/main/java/org/springframework/session/security/SpringSessionBackedSessionRegistry.java @@ -69,7 +69,7 @@ public class SpringSessionBackedSessionRegistry List infos = new ArrayList<>(); for (S session : sessions) { if (includeExpiredSessions || !Boolean.TRUE.equals(session - .getAttribute(SpringSessionBackedSessionInformation.EXPIRED_ATTR).orElse(false))) { + .getAttribute(SpringSessionBackedSessionInformation.EXPIRED_ATTR))) { infos.add(new SpringSessionBackedSessionInformation<>(session, this.sessionRepository)); } diff --git a/spring-session-core/src/main/java/org/springframework/session/web/http/HttpSessionAdapter.java b/spring-session-core/src/main/java/org/springframework/session/web/http/HttpSessionAdapter.java index 46ec2820..37af741b 100644 --- a/spring-session-core/src/main/java/org/springframework/session/web/http/HttpSessionAdapter.java +++ b/spring-session-core/src/main/java/org/springframework/session/web/http/HttpSessionAdapter.java @@ -16,18 +16,17 @@ package org.springframework.session.web.http; +import org.springframework.session.Session; + +import javax.servlet.ServletContext; +import javax.servlet.http.HttpSession; +import javax.servlet.http.HttpSessionContext; import java.time.Duration; import java.util.Collections; import java.util.Enumeration; import java.util.NoSuchElementException; import java.util.Set; -import javax.servlet.ServletContext; -import javax.servlet.http.HttpSession; -import javax.servlet.http.HttpSessionContext; - -import org.springframework.session.Session; - /** * Adapts Spring Session's {@link Session} to an {@link HttpSession}. * @@ -87,7 +86,7 @@ class HttpSessionAdapter implements HttpSession { public Object getAttribute(String name) { checkState(); - return this.session.getAttribute(name).orElse(null); + return this.session.getAttribute(name); } public Object getValue(String name) { diff --git a/spring-session-core/src/test/java/org/springframework/session/MapSessionTests.java b/spring-session-core/src/test/java/org/springframework/session/MapSessionTests.java index c7bf69ff..599244a2 100644 --- a/spring-session-core/src/test/java/org/springframework/session/MapSessionTests.java +++ b/spring-session-core/src/test/java/org/springframework/session/MapSessionTests.java @@ -16,14 +16,13 @@ package org.springframework.session; -import java.time.Duration; -import java.time.Instant; -import java.util.Optional; -import java.util.Set; - import org.junit.Before; import org.junit.Test; +import java.time.Duration; +import java.time.Instant; +import java.util.Set; + import static org.assertj.core.api.Assertions.assertThat; public class MapSessionTests { @@ -114,8 +113,8 @@ public class MapSessionTests { return Duration.ZERO; } - public Optional getAttribute(String attributeName) { - return Optional.empty(); + public T getAttribute(String attributeName) { + return null; } public Set getAttributeNames() { 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 68037b9a..508952d3 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 @@ -16,20 +16,12 @@ package org.springframework.session.security; -import java.time.Instant; -import java.util.Collections; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; -import java.util.Optional; - import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.ArgumentCaptor; import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.junit.MockitoJUnitRunner; - import org.springframework.security.core.Authentication; import org.springframework.security.core.context.SecurityContextImpl; import org.springframework.security.core.session.SessionInformation; @@ -38,10 +30,14 @@ import org.springframework.session.FindByIndexNameSessionRepository; import org.springframework.session.MapSession; import org.springframework.session.Session; +import java.time.Instant; +import java.util.Collections; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; + import static org.assertj.core.api.Assertions.assertThat; -import static org.mockito.BDDMockito.mock; -import static org.mockito.BDDMockito.verify; -import static org.mockito.BDDMockito.when; +import static org.mockito.BDDMockito.*; /** * Tests for {@link SpringSessionBackedSessionRegistry}. @@ -140,7 +136,7 @@ public class SpringSessionBackedSessionRegistryTest { verify(this.sessionRepository).save(captor.capture()); assertThat(captor.getValue().getAttribute( SpringSessionBackedSessionInformation.EXPIRED_ATTR)) - .isEqualTo(Optional.of(Boolean.TRUE)); + .isEqualTo(Boolean.TRUE); } private Session createSession(String sessionId, String userName, diff --git a/spring-session-data-redis/src/integration-test/java/org/springframework/session/data/redis/RedisOperationsSessionRepositoryITests.java b/spring-session-data-redis/src/integration-test/java/org/springframework/session/data/redis/RedisOperationsSessionRepositoryITests.java index e7e78df7..7db013f9 100644 --- a/spring-session-data-redis/src/integration-test/java/org/springframework/session/data/redis/RedisOperationsSessionRepositoryITests.java +++ b/spring-session-data-redis/src/integration-test/java/org/springframework/session/data/redis/RedisOperationsSessionRepositoryITests.java @@ -15,12 +15,7 @@ */ package org.springframework.session.data.redis; -import java.util.Map; -import java.util.Optional; -import java.util.UUID; - import org.junit.Test; - import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @@ -42,6 +37,9 @@ import org.springframework.session.events.SessionCreatedEvent; import org.springframework.session.events.SessionDestroyedEvent; import org.springframework.test.context.ContextConfiguration; +import java.util.Map; +import java.util.UUID; + import static org.assertj.core.api.Assertions.assertThat; @ContextConfiguration @@ -102,7 +100,7 @@ public class RedisOperationsSessionRepositoryITests extends AbstractITests { assertThat(this.registry.getEvent(toSave.getId()).getSession() .getAttribute(expectedAttributeName)) - .isEqualTo(Optional.of(expectedAttributeValue)); + .isEqualTo(expectedAttributeValue); } @Test @@ -120,8 +118,8 @@ public class RedisOperationsSessionRepositoryITests extends AbstractITests { Session session = this.repository.findById(toSave.getId()); assertThat(session.getAttributeNames().size()).isEqualTo(2); - assertThat(session.getAttribute("a")).isEqualTo(Optional.of("b")); - assertThat(session.getAttribute("1")).isEqualTo(Optional.of("2")); + assertThat(session.getAttribute("a")).isEqualTo("b"); + assertThat(session.getAttribute("1")).isEqualTo("2"); this.repository.deleteById(toSave.getId()); } diff --git a/spring-session-data-redis/src/main/java/org/springframework/session/data/redis/RedisOperationsSessionRepository.java b/spring-session-data-redis/src/main/java/org/springframework/session/data/redis/RedisOperationsSessionRepository.java index b5e73509..07fe55c8 100644 --- a/spring-session-data-redis/src/main/java/org/springframework/session/data/redis/RedisOperationsSessionRepository.java +++ b/spring-session-data-redis/src/main/java/org/springframework/session/data/redis/RedisOperationsSessionRepository.java @@ -16,17 +16,8 @@ package org.springframework.session.data.redis; -import java.time.Duration; -import java.time.Instant; -import java.util.Collections; -import java.util.HashMap; -import java.util.Map; -import java.util.Optional; -import java.util.Set; - import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; - import org.springframework.context.ApplicationEvent; import org.springframework.context.ApplicationEventPublisher; import org.springframework.data.redis.connection.Message; @@ -51,6 +42,13 @@ import org.springframework.session.events.SessionExpiredEvent; import org.springframework.session.web.http.SessionRepositoryFilter; import org.springframework.util.Assert; +import java.time.Duration; +import java.time.Instant; +import java.util.Collections; +import java.util.HashMap; +import java.util.Map; +import java.util.Set; + /** *

* A {@link org.springframework.session.SessionRepository} that is implemented using @@ -740,7 +738,7 @@ public class RedisOperationsSessionRepository implements return this.cached.getMaxInactiveInterval(); } - public Optional getAttribute(String attributeName) { + public T getAttribute(String attributeName) { return this.cached.getAttribute(attributeName); } @@ -816,15 +814,15 @@ public class RedisOperationsSessionRepository implements private SpelExpressionParser parser = new SpelExpressionParser(); public String resolvePrincipal(Session session) { - Optional principalName = session.getAttribute(PRINCIPAL_NAME_INDEX_NAME); - if (principalName.isPresent()) { - return principalName.get(); + String principalName = session.getAttribute(PRINCIPAL_NAME_INDEX_NAME); + if (principalName != null) { + return principalName; } - Optional authentication = session.getAttribute(SPRING_SECURITY_CONTEXT); - if (authentication.isPresent()) { + Object authentication = session.getAttribute(SPRING_SECURITY_CONTEXT); + if (authentication != null) { Expression expression = this.parser .parseExpression("authentication?.name"); - return expression.getValue(authentication.get(), String.class); + return expression.getValue(authentication, String.class); } return null; } diff --git a/spring-session-data-redis/src/test/java/org/springframework/session/data/redis/RedisOperationsSessionRepositoryTests.java b/spring-session-data-redis/src/test/java/org/springframework/session/data/redis/RedisOperationsSessionRepositoryTests.java index e6af9bd0..cf52d8fd 100644 --- a/spring-session-data-redis/src/test/java/org/springframework/session/data/redis/RedisOperationsSessionRepositoryTests.java +++ b/spring-session-data-redis/src/test/java/org/springframework/session/data/redis/RedisOperationsSessionRepositoryTests.java @@ -16,17 +16,6 @@ package org.springframework.session.data.redis; -import java.time.Duration; -import java.time.Instant; -import java.time.temporal.ChronoUnit; -import java.util.Arrays; -import java.util.Collections; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Map; -import java.util.Set; -import java.util.concurrent.TimeUnit; - import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; @@ -34,7 +23,6 @@ import org.mockito.ArgumentCaptor; import org.mockito.Captor; import org.mockito.Mock; import org.mockito.junit.MockitoJUnitRunner; - import org.springframework.context.ApplicationEventPublisher; import org.springframework.data.redis.connection.DefaultMessage; import org.springframework.data.redis.connection.RedisConnection; @@ -57,17 +45,18 @@ import org.springframework.session.data.redis.RedisOperationsSessionRepository.P import org.springframework.session.data.redis.RedisOperationsSessionRepository.RedisSession; import org.springframework.session.events.AbstractSessionEvent; +import java.time.Duration; +import java.time.Instant; +import java.time.temporal.ChronoUnit; +import java.util.*; +import java.util.concurrent.TimeUnit; + import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyLong; import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.BDDMockito.given; -import static org.mockito.Mockito.atLeastOnce; -import static org.mockito.Mockito.never; -import static org.mockito.Mockito.reset; -import static org.mockito.Mockito.times; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.verifyZeroInteractions; +import static org.mockito.Mockito.*; @RunWith(MockitoJUnitRunner.class) @SuppressWarnings({ "unchecked", "rawtypes" }) @@ -273,7 +262,7 @@ public class RedisOperationsSessionRepositoryTests { assertThat(getDelta()).isEqualTo( map(RedisOperationsSessionRepository.getSessionAttrNameKey(attrName), - session.getAttribute(attrName).orElse(null))); + session.getAttribute(attrName))); } @Test @@ -332,7 +321,7 @@ public class RedisOperationsSessionRepositoryTests { given(this.redisOperations.boundSetOps(anyString())) .willReturn(this.boundSetOperations); Map map = map(RedisOperationsSessionRepository.getSessionAttrNameKey(attrName), - expected.getAttribute(attrName).orElse(null), + expected.getAttribute(attrName), RedisOperationsSessionRepository.CREATION_TIME_ATTR, expected.getCreationTime().toEpochMilli(), RedisOperationsSessionRepository.MAX_INACTIVE_ATTR, @@ -382,7 +371,7 @@ public class RedisOperationsSessionRepositoryTests { given(this.redisOperations.boundHashOps(getKey(expected.getId()))) .willReturn(this.boundHashOperations); Map map = map(RedisOperationsSessionRepository.getSessionAttrNameKey(attrName), - expected.getAttribute(attrName).orElse(null), + expected.getAttribute(attrName), RedisOperationsSessionRepository.CREATION_TIME_ATTR, expected.getCreationTime().toEpochMilli(), RedisOperationsSessionRepository.MAX_INACTIVE_ATTR, @@ -630,7 +619,7 @@ public class RedisOperationsSessionRepositoryTests { assertThat(delta.size()).isEqualTo(1); assertThat(delta).isEqualTo( map(RedisOperationsSessionRepository.getSessionAttrNameKey(attrName), - session.getAttribute(attrName).orElse(null))); + session.getAttribute(attrName))); } @Test @@ -651,7 +640,7 @@ public class RedisOperationsSessionRepositoryTests { assertThat(delta.size()).isEqualTo(1); assertThat(delta).isEqualTo( map(RedisOperationsSessionRepository.getSessionAttrNameKey(attrName), - session.getAttribute(attrName).orElse(null))); + session.getAttribute(attrName))); } @Test diff --git a/spring-session-hazelcast/src/main/java/org/springframework/session/hazelcast/HazelcastSessionRepository.java b/spring-session-hazelcast/src/main/java/org/springframework/session/hazelcast/HazelcastSessionRepository.java index f9254e40..38149a55 100644 --- a/spring-session-hazelcast/src/main/java/org/springframework/session/hazelcast/HazelcastSessionRepository.java +++ b/spring-session-hazelcast/src/main/java/org/springframework/session/hazelcast/HazelcastSessionRepository.java @@ -22,7 +22,6 @@ import java.util.Collection; import java.util.Collections; import java.util.HashMap; import java.util.Map; -import java.util.Optional; import java.util.Set; import java.util.concurrent.TimeUnit; @@ -327,7 +326,7 @@ public class HazelcastSessionRepository implements return this.delegate.getMaxInactiveInterval(); } - public Optional getAttribute(String attributeName) { + public T getAttribute(String attributeName) { return this.delegate.getAttribute(attributeName); } 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 4bc5c4df..72a964f7 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 @@ -16,11 +16,8 @@ package org.springframework.session.hazelcast; -import java.util.Optional; - import com.hazelcast.query.extractor.ValueCollector; import com.hazelcast.query.extractor.ValueExtractor; - import org.springframework.expression.Expression; import org.springframework.expression.spel.standard.SpelExpressionParser; import org.springframework.session.FindByIndexNameSessionRepository; @@ -58,16 +55,16 @@ public class PrincipalNameExtractor extends ValueExtractor { private SpelExpressionParser parser = new SpelExpressionParser(); public String resolvePrincipal(Session session) { - Optional principalName = session.getAttribute( + String principalName = session.getAttribute( FindByIndexNameSessionRepository.PRINCIPAL_NAME_INDEX_NAME); - if (principalName.isPresent()) { - return principalName.get(); + if (principalName != null) { + return principalName; } - Optional authentication = session.getAttribute(SPRING_SECURITY_CONTEXT); - if (authentication.isPresent()) { + Object authentication = session.getAttribute(SPRING_SECURITY_CONTEXT); + if (authentication != null) { Expression expression = this.parser .parseExpression("authentication?.name"); - return expression.getValue(authentication.get(), String.class); + return expression.getValue(authentication, String.class); } return null; } diff --git a/spring-session-hazelcast/src/test/java/org/springframework/session/hazelcast/HazelcastSessionRepositoryTests.java b/spring-session-hazelcast/src/test/java/org/springframework/session/hazelcast/HazelcastSessionRepositoryTests.java index 6d273551..0a877b28 100644 --- a/spring-session-hazelcast/src/test/java/org/springframework/session/hazelcast/HazelcastSessionRepositoryTests.java +++ b/spring-session-hazelcast/src/test/java/org/springframework/session/hazelcast/HazelcastSessionRepositoryTests.java @@ -272,7 +272,7 @@ public class HazelcastSessionRepositoryTests { HazelcastSession session = this.repository.findById(saved.getId()); assertThat(session.getId()).isEqualTo(saved.getId()); - assertThat(session.getAttribute("savedName").orElse(null)).isEqualTo("savedValue"); + assertThat(session.getAttribute("savedName")).isEqualTo("savedValue"); verify(this.sessions, times(1)).get(eq(saved.getId())); } diff --git a/spring-session-jdbc/src/integration-test/java/org/springframework/session/jdbc/AbstractJdbcOperationsSessionRepositoryITests.java b/spring-session-jdbc/src/integration-test/java/org/springframework/session/jdbc/AbstractJdbcOperationsSessionRepositoryITests.java index cdfaee50..7d9c3296 100644 --- a/spring-session-jdbc/src/integration-test/java/org/springframework/session/jdbc/AbstractJdbcOperationsSessionRepositoryITests.java +++ b/spring-session-jdbc/src/integration-test/java/org/springframework/session/jdbc/AbstractJdbcOperationsSessionRepositoryITests.java @@ -16,19 +16,9 @@ package org.springframework.session.jdbc; -import java.time.Duration; -import java.time.Instant; -import java.time.temporal.ChronoUnit; -import java.util.Map; -import java.util.Optional; -import java.util.UUID; - -import javax.sql.DataSource; - import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; - import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.jdbc.datasource.DataSourceTransactionManager; @@ -47,6 +37,13 @@ import org.springframework.test.context.web.WebAppConfiguration; import org.springframework.transaction.PlatformTransactionManager; import org.springframework.transaction.annotation.Transactional; +import javax.sql.DataSource; +import java.time.Duration; +import java.time.Instant; +import java.time.temporal.ChronoUnit; +import java.util.Map; +import java.util.UUID; + import static org.assertj.core.api.Assertions.assertThat; /** @@ -139,8 +136,8 @@ public abstract class AbstractJdbcOperationsSessionRepositoryITests { Session session = this.repository.findById(toSave.getId()); assertThat(session.getAttributeNames().size()).isEqualTo(2); - assertThat(session.getAttribute("a")).isEqualTo(Optional.of("b")); - assertThat(session.getAttribute("1")).isEqualTo(Optional.of("2")); + assertThat(session.getAttribute("a")).isEqualTo("b"); + assertThat(session.getAttribute("1")).isEqualTo("2"); this.repository.deleteById(toSave.getId()); } diff --git a/spring-session-jdbc/src/main/java/org/springframework/session/jdbc/JdbcOperationsSessionRepository.java b/spring-session-jdbc/src/main/java/org/springframework/session/jdbc/JdbcOperationsSessionRepository.java index b79b40d6..f1181d6a 100644 --- a/spring-session-jdbc/src/main/java/org/springframework/session/jdbc/JdbcOperationsSessionRepository.java +++ b/spring-session-jdbc/src/main/java/org/springframework/session/jdbc/JdbcOperationsSessionRepository.java @@ -16,24 +16,8 @@ package org.springframework.session.jdbc; -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.time.Duration; -import java.time.Instant; -import java.util.ArrayList; -import java.util.Collections; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Optional; -import java.util.Set; - -import javax.sql.DataSource; - import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; - import org.springframework.core.convert.ConversionService; import org.springframework.core.convert.TypeDescriptor; import org.springframework.core.convert.support.GenericConversionService; @@ -61,6 +45,14 @@ import org.springframework.transaction.support.TransactionTemplate; import org.springframework.util.Assert; import org.springframework.util.StringUtils; +import javax.sql.DataSource; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.time.Duration; +import java.time.Instant; +import java.util.*; + /** * A {@link org.springframework.session.SessionRepository} implementation that uses * Spring's {@link JdbcOperations} to store sessions in a relational database. This @@ -395,7 +387,7 @@ public class JdbcOperationsSessionRepository implements String attributeName = attributeNames.get(i); ps.setString(1, session.getId()); ps.setString(2, attributeName); - serialize(ps, 3, session.getAttribute(attributeName).orElse(null)); + serialize(ps, 3, session.getAttribute(attributeName)); } public int getBatchSize() { @@ -639,7 +631,7 @@ public class JdbcOperationsSessionRepository implements return this.delegate.getId(); } - public Optional getAttribute(String attributeName) { + public T getAttribute(String attributeName) { return this.delegate.getAttribute(attributeName); } @@ -699,15 +691,15 @@ public class JdbcOperationsSessionRepository implements private SpelExpressionParser parser = new SpelExpressionParser(); public String resolvePrincipal(Session session) { - Optional principalName = session.getAttribute(PRINCIPAL_NAME_INDEX_NAME); - if (principalName.isPresent()) { - return principalName.get(); + String principalName = session.getAttribute(PRINCIPAL_NAME_INDEX_NAME); + if (principalName != null) { + return principalName; } - Optional authentication = session.getAttribute(SPRING_SECURITY_CONTEXT); - if (authentication.isPresent()) { + Object authentication = session.getAttribute(SPRING_SECURITY_CONTEXT); + if (authentication != null) { Expression expression = this.parser .parseExpression("authentication?.name"); - return expression.getValue(authentication.get(), String.class); + return expression.getValue(authentication, String.class); } return null; } diff --git a/spring-session-jdbc/src/test/java/org/springframework/session/jdbc/JdbcOperationsSessionRepositoryTests.java b/spring-session-jdbc/src/test/java/org/springframework/session/jdbc/JdbcOperationsSessionRepositoryTests.java index 04a5d671..fb7fa2cd 100644 --- a/spring-session-jdbc/src/test/java/org/springframework/session/jdbc/JdbcOperationsSessionRepositoryTests.java +++ b/spring-session-jdbc/src/test/java/org/springframework/session/jdbc/JdbcOperationsSessionRepositoryTests.java @@ -445,7 +445,7 @@ public class JdbcOperationsSessionRepositoryTests { assertThat(session.getId()).isEqualTo(saved.getId()); assertThat(session.isNew()).isFalse(); - assertThat(session.getAttribute("savedName").orElse(null)).isEqualTo("savedValue"); + assertThat(session.getAttribute("savedName")).isEqualTo("savedValue"); assertPropagationRequiresNew(); verify(this.jdbcOperations, times(1)).query(isA(String.class), isA(PreparedStatementSetter.class), isA(ResultSetExtractor.class));