Consistent declaration of private static final logger variables

Issue: SPR-11905
This commit is contained in:
Juergen Hoeller 2014-06-24 14:02:05 +02:00
parent 2c0c081bbb
commit 18131bf611
16 changed files with 89 additions and 92 deletions

View File

@ -1,5 +1,5 @@
/* /*
* Copyright 2002-2012 the original author or authors. * Copyright 2002-2014 the original author or authors.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
@ -75,7 +75,7 @@ final class JdkDynamicAopProxy implements AopProxy, InvocationHandler, Serializa
*/ */
/** We use a static Log to avoid serialization issues */ /** We use a static Log to avoid serialization issues */
private static Log logger = LogFactory.getLog(JdkDynamicAopProxy.class); private static final Log logger = LogFactory.getLog(JdkDynamicAopProxy.class);
/** Config used to configure this proxy */ /** Config used to configure this proxy */
private final AdvisedSupport advised; private final AdvisedSupport advised;

View File

@ -1,5 +1,5 @@
/* /*
* Copyright 2002-2012 the original author or authors. * Copyright 2002-2014 the original author or authors.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
@ -38,7 +38,7 @@ import org.springframework.util.StringUtils;
*/ */
public abstract class ValidationUtils { public abstract class ValidationUtils {
private static Log logger = LogFactory.getLog(ValidationUtils.class); private static final Log logger = LogFactory.getLog(ValidationUtils.class);
/** /**

View File

@ -54,7 +54,7 @@ import org.springframework.util.ClassUtils;
*/ */
public class LocalVariableTableParameterNameDiscoverer implements ParameterNameDiscoverer { public class LocalVariableTableParameterNameDiscoverer implements ParameterNameDiscoverer {
private static Log logger = LogFactory.getLog(LocalVariableTableParameterNameDiscoverer.class); private static final Log logger = LogFactory.getLog(LocalVariableTableParameterNameDiscoverer.class);
// marker object for classes that do not have any debug info // marker object for classes that do not have any debug info
private static final Map<Member, String[]> NO_DEBUG_INFO_MAP = Collections.emptyMap(); private static final Map<Member, String[]> NO_DEBUG_INFO_MAP = Collections.emptyMap();

View File

@ -63,7 +63,7 @@ public class EmbeddedDatabaseFactory {
*/ */
public static final String DEFAULT_DATABASE_NAME = "testdb"; public static final String DEFAULT_DATABASE_NAME = "testdb";
private static Log logger = LogFactory.getLog(EmbeddedDatabaseFactory.class); private static final Log logger = LogFactory.getLog(EmbeddedDatabaseFactory.class);
private String databaseName = DEFAULT_DATABASE_NAME; private String databaseName = DEFAULT_DATABASE_NAME;

View File

@ -1,5 +1,5 @@
/* /*
* Copyright 2002-2013 the original author or authors. * Copyright 2002-2014 the original author or authors.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
@ -32,7 +32,7 @@ import org.springframework.util.Assert;
*/ */
public class HandlerMethodReturnValueHandlerComposite implements HandlerMethodReturnValueHandler { public class HandlerMethodReturnValueHandlerComposite implements HandlerMethodReturnValueHandler {
private static Log logger = LogFactory.getLog(HandlerMethodReturnValueHandlerComposite.class); private static final Log logger = LogFactory.getLog(HandlerMethodReturnValueHandlerComposite.class);
private final List<HandlerMethodReturnValueHandler> returnValueHandlers = new ArrayList<HandlerMethodReturnValueHandler>(); private final List<HandlerMethodReturnValueHandler> returnValueHandlers = new ArrayList<HandlerMethodReturnValueHandler>();

View File

@ -33,18 +33,16 @@ import java.util.Map;
*/ */
public class SimpAttributes { public class SimpAttributes {
private static Log logger = LogFactory.getLog(SimpAttributes.class);
private static final String className = SimpAttributes.class.getName();
/** Key for the mutex session attribute */ /** Key for the mutex session attribute */
public static final String SESSION_MUTEX_NAME = className + ".MUTEX"; public static final String SESSION_MUTEX_NAME = SimpAttributes.class.getName() + ".MUTEX";
/** Key set after the session is completed */ /** Key set after the session is completed */
public static final String SESSION_COMPLETED_NAME = className + ".COMPLETED"; public static final String SESSION_COMPLETED_NAME = SimpAttributes.class.getName() + ".COMPLETED";
/** Prefix for the name of session attributes used to store destruction callbacks. */ /** Prefix for the name of session attributes used to store destruction callbacks. */
public static final String DESTRUCTION_CALLBACK_NAME_PREFIX = className + ".DESTRUCTION_CALLBACK."; public static final String DESTRUCTION_CALLBACK_NAME_PREFIX = SimpAttributes.class.getName() + ".DESTRUCTION_CALLBACK.";
private static final Log logger = LogFactory.getLog(SimpAttributes.class);
private final String sessionId; private final String sessionId;
@ -54,7 +52,6 @@ public class SimpAttributes {
/** /**
* Constructor wrapping the given session attributes map. * Constructor wrapping the given session attributes map.
*
* @param sessionId the id of the associated session * @param sessionId the id of the associated session
* @param attributes the attributes * @param attributes the attributes
*/ */
@ -66,27 +63,8 @@ public class SimpAttributes {
} }
/**
* Extract the SiMP session attributes from the given message, wrap them in
* a {@link SimpAttributes} instance.
*
* @param message the message to extract session attributes from
*/
public static SimpAttributes fromMessage(Message<?> message) {
Assert.notNull(message);
MessageHeaders headers = message.getHeaders();
String sessionId = SimpMessageHeaderAccessor.getSessionId(headers);
Map<String, Object> sessionAttributes = SimpMessageHeaderAccessor.getSessionAttributes(headers);
if (sessionId == null || sessionAttributes == null) {
throw new IllegalStateException(
"Message does not contain SiMP session id or attributes: " + message);
}
return new SimpAttributes(sessionId, sessionAttributes);
}
/** /**
* Return the value for the attribute of the given name, if any. * Return the value for the attribute of the given name, if any.
*
* @param name the name of the attribute * @param name the name of the attribute
* @return the current attribute value, or {@code null} if not found * @return the current attribute value, or {@code null} if not found
*/ */
@ -96,7 +74,6 @@ public class SimpAttributes {
/** /**
* Set the value with the given name replacing an existing value (if any). * Set the value with the given name replacing an existing value (if any).
*
* @param name the name of the attribute * @param name the name of the attribute
* @param value the value for the attribute * @param value the value for the attribute
*/ */
@ -106,12 +83,10 @@ public class SimpAttributes {
/** /**
* Remove the attribute of the given name, if it exists. * Remove the attribute of the given name, if it exists.
*
* <p>Also removes the registered destruction callback for the specified * <p>Also removes the registered destruction callback for the specified
* attribute, if any. However it <i>does not</i> execute</i> the callback. * attribute, if any. However it <i>does not</i> execute</i> the callback.
* It is assumed the removed object will continue to be used and destroyed * It is assumed the removed object will continue to be used and destroyed
* independently at the appropriate time. * independently at the appropriate time.
*
* @param name the name of the attribute * @param name the name of the attribute
*/ */
public void removeAttribute(String name) { public void removeAttribute(String name) {
@ -121,7 +96,6 @@ public class SimpAttributes {
/** /**
* Retrieve the names of all attributes. * Retrieve the names of all attributes.
*
* @return the attribute names as String array, never {@code null} * @return the attribute names as String array, never {@code null}
*/ */
public String[] getAttributeNames() { public String[] getAttributeNames() {
@ -131,7 +105,6 @@ public class SimpAttributes {
/** /**
* Register a callback to execute on destruction of the specified attribute. * Register a callback to execute on destruction of the specified attribute.
* The callback is executed when the session is closed. * The callback is executed when the session is closed.
*
* @param name the name of the attribute to register the callback for * @param name the name of the attribute to register the callback for
* @param callback the destruction callback to be executed * @param callback the destruction callback to be executed
*/ */
@ -152,7 +125,6 @@ public class SimpAttributes {
/** /**
* Return an id for the associated session. * Return an id for the associated session.
*
* @return the session id as String (never {@code null}) * @return the session id as String (never {@code null})
*/ */
public String getSessionId() { public String getSessionId() {
@ -161,7 +133,6 @@ public class SimpAttributes {
/** /**
* Expose the object to synchronize on for the underlying session. * Expose the object to synchronize on for the underlying session.
*
* @return the session mutex to use (never {@code null}) * @return the session mutex to use (never {@code null})
*/ */
public Object getSessionMutex() { public Object getSessionMutex() {
@ -197,13 +168,29 @@ public class SimpAttributes {
try { try {
((Runnable) entry.getValue()).run(); ((Runnable) entry.getValue()).run();
} }
catch (Throwable t) { catch (Throwable ex) {
if (logger.isErrorEnabled()) { logger.error("Uncaught error in session attribute destruction callback", ex);
logger.error("Uncaught error in session attribute destruction callback", t);
}
} }
} }
} }
} }
/**
* Extract the SiMP session attributes from the given message, wrap them in
* a {@link SimpAttributes} instance.
* @param message the message to extract session attributes from
*/
public static SimpAttributes fromMessage(Message<?> message) {
Assert.notNull(message);
MessageHeaders headers = message.getHeaders();
String sessionId = SimpMessageHeaderAccessor.getSessionId(headers);
Map<String, Object> sessionAttributes = SimpMessageHeaderAccessor.getSessionAttributes(headers);
if (sessionId == null || sessionAttributes == null) {
throw new IllegalStateException(
"Message does not contain SiMP session id or attributes: " + message);
}
return new SimpAttributes(sessionId, sessionAttributes);
}
} }

View File

@ -1,5 +1,5 @@
/* /*
* Copyright 2002-2013 the original author or authors. * Copyright 2002-2014 the original author or authors.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
@ -44,7 +44,7 @@ import java.util.concurrent.Callable;
public class AsyncRequestInterceptor extends CallableProcessingInterceptorAdapter public class AsyncRequestInterceptor extends CallableProcessingInterceptorAdapter
implements DeferredResultProcessingInterceptor { implements DeferredResultProcessingInterceptor {
private static Log logger = LogFactory.getLog(AsyncRequestInterceptor.class); private static final Log logger = LogFactory.getLog(AsyncRequestInterceptor.class);
private final SessionFactory sessionFactory; private final SessionFactory sessionFactory;
@ -52,11 +52,13 @@ public class AsyncRequestInterceptor extends CallableProcessingInterceptorAdapte
private volatile boolean timeoutInProgress; private volatile boolean timeoutInProgress;
public AsyncRequestInterceptor(SessionFactory sessionFactory, SessionHolder sessionHolder) { public AsyncRequestInterceptor(SessionFactory sessionFactory, SessionHolder sessionHolder) {
this.sessionFactory = sessionFactory; this.sessionFactory = sessionFactory;
this.sessionHolder = sessionHolder; this.sessionHolder = sessionHolder;
} }
@Override @Override
public <T> void preProcess(NativeWebRequest request, Callable<T> task) { public <T> void preProcess(NativeWebRequest request, Callable<T> task) {
bindSession(); bindSession();
@ -90,11 +92,17 @@ public class AsyncRequestInterceptor extends CallableProcessingInterceptorAdapte
} }
} }
// Implementation of DeferredResultProcessingInterceptor methods // Implementation of DeferredResultProcessingInterceptor methods
public <T> void beforeConcurrentHandling(NativeWebRequest request, DeferredResult<T> deferredResult) { } public <T> void beforeConcurrentHandling(NativeWebRequest request, DeferredResult<T> deferredResult) {
public <T> void preProcess(NativeWebRequest request, DeferredResult<T> deferredResult) { } }
public <T> void postProcess(NativeWebRequest request, DeferredResult<T> deferredResult, Object result) { }
public <T> void preProcess(NativeWebRequest request, DeferredResult<T> deferredResult) {
}
public <T> void postProcess(NativeWebRequest request, DeferredResult<T> deferredResult, Object result) {
}
@Override @Override
public <T> boolean handleTimeout(NativeWebRequest request, DeferredResult<T> deferredResult) { public <T> boolean handleTimeout(NativeWebRequest request, DeferredResult<T> deferredResult) {
@ -106,4 +114,5 @@ public class AsyncRequestInterceptor extends CallableProcessingInterceptorAdapte
public <T> void afterCompletion(NativeWebRequest request, DeferredResult<T> deferredResult) { public <T> void afterCompletion(NativeWebRequest request, DeferredResult<T> deferredResult) {
closeAfterTimeout(); closeAfterTimeout();
} }
} }

View File

@ -1,5 +1,5 @@
/* /*
* Copyright 2002-2013 the original author or authors. * Copyright 2002-2014 the original author or authors.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
@ -44,7 +44,7 @@ import java.util.concurrent.Callable;
public class AsyncRequestInterceptor extends CallableProcessingInterceptorAdapter public class AsyncRequestInterceptor extends CallableProcessingInterceptorAdapter
implements DeferredResultProcessingInterceptor { implements DeferredResultProcessingInterceptor {
private static Log logger = LogFactory.getLog(AsyncRequestInterceptor.class); private static final Log logger = LogFactory.getLog(AsyncRequestInterceptor.class);
private final EntityManagerFactory emFactory; private final EntityManagerFactory emFactory;
@ -58,6 +58,7 @@ public class AsyncRequestInterceptor extends CallableProcessingInterceptorAdapte
this.emHolder = emHolder; this.emHolder = emHolder;
} }
@Override @Override
public <T> void preProcess(NativeWebRequest request, Callable<T> task) { public <T> void preProcess(NativeWebRequest request, Callable<T> task) {
bindSession(); bindSession();
@ -91,11 +92,17 @@ public class AsyncRequestInterceptor extends CallableProcessingInterceptorAdapte
} }
} }
// Implementation of DeferredResultProcessingInterceptor methods // Implementation of DeferredResultProcessingInterceptor methods
public <T> void beforeConcurrentHandling(NativeWebRequest request, DeferredResult<T> deferredResult) { } public <T> void beforeConcurrentHandling(NativeWebRequest request, DeferredResult<T> deferredResult) {
public <T> void preProcess(NativeWebRequest request, DeferredResult<T> deferredResult) { } }
public <T> void postProcess(NativeWebRequest request, DeferredResult<T> deferredResult, Object result) { }
public <T> void preProcess(NativeWebRequest request, DeferredResult<T> deferredResult) {
}
public <T> void postProcess(NativeWebRequest request, DeferredResult<T> deferredResult, Object result) {
}
@Override @Override
public <T> boolean handleTimeout(NativeWebRequest request, DeferredResult<T> deferredResult) { public <T> boolean handleTimeout(NativeWebRequest request, DeferredResult<T> deferredResult) {
@ -107,5 +114,5 @@ public class AsyncRequestInterceptor extends CallableProcessingInterceptorAdapte
public <T> void afterCompletion(NativeWebRequest request, DeferredResult<T> deferredResult) { public <T> void afterCompletion(NativeWebRequest request, DeferredResult<T> deferredResult) {
closeAfterTimeout(); closeAfterTimeout();
} }
}
}

View File

@ -1,5 +1,5 @@
/* /*
* Copyright 2002-2012 the original author or authors. * Copyright 2002-2014 the original author or authors.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
@ -31,7 +31,7 @@ import org.springframework.web.context.request.NativeWebRequest;
*/ */
class CallableInterceptorChain { class CallableInterceptorChain {
private static Log logger = LogFactory.getLog(CallableInterceptorChain.class); private static final Log logger = LogFactory.getLog(CallableInterceptorChain.class);
private final List<CallableProcessingInterceptor> interceptors; private final List<CallableProcessingInterceptor> interceptors;
@ -102,4 +102,5 @@ class CallableInterceptorChain {
} }
} }
} }
} }

View File

@ -1,5 +1,5 @@
/* /*
* Copyright 2002-2012 the original author or authors. * Copyright 2002-2014 the original author or authors.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
@ -29,7 +29,7 @@ import org.springframework.web.context.request.NativeWebRequest;
*/ */
class DeferredResultInterceptorChain { class DeferredResultInterceptorChain {
private static Log logger = LogFactory.getLog(DeferredResultInterceptorChain.class); private static final Log logger = LogFactory.getLog(DeferredResultInterceptorChain.class);
private final List<DeferredResultProcessingInterceptor> interceptors; private final List<DeferredResultProcessingInterceptor> interceptors;

View File

@ -35,7 +35,7 @@ import java.util.List;
*/ */
class ResponseBodyAdviceChain { class ResponseBodyAdviceChain {
private static Log logger = LogFactory.getLog(ResponseBodyAdviceChain.class); private static final Log logger = LogFactory.getLog(ResponseBodyAdviceChain.class);
private final List<Object> advice; private final List<Object> advice;

View File

@ -42,7 +42,7 @@ import org.springframework.web.filter.OncePerRequestFilter;
*/ */
public class ResourceUrlEncodingFilter extends OncePerRequestFilter { public class ResourceUrlEncodingFilter extends OncePerRequestFilter {
private static Log logger = LogFactory.getLog(ResourceUrlEncodingFilter.class); private static final Log logger = LogFactory.getLog(ResourceUrlEncodingFilter.class);
@Override @Override

View File

@ -16,12 +16,6 @@
package org.springframework.web.socket.handler; package org.springframework.web.socket.handler;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.web.socket.CloseStatus;
import org.springframework.web.socket.WebSocketMessage;
import org.springframework.web.socket.WebSocketSession;
import java.io.IOException; import java.io.IOException;
import java.util.Queue; import java.util.Queue;
import java.util.concurrent.LinkedBlockingQueue; import java.util.concurrent.LinkedBlockingQueue;
@ -29,6 +23,13 @@ import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock; import java.util.concurrent.locks.ReentrantLock;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.web.socket.CloseStatus;
import org.springframework.web.socket.WebSocketMessage;
import org.springframework.web.socket.WebSocketSession;
/** /**
* Wraps a {@link org.springframework.web.socket.WebSocketSession} and guarantees * Wraps a {@link org.springframework.web.socket.WebSocketSession} and guarantees
@ -44,7 +45,7 @@ import java.util.concurrent.locks.ReentrantLock;
*/ */
public class ConcurrentWebSocketSessionDecorator extends WebSocketSessionDecorator { public class ConcurrentWebSocketSessionDecorator extends WebSocketSessionDecorator {
private static Log logger = LogFactory.getLog(ConcurrentWebSocketSessionDecorator.class); private static final Log logger = LogFactory.getLog(ConcurrentWebSocketSessionDecorator.class);
private final Queue<WebSocketMessage<?>> buffer = new LinkedBlockingQueue<WebSocketMessage<?>>(); private final Queue<WebSocketMessage<?>> buffer = new LinkedBlockingQueue<WebSocketMessage<?>>();
@ -61,7 +62,7 @@ public class ConcurrentWebSocketSessionDecorator extends WebSocketSessionDecorat
private volatile boolean limitExceeded; private volatile boolean limitExceeded;
private volatile boolean shutDownInProgress; private volatile boolean shutdownInProgress;
private final Lock flushLock = new ReentrantLock(); private final Lock flushLock = new ReentrantLock();
@ -87,7 +88,6 @@ public class ConcurrentWebSocketSessionDecorator extends WebSocketSessionDecorat
public void sendMessage(WebSocketMessage<?> message) throws IOException { public void sendMessage(WebSocketMessage<?> message) throws IOException {
if (isDisabled()) { if (isDisabled()) {
return; return;
} }
@ -110,7 +110,7 @@ public class ConcurrentWebSocketSessionDecorator extends WebSocketSessionDecorat
} }
private boolean isDisabled() { private boolean isDisabled() {
return (this.limitExceeded || this.shutDownInProgress); return (this.limitExceeded || this.shutdownInProgress);
} }
private boolean tryFlushMessageBuffer() throws IOException { private boolean tryFlushMessageBuffer() throws IOException {
@ -140,17 +140,13 @@ public class ConcurrentWebSocketSessionDecorator extends WebSocketSessionDecorat
if (!isDisabled() && this.closeLock.tryLock()) { if (!isDisabled() && this.closeLock.tryLock()) {
try { try {
if (getTimeSinceSendStarted() > this.sendTimeLimit) { if (getTimeSinceSendStarted() > this.sendTimeLimit) {
String errorMessage = "Message send time " + getTimeSinceSendStarted() + String errorMessage = "Message send time " + getTimeSinceSendStarted() +
" (ms) exceeded the allowed limit " + this.sendTimeLimit; " (ms) exceeded the allowed limit " + this.sendTimeLimit;
sessionLimitReached(errorMessage, CloseStatus.SESSION_NOT_RELIABLE); sessionLimitReached(errorMessage, CloseStatus.SESSION_NOT_RELIABLE);
} }
else if (this.bufferSize.get() > this.bufferSizeLimit) { else if (this.bufferSize.get() > this.bufferSizeLimit) {
String errorMessage = "The send buffer size " + this.bufferSize.get() + " bytes for " + String errorMessage = "The send buffer size " + this.bufferSize.get() + " bytes for " +
"session '" + getId() + " exceeded the allowed limit " + this.bufferSizeLimit; "session '" + getId() + " exceeded the allowed limit " + this.bufferSizeLimit;
sessionLimitReached(errorMessage, sessionLimitReached(errorMessage,
(getTimeSinceSendStarted() >= 10000 ? CloseStatus.SESSION_NOT_RELIABLE : null)); (getTimeSinceSendStarted() >= 10000 ? CloseStatus.SESSION_NOT_RELIABLE : null));
} }
@ -168,7 +164,8 @@ public class ConcurrentWebSocketSessionDecorator extends WebSocketSessionDecorat
@Override @Override
public void close(CloseStatus status) throws IOException { public void close(CloseStatus status) throws IOException {
this.shutDownInProgress = true; this.shutdownInProgress = true;
super.close(status); super.close(status);
} }
} }

View File

@ -57,7 +57,7 @@ import org.springframework.util.ReflectionUtils;
*/ */
public class ServerEndpointExporter implements InitializingBean, BeanPostProcessor, ApplicationContextAware { public class ServerEndpointExporter implements InitializingBean, BeanPostProcessor, ApplicationContextAware {
private static Log logger = LogFactory.getLog(ServerEndpointExporter.class); private static final Log logger = LogFactory.getLog(ServerEndpointExporter.class);
private final List<Class<?>> annotatedEndpointClasses = new ArrayList<Class<?>>(); private final List<Class<?>> annotatedEndpointClasses = new ArrayList<Class<?>>();

View File

@ -1,5 +1,5 @@
/* /*
* Copyright 2002-2013 the original author or authors. * Copyright 2002-2014 the original author or authors.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
@ -45,23 +45,21 @@ import org.springframework.web.context.WebApplicationContext;
* *
* @author Rossen Stoyanchev * @author Rossen Stoyanchev
* @since 4.0 * @since 4.0
*
* @see ServerEndpointExporter * @see ServerEndpointExporter
*/ */
public class SpringConfigurator extends Configurator { public class SpringConfigurator extends Configurator {
private static Log logger = LogFactory.getLog(SpringConfigurator.class); private static final String NO_VALUE = ObjectUtils.identityToString(new Object());
private static final Log logger = LogFactory.getLog(SpringConfigurator.class);
private static final Map<String, Map<Class<?>, String>> cache = private static final Map<String, Map<Class<?>, String>> cache =
new ConcurrentHashMap<String, Map<Class<?>, String>>(); new ConcurrentHashMap<String, Map<Class<?>, String>>();
private static final String NO_VALUE = ObjectUtils.identityToString(new Object());
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
@Override @Override
public <T> T getEndpointInstance(Class<T> endpointClass) throws InstantiationException { public <T> T getEndpointInstance(Class<T> endpointClass) throws InstantiationException {
WebApplicationContext wac = ContextLoader.getCurrentWebApplicationContext(); WebApplicationContext wac = ContextLoader.getCurrentWebApplicationContext();
if (wac == null) { if (wac == null) {
String message = "Failed to find the root WebApplicationContext. Was ContextLoaderListener not used?"; String message = "Failed to find the root WebApplicationContext. Was ContextLoaderListener not used?";
@ -99,7 +97,6 @@ public class SpringConfigurator extends Configurator {
} }
private String getBeanNameByType(WebApplicationContext wac, Class<?> endpointClass) { private String getBeanNameByType(WebApplicationContext wac, Class<?> endpointClass) {
String wacId = wac.getId(); String wacId = wac.getId();
Map<Class<?>, String> beanNamesByType = cache.get(wacId); Map<Class<?>, String> beanNamesByType = cache.get(wacId);
@ -116,15 +113,14 @@ public class SpringConfigurator extends Configurator {
else { else {
beanNamesByType.put(endpointClass, NO_VALUE); beanNamesByType.put(endpointClass, NO_VALUE);
if (names.length > 1) { if (names.length > 1) {
String message = "Found multiple @ServerEndpoint's of type " + endpointClass + ", names=" + names; throw new IllegalStateException("Found multiple @ServerEndpoint's of type [" +
logger.error(message); endpointClass.getName() + "]: bean names " + names);
throw new IllegalStateException(message);
} }
} }
} }
String beanName = beanNamesByType.get(endpointClass); String beanName = beanNamesByType.get(endpointClass);
return NO_VALUE.equals(beanName) ? null : beanName; return (NO_VALUE.equals(beanName) ? null : beanName);
} }
} }

View File

@ -1,5 +1,5 @@
/* /*
* Copyright 2002-2013 the original author or authors. * Copyright 2002-2014 the original author or authors.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
@ -41,7 +41,7 @@ import org.springframework.web.socket.server.HandshakeInterceptor;
*/ */
public class HttpSessionHandshakeInterceptor implements HandshakeInterceptor { public class HttpSessionHandshakeInterceptor implements HandshakeInterceptor {
private static Log logger = LogFactory.getLog(HttpSessionHandshakeInterceptor.class); private static final Log logger = LogFactory.getLog(HttpSessionHandshakeInterceptor.class);
private Collection<String> attributeNames; private Collection<String> attributeNames;