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 6a55d761..92041a07 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 @@ -1,5 +1,5 @@ /* - * Copyright 2014-2017 the original author or authors. + * Copyright 2014-2018 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. @@ -37,7 +37,6 @@ import org.springframework.security.core.context.SecurityContext; import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.session.FindByIndexNameSessionRepository; import org.springframework.session.MapSession; -import org.springframework.session.Session; import org.springframework.session.jdbc.config.annotation.web.http.EnableJdbcHttpSession; import org.springframework.transaction.PlatformTransactionManager; import org.springframework.transaction.annotation.Transactional; @@ -82,8 +81,11 @@ public abstract class AbstractJdbcOperationsSessionRepositoryITests { .createSession(); this.repository.save(toSave); + JdbcOperationsSessionRepository.JdbcSession session = this.repository.findById(toSave.getId()); - assertThat(this.repository.findById(toSave.getId())).isNotNull(); + assertThat(session).isNotNull(); + assertThat(session.isChanged()).isFalse(); + assertThat(session.getDelta()).isEmpty(); } @Test @@ -104,9 +106,11 @@ public abstract class AbstractJdbcOperationsSessionRepositoryITests { this.repository.save(toSave); - Session session = this.repository.findById(toSave.getId()); + JdbcOperationsSessionRepository.JdbcSession session = this.repository.findById(toSave.getId()); assertThat(session.getId()).isEqualTo(toSave.getId()); + assertThat(session.isChanged()).isFalse(); + assertThat(session.getDelta()).isEmpty(); assertThat(session.getAttributeNames()).isEqualTo(toSave.getAttributeNames()); assertThat(session.getAttribute(expectedAttributeName)) .isEqualTo(toSave.getAttribute(expectedAttributeName)); @@ -139,7 +143,9 @@ public abstract class AbstractJdbcOperationsSessionRepositoryITests { this.repository.save(toSave); toSave = this.repository.findById(toSave.getId()); - Session session = this.repository.findById(toSave.getId()); + JdbcOperationsSessionRepository.JdbcSession session = this.repository.findById(toSave.getId()); + assertThat(session.isChanged()).isFalse(); + assertThat(session.getDelta()).isEmpty(); assertThat(session.getAttributeNames().size()).isEqualTo(2); assertThat(session.getAttribute("a")).isEqualTo("b"); assertThat(session.getAttribute("1")).isEqualTo("2"); @@ -160,9 +166,11 @@ public abstract class AbstractJdbcOperationsSessionRepositoryITests { toSave.setLastAccessedTime(lastAccessedTime); this.repository.save(toSave); - Session session = this.repository.findById(toSave.getId()); + JdbcOperationsSessionRepository.JdbcSession session = this.repository.findById(toSave.getId()); assertThat(session).isNotNull(); + assertThat(session.isChanged()).isFalse(); + assertThat(session.getDelta()).isEmpty(); assertThat(session.isExpired()).isFalse(); assertThat(session.getLastAccessedTime()).isEqualTo(lastAccessedTime); } @@ -229,6 +237,10 @@ public abstract class AbstractJdbcOperationsSessionRepositoryITests { assertThat(findByPrincipalName).hasSize(1); assertThat(findByPrincipalName.keySet()).containsOnly(toSave.getId()); + findByPrincipalName.values().forEach(session -> { + assertThat(session.isChanged()).isFalse(); + assertThat(session.getDelta()).isEmpty(); + }); } @Test @@ -251,6 +263,10 @@ public abstract class AbstractJdbcOperationsSessionRepositoryITests { assertThat(findByPrincipalName).hasSize(1); assertThat(findByPrincipalName.keySet()).containsOnly(toSave.getId()); + findByPrincipalName.values().forEach(session -> { + assertThat(session.isChanged()).isFalse(); + assertThat(session.getDelta()).isEmpty(); + }); } @Test @@ -293,6 +309,10 @@ public abstract class AbstractJdbcOperationsSessionRepositoryITests { assertThat(findByPrincipalName).hasSize(1); assertThat(findByPrincipalName.keySet()).containsOnly(toSave.getId()); + findByPrincipalName.values().forEach(session -> { + assertThat(session.isChanged()).isFalse(); + assertThat(session.getDelta()).isEmpty(); + }); } @Test @@ -340,6 +360,10 @@ public abstract class AbstractJdbcOperationsSessionRepositoryITests { assertThat(findByPrincipalName).hasSize(1); assertThat(findByPrincipalName.keySet()).containsOnly(toSave.getId()); + findByPrincipalName.values().forEach(session -> { + assertThat(session.isChanged()).isFalse(); + assertThat(session.getDelta()).isEmpty(); + }); } @Test @@ -399,6 +423,10 @@ public abstract class AbstractJdbcOperationsSessionRepositoryITests { assertThat(findByPrincipalName).hasSize(1); assertThat(findByPrincipalName.keySet()).containsOnly(toSave.getId()); + findByPrincipalName.values().forEach(session -> { + assertThat(session.isChanged()).isFalse(); + assertThat(session.getDelta()).isEmpty(); + }); } @Test @@ -420,6 +448,10 @@ public abstract class AbstractJdbcOperationsSessionRepositoryITests { assertThat(findByPrincipalName).hasSize(1); assertThat(findByPrincipalName.keySet()).containsOnly(toSave.getId()); + findByPrincipalName.values().forEach(session -> { + assertThat(session.isChanged()).isFalse(); + assertThat(session.getDelta()).isEmpty(); + }); } @Test @@ -459,6 +491,10 @@ public abstract class AbstractJdbcOperationsSessionRepositoryITests { assertThat(findByPrincipalName).hasSize(1); assertThat(findByPrincipalName.keySet()).containsOnly(toSave.getId()); + findByPrincipalName.values().forEach(session -> { + assertThat(session.isChanged()).isFalse(); + assertThat(session.getDelta()).isEmpty(); + }); } @Test @@ -503,6 +539,10 @@ public abstract class AbstractJdbcOperationsSessionRepositoryITests { assertThat(findByPrincipalName).hasSize(1); assertThat(findByPrincipalName.keySet()).containsOnly(toSave.getId()); + findByPrincipalName.values().forEach(session -> { + assertThat(session.isChanged()).isFalse(); + assertThat(session.getDelta()).isEmpty(); + }); } @Test @@ -585,6 +625,8 @@ public abstract class AbstractJdbcOperationsSessionRepositoryITests { JdbcOperationsSessionRepository.JdbcSession findByChangeSessionId = this.repository.findById(changeSessionId); + assertThat(findByChangeSessionId.isChanged()).isFalse(); + assertThat(findByChangeSessionId.getDelta()).isEmpty(); assertThat(findByChangeSessionId.getAttribute(attrName)).isEqualTo(attrValue); } @@ -627,6 +669,8 @@ public abstract class AbstractJdbcOperationsSessionRepositoryITests { JdbcOperationsSessionRepository.JdbcSession findByChangeSessionId = this.repository.findById(changeSessionId); + assertThat(findByChangeSessionId.isChanged()).isFalse(); + assertThat(findByChangeSessionId.getDelta()).isEmpty(); assertThat(findByChangeSessionId.getAttribute(attrName)).isEqualTo(attrValue); } 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 af46c58a..87550ddd 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 @@ -1,5 +1,5 @@ /* - * Copyright 2014-2017 the original author or authors. + * Copyright 2014-2018 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. @@ -758,7 +758,7 @@ public class JdbcOperationsSessionRepository implements } String attributeName = rs.getString("ATTRIBUTE_NAME"); if (attributeName != null) { - session.setAttribute(attributeName, deserialize(rs, "ATTRIBUTE_BYTES")); + session.delegate.setAttribute(attributeName, deserialize(rs, "ATTRIBUTE_BYTES")); } sessions.add(session); }