Merge branch '3.3.x'

Closes gh-3166
This commit is contained in:
Marcus Hert Da Coregio 2024-08-21 09:15:44 -03:00
commit 89920ab87c
4 changed files with 22 additions and 4 deletions

View File

@ -92,9 +92,7 @@ public class MongoIndexedSessionRepository
@Override
public MongoSession createSession() {
MongoSession session = new MongoSession(this.sessionIdGenerator);
session.setMaxInactiveInterval(this.defaultMaxInactiveInterval);
MongoSession session = new MongoSession(this.sessionIdGenerator, this.defaultMaxInactiveInterval.toSeconds());
publishEvent(new SessionCreatedEvent(this, session));

View File

@ -100,7 +100,8 @@ public class ReactiveMongoSessionRepository
public Mono<MongoSession> createSession() {
// @formatter:off
return Mono.fromSupplier(() -> this.sessionIdGenerator.generate())
.map(MongoSession::new)
.zipWith(Mono.just(this.defaultMaxInactiveInterval.toSeconds()))
.map((tuple) -> new MongoSession(tuple.getT1(), tuple.getT2()))
.doOnNext((mongoSession) -> mongoSession.setMaxInactiveInterval(this.defaultMaxInactiveInterval))
.doOnNext(
(mongoSession) -> mongoSession.setSessionIdGenerator(this.sessionIdGenerator))

View File

@ -16,6 +16,8 @@
package org.springframework.session.data.mongo;
import java.time.Duration;
import java.time.Instant;
import java.util.Collections;
import java.util.Map;
import java.util.UUID;
@ -254,6 +256,14 @@ class MongoIndexedSessionRepositoryTests {
assertThat(newSessionId).isEqualTo("456");
}
@Test
void createSessionWhenMaxInactiveIntervalSetThenUse() {
this.repository.setDefaultMaxInactiveInterval(Duration.ofSeconds(60));
MongoSession session = this.repository.createSession();
Instant now = Instant.now();
assertThat(session.getExpireAt()).isBetween(now.plusSeconds(59), Instant.now().plusSeconds(61));
}
static class FixedSessionIdGenerator implements SessionIdGenerator {
private final String id;

View File

@ -17,6 +17,7 @@
package org.springframework.session.data.mongo;
import java.time.Duration;
import java.time.Instant;
import java.util.UUID;
import com.mongodb.BasicDBObject;
@ -259,4 +260,12 @@ class ReactiveMongoSessionRepositoryTests {
}).verifyComplete();
}
@Test
void createSessionWhenMaxInactiveIntervalSetThenUse() {
this.repository.setDefaultMaxInactiveInterval(Duration.ofSeconds(60));
MongoSession session = this.repository.createSession().block();
Instant now = Instant.now();
assertThat(session.getExpireAt()).isBetween(now.plusSeconds(59), Instant.now().plusSeconds(61));
}
}