diff --git a/docs/src/test/java/docs/http/AbstractHttpSessionListenerTests.java b/docs/src/test/java/docs/http/AbstractHttpSessionListenerTests.java index e85d06fe..2c6a312b 100644 --- a/docs/src/test/java/docs/http/AbstractHttpSessionListenerTests.java +++ b/docs/src/test/java/docs/http/AbstractHttpSessionListenerTests.java @@ -82,6 +82,7 @@ public abstract class AbstractHttpSessionListenerTests { * @see org.springframework.context.ApplicationListener#onApplicationEvent(org. * springframework.context.ApplicationEvent) */ + @Override public void onApplicationEvent(SessionDestroyedEvent event) { this.event = event; } diff --git a/docs/src/test/java/docs/websocket/WebSocketConfig.java b/docs/src/test/java/docs/websocket/WebSocketConfig.java index b4c168a0..ffff8db8 100644 --- a/docs/src/test/java/docs/websocket/WebSocketConfig.java +++ b/docs/src/test/java/docs/websocket/WebSocketConfig.java @@ -32,6 +32,7 @@ import org.springframework.web.socket.config.annotation.StompEndpointRegistry; @EnableWebSocketMessageBroker public class WebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer { + @Override public void registerStompEndpoints(StompEndpointRegistry registry) { registry.addEndpoint("/messages").withSockJS(); } diff --git a/samples/boot/findbyusername/src/main/java/sample/config/SecurityConfig.java b/samples/boot/findbyusername/src/main/java/sample/config/SecurityConfig.java index a37c5945..fa153ae0 100644 --- a/samples/boot/findbyusername/src/main/java/sample/config/SecurityConfig.java +++ b/samples/boot/findbyusername/src/main/java/sample/config/SecurityConfig.java @@ -35,6 +35,7 @@ import org.springframework.security.provisioning.InMemoryUserDetailsManager; public class SecurityConfig extends WebSecurityConfigurerAdapter { @Bean + @Override public UserDetailsService userDetailsService() { InMemoryUserDetailsManager manager = new InMemoryUserDetailsManager(); manager.createUser( diff --git a/samples/boot/findbyusername/src/main/java/sample/session/SessionDetailsFilter.java b/samples/boot/findbyusername/src/main/java/sample/session/SessionDetailsFilter.java index e3d796a8..f0056ad1 100644 --- a/samples/boot/findbyusername/src/main/java/sample/session/SessionDetailsFilter.java +++ b/samples/boot/findbyusername/src/main/java/sample/session/SessionDetailsFilter.java @@ -57,6 +57,7 @@ public class SessionDetailsFilter extends OncePerRequestFilter { } // tag::dofilterinternal[] + @Override public void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain chain) throws IOException, ServletException { chain.doFilter(request, response); diff --git a/samples/boot/jdbc/src/main/java/sample/config/SecurityConfig.java b/samples/boot/jdbc/src/main/java/sample/config/SecurityConfig.java index 660eb92c..7358ac90 100644 --- a/samples/boot/jdbc/src/main/java/sample/config/SecurityConfig.java +++ b/samples/boot/jdbc/src/main/java/sample/config/SecurityConfig.java @@ -36,6 +36,7 @@ import org.springframework.security.provisioning.InMemoryUserDetailsManager; public class SecurityConfig extends WebSecurityConfigurerAdapter { @Bean + @Override public UserDetailsService userDetailsService() { InMemoryUserDetailsManager manager = new InMemoryUserDetailsManager(); manager.createUser( diff --git a/samples/boot/redis-json/src/main/java/sample/config/SecurityConfig.java b/samples/boot/redis-json/src/main/java/sample/config/SecurityConfig.java index 3fd5b460..f0383906 100644 --- a/samples/boot/redis-json/src/main/java/sample/config/SecurityConfig.java +++ b/samples/boot/redis-json/src/main/java/sample/config/SecurityConfig.java @@ -35,6 +35,7 @@ import org.springframework.security.provisioning.InMemoryUserDetailsManager; public class SecurityConfig extends WebSecurityConfigurerAdapter { @Bean + @Override public UserDetailsService userDetailsService() { InMemoryUserDetailsManager manager = new InMemoryUserDetailsManager(); manager.createUser( diff --git a/samples/boot/redis-json/src/main/java/sample/config/SessionConfig.java b/samples/boot/redis-json/src/main/java/sample/config/SessionConfig.java index f1dec14e..4653098d 100644 --- a/samples/boot/redis-json/src/main/java/sample/config/SessionConfig.java +++ b/samples/boot/redis-json/src/main/java/sample/config/SessionConfig.java @@ -56,6 +56,7 @@ public class SessionConfig implements BeanClassLoaderAware { * org.springframework.beans.factory.BeanClassLoaderAware#setBeanClassLoader(java.lang * .ClassLoader) */ + @Override public void setBeanClassLoader(ClassLoader classLoader) { this.loader = classLoader; } diff --git a/samples/boot/redis/src/main/java/sample/config/SecurityConfig.java b/samples/boot/redis/src/main/java/sample/config/SecurityConfig.java index 9fb8c2ed..0db01331 100644 --- a/samples/boot/redis/src/main/java/sample/config/SecurityConfig.java +++ b/samples/boot/redis/src/main/java/sample/config/SecurityConfig.java @@ -35,6 +35,7 @@ import org.springframework.security.provisioning.InMemoryUserDetailsManager; public class SecurityConfig extends WebSecurityConfigurerAdapter { @Bean + @Override public UserDetailsService userDetailsService() { InMemoryUserDetailsManager manager = new InMemoryUserDetailsManager(); manager.createUser( diff --git a/samples/boot/websocket/src/main/java/sample/config/WebSecurityConfig.java b/samples/boot/websocket/src/main/java/sample/config/WebSecurityConfig.java index 3da9bdec..3136073c 100644 --- a/samples/boot/websocket/src/main/java/sample/config/WebSecurityConfig.java +++ b/samples/boot/websocket/src/main/java/sample/config/WebSecurityConfig.java @@ -35,6 +35,7 @@ import org.springframework.security.provisioning.InMemoryUserDetailsManager; public class WebSecurityConfig extends WebSecurityConfigurerAdapter { @Bean + @Override public UserDetailsService userDetailsService() { InMemoryUserDetailsManager manager = new InMemoryUserDetailsManager(); manager.createUser( diff --git a/samples/boot/websocket/src/main/java/sample/config/WebSocketConfig.java b/samples/boot/websocket/src/main/java/sample/config/WebSocketConfig.java index abd602ef..69dec347 100644 --- a/samples/boot/websocket/src/main/java/sample/config/WebSocketConfig.java +++ b/samples/boot/websocket/src/main/java/sample/config/WebSocketConfig.java @@ -31,10 +31,12 @@ import org.springframework.web.socket.config.annotation.StompEndpointRegistry; public class WebSocketConfig extends AbstractSessionWebSocketMessageBrokerConfigurer { // <1> + @Override protected void configureStompEndpoints(StompEndpointRegistry registry) { // <2> registry.addEndpoint("/messages").withSockJS(); } + @Override public void configureMessageBroker(MessageBrokerRegistry registry) { registry.enableSimpleBroker("/queue/", "/topic/"); registry.setApplicationDestinationPrefixes("/app"); diff --git a/samples/boot/websocket/src/main/java/sample/security/UserRepositoryUserDetailsService.java b/samples/boot/websocket/src/main/java/sample/security/UserRepositoryUserDetailsService.java index a97a2e2b..fbb68a1d 100644 --- a/samples/boot/websocket/src/main/java/sample/security/UserRepositoryUserDetailsService.java +++ b/samples/boot/websocket/src/main/java/sample/security/UserRepositoryUserDetailsService.java @@ -49,6 +49,7 @@ public class UserRepositoryUserDetailsService implements UserDetailsService { * org.springframework.security.core.userdetails.UserDetailsService#loadUserByUsername * (java.lang.String) */ + @Override public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException { User user = this.userRepository.findByEmail(username); @@ -64,26 +65,32 @@ public class UserRepositoryUserDetailsService implements UserDetailsService { super(user); } + @Override public Collection getAuthorities() { return AuthorityUtils.createAuthorityList("ROLE_USER"); } + @Override public String getUsername() { return getEmail(); } + @Override public boolean isAccountNonExpired() { return true; } + @Override public boolean isAccountNonLocked() { return true; } + @Override public boolean isCredentialsNonExpired() { return true; } + @Override public boolean isEnabled() { return true; } diff --git a/samples/boot/websocket/src/main/java/sample/websocket/WebSocketConnectHandler.java b/samples/boot/websocket/src/main/java/sample/websocket/WebSocketConnectHandler.java index 060381a5..46becd5d 100644 --- a/samples/boot/websocket/src/main/java/sample/websocket/WebSocketConnectHandler.java +++ b/samples/boot/websocket/src/main/java/sample/websocket/WebSocketConnectHandler.java @@ -41,6 +41,7 @@ public class WebSocketConnectHandler this.repository = repository; } + @Override public void onApplicationEvent(SessionConnectEvent event) { MessageHeaders headers = event.getMessage().getHeaders(); Principal user = SimpMessageHeaderAccessor.getUser(headers); diff --git a/samples/boot/websocket/src/main/java/sample/websocket/WebSocketDisconnectHandler.java b/samples/boot/websocket/src/main/java/sample/websocket/WebSocketDisconnectHandler.java index 8bcae400..4b31dd53 100644 --- a/samples/boot/websocket/src/main/java/sample/websocket/WebSocketDisconnectHandler.java +++ b/samples/boot/websocket/src/main/java/sample/websocket/WebSocketDisconnectHandler.java @@ -36,6 +36,7 @@ public class WebSocketDisconnectHandler this.repository = repository; } + @Override public void onApplicationEvent(SessionDisconnectEvent event) { String id = event.getSessionId(); if (id == null) { diff --git a/samples/javaconfig/hazelcast/src/main/java/sample/ObjectStreamSerializer.java b/samples/javaconfig/hazelcast/src/main/java/sample/ObjectStreamSerializer.java index 1e9149f3..4d1eb444 100644 --- a/samples/javaconfig/hazelcast/src/main/java/sample/ObjectStreamSerializer.java +++ b/samples/javaconfig/hazelcast/src/main/java/sample/ObjectStreamSerializer.java @@ -36,10 +36,12 @@ import com.hazelcast.nio.serialization.StreamSerializer; * */ public class ObjectStreamSerializer implements StreamSerializer { + @Override public int getTypeId() { return 2; } + @Override public void write(ObjectDataOutput objectDataOutput, Object object) throws IOException { ObjectOutputStream out = new ObjectOutputStream((OutputStream) objectDataOutput); @@ -47,6 +49,7 @@ public class ObjectStreamSerializer implements StreamSerializer { out.flush(); } + @Override public Object read(ObjectDataInput objectDataInput) throws IOException { ObjectInputStream in = new ObjectInputStream((InputStream) objectDataInput); try { @@ -57,6 +60,7 @@ public class ObjectStreamSerializer implements StreamSerializer { } } + @Override public void destroy() { } diff --git a/samples/javaconfig/jdbc/src/main/java/sample/H2ConsoleInitializer.java b/samples/javaconfig/jdbc/src/main/java/sample/H2ConsoleInitializer.java index 7229e7eb..937af592 100644 --- a/samples/javaconfig/jdbc/src/main/java/sample/H2ConsoleInitializer.java +++ b/samples/javaconfig/jdbc/src/main/java/sample/H2ConsoleInitializer.java @@ -24,6 +24,7 @@ import org.springframework.web.WebApplicationInitializer; public class H2ConsoleInitializer implements WebApplicationInitializer { + @Override public void onStartup(ServletContext servletContext) throws ServletException { servletContext.addServlet("h2Console", new WebServlet()).addMapping("/h2-console/*"); } diff --git a/samples/misc/hazelcast/src/main/java/sample/Initializer.java b/samples/misc/hazelcast/src/main/java/sample/Initializer.java index fb033d42..a0ac28e2 100644 --- a/samples/misc/hazelcast/src/main/java/sample/Initializer.java +++ b/samples/misc/hazelcast/src/main/java/sample/Initializer.java @@ -43,6 +43,7 @@ public class Initializer implements ServletContextListener { private HazelcastInstance instance; + @Override public void contextInitialized(ServletContextEvent sce) { this.instance = createHazelcastInstance(); Map sessions = this.instance.getMap(SESSION_MAP_NAME); @@ -55,6 +56,7 @@ public class Initializer implements ServletContextListener { fr.addMappingForUrlPatterns(EnumSet.of(DispatcherType.REQUEST), true, "/*"); } + @Override public void contextDestroyed(ServletContextEvent sce) { this.instance.shutdown(); } diff --git a/spring-session-core/src/main/java/org/springframework/session/MapReactiveSessionRepository.java b/spring-session-core/src/main/java/org/springframework/session/MapReactiveSessionRepository.java index 9f129ad2..7775df14 100644 --- a/spring-session-core/src/main/java/org/springframework/session/MapReactiveSessionRepository.java +++ b/spring-session-core/src/main/java/org/springframework/session/MapReactiveSessionRepository.java @@ -71,6 +71,7 @@ public class MapReactiveSessionRepository implements ReactiveSessionRepository save(MapSession session) { return Mono.fromRunnable(() -> { if (!session.getId().equals(session.getOriginalId())) { @@ -81,6 +82,7 @@ public class MapReactiveSessionRepository implements ReactiveSessionRepository findById(String id) { // @formatter:off return Mono.defer(() -> Mono.justOrEmpty(this.sessions.get(id)) @@ -90,10 +92,12 @@ public class MapReactiveSessionRepository implements ReactiveSessionRepository deleteById(String id) { return Mono.fromRunnable(() -> this.sessions.remove(id)); } + @Override public Mono createSession() { return Mono.defer(() -> { MapSession result = new MapSession(); diff --git a/spring-session-core/src/main/java/org/springframework/session/MapSession.java b/spring-session-core/src/main/java/org/springframework/session/MapSession.java index ad61fb87..6ac4ec69 100644 --- a/spring-session-core/src/main/java/org/springframework/session/MapSession.java +++ b/spring-session-core/src/main/java/org/springframework/session/MapSession.java @@ -107,14 +107,17 @@ public final class MapSession implements Session, Serializable { this.maxInactiveInterval = session.getMaxInactiveInterval(); } + @Override public void setLastAccessedTime(Instant lastAccessedTime) { this.lastAccessedTime = lastAccessedTime; } + @Override public Instant getCreationTime() { return this.creationTime; } + @Override public String getId() { return this.id; } @@ -127,24 +130,29 @@ public final class MapSession implements Session, Serializable { this.originalId = originalId; } + @Override public String changeSessionId() { String changedId = generateId(); setId(changedId); return changedId; } + @Override public Instant getLastAccessedTime() { return this.lastAccessedTime; } + @Override public void setMaxInactiveInterval(Duration interval) { this.maxInactiveInterval = interval; } + @Override public Duration getMaxInactiveInterval() { return this.maxInactiveInterval; } + @Override public boolean isExpired() { return isExpired(Instant.now()); } @@ -156,15 +164,18 @@ public final class MapSession implements Session, Serializable { return now.minus(this.maxInactiveInterval).compareTo(this.lastAccessedTime) >= 0; } + @Override @SuppressWarnings("unchecked") public T getAttribute(String attributeName) { return (T) this.sessionAttrs.get(attributeName); } + @Override public Set getAttributeNames() { return this.sessionAttrs.keySet(); } + @Override public void setAttribute(String attributeName, Object attributeValue) { if (attributeValue == null) { removeAttribute(attributeName); @@ -174,6 +185,7 @@ public final class MapSession implements Session, Serializable { } } + @Override public void removeAttribute(String attributeName) { this.sessionAttrs.remove(attributeName); } @@ -198,10 +210,12 @@ public final class MapSession implements Session, Serializable { this.id = id; } + @Override public boolean equals(Object obj) { return obj instanceof Session && this.id.equals(((Session) obj).getId()); } + @Override public int hashCode() { return this.id.hashCode(); } diff --git a/spring-session-core/src/main/java/org/springframework/session/MapSessionRepository.java b/spring-session-core/src/main/java/org/springframework/session/MapSessionRepository.java index a4798352..03762735 100644 --- a/spring-session-core/src/main/java/org/springframework/session/MapSessionRepository.java +++ b/spring-session-core/src/main/java/org/springframework/session/MapSessionRepository.java @@ -69,6 +69,7 @@ public class MapSessionRepository implements SessionRepository { this.defaultMaxInactiveInterval = defaultMaxInactiveInterval; } + @Override public void save(MapSession session) { if (!session.getId().equals(session.getOriginalId())) { this.sessions.remove(session.getOriginalId()); @@ -77,6 +78,7 @@ public class MapSessionRepository implements SessionRepository { this.sessions.put(session.getId(), new MapSession(session)); } + @Override public MapSession findById(String id) { Session saved = this.sessions.get(id); if (saved == null) { @@ -89,10 +91,12 @@ public class MapSessionRepository implements SessionRepository { return new MapSession(saved); } + @Override public void deleteById(String id) { this.sessions.remove(id); } + @Override public MapSession createSession() { MapSession result = new MapSession(); if (this.defaultMaxInactiveInterval != null) { diff --git a/spring-session-core/src/main/java/org/springframework/session/security/SpringSessionBackedSessionRegistry.java b/spring-session-core/src/main/java/org/springframework/session/security/SpringSessionBackedSessionRegistry.java index 563bd42f..05c7eb53 100644 --- a/spring-session-core/src/main/java/org/springframework/session/security/SpringSessionBackedSessionRegistry.java +++ b/spring-session-core/src/main/java/org/springframework/session/security/SpringSessionBackedSessionRegistry.java @@ -55,12 +55,14 @@ public class SpringSessionBackedSessionRegistry this.sessionRepository = sessionRepository; } + @Override public List getAllPrincipals() { throw new UnsupportedOperationException("SpringSessionBackedSessionRegistry does " + "not support retrieving all principals, since Spring Session provides " + "no way to obtain that information"); } + @Override public List getAllSessions(Object principal, boolean includeExpiredSessions) { Collection sessions = this.sessionRepository.findByIndexNameAndIndexValue( @@ -77,6 +79,7 @@ public class SpringSessionBackedSessionRegistry return infos; } + @Override public SessionInformation getSessionInformation(String sessionId) { S session = this.sessionRepository.findById(sessionId); if (session != null) { @@ -89,18 +92,21 @@ public class SpringSessionBackedSessionRegistry /* * This is a no-op, as we don't administer sessions ourselves. */ + @Override public void refreshLastRequest(String sessionId) { } /* * This is a no-op, as we don't administer sessions ourselves. */ + @Override public void registerNewSession(String sessionId, Object principal) { } /* * This is a no-op, as we don't administer sessions ourselves. */ + @Override public void removeSessionInformation(String sessionId) { } diff --git a/spring-session-core/src/main/java/org/springframework/session/security/web/authentication/SpringSessionRememberMeServices.java b/spring-session-core/src/main/java/org/springframework/session/security/web/authentication/SpringSessionRememberMeServices.java index abda5ac9..6aa22c12 100644 --- a/spring-session-core/src/main/java/org/springframework/session/security/web/authentication/SpringSessionRememberMeServices.java +++ b/spring-session-core/src/main/java/org/springframework/session/security/web/authentication/SpringSessionRememberMeServices.java @@ -60,16 +60,19 @@ public class SpringSessionRememberMeServices private String sessionAttrToDeleteOnLoginFail = HttpSessionSecurityContextRepository.SPRING_SECURITY_CONTEXT_KEY; + @Override public final Authentication autoLogin(HttpServletRequest request, HttpServletResponse response) { return null; } + @Override public final void loginFail(HttpServletRequest request, HttpServletResponse response) { logout(request); } + @Override public final void loginSuccess(HttpServletRequest request, HttpServletResponse response, Authentication successfulAuthentication) { if (!this.alwaysRemember @@ -126,6 +129,7 @@ public class SpringSessionRememberMeServices this.validitySeconds = validitySeconds; } + @Override public void logout(HttpServletRequest request, HttpServletResponse response, Authentication authentication) { logout(request); diff --git a/spring-session-core/src/main/java/org/springframework/session/web/context/AbstractHttpSessionApplicationInitializer.java b/spring-session-core/src/main/java/org/springframework/session/web/context/AbstractHttpSessionApplicationInitializer.java index ec2b7516..f635ff18 100644 --- a/spring-session-core/src/main/java/org/springframework/session/web/context/AbstractHttpSessionApplicationInitializer.java +++ b/spring-session-core/src/main/java/org/springframework/session/web/context/AbstractHttpSessionApplicationInitializer.java @@ -107,6 +107,7 @@ public abstract class AbstractHttpSessionApplicationInitializer this.configurationClasses = configurationClasses; } + @Override public void onStartup(ServletContext servletContext) throws ServletException { beforeSessionRepositoryFilter(servletContext); if (this.configurationClasses != null) { diff --git a/spring-session-core/src/main/java/org/springframework/session/web/http/DefaultCookieSerializer.java b/spring-session-core/src/main/java/org/springframework/session/web/http/DefaultCookieSerializer.java index 9aea6c06..3ec1a92c 100644 --- a/spring-session-core/src/main/java/org/springframework/session/web/http/DefaultCookieSerializer.java +++ b/spring-session-core/src/main/java/org/springframework/session/web/http/DefaultCookieSerializer.java @@ -63,6 +63,7 @@ public class DefaultCookieSerializer implements CookieSerializer { * @see org.springframework.session.web.http.CookieSerializer#readCookieValues(javax. * servlet.http.HttpServletRequest) */ + @Override public List readCookieValues(HttpServletRequest request) { Cookie[] cookies = request.getCookies(); List matchingCookieValues = new ArrayList<>(); @@ -91,6 +92,7 @@ public class DefaultCookieSerializer implements CookieSerializer { * @see org.springframework.session.web.http.CookieWriter#writeCookieValue(org. * springframework.session.web.http.CookieWriter.CookieValue) */ + @Override public void writeCookieValue(CookieValue cookieValue) { HttpServletRequest request = cookieValue.getRequest(); HttpServletResponse response = cookieValue.getResponse(); diff --git a/spring-session-core/src/main/java/org/springframework/session/web/http/HttpSessionAdapter.java b/spring-session-core/src/main/java/org/springframework/session/web/http/HttpSessionAdapter.java index 18598886..555fea0c 100644 --- a/spring-session-core/src/main/java/org/springframework/session/web/http/HttpSessionAdapter.java +++ b/spring-session-core/src/main/java/org/springframework/session/web/http/HttpSessionAdapter.java @@ -55,74 +55,90 @@ class HttpSessionAdapter implements HttpSession { return this.session; } + @Override public long getCreationTime() { checkState(); return this.session.getCreationTime().toEpochMilli(); } + @Override public String getId() { return this.session.getId(); } + @Override public long getLastAccessedTime() { checkState(); return this.session.getLastAccessedTime().toEpochMilli(); } + @Override public ServletContext getServletContext() { return this.servletContext; } + @Override public void setMaxInactiveInterval(int interval) { this.session.setMaxInactiveInterval(Duration.ofSeconds(interval)); } + @Override public int getMaxInactiveInterval() { return (int) this.session.getMaxInactiveInterval().getSeconds(); } + @Override public HttpSessionContext getSessionContext() { return NOOP_SESSION_CONTEXT; } + @Override public Object getAttribute(String name) { checkState(); return this.session.getAttribute(name); } + @Override public Object getValue(String name) { return getAttribute(name); } + @Override public Enumeration getAttributeNames() { checkState(); return Collections.enumeration(this.session.getAttributeNames()); } + @Override public String[] getValueNames() { checkState(); Set attrs = this.session.getAttributeNames(); return attrs.toArray(new String[0]); } + @Override public void setAttribute(String name, Object value) { checkState(); this.session.setAttribute(name, value); } + @Override public void putValue(String name, Object value) { setAttribute(name, value); } + @Override public void removeAttribute(String name) { checkState(); this.session.removeAttribute(name); } + @Override public void removeValue(String name) { removeAttribute(name); } + @Override public void invalidate() { checkState(); this.invalidated = true; @@ -132,6 +148,7 @@ class HttpSessionAdapter implements HttpSession { this.old = !isNew; } + @Override public boolean isNew() { checkState(); return !this.old; @@ -145,20 +162,24 @@ class HttpSessionAdapter implements HttpSession { } private static final HttpSessionContext NOOP_SESSION_CONTEXT = new HttpSessionContext() { + @Override public HttpSession getSession(String sessionId) { return null; } + @Override public Enumeration getIds() { return EMPTY_ENUMERATION; } }; private static final Enumeration EMPTY_ENUMERATION = new Enumeration() { + @Override public boolean hasMoreElements() { return false; } + @Override public String nextElement() { throw new NoSuchElementException("a"); } diff --git a/spring-session-core/src/main/java/org/springframework/session/web/http/OnCommittedResponseWrapper.java b/spring-session-core/src/main/java/org/springframework/session/web/http/OnCommittedResponseWrapper.java index c584ccf4..c5e17479 100644 --- a/spring-session-core/src/main/java/org/springframework/session/web/http/OnCommittedResponseWrapper.java +++ b/spring-session-core/src/main/java/org/springframework/session/web/http/OnCommittedResponseWrapper.java @@ -244,187 +244,224 @@ abstract class OnCommittedResponseWrapper extends HttpServletResponseWrapper { this.delegate = delegate; } + @Override public void flush() { doOnResponseCommitted(); this.delegate.flush(); } + @Override public void close() { doOnResponseCommitted(); this.delegate.close(); } + @Override public int hashCode() { return this.delegate.hashCode(); } + @Override public boolean equals(Object obj) { return this.delegate.equals(obj); } + @Override public String toString() { return getClass().getName() + "[delegate=" + this.delegate.toString() + "]"; } + @Override public boolean checkError() { return this.delegate.checkError(); } + @Override public void write(int c) { trackContentLength(c); this.delegate.write(c); } + @Override public void write(char[] buf, int off, int len) { checkContentLength(len); this.delegate.write(buf, off, len); } + @Override public void write(char[] buf) { trackContentLength(buf); this.delegate.write(buf); } + @Override public void write(String s, int off, int len) { checkContentLength(len); this.delegate.write(s, off, len); } + @Override public void write(String s) { trackContentLength(s); this.delegate.write(s); } + @Override public void print(boolean b) { trackContentLength(b); this.delegate.print(b); } + @Override public void print(char c) { trackContentLength(c); this.delegate.print(c); } + @Override public void print(int i) { trackContentLength(i); this.delegate.print(i); } + @Override public void print(long l) { trackContentLength(l); this.delegate.print(l); } + @Override public void print(float f) { trackContentLength(f); this.delegate.print(f); } + @Override public void print(double d) { trackContentLength(d); this.delegate.print(d); } + @Override public void print(char[] s) { trackContentLength(s); this.delegate.print(s); } + @Override public void print(String s) { trackContentLength(s); this.delegate.print(s); } + @Override public void print(Object obj) { trackContentLength(obj); this.delegate.print(obj); } + @Override public void println() { trackContentLengthLn(); this.delegate.println(); } + @Override public void println(boolean x) { trackContentLength(x); trackContentLengthLn(); this.delegate.println(x); } + @Override public void println(char x) { trackContentLength(x); trackContentLengthLn(); this.delegate.println(x); } + @Override public void println(int x) { trackContentLength(x); trackContentLengthLn(); this.delegate.println(x); } + @Override public void println(long x) { trackContentLength(x); trackContentLengthLn(); this.delegate.println(x); } + @Override public void println(float x) { trackContentLength(x); trackContentLengthLn(); this.delegate.println(x); } + @Override public void println(double x) { trackContentLength(x); trackContentLengthLn(); this.delegate.println(x); } + @Override public void println(char[] x) { trackContentLength(x); trackContentLengthLn(); this.delegate.println(x); } + @Override public void println(String x) { trackContentLength(x); trackContentLengthLn(); this.delegate.println(x); } + @Override public void println(Object x) { trackContentLength(x); trackContentLengthLn(); this.delegate.println(x); } + @Override public PrintWriter printf(String format, Object... args) { return this.delegate.printf(format, args); } + @Override public PrintWriter printf(Locale l, String format, Object... args) { return this.delegate.printf(l, format, args); } + @Override public PrintWriter format(String format, Object... args) { return this.delegate.format(format, args); } + @Override public PrintWriter format(Locale l, String format, Object... args) { return this.delegate.format(l, format, args); } + @Override public PrintWriter append(CharSequence csq) { checkContentLength(csq.length()); return this.delegate.append(csq); } + @Override public PrintWriter append(CharSequence csq, int start, int end) { checkContentLength(end - start); return this.delegate.append(csq, start, end); } + @Override public PrintWriter append(char c) { trackContentLength(c); return this.delegate.append(c); @@ -446,121 +483,144 @@ abstract class OnCommittedResponseWrapper extends HttpServletResponseWrapper { this.delegate = delegate; } + @Override public void write(int b) throws IOException { trackContentLength(b); this.delegate.write(b); } + @Override public void flush() throws IOException { doOnResponseCommitted(); this.delegate.flush(); } + @Override public void close() throws IOException { doOnResponseCommitted(); this.delegate.close(); } + @Override public int hashCode() { return this.delegate.hashCode(); } + @Override public boolean equals(Object obj) { return this.delegate.equals(obj); } + @Override public void print(boolean b) throws IOException { trackContentLength(b); this.delegate.print(b); } + @Override public void print(char c) throws IOException { trackContentLength(c); this.delegate.print(c); } + @Override public void print(double d) throws IOException { trackContentLength(d); this.delegate.print(d); } + @Override public void print(float f) throws IOException { trackContentLength(f); this.delegate.print(f); } + @Override public void print(int i) throws IOException { trackContentLength(i); this.delegate.print(i); } + @Override public void print(long l) throws IOException { trackContentLength(l); this.delegate.print(l); } + @Override public void print(String s) throws IOException { trackContentLength(s); this.delegate.print(s); } + @Override public void println() throws IOException { trackContentLengthLn(); this.delegate.println(); } + @Override public void println(boolean b) throws IOException { trackContentLength(b); trackContentLengthLn(); this.delegate.println(b); } + @Override public void println(char c) throws IOException { trackContentLength(c); trackContentLengthLn(); this.delegate.println(c); } + @Override public void println(double d) throws IOException { trackContentLength(d); trackContentLengthLn(); this.delegate.println(d); } + @Override public void println(float f) throws IOException { trackContentLength(f); trackContentLengthLn(); this.delegate.println(f); } + @Override public void println(int i) throws IOException { trackContentLength(i); trackContentLengthLn(); this.delegate.println(i); } + @Override public void println(long l) throws IOException { trackContentLength(l); trackContentLengthLn(); this.delegate.println(l); } + @Override public void println(String s) throws IOException { trackContentLength(s); trackContentLengthLn(); this.delegate.println(s); } + @Override public void write(byte[] b) throws IOException { trackContentLength(b); this.delegate.write(b); } + @Override public void write(byte[] b, int off, int len) throws IOException { checkContentLength(len); this.delegate.write(b, off, len); } + @Override public String toString() { return getClass().getName() + "[delegate=" + this.delegate.toString() + "]"; } diff --git a/spring-session-core/src/main/java/org/springframework/session/web/http/OncePerRequestFilter.java b/spring-session-core/src/main/java/org/springframework/session/web/http/OncePerRequestFilter.java index 48f3ae9a..ea468153 100644 --- a/spring-session-core/src/main/java/org/springframework/session/web/http/OncePerRequestFilter.java +++ b/spring-session-core/src/main/java/org/springframework/session/web/http/OncePerRequestFilter.java @@ -55,6 +55,7 @@ abstract class OncePerRequestFilter implements Filter { * @throws ServletException if request is not HTTP request * @throws IOException in case of I/O operation exception */ + @Override public final void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) throws ServletException, IOException { @@ -104,9 +105,11 @@ abstract class OncePerRequestFilter implements Filter { HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException; + @Override public void init(FilterConfig config) { } + @Override public void destroy() { } } diff --git a/spring-session-core/src/main/java/org/springframework/session/web/http/SessionEventHttpSessionListenerAdapter.java b/spring-session-core/src/main/java/org/springframework/session/web/http/SessionEventHttpSessionListenerAdapter.java index a7c7960e..61e2d1ad 100644 --- a/spring-session-core/src/main/java/org/springframework/session/web/http/SessionEventHttpSessionListenerAdapter.java +++ b/spring-session-core/src/main/java/org/springframework/session/web/http/SessionEventHttpSessionListenerAdapter.java @@ -55,6 +55,7 @@ public class SessionEventHttpSessionListenerAdapter * @see org.springframework.context.ApplicationListener#onApplicationEvent(org. * springframework.context.ApplicationEvent) */ + @Override public void onApplicationEvent(AbstractSessionEvent event) { if (this.listeners.isEmpty()) { return; @@ -86,6 +87,7 @@ public class SessionEventHttpSessionListenerAdapter * org.springframework.web.context.ServletContextAware#setServletContext(javax.servlet * .ServletContext) */ + @Override public void setServletContext(ServletContext servletContext) { this.context = servletContext; } diff --git a/spring-session-core/src/main/java/org/springframework/session/web/server/session/SpringSessionWebSessionStore.java b/spring-session-core/src/main/java/org/springframework/session/web/server/session/SpringSessionWebSessionStore.java index 70193c35..69ca4546 100644 --- a/spring-session-core/src/main/java/org/springframework/session/web/server/session/SpringSessionWebSessionStore.java +++ b/spring-session-core/src/main/java/org/springframework/session/web/server/session/SpringSessionWebSessionStore.java @@ -73,10 +73,12 @@ public class SpringSessionWebSessionStore implements WebSessi this.clock = clock; } + @Override public Mono createWebSession() { return this.sessions.createSession().map(this::createSession); } + @Override public Mono updateLastAccessTime(WebSession session) { @SuppressWarnings("unchecked") SpringSessionWebSession springSessionWebSession = (SpringSessionWebSession) session; @@ -294,19 +296,23 @@ public class SpringSessionWebSessionStore implements WebSessi private class SessionValues extends AbstractCollection { + @Override public Iterator iterator() { return new Iterator() { private Iterator> i = entrySet().iterator(); + @Override public boolean hasNext() { return this.i.hasNext(); } + @Override public Object next() { return this.i.next().getValue(); } + @Override public void remove() { this.i.remove(); } @@ -314,18 +320,22 @@ public class SpringSessionWebSessionStore implements WebSessi }; } + @Override public int size() { return SpringSessionMap.this.size(); } + @Override public boolean isEmpty() { return SpringSessionMap.this.isEmpty(); } + @Override public void clear() { SpringSessionMap.this.clear(); } + @Override public boolean contains(Object v) { return SpringSessionMap.this.containsValue(v); } diff --git a/spring-session-core/src/main/java/org/springframework/session/web/socket/config/annotation/AbstractSessionWebSocketMessageBrokerConfigurer.java b/spring-session-core/src/main/java/org/springframework/session/web/socket/config/annotation/AbstractSessionWebSocketMessageBrokerConfigurer.java index b91ac893..6fc45440 100644 --- a/spring-session-core/src/main/java/org/springframework/session/web/socket/config/annotation/AbstractSessionWebSocketMessageBrokerConfigurer.java +++ b/spring-session-core/src/main/java/org/springframework/session/web/socket/config/annotation/AbstractSessionWebSocketMessageBrokerConfigurer.java @@ -89,6 +89,7 @@ public abstract class AbstractSessionWebSocketMessageBrokerConfigurer> httpSessionIdToWsSessions = new ConcurrentHashMap<>(); + @Override public void onApplicationEvent(ApplicationEvent event) { if (event instanceof SessionDestroyedEvent) { SessionDestroyedEvent e = (SessionDestroyedEvent) event; diff --git a/spring-session-core/src/main/java/org/springframework/session/web/socket/server/SessionRepositoryMessageInterceptor.java b/spring-session-core/src/main/java/org/springframework/session/web/socket/server/SessionRepositoryMessageInterceptor.java index bed2a3a9..15062972 100644 --- a/spring-session-core/src/main/java/org/springframework/session/web/socket/server/SessionRepositoryMessageInterceptor.java +++ b/spring-session-core/src/main/java/org/springframework/session/web/socket/server/SessionRepositoryMessageInterceptor.java @@ -131,6 +131,7 @@ public final class SessionRepositoryMessageInterceptor return super.preSend(message, channel); } + @Override public boolean beforeHandshake(ServerHttpRequest request, ServerHttpResponse response, WebSocketHandler wsHandler, Map attributes) throws Exception { if (request instanceof ServletServerHttpRequest) { @@ -143,6 +144,7 @@ public final class SessionRepositoryMessageInterceptor return true; } + @Override public void afterHandshake(ServerHttpRequest request, ServerHttpResponse response, WebSocketHandler wsHandler, Exception exception) { } diff --git a/spring-session-core/src/test/java/org/springframework/session/MapSessionTests.java b/spring-session-core/src/test/java/org/springframework/session/MapSessionTests.java index 8df3490b..6d2cb1c2 100644 --- a/spring-session-core/src/test/java/org/springframework/session/MapSessionTests.java +++ b/spring-session-core/src/test/java/org/springframework/session/MapSessionTests.java @@ -130,50 +130,62 @@ public class MapSessionTests { static class CustomSession implements Session { + @Override public Instant getCreationTime() { return Instant.EPOCH; } + @Override public String changeSessionId() { throw new UnsupportedOperationException(); } + @Override public String getId() { return "id"; } + @Override public void setLastAccessedTime(Instant lastAccessedTime) { throw new UnsupportedOperationException(); } + @Override public Instant getLastAccessedTime() { return Instant.EPOCH; } + @Override public void setMaxInactiveInterval(Duration interval) { } + @Override public Duration getMaxInactiveInterval() { return Duration.ZERO; } + @Override public T getAttribute(String attributeName) { return null; } + @Override public Set getAttributeNames() { return null; } + @Override public void setAttribute(String attributeName, Object attributeValue) { } + @Override public void removeAttribute(String attributeName) { } + @Override public boolean isExpired() { return false; } diff --git a/spring-session-core/src/test/java/org/springframework/session/web/http/SessionRepositoryFilterTests.java b/spring-session-core/src/test/java/org/springframework/session/web/http/SessionRepositoryFilterTests.java index ad65610b..df239865 100644 --- a/spring-session-core/src/test/java/org/springframework/session/web/http/SessionRepositoryFilterTests.java +++ b/spring-session-core/src/test/java/org/springframework/session/web/http/SessionRepositoryFilterTests.java @@ -1436,6 +1436,7 @@ public class SessionRepositoryFilterTests { private static class SessionRepositoryFilterDefaultOrder implements Ordered { + @Override public int getOrder() { return SessionRepositoryFilter.DEFAULT_ORDER; } diff --git a/spring-session-core/src/test/java/org/springframework/session/web/socket/server/SessionRepositoryMessageInterceptorTests.java b/spring-session-core/src/test/java/org/springframework/session/web/socket/server/SessionRepositoryMessageInterceptorTests.java index 6b48696a..815289f7 100644 --- a/spring-session-core/src/test/java/org/springframework/session/web/socket/server/SessionRepositoryMessageInterceptorTests.java +++ b/spring-session-core/src/test/java/org/springframework/session/web/socket/server/SessionRepositoryMessageInterceptorTests.java @@ -288,6 +288,7 @@ public class SessionRepositoryMessageInterceptorTests { static class AlmostNowMatcher implements ArgumentMatcher { + @Override public boolean matches(Instant argument) { long now = System.currentTimeMillis(); long delta = now - argument.toEpochMilli(); diff --git a/spring-session-data-redis/src/integration-test/java/org/springframework/session/data/SessionEventRegistry.java b/spring-session-data-redis/src/integration-test/java/org/springframework/session/data/SessionEventRegistry.java index f9061030..e7e97bc1 100644 --- a/spring-session-data-redis/src/integration-test/java/org/springframework/session/data/SessionEventRegistry.java +++ b/spring-session-data-redis/src/integration-test/java/org/springframework/session/data/SessionEventRegistry.java @@ -28,6 +28,7 @@ public class SessionEventRegistry implements ApplicationListener events = new HashMap<>(); private ConcurrentMap locks = new ConcurrentHashMap<>(); + @Override public void onApplicationEvent(AbstractSessionEvent event) { String sessionId = event.getSessionId(); this.events.put(sessionId, event); diff --git a/spring-session-data-redis/src/integration-test/java/org/springframework/session/data/redis/config/annotation/web/http/EnableRedisHttpSessionExpireSessionDestroyedTests.java b/spring-session-data-redis/src/integration-test/java/org/springframework/session/data/redis/config/annotation/web/http/EnableRedisHttpSessionExpireSessionDestroyedTests.java index d1feade7..3e2a049e 100644 --- a/spring-session-data-redis/src/integration-test/java/org/springframework/session/data/redis/config/annotation/web/http/EnableRedisHttpSessionExpireSessionDestroyedTests.java +++ b/spring-session-data-redis/src/integration-test/java/org/springframework/session/data/redis/config/annotation/web/http/EnableRedisHttpSessionExpireSessionDestroyedTests.java @@ -94,6 +94,7 @@ public class EnableRedisHttpSessionExpireSessionDestroyedTests T getAttribute(String attributeName) { return this.cached.getAttribute(attributeName); } + @Override public Set getAttributeNames() { return this.cached.getAttributeNames(); } + @Override public void setAttribute(String attributeName, Object attributeValue) { this.cached.setAttribute(attributeName, attributeValue); putAndFlush(getAttributeKey(attributeName), attributeValue); } + @Override public void removeAttribute(String attributeName) { this.cached.removeAttribute(attributeName); putAndFlush(getAttributeKey(attributeName), null); } + @Override public Instant getCreationTime() { return this.cached.getCreationTime(); } + @Override public void setLastAccessedTime(Instant lastAccessedTime) { this.cached.setLastAccessedTime(lastAccessedTime); putAndFlush(LAST_ACCESSED_TIME_KEY, getLastAccessedTime().toEpochMilli()); } + @Override public Instant getLastAccessedTime() { return this.cached.getLastAccessedTime(); } + @Override public void setMaxInactiveInterval(Duration interval) { this.cached.setMaxInactiveInterval(interval); putAndFlush(MAX_INACTIVE_INTERVAL_KEY, (int) getMaxInactiveInterval().getSeconds()); } + @Override public Duration getMaxInactiveInterval() { return this.cached.getMaxInactiveInterval(); } + @Override public boolean isExpired() { return this.cached.isExpired(); } diff --git a/spring-session-data-redis/src/main/java/org/springframework/session/data/redis/RedisOperationsSessionRepository.java b/spring-session-data-redis/src/main/java/org/springframework/session/data/redis/RedisOperationsSessionRepository.java index 1822296d..66896121 100644 --- a/spring-session-data-redis/src/main/java/org/springframework/session/data/redis/RedisOperationsSessionRepository.java +++ b/spring-session-data-redis/src/main/java/org/springframework/session/data/redis/RedisOperationsSessionRepository.java @@ -295,9 +295,11 @@ public class RedisOperationsSessionRepository implements private final RedisSessionExpirationPolicy expirationPolicy; private ApplicationEventPublisher eventPublisher = new ApplicationEventPublisher() { + @Override public void publishEvent(ApplicationEvent event) { } + @Override public void publishEvent(Object event) { } }; @@ -389,6 +391,7 @@ public class RedisOperationsSessionRepository implements return this.sessionRedisOperations; } + @Override public void save(RedisSession session) { session.saveDelta(); if (session.isNew()) { @@ -403,10 +406,12 @@ public class RedisOperationsSessionRepository implements this.expirationPolicy.cleanExpiredSessions(); } + @Override public RedisSession findById(String id) { return getSession(id, false); } + @Override public Map findByIndexNameAndIndexValue(String indexName, String indexValue) { if (!PRINCIPAL_NAME_INDEX_NAME.equals(indexName)) { @@ -468,6 +473,7 @@ public class RedisOperationsSessionRepository implements return loaded; } + @Override public void deleteById(String sessionId) { RedisSession session = getSession(sessionId, true); if (session == null) { @@ -484,6 +490,7 @@ public class RedisOperationsSessionRepository implements save(session); } + @Override public RedisSession createSession() { RedisSession redisSession = new RedisSession(); if (this.defaultMaxInactiveInterval != null) { @@ -493,6 +500,7 @@ public class RedisOperationsSessionRepository implements return redisSession; } + @Override @SuppressWarnings("unchecked") public void onMessage(Message message, byte[] pattern) { byte[] messageChannel = message.getChannel(); @@ -706,11 +714,13 @@ public class RedisOperationsSessionRepository implements this.isNew = isNew; } + @Override public void setLastAccessedTime(Instant lastAccessedTime) { this.cached.setLastAccessedTime(lastAccessedTime); this.putAndFlush(LAST_ACCESSED_ATTR, getLastAccessedTime().toEpochMilli()); } + @Override public boolean isExpired() { return this.cached.isExpired(); } @@ -719,44 +729,54 @@ public class RedisOperationsSessionRepository implements return this.isNew; } + @Override public Instant getCreationTime() { return this.cached.getCreationTime(); } + @Override public String getId() { return this.cached.getId(); } + @Override public String changeSessionId() { return this.cached.changeSessionId(); } + @Override public Instant getLastAccessedTime() { return this.cached.getLastAccessedTime(); } + @Override public void setMaxInactiveInterval(Duration interval) { this.cached.setMaxInactiveInterval(interval); this.putAndFlush(MAX_INACTIVE_ATTR, (int) getMaxInactiveInterval().getSeconds()); } + @Override public Duration getMaxInactiveInterval() { return this.cached.getMaxInactiveInterval(); } + @Override public T getAttribute(String attributeName) { return this.cached.getAttribute(attributeName); } + @Override public Set getAttributeNames() { return this.cached.getAttributeNames(); } + @Override public void setAttribute(String attributeName, Object attributeValue) { this.cached.setAttribute(attributeName, attributeValue); this.putAndFlush(getSessionAttrNameKey(attributeName), attributeValue); } + @Override public void removeAttribute(String attributeName) { this.cached.removeAttribute(attributeName); this.putAndFlush(getSessionAttrNameKey(attributeName), null); diff --git a/spring-session-data-redis/src/main/java/org/springframework/session/data/redis/config/ConfigureNotifyKeyspaceEventsAction.java b/spring-session-data-redis/src/main/java/org/springframework/session/data/redis/config/ConfigureNotifyKeyspaceEventsAction.java index fb4031ac..4fafaa71 100644 --- a/spring-session-data-redis/src/main/java/org/springframework/session/data/redis/config/ConfigureNotifyKeyspaceEventsAction.java +++ b/spring-session-data-redis/src/main/java/org/springframework/session/data/redis/config/ConfigureNotifyKeyspaceEventsAction.java @@ -52,6 +52,7 @@ public class ConfigureNotifyKeyspaceEventsAction implements ConfigureRedisAction * org.springframework.session.data.redis.config.ConfigureRedisAction#configure(org. * springframework.data.redis.connection.RedisConnection) */ + @Override public void configure(RedisConnection connection) { String notifyOptions = getNotifyOptions(connection); String customizedNotifyOptions = notifyOptions; diff --git a/spring-session-data-redis/src/main/java/org/springframework/session/data/redis/config/annotation/web/http/RedisHttpSessionConfiguration.java b/spring-session-data-redis/src/main/java/org/springframework/session/data/redis/config/annotation/web/http/RedisHttpSessionConfiguration.java index d202aa5a..6d859f96 100644 --- a/spring-session-data-redis/src/main/java/org/springframework/session/data/redis/config/annotation/web/http/RedisHttpSessionConfiguration.java +++ b/spring-session-data-redis/src/main/java/org/springframework/session/data/redis/config/annotation/web/http/RedisHttpSessionConfiguration.java @@ -198,10 +198,12 @@ public class RedisHttpSessionConfiguration extends SpringHttpSessionConfiguratio this.redisSubscriptionExecutor = redisSubscriptionExecutor; } + @Override public void setEmbeddedValueResolver(StringValueResolver resolver) { this.embeddedValueResolver = resolver; } + @Override public void setImportMetadata(AnnotationMetadata importMetadata) { Map enableAttrMap = importMetadata .getAnnotationAttributes(EnableRedisHttpSession.class.getName()); @@ -257,6 +259,7 @@ public class RedisHttpSessionConfiguration extends SpringHttpSessionConfiguratio this.configure = configure; } + @Override public void afterPropertiesSet() throws Exception { if (this.configure == ConfigureRedisAction.NO_OP) { return; diff --git a/spring-session-data-redis/src/main/java/org/springframework/session/data/redis/config/annotation/web/server/RedisWebSessionConfiguration.java b/spring-session-data-redis/src/main/java/org/springframework/session/data/redis/config/annotation/web/server/RedisWebSessionConfiguration.java index 898c6479..ac3cead8 100644 --- a/spring-session-data-redis/src/main/java/org/springframework/session/data/redis/config/annotation/web/server/RedisWebSessionConfiguration.java +++ b/spring-session-data-redis/src/main/java/org/springframework/session/data/redis/config/annotation/web/server/RedisWebSessionConfiguration.java @@ -95,10 +95,12 @@ public class RedisWebSessionConfiguration extends SpringWebSessionConfiguration this.redisFlushMode = redisFlushMode; } + @Override public void setEmbeddedValueResolver(StringValueResolver resolver) { this.embeddedValueResolver = resolver; } + @Override public void setImportMetadata(AnnotationMetadata importMetadata) { Map enableAttrMap = importMetadata .getAnnotationAttributes(EnableRedisWebSession.class.getName()); diff --git a/spring-session-hazelcast/src/integration-test/java/org/springframework/session/hazelcast/SessionEventRegistry.java b/spring-session-hazelcast/src/integration-test/java/org/springframework/session/hazelcast/SessionEventRegistry.java index 3390baf2..ee861cfd 100644 --- a/spring-session-hazelcast/src/integration-test/java/org/springframework/session/hazelcast/SessionEventRegistry.java +++ b/spring-session-hazelcast/src/integration-test/java/org/springframework/session/hazelcast/SessionEventRegistry.java @@ -28,6 +28,7 @@ public class SessionEventRegistry implements ApplicationListener events = new HashMap<>(); private ConcurrentMap locks = new ConcurrentHashMap<>(); + @Override public void onApplicationEvent(AbstractSessionEvent event) { String sessionId = event.getSessionId(); this.events.put(sessionId, event); diff --git a/spring-session-hazelcast/src/main/java/org/springframework/session/hazelcast/HazelcastSessionRepository.java b/spring-session-hazelcast/src/main/java/org/springframework/session/hazelcast/HazelcastSessionRepository.java index 8de4765b..7159fd4b 100644 --- a/spring-session-hazelcast/src/main/java/org/springframework/session/hazelcast/HazelcastSessionRepository.java +++ b/spring-session-hazelcast/src/main/java/org/springframework/session/hazelcast/HazelcastSessionRepository.java @@ -126,9 +126,11 @@ public class HazelcastSessionRepository implements private ApplicationEventPublisher eventPublisher = new ApplicationEventPublisher() { + @Override public void publishEvent(ApplicationEvent event) { } + @Override public void publishEvent(Object event) { } @@ -192,6 +194,7 @@ public class HazelcastSessionRepository implements this.hazelcastFlushMode = hazelcastFlushMode; } + @Override public HazelcastSession createSession() { HazelcastSession result = new HazelcastSession(); if (this.defaultMaxInactiveInterval != null) { @@ -201,6 +204,7 @@ public class HazelcastSessionRepository implements return result; } + @Override public void save(HazelcastSession session) { if (!session.getId().equals(session.originalId)) { this.sessions.remove(session.originalId); @@ -213,6 +217,7 @@ public class HazelcastSessionRepository implements } } + @Override public HazelcastSession findById(String id) { MapSession saved = this.sessions.get(id); if (saved == null) { @@ -225,10 +230,12 @@ public class HazelcastSessionRepository implements return new HazelcastSession(saved); } + @Override public void deleteById(String id) { this.sessions.remove(id); } + @Override public Map findByIndexNameAndIndexValue( String indexName, String indexValue) { if (!PRINCIPAL_NAME_INDEX_NAME.equals(indexName)) { @@ -244,6 +251,7 @@ public class HazelcastSessionRepository implements return sessionMap; } + @Override public void entryAdded(EntryEvent event) { if (logger.isDebugEnabled()) { logger.debug("Session created with id: " + event.getValue().getId()); @@ -251,6 +259,7 @@ public class HazelcastSessionRepository implements this.eventPublisher.publishEvent(new SessionCreatedEvent(this, event.getValue())); } + @Override public void entryEvicted(EntryEvent event) { if (logger.isDebugEnabled()) { logger.debug("Session expired with id: " + event.getOldValue().getId()); @@ -259,6 +268,7 @@ public class HazelcastSessionRepository implements .publishEvent(new SessionExpiredEvent(this, event.getOldValue())); } + @Override public void entryRemoved(EntryEvent event) { if (logger.isDebugEnabled()) { logger.debug("Session deleted with id: " + event.getOldValue().getId()); @@ -300,57 +310,69 @@ public class HazelcastSessionRepository implements this.originalId = cached.getId(); } + @Override public void setLastAccessedTime(Instant lastAccessedTime) { this.delegate.setLastAccessedTime(lastAccessedTime); this.changed = true; flushImmediateIfNecessary(); } + @Override public boolean isExpired() { return this.delegate.isExpired(); } + @Override public Instant getCreationTime() { return this.delegate.getCreationTime(); } + @Override public String getId() { return this.delegate.getId(); } + @Override public String changeSessionId() { this.changed = true; return this.delegate.changeSessionId(); } + @Override public Instant getLastAccessedTime() { return this.delegate.getLastAccessedTime(); } + @Override public void setMaxInactiveInterval(Duration interval) { this.delegate.setMaxInactiveInterval(interval); this.changed = true; flushImmediateIfNecessary(); } + @Override public Duration getMaxInactiveInterval() { return this.delegate.getMaxInactiveInterval(); } + @Override public T getAttribute(String attributeName) { return this.delegate.getAttribute(attributeName); } + @Override public Set getAttributeNames() { return this.delegate.getAttributeNames(); } + @Override public void setAttribute(String attributeName, Object attributeValue) { this.delegate.setAttribute(attributeName, attributeValue); this.changed = true; flushImmediateIfNecessary(); } + @Override public void removeAttribute(String attributeName) { this.delegate.removeAttribute(attributeName); this.changed = true; diff --git a/spring-session-hazelcast/src/main/java/org/springframework/session/hazelcast/PrincipalNameExtractor.java b/spring-session-hazelcast/src/main/java/org/springframework/session/hazelcast/PrincipalNameExtractor.java index 1ef12b58..4f8ca01e 100644 --- a/spring-session-hazelcast/src/main/java/org/springframework/session/hazelcast/PrincipalNameExtractor.java +++ b/spring-session-hazelcast/src/main/java/org/springframework/session/hazelcast/PrincipalNameExtractor.java @@ -37,6 +37,7 @@ public class PrincipalNameExtractor extends ValueExtractor { private static final PrincipalNameResolver PRINCIPAL_NAME_RESOLVER = new PrincipalNameResolver(); + @Override @SuppressWarnings("unchecked") public void extract(MapSession target, String argument, ValueCollector collector) { diff --git a/spring-session-hazelcast/src/main/java/org/springframework/session/hazelcast/config/annotation/web/http/HazelcastHttpSessionConfiguration.java b/spring-session-hazelcast/src/main/java/org/springframework/session/hazelcast/config/annotation/web/http/HazelcastHttpSessionConfiguration.java index 2eb32778..5e61e56c 100644 --- a/spring-session-hazelcast/src/main/java/org/springframework/session/hazelcast/config/annotation/web/http/HazelcastHttpSessionConfiguration.java +++ b/spring-session-hazelcast/src/main/java/org/springframework/session/hazelcast/config/annotation/web/http/HazelcastHttpSessionConfiguration.java @@ -70,6 +70,7 @@ public class HazelcastHttpSessionConfiguration extends SpringHttpSessionConfigur return sessionRepository; } + @Override public void setImportMetadata(AnnotationMetadata importMetadata) { Map enableAttrMap = importMetadata .getAnnotationAttributes(EnableHazelcastHttpSession.class.getName()); 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 587477dd..4d3ed9cc 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 @@ -367,6 +367,7 @@ public class JdbcOperationsSessionRepository implements this.conversionService = conversionService; } + @Override public JdbcSession createSession() { JdbcSession session = new JdbcSession(); if (this.defaultMaxInactiveInterval != null) { @@ -375,10 +376,12 @@ public class JdbcOperationsSessionRepository implements return session; } + @Override public void save(final JdbcSession session) { if (session.isNew()) { this.transactionOperations.execute(new TransactionCallbackWithoutResult() { + @Override protected void doInTransactionWithoutResult(TransactionStatus status) { JdbcOperationsSessionRepository.this.jdbcOperations.update( JdbcOperationsSessionRepository.this.createSessionQuery, @@ -397,6 +400,7 @@ public class JdbcOperationsSessionRepository implements JdbcOperationsSessionRepository.this.createSessionAttributeQuery, new BatchPreparedStatementSetter() { + @Override public void setValues(PreparedStatement ps, int i) throws SQLException { String attributeName = attributeNames.get(i); ps.setString(1, session.primaryKey); @@ -404,6 +408,7 @@ public class JdbcOperationsSessionRepository implements serialize(ps, 3, session.getAttribute(attributeName)); } + @Override public int getBatchSize() { return attributeNames.size(); } @@ -417,6 +422,7 @@ public class JdbcOperationsSessionRepository implements else { this.transactionOperations.execute(new TransactionCallbackWithoutResult() { + @Override protected void doInTransactionWithoutResult(TransactionStatus status) { if (session.isChanged()) { JdbcOperationsSessionRepository.this.jdbcOperations.update( @@ -468,6 +474,7 @@ public class JdbcOperationsSessionRepository implements session.clearChangeFlags(); } + @Override public JdbcSession findById(final String id) { final JdbcSession session = this.transactionOperations.execute(status -> { List sessions = JdbcOperationsSessionRepository.this.jdbcOperations.query( @@ -492,9 +499,11 @@ public class JdbcOperationsSessionRepository implements return null; } + @Override public void deleteById(final String id) { this.transactionOperations.execute(new TransactionCallbackWithoutResult() { + @Override protected void doInTransactionWithoutResult(TransactionStatus status) { JdbcOperationsSessionRepository.this.jdbcOperations.update( JdbcOperationsSessionRepository.this.deleteSessionQuery, id); @@ -503,6 +512,7 @@ public class JdbcOperationsSessionRepository implements }); } + @Override public Map findByIndexNameAndIndexValue(String indexName, final String indexValue) { if (!PRINCIPAL_NAME_INDEX_NAME.equals(indexName)) { @@ -652,23 +662,28 @@ public class JdbcOperationsSessionRepository implements return getLastAccessedTime().plus(getMaxInactiveInterval()); } + @Override public String getId() { return this.delegate.getId(); } + @Override public String changeSessionId() { this.changed = true; return this.delegate.changeSessionId(); } + @Override public T getAttribute(String attributeName) { return this.delegate.getAttribute(attributeName); } + @Override public Set getAttributeNames() { return this.delegate.getAttributeNames(); } + @Override public void setAttribute(String attributeName, Object attributeValue) { this.delegate.setAttribute(attributeName, attributeValue); this.delta.put(attributeName, attributeValue); @@ -678,33 +693,40 @@ public class JdbcOperationsSessionRepository implements } } + @Override public void removeAttribute(String attributeName) { this.delegate.removeAttribute(attributeName); this.delta.put(attributeName, null); } + @Override public Instant getCreationTime() { return this.delegate.getCreationTime(); } + @Override public void setLastAccessedTime(Instant lastAccessedTime) { this.delegate.setLastAccessedTime(lastAccessedTime); this.changed = true; } + @Override public Instant getLastAccessedTime() { return this.delegate.getLastAccessedTime(); } + @Override public void setMaxInactiveInterval(Duration interval) { this.delegate.setMaxInactiveInterval(interval); this.changed = true; } + @Override public Duration getMaxInactiveInterval() { return this.delegate.getMaxInactiveInterval(); } + @Override public boolean isExpired() { return this.delegate.isExpired(); } @@ -738,6 +760,7 @@ public class JdbcOperationsSessionRepository implements private class SessionResultSetExtractor implements ResultSetExtractor> { + @Override public List extractData(ResultSet rs) throws SQLException, DataAccessException { List sessions = new ArrayList<>(); while (rs.next()) { diff --git a/spring-session-jdbc/src/main/java/org/springframework/session/jdbc/config/annotation/web/http/JdbcHttpSessionConfiguration.java b/spring-session-jdbc/src/main/java/org/springframework/session/jdbc/config/annotation/web/http/JdbcHttpSessionConfiguration.java index 50d1c1dd..d24727e8 100644 --- a/spring-session-jdbc/src/main/java/org/springframework/session/jdbc/config/annotation/web/http/JdbcHttpSessionConfiguration.java +++ b/spring-session-jdbc/src/main/java/org/springframework/session/jdbc/config/annotation/web/http/JdbcHttpSessionConfiguration.java @@ -130,6 +130,7 @@ public class JdbcHttpSessionConfiguration extends SpringHttpSessionConfiguration /* (non-Javadoc) * @see org.springframework.beans.factory.BeanClassLoaderAware#setBeanClassLoader(java.lang.ClassLoader) */ + @Override public void setBeanClassLoader(ClassLoader classLoader) { this.classLoader = classLoader; } @@ -162,6 +163,7 @@ public class JdbcHttpSessionConfiguration extends SpringHttpSessionConfiguration return this.tableName; } + @Override public void setImportMetadata(AnnotationMetadata importMetadata) { Map enableAttrMap = importMetadata .getAnnotationAttributes(EnableJdbcHttpSession.class.getName()); @@ -175,6 +177,7 @@ public class JdbcHttpSessionConfiguration extends SpringHttpSessionConfiguration .getNumber("maxInactiveIntervalInSeconds"); } + @Override public void setEmbeddedValueResolver(StringValueResolver resolver) { this.embeddedValueResolver = resolver; }