Skip to content

Commit b58fc48

Browse files
Merge branch '3.2.x' into 3.3.x
Closes gh-3165
2 parents d816bb1 + d989024 commit b58fc48

File tree

4 files changed

+22
-4
lines changed

4 files changed

+22
-4
lines changed

spring-session-data-mongodb/src/main/java/org/springframework/session/data/mongo/MongoIndexedSessionRepository.java

+1-3
Original file line numberDiff line numberDiff line change
@@ -92,9 +92,7 @@ public MongoIndexedSessionRepository(MongoOperations mongoOperations) {
9292
@Override
9393
public MongoSession createSession() {
9494

95-
MongoSession session = new MongoSession(this.sessionIdGenerator);
96-
97-
session.setMaxInactiveInterval(this.defaultMaxInactiveInterval);
95+
MongoSession session = new MongoSession(this.sessionIdGenerator, this.defaultMaxInactiveInterval.toSeconds());
9896

9997
publishEvent(new SessionCreatedEvent(this, session));
10098

spring-session-data-mongodb/src/main/java/org/springframework/session/data/mongo/ReactiveMongoSessionRepository.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,8 @@ public ReactiveMongoSessionRepository(ReactiveMongoOperations mongoOperations) {
100100
public Mono<MongoSession> createSession() {
101101
// @formatter:off
102102
return Mono.fromSupplier(() -> this.sessionIdGenerator.generate())
103-
.map(MongoSession::new)
103+
.zipWith(Mono.just(this.defaultMaxInactiveInterval.toSeconds()))
104+
.map((tuple) -> new MongoSession(tuple.getT1(), tuple.getT2()))
104105
.doOnNext((mongoSession) -> mongoSession.setMaxInactiveInterval(this.defaultMaxInactiveInterval))
105106
.doOnNext(
106107
(mongoSession) -> mongoSession.setSessionIdGenerator(this.sessionIdGenerator))

spring-session-data-mongodb/src/test/java/org/springframework/session/data/mongo/MongoIndexedSessionRepositoryTests.java

+10
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@
1616

1717
package org.springframework.session.data.mongo;
1818

19+
import java.time.Duration;
20+
import java.time.Instant;
1921
import java.util.Collections;
2022
import java.util.Map;
2123
import java.util.UUID;
@@ -254,6 +256,14 @@ void findByIdWhenChangeSessionIdThenUsesSessionIdGenerator() {
254256
assertThat(newSessionId).isEqualTo("456");
255257
}
256258

259+
@Test
260+
void createSessionWhenMaxInactiveIntervalSetThenUse() {
261+
this.repository.setDefaultMaxInactiveInterval(Duration.ofSeconds(60));
262+
MongoSession session = this.repository.createSession();
263+
Instant now = Instant.now();
264+
assertThat(session.getExpireAt()).isBetween(now.plusSeconds(59), Instant.now().plusSeconds(61));
265+
}
266+
257267
static class FixedSessionIdGenerator implements SessionIdGenerator {
258268

259269
private final String id;

spring-session-data-mongodb/src/test/java/org/springframework/session/data/mongo/ReactiveMongoSessionRepositoryTests.java

+9
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
package org.springframework.session.data.mongo;
1818

1919
import java.time.Duration;
20+
import java.time.Instant;
2021
import java.util.UUID;
2122

2223
import com.mongodb.BasicDBObject;
@@ -259,4 +260,12 @@ void findByIdWhenChangeSessionIdThenUsesSessionIdGenerator() {
259260
}).verifyComplete();
260261
}
261262

263+
@Test
264+
void createSessionWhenMaxInactiveIntervalSetThenUse() {
265+
this.repository.setDefaultMaxInactiveInterval(Duration.ofSeconds(60));
266+
MongoSession session = this.repository.createSession().block();
267+
Instant now = Instant.now();
268+
assertThat(session.getExpireAt()).isBetween(now.plusSeconds(59), Instant.now().plusSeconds(61));
269+
}
270+
262271
}

0 commit comments

Comments
 (0)