Class MockWebSession
- java.lang.Object
- org.springframework.mock.web.server.MockWebSession
- All Implemented Interfaces:
WebSession
public class MockWebSession extends Object implements WebSession
Implementation ofWebSession
that delegates to a session instance obtained viaInMemoryWebSessionStore
.This is intended for use with the
session(WebSession)
method of theMockServerWebExchange
builder, eliminating the need to useWebSessionManager
orWebSessionStore
altogether.- Since:
- 5.1
- Author:
- Rossen Stoyanchev
Constructor Summary
Constructors Constructor Description MockWebSession()
MockWebSession(Clock clock)
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description reactor.core.publisher.Mono<Void>
changeSessionId()
Generate a new id for the session and update the underlying session storage to reflect the new id.Map<String,Object>
getAttributes()
Return a map that holds session attributes.Instant
getCreationTime()
Return the time when the session was created.String
getId()
Return a unique session identifier.Instant
getLastAccessTime()
Return the last time of session access as a result of user activity such as an HTTP request.Duration
getMaxIdleTime()
Return the maximum time after thelastAccessTime
before a session expires.reactor.core.publisher.Mono<Void>
invalidate()
Invalidate the current session and clear session storage.boolean
isExpired()
Returntrue
if the session expired aftermaxIdleTime
elapsed.boolean
isStarted()
Whether a session with the client has been started explicitly viaWebSession.start()
or implicitly by adding session attributes.reactor.core.publisher.Mono<Void>
save()
Save the session through theWebSessionStore
as follows: If the session is new (i.e.void
setMaxIdleTime(Duration maxIdleTime)
Configure the max amount of time that may elapse after thelastAccessTime
before a session is considered expired.void
start()
Force the creation of a session causing the session id to be sent whenWebSession.save()
is called.Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface org.springframework.web.server.WebSession
getAttribute, getAttributeOrDefault, getRequiredAttribute
Constructor Detail
MockWebSession
public MockWebSession()
MockWebSession
public MockWebSession(@Nullable Clock clock)
Method Detail
getId
public String getId()
Description copied from interface:WebSession
Return a unique session identifier.- Specified by:
getId
in interfaceWebSession
getAttributes
public Map<String,Object> getAttributes()
Description copied from interface:WebSession
Return a map that holds session attributes.- Specified by:
getAttributes
in interfaceWebSession
start
public void start()
Description copied from interface:WebSession
Force the creation of a session causing the session id to be sent whenWebSession.save()
is called.- Specified by:
start
in interfaceWebSession
isStarted
public boolean isStarted()
Description copied from interface:WebSession
Whether a session with the client has been started explicitly viaWebSession.start()
or implicitly by adding session attributes. If "false" then the session id is not sent to the client and theWebSession.save()
method is essentially a no-op.- Specified by:
isStarted
in interfaceWebSession
changeSessionId
public reactor.core.publisher.Mono<Void> changeSessionId()
Description copied from interface:WebSession
Generate a new id for the session and update the underlying session storage to reflect the new id. After a successful callWebSession.getId()
reflects the new session id.- Specified by:
changeSessionId
in interfaceWebSession
- Returns:
- completion notification (success or error)
invalidate
public reactor.core.publisher.Mono<Void> invalidate()
Description copied from interface:WebSession
Invalidate the current session and clear session storage.- Specified by:
invalidate
in interfaceWebSession
- Returns:
- completion notification (success or error)
save
public reactor.core.publisher.Mono<Void> save()
Description copied from interface:WebSession
Save the session through theWebSessionStore
as follows:- If the session is new (i.e. created but never persisted), it must have been started explicitly via
WebSession.start()
or implicitly by adding attributes, or otherwise this method should have no effect. - If the session was retrieved through the
WebSessionStore
, the implementation for this method must check whether the session wasinvalidated
and if so return an error.
Note that this method is not intended for direct use by applications. Instead it is automatically invoked just before the response is committed.
- Specified by:
save
in interfaceWebSession
- Returns:
Mono
to indicate completion with success or error
- If the session is new (i.e. created but never persisted), it must have been started explicitly via
isExpired
public boolean isExpired()
Description copied from interface:WebSession
Returntrue
if the session expired aftermaxIdleTime
elapsed.Typically expiration checks should be automatically made when a session is accessed, a new
WebSession
instance created if necessary, at the start of request processing so that applications don't have to worry about expired session by default.- Specified by:
isExpired
in interfaceWebSession
getCreationTime
public Instant getCreationTime()
Description copied from interface:WebSession
Return the time when the session was created.- Specified by:
getCreationTime
in interfaceWebSession
getLastAccessTime
public Instant getLastAccessTime()
Description copied from interface:WebSession
Return the last time of session access as a result of user activity such as an HTTP request. Together withmaxIdleTimeInSeconds
this helps to determine when a session isexpired
.- Specified by:
getLastAccessTime
in interfaceWebSession
setMaxIdleTime
public void setMaxIdleTime(Duration maxIdleTime)
Description copied from interface:WebSession
Configure the max amount of time that may elapse after thelastAccessTime
before a session is considered expired. A negative value indicates the session should not expire.- Specified by:
setMaxIdleTime
in interfaceWebSession
getMaxIdleTime
public Duration getMaxIdleTime()
Description copied from interface:WebSession
Return the maximum time after thelastAccessTime
before a session expires. A negative time indicates the session doesn't expire.- Specified by:
getMaxIdleTime
in interfaceWebSession