From 7b33cd647633a4bdd6fc10cb87793dad9a809f5c Mon Sep 17 00:00:00 2001 From: Juergen Hoeller Date: Wed, 10 Aug 2016 14:20:42 +0200 Subject: [PATCH] Polishing (cherry picked from commit 67ba187) --- .../interceptor/AbstractCacheInvoker.java | 29 +++++++----- .../cache/interceptor/CacheAspectSupport.java | 14 ++---- .../jdbc/object/GenericSqlQuery.java | 42 +++++++++-------- .../jms/support/SimpleJmsHeaderMapper.java | 41 ++++++++-------- .../core/GenericMessagingTemplate.java | 12 ++--- .../simp/user/MultiServerUserRegistry.java | 28 +++++++---- .../oxm/jaxb/Jaxb2Marshaller.java | 6 +-- .../mock/web/MockAsyncContext.java | 4 +- .../test/annotation/ProfileValueUtils.java | 47 +++++++------------ .../jdbc/SqlScriptsTestExecutionListener.java | 31 +++++------- .../context/support/ActiveProfilesUtils.java | 36 ++++++-------- .../test/util/AopTestUtils.java | 13 +++-- .../client/match/XpathRequestMatchers.java | 5 +- .../htmlunit/MockWebResponseBuilder.java | 2 +- .../MockHttpServletRequestBuilder.java | 17 ++++--- .../org/springframework/http/HttpRange.java | 2 +- .../http/client/SimpleClientHttpResponse.java | 2 +- .../context/request/ServletWebRequest.java | 5 +- .../annotation/ResourceHandlerRegistry.java | 41 +++++++++------- .../web/servlet/tags/UrlTag.java | 4 +- .../tags/form/AbstractHtmlElementBodyTag.java | 10 ++-- .../view/tiles3/SpringLocaleResolver.java | 7 +-- .../client/jetty/JettyWebSocketClient.java | 8 ++-- .../handler/BinaryWebSocketHandler.java | 12 +++-- .../socket/handler/TextWebSocketHandler.java | 10 ++-- .../sockjs/client/JettyXhrTransport.java | 11 ++--- 26 files changed, 222 insertions(+), 217 deletions(-) diff --git a/spring-context/src/main/java/org/springframework/cache/interceptor/AbstractCacheInvoker.java b/spring-context/src/main/java/org/springframework/cache/interceptor/AbstractCacheInvoker.java index 70ab3a5fe1d..4d3da400225 100644 --- a/spring-context/src/main/java/org/springframework/cache/interceptor/AbstractCacheInvoker.java +++ b/spring-context/src/main/java/org/springframework/cache/interceptor/AbstractCacheInvoker.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2014 the original author or authors. + * Copyright 2002-2016 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -31,14 +31,16 @@ public abstract class AbstractCacheInvoker { private CacheErrorHandler errorHandler; + + protected AbstractCacheInvoker() { + this(new SimpleCacheErrorHandler()); + } + protected AbstractCacheInvoker(CacheErrorHandler errorHandler) { Assert.notNull("ErrorHandler must not be null"); this.errorHandler = errorHandler; } - protected AbstractCacheInvoker() { - this(new SimpleCacheErrorHandler()); - } /** * Set the {@link CacheErrorHandler} instance to use to handle errors @@ -56,6 +58,7 @@ public abstract class AbstractCacheInvoker { return this.errorHandler; } + /** * Execute {@link Cache#get(Object)} on the specified {@link Cache} and * invoke the error handler if an exception occurs. Return {@code null} @@ -67,9 +70,9 @@ public abstract class AbstractCacheInvoker { try { return cache.get(key); } - catch (RuntimeException e) { - getErrorHandler().handleCacheGetError(e, cache, key); - return null; // If the exception is handled, return a cache miss + catch (RuntimeException ex) { + getErrorHandler().handleCacheGetError(ex, cache, key); + return null; // If the exception is handled, return a cache miss } } @@ -81,8 +84,8 @@ public abstract class AbstractCacheInvoker { try { cache.put(key, result); } - catch (RuntimeException e) { - getErrorHandler().handleCachePutError(e, cache, key, result); + catch (RuntimeException ex) { + getErrorHandler().handleCachePutError(ex, cache, key, result); } } @@ -94,8 +97,8 @@ public abstract class AbstractCacheInvoker { try { cache.evict(key); } - catch (RuntimeException e) { - getErrorHandler().handleCacheEvictError(e, cache, key); + catch (RuntimeException ex) { + getErrorHandler().handleCacheEvictError(ex, cache, key); } } @@ -107,8 +110,8 @@ public abstract class AbstractCacheInvoker { try { cache.clear(); } - catch (RuntimeException e) { - getErrorHandler().handleCacheClearError(e, cache); + catch (RuntimeException ex) { + getErrorHandler().handleCacheClearError(ex, cache); } } diff --git a/spring-context/src/main/java/org/springframework/cache/interceptor/CacheAspectSupport.java b/spring-context/src/main/java/org/springframework/cache/interceptor/CacheAspectSupport.java index 6dd21c1d10c..04b6a040e89 100644 --- a/spring-context/src/main/java/org/springframework/cache/interceptor/CacheAspectSupport.java +++ b/spring-context/src/main/java/org/springframework/cache/interceptor/CacheAspectSupport.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2015 the original author or authors. + * Copyright 2002-2016 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -76,13 +76,10 @@ import org.springframework.util.StringUtils; * @since 3.1 */ public abstract class CacheAspectSupport extends AbstractCacheInvoker - implements InitializingBean, SmartInitializingSingleton, ApplicationContextAware { + implements ApplicationContextAware, InitializingBean, SmartInitializingSingleton { protected final Log logger = LogFactory.getLog(getClass()); - /** - * Cache of CacheOperationMetadata, keyed by {@link CacheOperationCacheKey}. - */ private final Map metadataCache = new ConcurrentHashMap(1024); @@ -273,7 +270,7 @@ public abstract class CacheAspectSupport extends AbstractCacheInvoker * Return a bean with the specified name and type. Used to resolve services that * are referenced by name in a {@link CacheOperation}. * @param beanName the name of the bean, as defined by the operation - * @param expectedType type type for the bean + * @param expectedType type for the bean * @return the bean matching that name * @throws org.springframework.beans.factory.NoSuchBeanDefinitionException if such bean does not exist * @see CacheOperation#keyGenerator @@ -293,8 +290,7 @@ public abstract class CacheAspectSupport extends AbstractCacheInvoker } protected Object execute(CacheOperationInvoker invoker, Object target, Method method, Object[] args) { - // check whether aspect is enabled - // to cope with cases where the AJ is pulled in automatically + // Check whether aspect is enabled (to cope with cases where the AJ is pulled in automatically) if (this.initialized) { Class targetClass = getTargetClass(target); Collection operations = getCacheOperationSource().getCacheOperations(method, targetClass); @@ -377,7 +373,7 @@ public abstract class CacheAspectSupport extends AbstractCacheInvoker excluded.add(context); } } - catch (VariableNotAvailableException e) { + catch (VariableNotAvailableException ex) { // Ignoring failure due to missing result, consider the cache put has to proceed } } diff --git a/spring-jdbc/src/main/java/org/springframework/jdbc/object/GenericSqlQuery.java b/spring-jdbc/src/main/java/org/springframework/jdbc/object/GenericSqlQuery.java index d2af62814c4..f1628576aee 100644 --- a/spring-jdbc/src/main/java/org/springframework/jdbc/object/GenericSqlQuery.java +++ b/spring-jdbc/src/main/java/org/springframework/jdbc/object/GenericSqlQuery.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2012 the original author or authors. + * Copyright 2002-2016 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -18,43 +18,45 @@ package org.springframework.jdbc.object; import java.util.Map; -import org.springframework.dao.InvalidDataAccessResourceUsageException; +import org.springframework.beans.BeanUtils; import org.springframework.jdbc.core.RowMapper; import org.springframework.util.Assert; +/** + * A concrete variant of {@link SqlQuery} which can be configured + * with a {@link RowMapper}. + * + * @author Thomas Risberg + * @author Juergen Hoeller + * @since 3.0 + * @see #setRowMapperClass + */ public class GenericSqlQuery extends SqlQuery { - Class rowMapperClass; + @SuppressWarnings("rawtypes") + private Class rowMapperClass; - RowMapper rowMapper; + /** + * Set a {@link RowMapper} class for this query, creating a fresh + * {@link RowMapper} instance per execution. + */ @SuppressWarnings("rawtypes") - public void setRowMapperClass(Class rowMapperClass) - throws IllegalAccessException, InstantiationException { + public void setRowMapperClass(Class rowMapperClass) { this.rowMapperClass = rowMapperClass; - if (!RowMapper.class.isAssignableFrom(rowMapperClass)) - throw new IllegalStateException("The specified class '" + - rowMapperClass.getName() + " is not a sub class of " + - "'org.springframework.jdbc.core.RowMapper'"); } @Override public void afterPropertiesSet() { super.afterPropertiesSet(); - Assert.notNull(rowMapperClass, "The 'rowMapperClass' property is required"); + Assert.notNull(this.rowMapperClass, "'rowMapperClass' is required"); } + @Override @SuppressWarnings("unchecked") protected RowMapper newRowMapper(Object[] parameters, Map context) { - try { - return (RowMapper) rowMapperClass.newInstance(); - } - catch (InstantiationException e) { - throw new InvalidDataAccessResourceUsageException("Unable to instantiate RowMapper", e); - } - catch (IllegalAccessException e) { - throw new InvalidDataAccessResourceUsageException("Unable to instantiate RowMapper", e); - } + return BeanUtils.instantiateClass(this.rowMapperClass); } + } diff --git a/spring-jms/src/main/java/org/springframework/jms/support/SimpleJmsHeaderMapper.java b/spring-jms/src/main/java/org/springframework/jms/support/SimpleJmsHeaderMapper.java index 2cb4e3c47a0..10bd931850a 100644 --- a/spring-jms/src/main/java/org/springframework/jms/support/SimpleJmsHeaderMapper.java +++ b/spring-jms/src/main/java/org/springframework/jms/support/SimpleJmsHeaderMapper.java @@ -70,8 +70,8 @@ public class SimpleJmsHeaderMapper extends AbstractHeaderMapper impleme try { jmsMessage.setJMSCorrelationID((String) jmsCorrelationId); } - catch (Exception e) { - logger.info("failed to set JMSCorrelationID, skipping", e); + catch (Exception ex) { + logger.info("Failed to set JMSCorrelationID - skipping", ex); } } Destination jmsReplyTo = getHeaderIfAvailable(headers, JmsHeaders.REPLY_TO, Destination.class); @@ -79,8 +79,8 @@ public class SimpleJmsHeaderMapper extends AbstractHeaderMapper impleme try { jmsMessage.setJMSReplyTo(jmsReplyTo); } - catch (Exception e) { - logger.info("failed to set JMSReplyTo, skipping", e); + catch (Exception ex) { + logger.info("Failed to set JMSReplyTo - skipping", ex); } } String jmsType = getHeaderIfAvailable(headers, JmsHeaders.TYPE, String.class); @@ -88,8 +88,8 @@ public class SimpleJmsHeaderMapper extends AbstractHeaderMapper impleme try { jmsMessage.setJMSType(jmsType); } - catch (Exception e) { - logger.info("failed to set JMSType, skipping", e); + catch (Exception ex) { + logger.info("Failed to set JMSType - skipping", ex); } } Set headerNames = headers.keySet(); @@ -101,14 +101,15 @@ public class SimpleJmsHeaderMapper extends AbstractHeaderMapper impleme String propertyName = this.fromHeaderName(headerName); jmsMessage.setObjectProperty(propertyName, value); } - catch (Exception e) { + catch (Exception ex) { if (headerName.startsWith("JMSX")) { if (logger.isTraceEnabled()) { - logger.trace("skipping reserved header, it cannot be set by client: " + headerName); + logger.trace("Skipping reserved header '" + headerName + + "' since it cannot be set by client"); } } else if (logger.isWarnEnabled()) { - logger.warn("failed to map Message header '" + headerName + "' to JMS property", e); + logger.warn("Failed to map message header '" + headerName + "' to JMS property", ex); } } } @@ -117,7 +118,7 @@ public class SimpleJmsHeaderMapper extends AbstractHeaderMapper impleme } catch (Exception ex) { if (logger.isWarnEnabled()) { - logger.warn("error occurred while mapping from MessageHeaders to JMS properties", ex); + logger.warn("Error occurred while mapping from MessageHeaders to JMS properties", ex); } } } @@ -133,7 +134,7 @@ public class SimpleJmsHeaderMapper extends AbstractHeaderMapper impleme } } catch (Exception ex) { - logger.info("failed to read JMSCorrelationID property, skipping", ex); + logger.info("Failed to read JMSCorrelationID property - skipping", ex); } try { Destination destination = jmsMessage.getJMSDestination(); @@ -142,21 +143,21 @@ public class SimpleJmsHeaderMapper extends AbstractHeaderMapper impleme } } catch (Exception ex) { - logger.info("failed to read JMSDestination property, skipping", ex); + logger.info("Failed to read JMSDestination property - skipping", ex); } try { int deliveryMode = jmsMessage.getJMSDeliveryMode(); headers.put(JmsHeaders.DELIVERY_MODE, deliveryMode); } catch (Exception ex) { - logger.info("failed to read JMSDeliveryMode property, skipping", ex); + logger.info("Failed to read JMSDeliveryMode property - skipping", ex); } try { long expiration = jmsMessage.getJMSExpiration(); headers.put(JmsHeaders.EXPIRATION, expiration); } catch (Exception ex) { - logger.info("failed to read JMSExpiration property, skipping", ex); + logger.info("Failed to read JMSExpiration property - skipping", ex); } try { String messageId = jmsMessage.getJMSMessageID(); @@ -165,13 +166,13 @@ public class SimpleJmsHeaderMapper extends AbstractHeaderMapper impleme } } catch (Exception ex) { - logger.info("failed to read JMSMessageID property, skipping", ex); + logger.info("Failed to read JMSMessageID property - skipping", ex); } try { headers.put(JmsHeaders.PRIORITY, jmsMessage.getJMSPriority()); } catch (Exception ex) { - logger.info("failed to read JMSPriority property, skipping", ex); + logger.info("Failed to read JMSPriority property - skipping", ex); } try { Destination replyTo = jmsMessage.getJMSReplyTo(); @@ -180,13 +181,13 @@ public class SimpleJmsHeaderMapper extends AbstractHeaderMapper impleme } } catch (Exception ex) { - logger.info("failed to read JMSReplyTo property, skipping", ex); + logger.info("Failed to read JMSReplyTo property - skipping", ex); } try { headers.put(JmsHeaders.REDELIVERED, jmsMessage.getJMSRedelivered()); } catch (Exception ex) { - logger.info("failed to read JMSRedelivered property, skipping", ex); + logger.info("Failed to read JMSRedelivered property - skipping", ex); } try { String type = jmsMessage.getJMSType(); @@ -195,13 +196,13 @@ public class SimpleJmsHeaderMapper extends AbstractHeaderMapper impleme } } catch (Exception ex) { - logger.info("failed to read JMSType property, skipping", ex); + logger.info("Failed to read JMSType property - skipping", ex); } try { headers.put(JmsHeaders.TIMESTAMP, jmsMessage.getJMSTimestamp()); } catch (Exception ex) { - logger.info("failed to read JMSTimestamp property, skipping", ex); + logger.info("Failed to read JMSTimestamp property - skipping", ex); } diff --git a/spring-messaging/src/main/java/org/springframework/messaging/core/GenericMessagingTemplate.java b/spring-messaging/src/main/java/org/springframework/messaging/core/GenericMessagingTemplate.java index 9f3fa873182..d270c416112 100644 --- a/spring-messaging/src/main/java/org/springframework/messaging/core/GenericMessagingTemplate.java +++ b/spring-messaging/src/main/java/org/springframework/messaging/core/GenericMessagingTemplate.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2014 the original author or authors. + * Copyright 2002-2016 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -98,13 +98,13 @@ public class GenericMessagingTemplate extends AbstractDestinationResolvingMessag @Override public void setBeanFactory(BeanFactory beanFactory) throws BeansException { - super.setDestinationResolver(new BeanFactoryMessageChannelDestinationResolver(beanFactory)); + setDestinationResolver(new BeanFactoryMessageChannelDestinationResolver(beanFactory)); } @Override protected final void doSend(MessageChannel channel, Message message) { - Assert.notNull(channel, "'channel' is required"); + Assert.notNull(channel, "MessageChannel is required"); MessageHeaderAccessor accessor = MessageHeaderAccessor.getAccessor(message, MessageHeaderAccessor.class); if (accessor != null && accessor.isMutable()) { @@ -116,13 +116,13 @@ public class GenericMessagingTemplate extends AbstractDestinationResolvingMessag if (!sent) { throw new MessageDeliveryException(message, - "failed to send message to channel '" + channel + "' within timeout: " + timeout); + "Failed to send message to channel '" + channel + "' within timeout: " + timeout); } } @Override protected final Message doReceive(MessageChannel channel) { - Assert.notNull(channel, "'channel' is required"); + Assert.notNull(channel, "MessageChannel is required"); Assert.state(channel instanceof PollableChannel, "A PollableChannel is required to receive messages"); long timeout = this.receiveTimeout; @@ -208,7 +208,7 @@ public class GenericMessagingTemplate extends AbstractDestinationResolvingMessag } } } - catch (InterruptedException e) { + catch (InterruptedException ex) { Thread.currentThread().interrupt(); } return this.replyMessage; diff --git a/spring-messaging/src/main/java/org/springframework/messaging/simp/user/MultiServerUserRegistry.java b/spring-messaging/src/main/java/org/springframework/messaging/simp/user/MultiServerUserRegistry.java index 386797c6e18..2dfe94a0d77 100644 --- a/spring-messaging/src/main/java/org/springframework/messaging/simp/user/MultiServerUserRegistry.java +++ b/spring-messaging/src/main/java/org/springframework/messaging/simp/user/MultiServerUserRegistry.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2015 the original author or authors. + * Copyright 2002-2016 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -61,10 +61,10 @@ public class MultiServerUserRegistry implements SimpUserRegistry, SmartApplicati */ public MultiServerUserRegistry(SimpUserRegistry localRegistry) { Assert.notNull(localRegistry, "'localRegistry' is required."); + this.id = generateId(); this.localRegistry = localRegistry; this.listener = (this.localRegistry instanceof SmartApplicationListener ? (SmartApplicationListener) this.localRegistry : new NoOpSmartApplicationListener()); - this.id = generateId(); } @@ -73,7 +73,7 @@ public class MultiServerUserRegistry implements SimpUserRegistry, SmartApplicati try { host = InetAddress.getLocalHost().getHostAddress(); } - catch (UnknownHostException e) { + catch (UnknownHostException ex) { host = "unknown"; } return host + "-" + UUID.randomUUID(); @@ -160,11 +160,10 @@ public class MultiServerUserRegistry implements SimpUserRegistry, SmartApplicati @Override public String toString() { - return "local=[" + this.localRegistry + "], remote=" + this.remoteRegistries + "]"; + return "local=[" + this.localRegistry + "], remote=" + this.remoteRegistries; } - @SuppressWarnings("unused") private static class UserRegistryDto { private String id; @@ -173,6 +172,10 @@ public class MultiServerUserRegistry implements SimpUserRegistry, SmartApplicati private long expirationTime; + /** + * Default constructor for JSON deserialization. + */ + @SuppressWarnings("unused") public UserRegistryDto() { } @@ -235,13 +238,16 @@ public class MultiServerUserRegistry implements SimpUserRegistry, SmartApplicati } - @SuppressWarnings("unused") private static class SimpUserDto implements SimpUser { private String name; private Set sessions; + /** + * Default constructor for JSON deserialization. + */ + @SuppressWarnings("unused") public SimpUserDto() { this.sessions = new HashSet(1); } @@ -312,7 +318,6 @@ public class MultiServerUserRegistry implements SimpUserRegistry, SmartApplicati } - @SuppressWarnings("unused") private static class SimpSessionDto implements SimpSession { private String id; @@ -321,6 +326,10 @@ public class MultiServerUserRegistry implements SimpUserRegistry, SmartApplicati private final Set subscriptions; + /** + * Default constructor for JSON deserialization. + */ + @SuppressWarnings("unused") public SimpSessionDto() { this.subscriptions = new HashSet(4); } @@ -384,7 +393,6 @@ public class MultiServerUserRegistry implements SimpUserRegistry, SmartApplicati } - @SuppressWarnings("unused") private static class SimpSubscriptionDto implements SimpSubscription { private String id; @@ -393,6 +401,10 @@ public class MultiServerUserRegistry implements SimpUserRegistry, SmartApplicati private String destination; + /** + * Default constructor for JSON deserialization. + */ + @SuppressWarnings("unused") public SimpSubscriptionDto() { } diff --git a/spring-oxm/src/main/java/org/springframework/oxm/jaxb/Jaxb2Marshaller.java b/spring-oxm/src/main/java/org/springframework/oxm/jaxb/Jaxb2Marshaller.java index e198d10bc9f..436734427bb 100644 --- a/spring-oxm/src/main/java/org/springframework/oxm/jaxb/Jaxb2Marshaller.java +++ b/spring-oxm/src/main/java/org/springframework/oxm/jaxb/Jaxb2Marshaller.java @@ -940,7 +940,7 @@ public class Jaxb2Marshaller implements MimeMarshaller, MimeUnmarshaller, Generi try { contentId = URLEncoder.encode(contentId, "UTF-8"); } - catch (UnsupportedEncodingException e) { + catch (UnsupportedEncodingException ex) { // ignore } return CID + contentId; @@ -951,7 +951,7 @@ public class Jaxb2Marshaller implements MimeMarshaller, MimeUnmarshaller, Generi URI uri = new URI(elementNamespace); return uri.getHost(); } - catch (URISyntaxException e) { + catch (URISyntaxException ex) { // ignore } return dataHandler.getName(); @@ -997,7 +997,7 @@ public class Jaxb2Marshaller implements MimeMarshaller, MimeUnmarshaller, Generi try { contentId = URLDecoder.decode(contentId, "UTF-8"); } - catch (UnsupportedEncodingException e) { + catch (UnsupportedEncodingException ex) { // ignore } contentId = '<' + contentId + '>'; diff --git a/spring-test/src/main/java/org/springframework/mock/web/MockAsyncContext.java b/spring-test/src/main/java/org/springframework/mock/web/MockAsyncContext.java index 0d9f917818b..ae4e8b8b436 100644 --- a/spring-test/src/main/java/org/springframework/mock/web/MockAsyncContext.java +++ b/spring-test/src/main/java/org/springframework/mock/web/MockAsyncContext.java @@ -112,8 +112,8 @@ public class MockAsyncContext implements AsyncContext { try { listener.onComplete(new AsyncEvent(this, this.request, this.response)); } - catch (IOException e) { - throw new IllegalStateException("AsyncListener failure", e); + catch (IOException ex) { + throw new IllegalStateException("AsyncListener failure", ex); } } } diff --git a/spring-test/src/main/java/org/springframework/test/annotation/ProfileValueUtils.java b/spring-test/src/main/java/org/springframework/test/annotation/ProfileValueUtils.java index 27ce7f640c7..94f23875e0c 100644 --- a/spring-test/src/main/java/org/springframework/test/annotation/ProfileValueUtils.java +++ b/spring-test/src/main/java/org/springframework/test/annotation/ProfileValueUtils.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2013 the original author or authors. + * Copyright 2002-2016 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -26,8 +26,6 @@ import org.springframework.util.Assert; import org.springframework.util.ObjectUtils; import org.springframework.util.StringUtils; -import static org.springframework.core.annotation.AnnotationUtils.*; - /** * General utility methods for working with profile values. * @@ -49,12 +47,10 @@ public abstract class ProfileValueUtils { * {@link ProfileValueSourceConfiguration * @ProfileValueSourceConfiguration} annotation and instantiates a new * instance of that type. - *

- * If {@link ProfileValueSourceConfiguration + *

If {@link ProfileValueSourceConfiguration * @ProfileValueSourceConfiguration} is not present on the specified * class or if a custom {@link ProfileValueSource} is not declared, the * default {@link SystemProfileValueSource} will be returned instead. - * * @param testClass The test class for which the ProfileValueSource should * be retrieved * @return the configured (or default) ProfileValueSource for the specified @@ -66,10 +62,10 @@ public abstract class ProfileValueUtils { Assert.notNull(testClass, "testClass must not be null"); Class annotationType = ProfileValueSourceConfiguration.class; - ProfileValueSourceConfiguration config = findAnnotation(testClass, annotationType); + ProfileValueSourceConfiguration config = AnnotationUtils.findAnnotation(testClass, annotationType); if (logger.isDebugEnabled()) { - logger.debug("Retrieved @ProfileValueSourceConfiguration [" + config + "] for test class [" - + testClass.getName() + "]"); + logger.debug("Retrieved @ProfileValueSourceConfiguration [" + config + "] for test class [" + + testClass.getName() + "]"); } Class profileValueSourceType; @@ -80,8 +76,8 @@ public abstract class ProfileValueUtils { profileValueSourceType = (Class) AnnotationUtils.getDefaultValue(annotationType); } if (logger.isDebugEnabled()) { - logger.debug("Retrieved ProfileValueSource type [" + profileValueSourceType + "] for class [" - + testClass.getName() + "]"); + logger.debug("Retrieved ProfileValueSource type [" + profileValueSourceType + "] for class [" + + testClass.getName() + "]"); } ProfileValueSource profileValueSource; @@ -92,10 +88,10 @@ public abstract class ProfileValueUtils { try { profileValueSource = profileValueSourceType.newInstance(); } - catch (Exception e) { + catch (Exception ex) { if (logger.isWarnEnabled()) { - logger.warn("Could not instantiate a ProfileValueSource of type [" + profileValueSourceType - + "] for class [" + testClass.getName() + "]: using default.", e); + logger.warn("Could not instantiate a ProfileValueSource of type [" + profileValueSourceType + + "] for class [" + testClass.getName() + "]: using default.", ex); } profileValueSource = SystemProfileValueSource.getInstance(); } @@ -108,16 +104,14 @@ public abstract class ProfileValueUtils { * Determine if the supplied {@code testClass} is enabled in * the current environment, as specified by the {@link IfProfileValue * @IfProfileValue} annotation at the class level. - *

- * Defaults to {@code true} if no {@link IfProfileValue + *

Defaults to {@code true} if no {@link IfProfileValue * @IfProfileValue} annotation is declared. - * * @param testClass the test class * @return {@code true} if the test is enabled in the current * environment */ public static boolean isTestEnabledInThisEnvironment(Class testClass) { - IfProfileValue ifProfileValue = findAnnotation(testClass, IfProfileValue.class); + IfProfileValue ifProfileValue = AnnotationUtils.findAnnotation(testClass, IfProfileValue.class); return isTestEnabledInThisEnvironment(retrieveProfileValueSource(testClass), ifProfileValue); } @@ -127,10 +121,8 @@ public abstract class ProfileValueUtils { * @IfProfileValue} annotation, which may be declared on the test * method itself or at the class level. Class-level usage overrides * method-level usage. - *

- * Defaults to {@code true} if no {@link IfProfileValue + *

Defaults to {@code true} if no {@link IfProfileValue * @IfProfileValue} annotation is declared. - * * @param testMethod the test method * @param testClass the test class * @return {@code true} if the test is enabled in the current @@ -146,10 +138,8 @@ public abstract class ProfileValueUtils { * @IfProfileValue} annotation, which may be declared on the test * method itself or at the class level. Class-level usage overrides * method-level usage. - *

- * Defaults to {@code true} if no {@link IfProfileValue + *

Defaults to {@code true} if no {@link IfProfileValue * @IfProfileValue} annotation is declared. - * * @param profileValueSource the ProfileValueSource to use to determine if * the test is enabled * @param testMethod the test method @@ -160,11 +150,11 @@ public abstract class ProfileValueUtils { public static boolean isTestEnabledInThisEnvironment(ProfileValueSource profileValueSource, Method testMethod, Class testClass) { - IfProfileValue ifProfileValue = findAnnotation(testClass, IfProfileValue.class); + IfProfileValue ifProfileValue = AnnotationUtils.findAnnotation(testClass, IfProfileValue.class); boolean classLevelEnabled = isTestEnabledInThisEnvironment(profileValueSource, ifProfileValue); if (classLevelEnabled) { - ifProfileValue = findAnnotation(testMethod, IfProfileValue.class); + ifProfileValue = AnnotationUtils.findAnnotation(testMethod, IfProfileValue.class); return isTestEnabledInThisEnvironment(profileValueSource, ifProfileValue); } @@ -175,7 +165,6 @@ public abstract class ProfileValueUtils { * Determine if the {@code value} (or one of the {@code values}) * in the supplied {@link IfProfileValue @IfProfileValue} annotation is * enabled in the current environment. - * * @param profileValueSource the ProfileValueSource to use to determine if * the test is enabled * @param ifProfileValue the annotation to introspect; may be @@ -195,8 +184,8 @@ public abstract class ProfileValueUtils { String[] annotatedValues = ifProfileValue.values(); if (StringUtils.hasLength(ifProfileValue.value())) { if (annotatedValues.length > 0) { - throw new IllegalArgumentException("Setting both the 'value' and 'values' attributes " - + "of @IfProfileValue is not allowed: choose one or the other."); + throw new IllegalArgumentException("Setting both the 'value' and 'values' attributes " + + "of @IfProfileValue is not allowed: choose one or the other."); } annotatedValues = new String[] { ifProfileValue.value() }; } diff --git a/spring-test/src/main/java/org/springframework/test/context/jdbc/SqlScriptsTestExecutionListener.java b/spring-test/src/main/java/org/springframework/test/context/jdbc/SqlScriptsTestExecutionListener.java index 71e0e1f6390..601638f358f 100644 --- a/spring-test/src/main/java/org/springframework/test/context/jdbc/SqlScriptsTestExecutionListener.java +++ b/spring-test/src/main/java/org/springframework/test/context/jdbc/SqlScriptsTestExecutionListener.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2015 the original author or authors. + * Copyright 2002-2016 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -19,7 +19,6 @@ package org.springframework.test.context.jdbc; import java.lang.reflect.Method; import java.util.List; import java.util.Set; - import javax.sql.DataSource; import org.apache.commons.logging.Log; @@ -147,17 +146,13 @@ public class SqlScriptsTestExecutionListener extends AbstractTestExecutionListen /** * Execute the SQL scripts configured via the supplied {@link Sql @Sql} * annotation for the given {@link ExecutionPhase} and {@link TestContext}. - * *

Special care must be taken in order to properly support the configured * {@link SqlConfig#transactionMode}. - * * @param sql the {@code @Sql} annotation to parse * @param executionPhase the current execution phase * @param testContext the current {@code TestContext} - * @param classLevel {@code true} if {@link Sql @Sql} was declared at the - * class level + * @param classLevel {@code true} if {@link Sql @Sql} was declared at the class level */ - @SuppressWarnings("serial") private void executeSqlScripts(Sql sql, ExecutionPhase executionPhase, TestContext testContext, boolean classLevel) throws Exception { if (executionPhase != sql.executionPhase()) { @@ -222,10 +217,10 @@ public class SqlScriptsTestExecutionListener extends AbstractTestExecutionListen DataSource dataSourceFromTxMgr = getDataSourceFromTransactionManager(transactionManager); // Ensure user configured an appropriate DataSource/TransactionManager pair. - if ((dataSource != null) && (dataSourceFromTxMgr != null) && !dataSource.equals(dataSourceFromTxMgr)) { - throw new IllegalStateException(String.format("Failed to execute SQL scripts for test context %s: " - + "the configured DataSource [%s] (named '%s') is not the one associated " - + "with transaction manager [%s] (named '%s').", testContext, dataSource.getClass().getName(), + if (dataSource != null && dataSourceFromTxMgr != null && !dataSource.equals(dataSourceFromTxMgr)) { + throw new IllegalStateException(String.format("Failed to execute SQL scripts for test context %s: " + + "the configured DataSource [%s] (named '%s') is not the one associated with " + + "transaction manager [%s] (named '%s').", testContext, dataSource.getClass().getName(), dsName, transactionManager.getClass().getName(), tmName)); } @@ -239,8 +234,8 @@ public class SqlScriptsTestExecutionListener extends AbstractTestExecutionListen } final DataSource finalDataSource = dataSource; - int propagation = newTxRequired ? TransactionDefinition.PROPAGATION_REQUIRES_NEW - : TransactionDefinition.PROPAGATION_REQUIRED; + int propagation = (newTxRequired ? TransactionDefinition.PROPAGATION_REQUIRES_NEW : + TransactionDefinition.PROPAGATION_REQUIRED); TransactionAttribute transactionAttribute = TestContextTransactionUtils.createDelegatingTransactionAttribute( testContext, new DefaultTransactionAttribute(propagation)); @@ -263,8 +258,8 @@ public class SqlScriptsTestExecutionListener extends AbstractTestExecutionListen return (DataSource) obj; } } - catch (Exception e) { - /* ignore */ + catch (Exception ex) { + // ignore } return null; } @@ -304,9 +299,9 @@ public class SqlScriptsTestExecutionListener extends AbstractTestExecutionListen return prefixedResourcePath; } else { - String msg = String.format("Could not detect default SQL script for test %s [%s]: " - + "%s does not exist. Either declare statements or scripts via @Sql or make the " - + "default SQL script available.", elementType, elementName, classPathResource); + String msg = String.format("Could not detect default SQL script for test %s [%s]: " + + "%s does not exist. Either declare statements or scripts via @Sql or make the " + + "default SQL script available.", elementType, elementName, classPathResource); logger.error(msg); throw new IllegalStateException(msg); } diff --git a/spring-test/src/main/java/org/springframework/test/context/support/ActiveProfilesUtils.java b/spring-test/src/main/java/org/springframework/test/context/support/ActiveProfilesUtils.java index c2025424c50..b9b242b60c3 100644 --- a/spring-test/src/main/java/org/springframework/test/context/support/ActiveProfilesUtils.java +++ b/spring-test/src/main/java/org/springframework/test/context/support/ActiveProfilesUtils.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2015 the original author or authors. + * Copyright 2002-2016 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -52,18 +52,12 @@ abstract class ActiveProfilesUtils { private static final Log logger = LogFactory.getLog(ActiveProfilesUtils.class); - private ActiveProfilesUtils() { - /* no-op */ - } - /** * Resolve active bean definition profiles for the supplied {@link Class}. - * *

Note that the {@link ActiveProfiles#inheritProfiles inheritProfiles} flag of * {@link ActiveProfiles @ActiveProfiles} will be taken into consideration. * Specifically, if the {@code inheritProfiles} flag is set to {@code true}, profiles * defined in the test class will be merged with those defined in superclasses. - * * @param testClass the class for which to resolve the active profiles (must not be * {@code null}) * @return the set of active profiles for the specified class, including active @@ -78,12 +72,12 @@ abstract class ActiveProfilesUtils { final List profileArrays = new ArrayList(); Class annotationType = ActiveProfiles.class; - AnnotationDescriptor descriptor = MetaAnnotationUtils.findAnnotationDescriptor(testClass, - annotationType); + AnnotationDescriptor descriptor = + MetaAnnotationUtils.findAnnotationDescriptor(testClass, annotationType); if (descriptor == null && logger.isDebugEnabled()) { logger.debug(String.format( - "Could not find an 'annotation declaring class' for annotation type [%s] and class [%s]", - annotationType.getName(), testClass.getName())); + "Could not find an 'annotation declaring class' for annotation type [%s] and class [%s]", + annotationType.getName(), testClass.getName())); } while (descriptor != null) { @@ -92,8 +86,8 @@ abstract class ActiveProfilesUtils { ActiveProfiles annotation = descriptor.synthesizeAnnotation(); if (logger.isTraceEnabled()) { - logger.trace(String.format("Retrieved @ActiveProfiles [%s] for declaring class [%s].", annotation, - declaringClass.getName())); + logger.trace(String.format("Retrieved @ActiveProfiles [%s] for declaring class [%s]", + annotation, declaringClass.getName())); } Class resolverClass = annotation.resolver(); @@ -101,22 +95,22 @@ abstract class ActiveProfilesUtils { resolverClass = DefaultActiveProfilesResolver.class; } - ActiveProfilesResolver resolver = null; + ActiveProfilesResolver resolver; try { resolver = BeanUtils.instantiateClass(resolverClass, ActiveProfilesResolver.class); } - catch (Exception e) { - String msg = String.format("Could not instantiate ActiveProfilesResolver of " - + "type [%s] for test class [%s].", resolverClass.getName(), rootDeclaringClass.getName()); + catch (Exception ex) { + String msg = String.format("Could not instantiate ActiveProfilesResolver of type [%s] " + + "for test class [%s]", resolverClass.getName(), rootDeclaringClass.getName()); logger.error(msg); - throw new IllegalStateException(msg, e); + throw new IllegalStateException(msg, ex); } String[] profiles = resolver.resolve(rootDeclaringClass); if (profiles == null) { String msg = String.format( - "ActiveProfilesResolver [%s] returned a null array of bean definition profiles.", - resolverClass.getName()); + "ActiveProfilesResolver [%s] returned a null array of bean definition profiles", + resolverClass.getName()); logger.error(msg); throw new IllegalStateException(msg); } @@ -124,7 +118,7 @@ abstract class ActiveProfilesUtils { profileArrays.add(profiles); descriptor = (annotation.inheritProfiles() ? MetaAnnotationUtils.findAnnotationDescriptor( - rootDeclaringClass.getSuperclass(), annotationType) : null); + rootDeclaringClass.getSuperclass(), annotationType) : null); } // Reverse the list so that we can traverse "down" the hierarchy. diff --git a/spring-test/src/main/java/org/springframework/test/util/AopTestUtils.java b/spring-test/src/main/java/org/springframework/test/util/AopTestUtils.java index 4eda8a45ac2..560b7d03b9b 100644 --- a/spring-test/src/main/java/org/springframework/test/util/AopTestUtils.java +++ b/spring-test/src/main/java/org/springframework/test/util/AopTestUtils.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2015 the original author or authors. + * Copyright 2002-2016 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -32,6 +32,7 @@ import org.springframework.util.Assert; * @since 4.2 * @see org.springframework.aop.support.AopUtils * @see org.springframework.aop.framework.AopProxyUtils + * @see ReflectionTestUtils */ public class AopTestUtils { @@ -41,7 +42,6 @@ public class AopTestUtils { * {@linkplain AopUtils#isAopProxy proxy}, the target of the proxy will * be returned; otherwise, the {@code candidate} will be returned * as is. - * * @param candidate the instance to check (potentially a Spring AOP proxy); * never {@code null} * @return the target object or the {@code candidate}; never {@code null} @@ -57,8 +57,8 @@ public class AopTestUtils { return (T) ((Advised) candidate).getTargetSource().getTarget(); } } - catch (Exception e) { - throw new IllegalStateException("Failed to unwrap proxied object.", e); + catch (Exception ex) { + throw new IllegalStateException("Failed to unwrap proxied object", ex); } return (T) candidate; } @@ -71,7 +71,6 @@ public class AopTestUtils { * {@linkplain AopUtils#isAopProxy proxy}, the ultimate target of all * nested proxies will be returned; otherwise, the {@code candidate} * will be returned as is. - * * @param candidate the instance to check (potentially a Spring AOP proxy); * never {@code null} * @return the ultimate target object or the {@code candidate}; never @@ -88,8 +87,8 @@ public class AopTestUtils { return (T) getUltimateTargetObject(((Advised) candidate).getTargetSource().getTarget()); } } - catch (Exception e) { - throw new IllegalStateException("Failed to unwrap proxied object.", e); + catch (Exception ex) { + throw new IllegalStateException("Failed to unwrap proxied object", ex); } return (T) candidate; } diff --git a/spring-test/src/main/java/org/springframework/test/web/client/match/XpathRequestMatchers.java b/spring-test/src/main/java/org/springframework/test/web/client/match/XpathRequestMatchers.java index 3baf52d0a9d..2316714bc0b 100644 --- a/spring-test/src/main/java/org/springframework/test/web/client/match/XpathRequestMatchers.java +++ b/spring-test/src/main/java/org/springframework/test/web/client/match/XpathRequestMatchers.java @@ -13,6 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + package org.springframework.test.web.client.match; import java.io.IOException; @@ -192,8 +193,8 @@ public class XpathRequestMatchers { MockClientHttpRequest mockRequest = (MockClientHttpRequest) request; matchInternal(mockRequest); } - catch (Exception e) { - throw new AssertionError("Failed to parse XML request content: " + e.getMessage()); + catch (Exception ex) { + throw new AssertionError("Failed to parse XML request content: " + ex.getMessage()); } } diff --git a/spring-test/src/main/java/org/springframework/test/web/servlet/htmlunit/MockWebResponseBuilder.java b/spring-test/src/main/java/org/springframework/test/web/servlet/htmlunit/MockWebResponseBuilder.java index 7ead8e13ce2..d347809786d 100644 --- a/spring-test/src/main/java/org/springframework/test/web/servlet/htmlunit/MockWebResponseBuilder.java +++ b/spring-test/src/main/java/org/springframework/test/web/servlet/htmlunit/MockWebResponseBuilder.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2015 the original author or authors. + * Copyright 2002-2016 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/spring-test/src/main/java/org/springframework/test/web/servlet/request/MockHttpServletRequestBuilder.java b/spring-test/src/main/java/org/springframework/test/web/servlet/request/MockHttpServletRequestBuilder.java index 1663bd2fb55..a83f2f5f109 100644 --- a/spring-test/src/main/java/org/springframework/test/web/servlet/request/MockHttpServletRequestBuilder.java +++ b/spring-test/src/main/java/org/springframework/test/web/servlet/request/MockHttpServletRequestBuilder.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2015 the original author or authors. + * Copyright 2002-2016 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -133,8 +133,8 @@ public class MockHttpServletRequestBuilder * @since 4.0.3 */ MockHttpServletRequestBuilder(HttpMethod httpMethod, URI url) { - Assert.notNull(httpMethod, "httpMethod is required"); - Assert.notNull(url, "url is required"); + Assert.notNull(httpMethod, "'httpMethod' is required"); + Assert.notNull(url, "'url' is required"); this.method = httpMethod; this.url = url; } @@ -224,7 +224,7 @@ public class MockHttpServletRequestBuilder * @param mediaTypes one or more media types */ public MockHttpServletRequestBuilder accept(MediaType... mediaTypes) { - Assert.notEmpty(mediaTypes, "No 'Accept' media types"); + Assert.notEmpty(mediaTypes, "'mediaTypes' must not be empty"); this.headers.set("Accept", MediaType.toString(Arrays.asList(mediaTypes))); return this; } @@ -234,7 +234,7 @@ public class MockHttpServletRequestBuilder * @param mediaTypes one or more media types */ public MockHttpServletRequestBuilder accept(String... mediaTypes) { - Assert.notEmpty(mediaTypes, "No 'Accept' media types"); + Assert.notEmpty(mediaTypes, "'mediaTypes' must not be empty"); List result = new ArrayList(mediaTypes.length); for (String mediaType : mediaTypes) { result.add(MediaType.parseMediaType(mediaType)); @@ -260,7 +260,7 @@ public class MockHttpServletRequestBuilder try { this.content = content.getBytes("UTF-8"); } - catch (UnsupportedEncodingException e) { + catch (UnsupportedEncodingException ex) { // should never happen } return this; @@ -271,7 +271,6 @@ public class MockHttpServletRequestBuilder * @param cookies the cookies to add */ public MockHttpServletRequestBuilder cookie(Cookie... cookies) { - Assert.notNull(cookies, "'cookies' must not be null"); Assert.notEmpty(cookies, "'cookies' must not be empty"); this.cookies.addAll(Arrays.asList(cookies)); return this; @@ -320,7 +319,7 @@ public class MockHttpServletRequestBuilder * @param sessionAttributes the session attributes */ public MockHttpServletRequestBuilder sessionAttrs(Map sessionAttributes) { - Assert.notEmpty(sessionAttributes, "'sessionAttrs' must not be empty"); + Assert.notEmpty(sessionAttributes, "'sessionAttributes' must not be empty"); for (String name : sessionAttributes.keySet()) { sessionAttr(name, sessionAttributes.get(name)); } @@ -342,7 +341,7 @@ public class MockHttpServletRequestBuilder * @param flashAttributes the flash attributes */ public MockHttpServletRequestBuilder flashAttrs(Map flashAttributes) { - Assert.notEmpty(flashAttributes, "'flashAttrs' must not be empty"); + Assert.notEmpty(flashAttributes, "'flashAttributes' must not be empty"); for (String name : flashAttributes.keySet()) { flashAttr(name, flashAttributes.get(name)); } diff --git a/spring-web/src/main/java/org/springframework/http/HttpRange.java b/spring-web/src/main/java/org/springframework/http/HttpRange.java index 29f2e675021..b2aff84e16a 100644 --- a/spring-web/src/main/java/org/springframework/http/HttpRange.java +++ b/spring-web/src/main/java/org/springframework/http/HttpRange.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2015 the original author or authors. + * Copyright 2002-2016 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/spring-web/src/main/java/org/springframework/http/client/SimpleClientHttpResponse.java b/spring-web/src/main/java/org/springframework/http/client/SimpleClientHttpResponse.java index cc7e627d0a8..f9ca541e197 100644 --- a/spring-web/src/main/java/org/springframework/http/client/SimpleClientHttpResponse.java +++ b/spring-web/src/main/java/org/springframework/http/client/SimpleClientHttpResponse.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2014 the original author or authors. + * Copyright 2002-2016 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/spring-web/src/main/java/org/springframework/web/context/request/ServletWebRequest.java b/spring-web/src/main/java/org/springframework/web/context/request/ServletWebRequest.java index 6cc8e052721..3a09aa5ad1d 100644 --- a/spring-web/src/main/java/org/springframework/web/context/request/ServletWebRequest.java +++ b/spring-web/src/main/java/org/springframework/web/context/request/ServletWebRequest.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2015 the original author or authors. + * Copyright 2002-2016 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -250,7 +250,8 @@ public class ServletWebRequest extends ServletRequestAttributes implements Nativ return true; } return HttpStatus.valueOf(response.getStatus()).is2xxSuccessful(); - } catch (IllegalArgumentException e) { + } + catch (IllegalArgumentException ex) { return true; } } diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/config/annotation/ResourceHandlerRegistry.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/config/annotation/ResourceHandlerRegistry.java index f9145d4ae08..2808b372641 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/config/annotation/ResourceHandlerRegistry.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/config/annotation/ResourceHandlerRegistry.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2014 the original author or authors. + * Copyright 2002-2016 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -46,40 +46,47 @@ import org.springframework.web.servlet.resource.ResourceHttpRequestHandler; * * @author Rossen Stoyanchev * @since 3.1 - * * @see DefaultServletHandlerConfigurer */ public class ResourceHandlerRegistry { private final ServletContext servletContext; - private final ApplicationContext appContext; + private final ApplicationContext applicationContext; private final List registrations = new ArrayList(); private int order = Integer.MAX_VALUE -1; + /** + * Create a new resource handler registry for the given application context. + * @param applicationContext the Spring application context + * @param servletContext the corresponding Servlet context + */ public ResourceHandlerRegistry(ApplicationContext applicationContext, ServletContext servletContext) { Assert.notNull(applicationContext, "ApplicationContext is required"); - this.appContext = applicationContext; + this.applicationContext = applicationContext; this.servletContext = servletContext; } /** - * Add a resource handler for serving static resources based on the specified URL path patterns. - * The handler will be invoked for every incoming request that matches to one of the specified path patterns. - * @return A {@link ResourceHandlerRegistration} to use to further configure the registered resource handler. + * Add a resource handler for serving static resources based on the specified URL path + * patterns. The handler will be invoked for every incoming request that matches to + * one of the specified path patterns. + * @return A {@link ResourceHandlerRegistration} to use to further configure the + * registered resource handler */ public ResourceHandlerRegistration addResourceHandler(String... pathPatterns) { - ResourceHandlerRegistration registration = new ResourceHandlerRegistration(this.appContext, pathPatterns); + ResourceHandlerRegistration registration = + new ResourceHandlerRegistration(this.applicationContext, pathPatterns); this.registrations.add(registration); return registration; } /** - * Whether a resource handler has already been registered for the given pathPattern. + * Whether a resource handler has already been registered for the given path pattern. */ public boolean hasMappingForPattern(String pathPattern) { for (ResourceHandlerRegistration registration : this.registrations) { @@ -91,8 +98,9 @@ public class ResourceHandlerRegistry { } /** - * Specify the order to use for resource handling relative to other {@link HandlerMapping}s configured in - * the Spring MVC application context. The default value used is {@code Integer.MAX_VALUE-1}. + * Specify the order to use for resource handling relative to other {@link HandlerMapping}s + * configured in the Spring MVC application context. + *

The default value used is {@code Integer.MAX_VALUE-1}. */ public ResourceHandlerRegistry setOrder(int order) { this.order = order; @@ -100,10 +108,11 @@ public class ResourceHandlerRegistry { } /** - * Return a handler mapping with the mapped resource handlers; or {@code null} in case of no registrations. + * Return a handler mapping with the mapped resource handlers; or {@code null} in case + * of no registrations. */ protected AbstractHandlerMapping getHandlerMapping() { - if (registrations.isEmpty()) { + if (this.registrations.isEmpty()) { return null; } @@ -112,12 +121,12 @@ public class ResourceHandlerRegistry { for (String pathPattern : registration.getPathPatterns()) { ResourceHttpRequestHandler handler = registration.getRequestHandler(); handler.setServletContext(this.servletContext); - handler.setApplicationContext(this.appContext); + handler.setApplicationContext(this.applicationContext); try { handler.afterPropertiesSet(); } - catch (Exception e) { - throw new BeanInitializationException("Failed to init ResourceHttpRequestHandler", e); + catch (Exception ex) { + throw new BeanInitializationException("Failed to init ResourceHttpRequestHandler", ex); } urlMap.put(pathPattern, handler); } diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/tags/UrlTag.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/tags/UrlTag.java index 201a5fb4154..cd1bd84ecbd 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/tags/UrlTag.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/tags/UrlTag.java @@ -181,8 +181,8 @@ public class UrlTag extends HtmlEscapingAwareTag implements ParamAware { try { pageContext.getOut().print(url); } - catch (IOException e) { - throw new JspException(e); + catch (IOException ex) { + throw new JspException(ex); } } else { diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/tags/form/AbstractHtmlElementBodyTag.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/tags/form/AbstractHtmlElementBodyTag.java index 98bb8c37d5b..ae4d30755fc 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/tags/form/AbstractHtmlElementBodyTag.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/tags/form/AbstractHtmlElementBodyTag.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2012 the original author or authors. + * Copyright 2002-2016 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -25,8 +25,8 @@ import org.springframework.util.StringUtils; /** * Convenient super class for many html tags that render content using the databinding - * features of the {@link AbstractHtmlElementTag AbstractHtmlElementTag}. The only thing sub tags - * need to do is override {@link #renderDefaultContent(TagWriter)}. + * features of the {@link AbstractHtmlElementTag AbstractHtmlElementTag}. The only thing + * sub-tags need to do is override {@link #renderDefaultContent(TagWriter)}. * * @author Rob Harrop * @author Juergen Hoeller @@ -136,8 +136,8 @@ public abstract class AbstractHtmlElementBodyTag extends AbstractHtmlElementTag try { bodyContent.writeOut(bodyContent.getEnclosingWriter()); } - catch (IOException e) { - throw new JspException("Unable to write buffered body content.", e); + catch (IOException ex) { + throw new JspException("Unable to write buffered body content.", ex); } } diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/view/tiles3/SpringLocaleResolver.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/view/tiles3/SpringLocaleResolver.java index e432ae9a6c6..c7a346bf8c9 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/view/tiles3/SpringLocaleResolver.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/view/tiles3/SpringLocaleResolver.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2012 the original author or authors. + * Copyright 2002-2016 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,6 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + package org.springframework.web.servlet.view.tiles3; import java.util.Locale; @@ -46,8 +47,8 @@ public class SpringLocaleResolver extends DefaultLocaleResolver { return RequestContextUtils.getLocale(servletRequest); } } - catch (NotAServletEnvironmentException e) { - // Ignore + catch (NotAServletEnvironmentException ex) { + // ignore } return super.resolveLocale(request); } diff --git a/spring-websocket/src/main/java/org/springframework/web/socket/client/jetty/JettyWebSocketClient.java b/spring-websocket/src/main/java/org/springframework/web/socket/client/jetty/JettyWebSocketClient.java index 65c240bda0e..db7032af782 100644 --- a/spring-websocket/src/main/java/org/springframework/web/socket/client/jetty/JettyWebSocketClient.java +++ b/spring-websocket/src/main/java/org/springframework/web/socket/client/jetty/JettyWebSocketClient.java @@ -117,8 +117,8 @@ public class JettyWebSocketClient extends AbstractWebSocketClient implements Lif } this.client.start(); } - catch (Exception e) { - throw new IllegalStateException("Failed to start Jetty client", e); + catch (Exception ex) { + throw new IllegalStateException("Failed to start Jetty client", ex); } } } @@ -134,8 +134,8 @@ public class JettyWebSocketClient extends AbstractWebSocketClient implements Lif } this.client.stop(); } - catch (Exception e) { - logger.error("Error stopping Jetty WebSocketClient", e); + catch (Exception ex) { + logger.error("Error stopping Jetty WebSocketClient", ex); } } } diff --git a/spring-websocket/src/main/java/org/springframework/web/socket/handler/BinaryWebSocketHandler.java b/spring-websocket/src/main/java/org/springframework/web/socket/handler/BinaryWebSocketHandler.java index c03dc54dcdc..a77315adca9 100644 --- a/spring-websocket/src/main/java/org/springframework/web/socket/handler/BinaryWebSocketHandler.java +++ b/spring-websocket/src/main/java/org/springframework/web/socket/handler/BinaryWebSocketHandler.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2013 the original author or authors. + * Copyright 2002-2016 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -24,9 +24,11 @@ import org.springframework.web.socket.WebSocketHandler; import org.springframework.web.socket.WebSocketSession; /** - * A convenient base class for {@link WebSocketHandler} implementation that process binary - * messages only. Text messages are rejected with {@link CloseStatus#NOT_ACCEPTABLE}. All - * other methods have empty implementations. + * A convenient base class for {@link WebSocketHandler} implementations + * that process binary messages only. + * + *

Text messages are rejected with {@link CloseStatus#NOT_ACCEPTABLE}. + * All other methods have empty implementations. * * @author Rossen Stoyanchev * @author Phillip Webb @@ -39,7 +41,7 @@ public class BinaryWebSocketHandler extends AbstractWebSocketHandler { try { session.close(CloseStatus.NOT_ACCEPTABLE.withReason("Text messages not supported")); } - catch (IOException e) { + catch (IOException ex) { // ignore } } diff --git a/spring-websocket/src/main/java/org/springframework/web/socket/handler/TextWebSocketHandler.java b/spring-websocket/src/main/java/org/springframework/web/socket/handler/TextWebSocketHandler.java index 60faa8bfb4d..1498a799f09 100644 --- a/spring-websocket/src/main/java/org/springframework/web/socket/handler/TextWebSocketHandler.java +++ b/spring-websocket/src/main/java/org/springframework/web/socket/handler/TextWebSocketHandler.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2013 the original author or authors. + * Copyright 2002-2016 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -24,9 +24,11 @@ import org.springframework.web.socket.WebSocketHandler; import org.springframework.web.socket.WebSocketSession; /** - * A convenient base class for {@link WebSocketHandler} implementation that process text - * messages only. Binary messages are rejected with {@link CloseStatus#NOT_ACCEPTABLE}. All - * other methods have empty implementations. + * A convenient base class for {@link WebSocketHandler} implementations + * that process text messages only. + * + *

Binary messages are rejected with {@link CloseStatus#NOT_ACCEPTABLE}. + * All other methods have empty implementations. * * @author Rossen Stoyanchev * @author Phillip Webb diff --git a/spring-websocket/src/main/java/org/springframework/web/socket/sockjs/client/JettyXhrTransport.java b/spring-websocket/src/main/java/org/springframework/web/socket/sockjs/client/JettyXhrTransport.java index e42b65d4ff8..80297452eb6 100644 --- a/spring-websocket/src/main/java/org/springframework/web/socket/sockjs/client/JettyXhrTransport.java +++ b/spring-websocket/src/main/java/org/springframework/web/socket/sockjs/client/JettyXhrTransport.java @@ -82,8 +82,8 @@ public class JettyXhrTransport extends AbstractXhrTransport implements Lifecycle this.httpClient.start(); } } - catch (Exception e) { - throw new SockJsException("Failed to start " + this, e); + catch (Exception ex) { + throw new SockJsException("Failed to start " + this, ex); } } @@ -94,8 +94,8 @@ public class JettyXhrTransport extends AbstractXhrTransport implements Lifecycle this.httpClient.stop(); } } - catch (Exception e) { - throw new SockJsException("Failed to stop " + this, e); + catch (Exception ex) { + throw new SockJsException("Failed to stop " + this, ex); } } @@ -154,6 +154,7 @@ public class JettyXhrTransport extends AbstractXhrTransport implements Lifecycle new ResponseEntity(responseHeaders, status)); } + private static void addHttpHeaders(Request request, HttpHeaders headers) { for (String name : headers.keySet()) { for (String value : headers.get(name)) { @@ -194,7 +195,6 @@ public class JettyXhrTransport extends AbstractXhrTransport implements Lifecycle private final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); - public SockJsResponseListener(URI url, HttpHeaders headers, XhrClientSockJsSession sockJsSession, SettableListenableFuture connectFuture) { @@ -204,7 +204,6 @@ public class JettyXhrTransport extends AbstractXhrTransport implements Lifecycle this.sockJsSession = sockJsSession; } - @Override public void onBegin(Response response) { if (response.getStatus() != 200) {