From d3e9428699876d7e66ffa225baedb622c00c4c8f Mon Sep 17 00:00:00 2001 From: "Greg L. Turnquist" Date: Fri, 30 Oct 2020 16:06:05 -0500 Subject: [PATCH] Polishing. --- .../session/data/mongo/AbstractMongoSessionConverter.java | 2 ++ .../session/data/mongo/JacksonMongoSessionConverter.java | 8 ++++---- .../session/data/mongo/JdkMongoSessionConverter.java | 1 + .../session/data/mongo/MongoIndexedSessionRepository.java | 1 + .../data/mongo/ReactiveMongoSessionRepository.java | 4 +++- .../reactive/ReactiveMongoWebSessionConfiguration.java | 3 +-- 6 files changed, 12 insertions(+), 7 deletions(-) diff --git a/src/main/java/org/springframework/session/data/mongo/AbstractMongoSessionConverter.java b/src/main/java/org/springframework/session/data/mongo/AbstractMongoSessionConverter.java index 1ff42f2..651e558 100644 --- a/src/main/java/org/springframework/session/data/mongo/AbstractMongoSessionConverter.java +++ b/src/main/java/org/springframework/session/data/mongo/AbstractMongoSessionConverter.java @@ -80,11 +80,13 @@ public abstract class AbstractMongoSessionConverter implements GenericConverter } LOG.info("Creating TTL index on field " + EXPIRE_AT_FIELD_NAME); + sessionCollectionIndexes .ensureIndex(new Index(EXPIRE_AT_FIELD_NAME, Sort.Direction.ASC).named(EXPIRE_AT_FIELD_NAME).expire(0)); } protected String extractPrincipal(MongoSession expiringSession) { + return this.indexResolver.resolveIndexesFor(expiringSession) .get(FindByIndexNameSessionRepository.PRINCIPAL_NAME_INDEX_NAME); } diff --git a/src/main/java/org/springframework/session/data/mongo/JacksonMongoSessionConverter.java b/src/main/java/org/springframework/session/data/mongo/JacksonMongoSessionConverter.java index 5ac731f..f4f4adf 100644 --- a/src/main/java/org/springframework/session/data/mongo/JacksonMongoSessionConverter.java +++ b/src/main/java/org/springframework/session/data/mongo/JacksonMongoSessionConverter.java @@ -20,8 +20,6 @@ import java.util.Collections; import java.util.Date; import java.util.HashMap; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.bson.Document; @@ -35,6 +33,8 @@ import org.springframework.session.FindByIndexNameSessionRepository; import org.springframework.util.Assert; import com.fasterxml.jackson.annotation.JsonAutoDetect; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.PropertyAccessor; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.DeserializationFeature; @@ -145,10 +145,10 @@ public class JacksonMongoSessionConverter extends AbstractMongoSessionConverter * Used to whitelist {@link MongoSession} for {@link SecurityJackson2Modules}. */ private static class MongoSessionMixin { + @JsonCreator public MongoSessionMixin(@JsonProperty("_id") String id, - @JsonProperty("intervalSeconds") long maxInactiveIntervalInSeconds) { - } + @JsonProperty("intervalSeconds") long maxInactiveIntervalInSeconds) {} } /** diff --git a/src/main/java/org/springframework/session/data/mongo/JdkMongoSessionConverter.java b/src/main/java/org/springframework/session/data/mongo/JdkMongoSessionConverter.java index 5b1f2fd..056dd38 100644 --- a/src/main/java/org/springframework/session/data/mongo/JdkMongoSessionConverter.java +++ b/src/main/java/org/springframework/session/data/mongo/JdkMongoSessionConverter.java @@ -69,6 +69,7 @@ public class JdkMongoSessionConverter extends AbstractMongoSessionConverter { Assert.notNull(serializer, "serializer cannot be null"); Assert.notNull(deserializer, "deserializer cannot be null"); Assert.notNull(maxInactiveInterval, "maxInactiveInterval cannot be null"); + this.serializer = serializer; this.deserializer = deserializer; this.maxInactiveInterval = maxInactiveInterval; diff --git a/src/main/java/org/springframework/session/data/mongo/MongoIndexedSessionRepository.java b/src/main/java/org/springframework/session/data/mongo/MongoIndexedSessionRepository.java index 4b08d5c..32f8520 100644 --- a/src/main/java/org/springframework/session/data/mongo/MongoIndexedSessionRepository.java +++ b/src/main/java/org/springframework/session/data/mongo/MongoIndexedSessionRepository.java @@ -132,6 +132,7 @@ public class MongoIndexedSessionRepository public void deleteById(String id) { Optional.ofNullable(findSession(id)).ifPresent(document -> { + MongoSession session = convertToSession(this.mongoSessionConverter, document); if (session != null) { publishEvent(new SessionDeletedEvent(this, session)); diff --git a/src/main/java/org/springframework/session/data/mongo/ReactiveMongoSessionRepository.java b/src/main/java/org/springframework/session/data/mongo/ReactiveMongoSessionRepository.java index 77fcf9c..9da064f 100644 --- a/src/main/java/org/springframework/session/data/mongo/ReactiveMongoSessionRepository.java +++ b/src/main/java/org/springframework/session/data/mongo/ReactiveMongoSessionRepository.java @@ -19,12 +19,13 @@ import static org.springframework.data.mongodb.core.query.Criteria.*; import static org.springframework.data.mongodb.core.query.Query.*; import static org.springframework.session.data.mongo.MongoSessionUtils.*; +import reactor.core.publisher.Mono; + import java.time.Duration; import org.bson.Document; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import reactor.core.publisher.Mono; import org.springframework.beans.factory.InitializingBean; import org.springframework.context.ApplicationEvent; import org.springframework.context.ApplicationEventPublisher; @@ -136,6 +137,7 @@ public class ReactiveMongoSessionRepository public void afterPropertiesSet() { if (this.blockingMongoOperations != null) { + IndexOperations indexOperations = this.blockingMongoOperations.indexOps(this.collectionName); this.mongoSessionConverter.ensureIndexes(indexOperations); } diff --git a/src/main/java/org/springframework/session/data/mongo/config/annotation/web/reactive/ReactiveMongoWebSessionConfiguration.java b/src/main/java/org/springframework/session/data/mongo/config/annotation/web/reactive/ReactiveMongoWebSessionConfiguration.java index 3443ff7..41f3d8e 100644 --- a/src/main/java/org/springframework/session/data/mongo/config/annotation/web/reactive/ReactiveMongoWebSessionConfiguration.java +++ b/src/main/java/org/springframework/session/data/mongo/config/annotation/web/reactive/ReactiveMongoWebSessionConfiguration.java @@ -62,7 +62,6 @@ public class ReactiveMongoWebSessionConfiguration extends SpringWebSessionConfig private ClassLoader classLoader; private IndexResolver indexResolver; - @Bean public ReactiveMongoSessionRepository reactiveMongoSessionRepository(ReactiveMongoOperations operations) { @@ -83,7 +82,7 @@ public class ReactiveMongoWebSessionConfiguration extends SpringWebSessionConfig if (this.indexResolver != null) { mongoSessionConverter.setIndexResolver(this.indexResolver); } - + repository.setMongoSessionConverter(mongoSessionConverter); }