From efce7902c40e55d907baaa10b2dc071322e7be11 Mon Sep 17 00:00:00 2001 From: Juergen Hoeller Date: Wed, 27 Sep 2017 01:34:11 +0200 Subject: [PATCH] Polishing --- .../beans/factory/parsing/ReaderContext.java | 2 +- .../cache/jcache/JCacheCache.java | 2 +- .../cache/support/NoOpCache.java | 1 - .../GenericApplicationListenerAdapter.java | 1 - .../jmx/export/naming/KeyNamingStrategy.java | 1 - .../DefaultMessageCodesResolver.java | 4 +-- .../org/springframework/core/io/VfsUtils.java | 2 +- .../common/TemplateAwareExpressionParser.java | 6 ++-- .../spel/ast/FunctionReference.java | 2 +- .../expression/spel/ast/NullLiteral.java | 2 +- .../expression/spel/ast/SpelNodeImpl.java | 8 ++--- .../support/ReflectiveMethodExecutor.java | 1 + .../jms/core/JmsMessagingTemplateTests.java | 2 +- .../converter/ContentTypeResolver.java | 3 +- .../HandlerMethodReturnValueHandler.java | 2 +- .../simp/config/ChannelRegistration.java | 8 +++-- .../messaging/simp/stomp/StompSession.java | 2 ++ .../simp/user/UserDestinationResult.java | 1 + spring-oxm/spring-oxm.gradle | 2 +- .../transaction/TransactionContext.java | 16 +++++---- .../springframework/http/ResponseEntity.java | 3 +- .../InterceptingAsyncClientHttpRequest.java | 4 +-- ...thExtensionContentNegotiationStrategy.java | 2 +- .../context/request/ServletWebRequest.java | 8 ++--- .../web/filter/DelegatingFilterProxy.java | 2 +- .../annotation/SessionAttributesHandler.java | 3 +- .../web/servlet/config/MvcNamespaceUtils.java | 2 +- .../ViewControllerBeanDefinitionParser.java | 8 ++--- .../ViewResolversBeanDefinitionParser.java | 2 +- .../annotation/InterceptorRegistration.java | 33 +++++++++++-------- .../AbstractNameValueExpression.java | 1 + .../mvc/condition/ParamsRequestCondition.java | 4 +-- .../mvc/method/RequestMappingInfo.java | 30 ++++++++--------- .../HttpHeadersReturnValueHandler.java | 2 +- .../RequestMappingHandlerAdapter.java | 4 ++- .../web/servlet/tags/Param.java | 6 ++-- .../web/servlet/tags/UrlTag.java | 1 - .../view/freemarker/FreeMarkerConfig.java | 4 +-- .../HttpEntityMethodProcessorMockTests.java | 1 - ...MvcStompWebSocketEndpointRegistration.java | 3 +- .../ServletServerContainerFactoryBean.java | 8 ++--- .../client/DefaultTransportRequest.java | 4 +-- src/docs/asciidoc/core/core-beans.adoc | 2 +- 43 files changed, 107 insertions(+), 98 deletions(-) diff --git a/spring-beans/src/main/java/org/springframework/beans/factory/parsing/ReaderContext.java b/spring-beans/src/main/java/org/springframework/beans/factory/parsing/ReaderContext.java index 93ebbcc8e8..564053ee06 100644 --- a/spring-beans/src/main/java/org/springframework/beans/factory/parsing/ReaderContext.java +++ b/spring-beans/src/main/java/org/springframework/beans/factory/parsing/ReaderContext.java @@ -91,7 +91,7 @@ public class ReaderContext { } /** - * Raise a fatal error. + * Raise a regular error. */ public void error(String message, @Nullable Object source) { error(message, source, null, null); diff --git a/spring-context-support/src/main/java/org/springframework/cache/jcache/JCacheCache.java b/spring-context-support/src/main/java/org/springframework/cache/jcache/JCacheCache.java index 7dfea6c3ab..54be6d678f 100644 --- a/spring-context-support/src/main/java/org/springframework/cache/jcache/JCacheCache.java +++ b/spring-context-support/src/main/java/org/springframework/cache/jcache/JCacheCache.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2015 the original author or authors. + * Copyright 2002-2017 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-context/src/main/java/org/springframework/cache/support/NoOpCache.java b/spring-context/src/main/java/org/springframework/cache/support/NoOpCache.java index 144f69f8e9..d95bc1b574 100644 --- a/spring-context/src/main/java/org/springframework/cache/support/NoOpCache.java +++ b/spring-context/src/main/java/org/springframework/cache/support/NoOpCache.java @@ -46,7 +46,6 @@ public class NoOpCache implements Cache { } - @Override public String getName() { return this.name; diff --git a/spring-context/src/main/java/org/springframework/context/event/GenericApplicationListenerAdapter.java b/spring-context/src/main/java/org/springframework/context/event/GenericApplicationListenerAdapter.java index 127d24250f..32f9906389 100644 --- a/spring-context/src/main/java/org/springframework/context/event/GenericApplicationListenerAdapter.java +++ b/spring-context/src/main/java/org/springframework/context/event/GenericApplicationListenerAdapter.java @@ -97,7 +97,6 @@ public class GenericApplicationListenerAdapter implements GenericApplicationList ResolvableType declaredEventType = resolveDeclaredEventType(listener.getClass()); if (declaredEventType == null || declaredEventType.isAssignableFrom( ResolvableType.forClass(ApplicationEvent.class))) { - Class targetClass = AopUtils.getTargetClass(listener); if (targetClass != listener.getClass()) { declaredEventType = resolveDeclaredEventType(targetClass); diff --git a/spring-context/src/main/java/org/springframework/jmx/export/naming/KeyNamingStrategy.java b/spring-context/src/main/java/org/springframework/jmx/export/naming/KeyNamingStrategy.java index cd4efba2e4..c57cb2e3b0 100644 --- a/spring-context/src/main/java/org/springframework/jmx/export/naming/KeyNamingStrategy.java +++ b/spring-context/src/main/java/org/springframework/jmx/export/naming/KeyNamingStrategy.java @@ -110,7 +110,6 @@ public class KeyNamingStrategy implements ObjectNamingStrategy, InitializingBean * Merges the {@code Properties} configured in the {@code mappings} and * {@code mappingLocations} into the final {@code Properties} instance * used for {@code ObjectName} resolution. - * @throws IOException */ @Override public void afterPropertiesSet() throws IOException { diff --git a/spring-context/src/main/java/org/springframework/validation/DefaultMessageCodesResolver.java b/spring-context/src/main/java/org/springframework/validation/DefaultMessageCodesResolver.java index b431b89db8..2d37ee4e66 100644 --- a/spring-context/src/main/java/org/springframework/validation/DefaultMessageCodesResolver.java +++ b/spring-context/src/main/java/org/springframework/validation/DefaultMessageCodesResolver.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2016 the original author or authors. + * Copyright 2002-2017 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. @@ -142,7 +142,7 @@ public class DefaultMessageCodesResolver implements MessageCodesResolver, Serial * object/field-specific code, a field-specific code, a plain error code. *

Arrays, Lists and Maps are resolved both for specific elements and * the whole collection. - *

See the {@link DefaultMessageCodesResolver class level Javadoc} for + *

See the {@link DefaultMessageCodesResolver class level javadoc} for * details on the generated codes. * @return the list of codes */ diff --git a/spring-core/src/main/java/org/springframework/core/io/VfsUtils.java b/spring-core/src/main/java/org/springframework/core/io/VfsUtils.java index 813167abd3..dddf8bfd18 100644 --- a/spring-core/src/main/java/org/springframework/core/io/VfsUtils.java +++ b/spring-core/src/main/java/org/springframework/core/io/VfsUtils.java @@ -91,7 +91,7 @@ public abstract class VfsUtils { Class visitorAttributesClass = loader.loadClass(VFS3_PKG + "VisitorAttributes"); VISITOR_ATTRIBUTES_FIELD_RECURSE = visitorAttributesClass.getField("RECURSE"); } - catch (Exception ex) { + catch (Throwable ex) { throw new IllegalStateException("Could not detect JBoss VFS infrastructure", ex); } } diff --git a/spring-expression/src/main/java/org/springframework/expression/common/TemplateAwareExpressionParser.java b/spring-expression/src/main/java/org/springframework/expression/common/TemplateAwareExpressionParser.java index 0e7e1e9139..dbbff571dd 100644 --- a/spring-expression/src/main/java/org/springframework/expression/common/TemplateAwareExpressionParser.java +++ b/spring-expression/src/main/java/org/springframework/expression/common/TemplateAwareExpressionParser.java @@ -90,6 +90,7 @@ public abstract class TemplateAwareExpressionParser implements ExpressionParser String prefix = context.getExpressionPrefix(); String suffix = context.getExpressionSuffix(); int startIdx = 0; + while (startIdx < expressionString.length()) { int prefixIndex = expressionString.indexOf(prefix, startIdx); if (prefixIndex >= startIdx) { @@ -104,22 +105,18 @@ public abstract class TemplateAwareExpressionParser implements ExpressionParser "No ending suffix '" + suffix + "' for expression starting at character " + prefixIndex + ": " + expressionString.substring(prefixIndex)); } - if (suffixIndex == afterPrefixIndex) { throw new ParseException(expressionString, prefixIndex, "No expression defined within delimiter '" + prefix + suffix + "' at character " + prefixIndex); } - String expr = expressionString.substring(prefixIndex + prefix.length(), suffixIndex); expr = expr.trim(); - if (expr.isEmpty()) { throw new ParseException(expressionString, prefixIndex, "No expression defined within delimiter '" + prefix + suffix + "' at character " + prefixIndex); } - expressions.add(doParseExpression(expr, context)); startIdx = suffixIndex + suffix.length(); } @@ -129,6 +126,7 @@ public abstract class TemplateAwareExpressionParser implements ExpressionParser startIdx = expressionString.length(); } } + return expressions.toArray(new Expression[expressions.size()]); } diff --git a/spring-expression/src/main/java/org/springframework/expression/spel/ast/FunctionReference.java b/spring-expression/src/main/java/org/springframework/expression/spel/ast/FunctionReference.java index aa9ff91666..a0b58ab879 100644 --- a/spring-expression/src/main/java/org/springframework/expression/spel/ast/FunctionReference.java +++ b/spring-expression/src/main/java/org/springframework/expression/spel/ast/FunctionReference.java @@ -62,7 +62,7 @@ public class FunctionReference extends SpelNodeImpl { public FunctionReference(String functionName, int pos, SpelNodeImpl... arguments) { - super(pos,arguments); + super(pos, arguments); this.name = functionName; } diff --git a/spring-expression/src/main/java/org/springframework/expression/spel/ast/NullLiteral.java b/spring-expression/src/main/java/org/springframework/expression/spel/ast/NullLiteral.java index 89635ca172..87dcf4f834 100644 --- a/spring-expression/src/main/java/org/springframework/expression/spel/ast/NullLiteral.java +++ b/spring-expression/src/main/java/org/springframework/expression/spel/ast/NullLiteral.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2014 the original author or authors. + * Copyright 2002-2017 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-expression/src/main/java/org/springframework/expression/spel/ast/SpelNodeImpl.java b/spring-expression/src/main/java/org/springframework/expression/spel/ast/SpelNodeImpl.java index f635908a6f..21719576b6 100644 --- a/spring-expression/src/main/java/org/springframework/expression/spel/ast/SpelNodeImpl.java +++ b/spring-expression/src/main/java/org/springframework/expression/spel/ast/SpelNodeImpl.java @@ -196,9 +196,9 @@ public abstract class SpelNodeImpl implements SpelNode, Opcodes { /** - * Generate code that handles building the argument values for the specified method. This method will take account - * of whether the invoked method is a varargs method and if it is then the argument values will be appropriately - * packaged into an array. + * Generate code that handles building the argument values for the specified method. + * This method will take account of whether the invoked method is a varargs method + * and if it is then the argument values will be appropriately packaged into an array. * @param mv the method visitor where code should be generated * @param cf the current codeflow * @param member the method or constructor for which arguments are being setup @@ -208,7 +208,7 @@ public abstract class SpelNodeImpl implements SpelNode, Opcodes { String[] paramDescriptors = null; boolean isVarargs = false; if (member instanceof Constructor) { - Constructor ctor = (Constructor)member; + Constructor ctor = (Constructor) member; paramDescriptors = CodeFlow.toDescriptors(ctor.getParameterTypes()); isVarargs = ctor.isVarArgs(); } diff --git a/spring-expression/src/main/java/org/springframework/expression/spel/support/ReflectiveMethodExecutor.java b/spring-expression/src/main/java/org/springframework/expression/spel/support/ReflectiveMethodExecutor.java index a7f1a18451..b125535ce6 100644 --- a/spring-expression/src/main/java/org/springframework/expression/spel/support/ReflectiveMethodExecutor.java +++ b/spring-expression/src/main/java/org/springframework/expression/spel/support/ReflectiveMethodExecutor.java @@ -59,6 +59,7 @@ public class ReflectiveMethodExecutor implements MethodExecutor { } } + public Method getMethod() { return this.method; } diff --git a/spring-jms/src/test/java/org/springframework/jms/core/JmsMessagingTemplateTests.java b/spring-jms/src/test/java/org/springframework/jms/core/JmsMessagingTemplateTests.java index c1097c0ab1..21c0a0c061 100644 --- a/spring-jms/src/test/java/org/springframework/jms/core/JmsMessagingTemplateTests.java +++ b/spring-jms/src/test/java/org/springframework/jms/core/JmsMessagingTemplateTests.java @@ -56,7 +56,7 @@ import static org.mockito.BDDMockito.*; /** * Tests for {@link JmsMessagingTemplate}. - * + * * @author Stephane Nicoll */ public class JmsMessagingTemplateTests { diff --git a/spring-messaging/src/main/java/org/springframework/messaging/converter/ContentTypeResolver.java b/spring-messaging/src/main/java/org/springframework/messaging/converter/ContentTypeResolver.java index e75df74e55..2767600570 100644 --- a/spring-messaging/src/main/java/org/springframework/messaging/converter/ContentTypeResolver.java +++ b/spring-messaging/src/main/java/org/springframework/messaging/converter/ContentTypeResolver.java @@ -34,8 +34,7 @@ public interface ContentTypeResolver { * Determine the {@link MimeType} of a message from the given MessageHeaders. * @param headers the headers to use for the resolution * @return the resolved {@code MimeType}, or {@code null} if none found - * @throws org.springframework.util.InvalidMimeTypeException if the content type - * is a String that cannot be parsed + * @throws InvalidMimeTypeException if the content type is a String that cannot be parsed * @throws IllegalArgumentException if there is a content type but its type is unknown */ @Nullable diff --git a/spring-messaging/src/main/java/org/springframework/messaging/handler/invocation/HandlerMethodReturnValueHandler.java b/spring-messaging/src/main/java/org/springframework/messaging/handler/invocation/HandlerMethodReturnValueHandler.java index fb11125c74..cf71cacdb7 100644 --- a/spring-messaging/src/main/java/org/springframework/messaging/handler/invocation/HandlerMethodReturnValueHandler.java +++ b/spring-messaging/src/main/java/org/springframework/messaging/handler/invocation/HandlerMethodReturnValueHandler.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2013 the original author or authors. + * Copyright 2002-2017 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-messaging/src/main/java/org/springframework/messaging/simp/config/ChannelRegistration.java b/spring-messaging/src/main/java/org/springframework/messaging/simp/config/ChannelRegistration.java index 7cb9f095cd..2b6de1d36a 100644 --- a/spring-messaging/src/main/java/org/springframework/messaging/simp/config/ChannelRegistration.java +++ b/spring-messaging/src/main/java/org/springframework/messaging/simp/config/ChannelRegistration.java @@ -70,11 +70,15 @@ public class ChannelRegistration { } /** + * Configure interceptors for the message channel. * @deprecated as of 4.3.12, in favor of {@link #interceptors(ChannelInterceptor...)} */ @Deprecated - public ChannelRegistration setInterceptors(ChannelInterceptor... interceptors) { - return interceptors(interceptors); + public ChannelRegistration setInterceptors(@Nullable ChannelInterceptor... interceptors) { + if (interceptors != null) { + this.interceptors.addAll(Arrays.asList(interceptors)); + } + return this; } diff --git a/spring-messaging/src/main/java/org/springframework/messaging/simp/stomp/StompSession.java b/spring-messaging/src/main/java/org/springframework/messaging/simp/stomp/StompSession.java index 8a2a26c239..9e854c8652 100644 --- a/spring-messaging/src/main/java/org/springframework/messaging/simp/stomp/StompSession.java +++ b/spring-messaging/src/main/java/org/springframework/messaging/simp/stomp/StompSession.java @@ -148,6 +148,7 @@ public interface StompSession { /** * Return the headers used on the SUBSCRIBE frame. + * @since 5.0 */ StompHeaders getSubscriptionHeaders(); @@ -160,6 +161,7 @@ public interface StompSession { * Alternative to {@link #unsubscribe()} with additional custom headers * to send to the server. *

Note: There is no need to set the subscription id. + * @since 5.0 */ void unsubscribe(@Nullable StompHeaders stompHeaders); } diff --git a/spring-messaging/src/main/java/org/springframework/messaging/simp/user/UserDestinationResult.java b/spring-messaging/src/main/java/org/springframework/messaging/simp/user/UserDestinationResult.java index 0e1680d152..19e6cb4f5b 100644 --- a/spring-messaging/src/main/java/org/springframework/messaging/simp/user/UserDestinationResult.java +++ b/spring-messaging/src/main/java/org/springframework/messaging/simp/user/UserDestinationResult.java @@ -102,4 +102,5 @@ public class UserDestinationResult { return "UserDestinationResult [source=" + this.sourceDestination + ", target=" + this.targetDestinations + ", subscribeDestination=" + this.subscribeDestination + ", user=" + this.user + "]"; } + } diff --git a/spring-oxm/spring-oxm.gradle b/spring-oxm/spring-oxm.gradle index afa0760259..63948e4afc 100644 --- a/spring-oxm/spring-oxm.gradle +++ b/spring-oxm/spring-oxm.gradle @@ -2,8 +2,8 @@ description = "Spring Object/XML Marshalling" configurations { castor - xjc jibx + xjc } dependencies { diff --git a/spring-test/src/main/java/org/springframework/test/context/transaction/TransactionContext.java b/spring-test/src/main/java/org/springframework/test/context/transaction/TransactionContext.java index 8dba93e8b9..5b41da14fb 100644 --- a/spring-test/src/main/java/org/springframework/test/context/transaction/TransactionContext.java +++ b/spring-test/src/main/java/org/springframework/test/context/transaction/TransactionContext.java @@ -96,13 +96,15 @@ class TransactionContext { void startTransaction() { Assert.state(this.transactionStatus == null, "Cannot start a new transaction without ending the existing transaction first."); + this.flaggedForRollback = this.defaultRollback; this.transactionStatus = this.transactionManager.getTransaction(this.transactionDefinition); ++this.transactionsStarted; + if (logger.isInfoEnabled()) { logger.info(String.format( - "Began transaction (%s) for test context %s; transaction manager [%s]; rollback [%s]", - this.transactionsStarted, this.testContext, this.transactionManager, flaggedForRollback)); + "Began transaction (%s) for test context %s; transaction manager [%s]; rollback [%s]", + this.transactionsStarted, this.testContext, this.transactionManager, flaggedForRollback)); } } @@ -113,14 +115,14 @@ class TransactionContext { void endTransaction() { if (logger.isTraceEnabled()) { logger.trace(String.format( - "Ending transaction for test context %s; transaction status [%s]; rollback [%s]", this.testContext, - this.transactionStatus, flaggedForRollback)); + "Ending transaction for test context %s; transaction status [%s]; rollback [%s]", + this.testContext, this.transactionStatus, this.flaggedForRollback)); } Assert.state(this.transactionStatus != null, () -> String.format( "Failed to end transaction for test context %s: transaction does not exist.", this.testContext)); try { - if (flaggedForRollback) { + if (this.flaggedForRollback) { this.transactionManager.rollback(this.transactionStatus); } else { @@ -132,8 +134,8 @@ class TransactionContext { } if (logger.isInfoEnabled()) { - logger.info(String.format("%s transaction for test context %s.", (flaggedForRollback ? "Rolled back" - : "Committed"), this.testContext)); + logger.info(String.format("%s transaction for test context %s.", + (this.flaggedForRollback ? "Rolled back" : "Committed"), this.testContext)); } } diff --git a/spring-web/src/main/java/org/springframework/http/ResponseEntity.java b/spring-web/src/main/java/org/springframework/http/ResponseEntity.java index 81d91cff08..aac6acb9c5 100644 --- a/spring-web/src/main/java/org/springframework/http/ResponseEntity.java +++ b/spring-web/src/main/java/org/springframework/http/ResponseEntity.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2016 the original author or authors. + * Copyright 2002-2017 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. @@ -51,6 +51,7 @@ import org.springframework.util.ObjectUtils; * return new ResponseEntity<String>("Hello World", responseHeaders, HttpStatus.CREATED); * } * + * * Or, by using a builder accessible via static methods: *

  * @RequestMapping("/handle")
diff --git a/spring-web/src/main/java/org/springframework/http/client/InterceptingAsyncClientHttpRequest.java b/spring-web/src/main/java/org/springframework/http/client/InterceptingAsyncClientHttpRequest.java
index a45d4165b3..125533d6f7 100644
--- a/spring-web/src/main/java/org/springframework/http/client/InterceptingAsyncClientHttpRequest.java
+++ b/spring-web/src/main/java/org/springframework/http/client/InterceptingAsyncClientHttpRequest.java
@@ -106,12 +106,12 @@ class InterceptingAsyncClientHttpRequest extends AbstractBufferingAsyncClientHtt
 				return interceptor.intercept(request, body, this);
 			}
 			else {
-				URI theUri = request.getURI();
+				URI uri = request.getURI();
 				HttpMethod method = request.getMethod();
 				HttpHeaders headers = request.getHeaders();
 
 				Assert.state(method != null, "No standard HTTP method");
-				AsyncClientHttpRequest delegate = requestFactory.createAsyncRequest(theUri, method);
+				AsyncClientHttpRequest delegate = requestFactory.createAsyncRequest(uri, method);
 				delegate.getHeaders().putAll(headers);
 				if (body.length > 0) {
 					StreamUtils.copy(body, delegate.getBody());
diff --git a/spring-web/src/main/java/org/springframework/web/accept/ServletPathExtensionContentNegotiationStrategy.java b/spring-web/src/main/java/org/springframework/web/accept/ServletPathExtensionContentNegotiationStrategy.java
index 9ccf4dbea2..ce172ad302 100644
--- a/spring-web/src/main/java/org/springframework/web/accept/ServletPathExtensionContentNegotiationStrategy.java
+++ b/spring-web/src/main/java/org/springframework/web/accept/ServletPathExtensionContentNegotiationStrategy.java
@@ -90,7 +90,7 @@ public class ServletPathExtensionContentNegotiationStrategy extends PathExtensio
 	 * {@link PathExtensionContentNegotiationStrategy#getMediaTypeForResource}
 	 * with the ability to also look up through the ServletContext.
 	 * @param resource the resource to look up
-	 * @return the MediaType for the extension or {@code null}.
+	 * @return the MediaType for the extension, or {@code null} if none found
 	 * @since 4.3
 	 */
 	@Override
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 0161000aac..9d2bcdde7b 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
@@ -289,11 +289,11 @@ public class ServletWebRequest extends ServletRequestAttributes implements Nativ
 		etag = padEtagIfNecessary(etag);
 		while (ifNoneMatch.hasMoreElements()) {
 			String clientETags = ifNoneMatch.nextElement();
-			Matcher eTagMatcher = ETAG_HEADER_VALUE_PATTERN.matcher(clientETags);
+			Matcher etagMatcher = ETAG_HEADER_VALUE_PATTERN.matcher(clientETags);
 			// Compare weak/strong ETags as per https://tools.ietf.org/html/rfc7232#section-2.3
-			while (eTagMatcher.find()) {
-				if (StringUtils.hasLength(eTagMatcher.group()) &&
-						etag.replaceFirst("^W/", "").equals(eTagMatcher.group(3))) {
+			while (etagMatcher.find()) {
+				if (StringUtils.hasLength(etagMatcher.group()) &&
+						etag.replaceFirst("^W/", "").equals(etagMatcher.group(3))) {
 					this.notModified = true;
 					break;
 				}
diff --git a/spring-web/src/main/java/org/springframework/web/filter/DelegatingFilterProxy.java b/spring-web/src/main/java/org/springframework/web/filter/DelegatingFilterProxy.java
index d476c70fb5..5d23ec1235 100644
--- a/spring-web/src/main/java/org/springframework/web/filter/DelegatingFilterProxy.java
+++ b/spring-web/src/main/java/org/springframework/web/filter/DelegatingFilterProxy.java
@@ -162,7 +162,7 @@ public class DelegatingFilterProxy extends GenericFilterBean {
 	 * @see #setEnvironment(org.springframework.core.env.Environment)
 	 */
 	public DelegatingFilterProxy(String targetBeanName, @Nullable WebApplicationContext wac) {
-		Assert.hasText(targetBeanName, "target Filter bean name must not be null or empty");
+		Assert.hasText(targetBeanName, "Target Filter bean name must not be null or empty");
 		this.setTargetBeanName(targetBeanName);
 		this.webApplicationContext = wac;
 		if (wac != null) {
diff --git a/spring-web/src/main/java/org/springframework/web/method/annotation/SessionAttributesHandler.java b/spring-web/src/main/java/org/springframework/web/method/annotation/SessionAttributesHandler.java
index 500ba2c93e..96c5323c39 100644
--- a/spring-web/src/main/java/org/springframework/web/method/annotation/SessionAttributesHandler.java
+++ b/spring-web/src/main/java/org/springframework/web/method/annotation/SessionAttributesHandler.java
@@ -44,6 +44,7 @@ import org.springframework.web.context.request.WebRequest;
  * {@link SessionStatus#setComplete()}.
  *
  * @author Rossen Stoyanchev
+ * @author Juergen Hoeller
  * @since 3.1
  */
 public class SessionAttributesHandler {
@@ -154,7 +155,7 @@ public class SessionAttributesHandler {
 	 * A pass-through call to the underlying {@link SessionAttributeStore}.
 	 * @param request the current request
 	 * @param attributeName the name of the attribute of interest
-	 * @return the attribute value or {@code null}
+	 * @return the attribute value, or {@code null} if none
 	 */
 	@Nullable
 	Object retrieveAttribute(WebRequest request, String attributeName) {
diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/config/MvcNamespaceUtils.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/config/MvcNamespaceUtils.java
index 41d2838130..3222253e33 100644
--- a/spring-webmvc/src/main/java/org/springframework/web/servlet/config/MvcNamespaceUtils.java
+++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/config/MvcNamespaceUtils.java
@@ -189,7 +189,7 @@ abstract class MvcNamespaceUtils {
 	/**
 	 * Find the {@code ContentNegotiationManager} bean created by or registered
 	 * with the {@code annotation-driven} element.
-	 * @return a bean definition, bean reference, or null.
+	 * @return a bean definition, bean reference, or {@code null}
 	 */
 	@Nullable
 	public static Object getContentNegotiationManager(ParserContext context) {
diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/config/ViewControllerBeanDefinitionParser.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/config/ViewControllerBeanDefinitionParser.java
index 5dd22c7d76..5c27570615 100644
--- a/spring-webmvc/src/main/java/org/springframework/web/servlet/config/ViewControllerBeanDefinitionParser.java
+++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/config/ViewControllerBeanDefinitionParser.java
@@ -37,9 +37,9 @@ import org.springframework.web.servlet.view.RedirectView;
  * {@link org.springframework.beans.factory.xml.BeanDefinitionParser} that
  * parses the following MVC namespace elements:
  * 
  *
  * 

All elements result in the registration of a @@ -56,7 +56,7 @@ import org.springframework.web.servlet.view.RedirectView; class ViewControllerBeanDefinitionParser implements BeanDefinitionParser { private static final String HANDLER_MAPPING_BEAN_NAME = - "org.springframework.web.servlet.config.viewControllerHandlerMapping"; + "org.springframework.web.servlet.config.viewControllerHandlerMapping"; @Override diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/config/ViewResolversBeanDefinitionParser.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/config/ViewResolversBeanDefinitionParser.java index 4e2ab4bbf0..d5009b9e94 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/config/ViewResolversBeanDefinitionParser.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/config/ViewResolversBeanDefinitionParser.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2016 the original author or authors. + * Copyright 2002-2017 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-webmvc/src/main/java/org/springframework/web/servlet/config/annotation/InterceptorRegistration.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/config/annotation/InterceptorRegistration.java index b11e76e36a..23109bdf03 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/config/annotation/InterceptorRegistration.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/config/annotation/InterceptorRegistration.java @@ -42,11 +42,11 @@ public class InterceptorRegistration { private final List excludePatterns = new ArrayList<>(); - private int order = 0; - @Nullable private PathMatcher pathMatcher; + private int order = 0; + /** * Creates an {@link InterceptorRegistration} instance. @@ -72,18 +72,6 @@ public class InterceptorRegistration { return this; } - /** - * An order position to be used, default is 0. - */ - public InterceptorRegistration order(int order){ - this.order = order; - return this; - } - - protected int getOrder() { - return this.order; - } - /** * A PathMatcher implementation to use with this interceptor. This is an optional, * advanced property required only if using custom PathMatcher implementations @@ -95,6 +83,23 @@ public class InterceptorRegistration { return this; } + /** + * Specify an order position to be used. Default is 0. + * @since 5.0 + */ + public InterceptorRegistration order(int order){ + this.order = order; + return this; + } + + /** + * Return the order position to be used. + * @since 5.0 + */ + protected int getOrder() { + return this.order; + } + /** * Returns the underlying interceptor. If URL patterns are provided the returned type is * {@link MappedInterceptor}; otherwise {@link HandlerInterceptor}. diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/condition/AbstractNameValueExpression.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/condition/AbstractNameValueExpression.java index b9c489120b..5776b9e296 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/condition/AbstractNameValueExpression.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/condition/AbstractNameValueExpression.java @@ -134,4 +134,5 @@ abstract class AbstractNameValueExpression implements NameValueExpression } return builder.toString(); } + } diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/condition/ParamsRequestCondition.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/condition/ParamsRequestCondition.java index 9d24c7aa0d..bf26850495 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/condition/ParamsRequestCondition.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/condition/ParamsRequestCondition.java @@ -144,8 +144,8 @@ public final class ParamsRequestCondition extends AbstractRequestCondition getCustomCondition() { @@ -170,7 +170,7 @@ public final class RequestMappingInfo implements RequestConditionExample: combine type- and method-level request mappings. * @return a new request mapping info instance; never {@code null} */ @@ -199,7 +199,7 @@ public final class RequestMappingInfo implements RequestCondition getInitBinderArgumentResolvers() { - return (this.initBinderArgumentResolvers != null) ? this.initBinderArgumentResolvers.getResolvers() : null; + return (this.initBinderArgumentResolvers != null ? this.initBinderArgumentResolvers.getResolvers() : null); } /** @@ -427,6 +427,7 @@ public class RequestMappingHandlerAdapter extends AbstractHandlerMethodAdapter /** * Configure the registry for reactive library types to be supported as * return values from controller methods. + * @since 5.0 */ public void setReactiveRegistry(ReactiveAdapterRegistry reactiveRegistry) { Assert.notNull(reactiveRegistry, "ReactiveAdapterRegistry is required"); @@ -435,6 +436,7 @@ public class RequestMappingHandlerAdapter extends AbstractHandlerMethodAdapter /** * Return the configured reactive type registry of adapters. + * @since 5.0 */ public ReactiveAdapterRegistry getReactiveAdapterRegistry() { return this.reactiveRegistry; diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/tags/Param.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/tags/Param.java index cdb695ccb8..7242c2220e 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/tags/Param.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/tags/Param.java @@ -39,7 +39,7 @@ public class Param { /** - * Set the raw name of the parameter + * Set the raw name of the parameter. */ public void setName(@Nullable String name) { this.name = name; @@ -54,14 +54,14 @@ public class Param { } /** - * Set the raw value of the parameter + * Set the raw value of the parameter. */ public void setValue(@Nullable String value) { this.value = value; } /** - * Return the raw parameter value + * Return the raw parameter value. */ @Nullable public String getValue() { 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 150c0ba2d6..1c8f7b6bec 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 @@ -203,7 +203,6 @@ public class UrlTag extends HtmlEscapingAwareTag implements ParamAware { /** * Build the URL for the tag from the tag attributes and parameters. * @return the URL value as a String - * @throws JspException */ String createUrl() throws JspException { Assert.state(this.value != null, "No value set"); diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/view/freemarker/FreeMarkerConfig.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/view/freemarker/FreeMarkerConfig.java index 7ec7ec6565..00b0be6392 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/view/freemarker/FreeMarkerConfig.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/view/freemarker/FreeMarkerConfig.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2009 the original author or authors. + * Copyright 2002-2017 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. @@ -33,7 +33,7 @@ import freemarker.template.Configuration; public interface FreeMarkerConfig { /** - * Return the FreeMarker Configuration object for the current + * Return the FreeMarker {@link Configuration} object for the current * web application context. *

A FreeMarker Configuration object may be used to set FreeMarker * properties and shared objects, and allows to retrieve templates. diff --git a/spring-webmvc/src/test/java/org/springframework/web/servlet/mvc/method/annotation/HttpEntityMethodProcessorMockTests.java b/spring-webmvc/src/test/java/org/springframework/web/servlet/mvc/method/annotation/HttpEntityMethodProcessorMockTests.java index 417b3f11aa..aa78493f46 100644 --- a/spring-webmvc/src/test/java/org/springframework/web/servlet/mvc/method/annotation/HttpEntityMethodProcessorMockTests.java +++ b/spring-webmvc/src/test/java/org/springframework/web/servlet/mvc/method/annotation/HttpEntityMethodProcessorMockTests.java @@ -115,7 +115,6 @@ public class HttpEntityMethodProcessorMockTests { @Before @SuppressWarnings("unchecked") public void setup() throws Exception { - stringHttpMessageConverter = mock(HttpMessageConverter.class); given(stringHttpMessageConverter.getSupportedMediaTypes()).willReturn(Collections.singletonList(MediaType.TEXT_PLAIN)); resourceMessageConverter = mock(HttpMessageConverter.class); diff --git a/spring-websocket/src/main/java/org/springframework/web/socket/config/annotation/WebMvcStompWebSocketEndpointRegistration.java b/spring-websocket/src/main/java/org/springframework/web/socket/config/annotation/WebMvcStompWebSocketEndpointRegistration.java index ff5b0e7d68..ec87c3044e 100644 --- a/spring-websocket/src/main/java/org/springframework/web/socket/config/annotation/WebMvcStompWebSocketEndpointRegistration.java +++ b/spring-websocket/src/main/java/org/springframework/web/socket/config/annotation/WebMvcStompWebSocketEndpointRegistration.java @@ -110,8 +110,7 @@ public class WebMvcStompWebSocketEndpointRegistration implements StompWebSocketE this.registration.setTransportHandlerOverrides(handler); } if (!this.allowedOrigins.isEmpty()) { - this.registration.setAllowedOrigins( - this.allowedOrigins.toArray(new String[this.allowedOrigins.size()])); + this.registration.setAllowedOrigins(this.allowedOrigins.toArray(new String[this.allowedOrigins.size()])); } return this.registration; } diff --git a/spring-websocket/src/main/java/org/springframework/web/socket/server/standard/ServletServerContainerFactoryBean.java b/spring-websocket/src/main/java/org/springframework/web/socket/server/standard/ServletServerContainerFactoryBean.java index 25fcf70431..00f75c6f2d 100644 --- a/spring-websocket/src/main/java/org/springframework/web/socket/server/standard/ServletServerContainerFactoryBean.java +++ b/spring-websocket/src/main/java/org/springframework/web/socket/server/standard/ServletServerContainerFactoryBean.java @@ -66,7 +66,7 @@ public class ServletServerContainerFactoryBean private ServerContainer serverContainer; - public void setAsyncSendTimeout(long timeoutInMillis) { + public void setAsyncSendTimeout(Long timeoutInMillis) { this.asyncSendTimeout = timeoutInMillis; } @@ -75,7 +75,7 @@ public class ServletServerContainerFactoryBean return this.asyncSendTimeout; } - public void setMaxSessionIdleTimeout(long timeoutInMillis) { + public void setMaxSessionIdleTimeout(Long timeoutInMillis) { this.maxSessionIdleTimeout = timeoutInMillis; } @@ -84,7 +84,7 @@ public class ServletServerContainerFactoryBean return this.maxSessionIdleTimeout; } - public void setMaxTextMessageBufferSize(int bufferSize) { + public void setMaxTextMessageBufferSize(Integer bufferSize) { this.maxTextMessageBufferSize = bufferSize; } @@ -93,7 +93,7 @@ public class ServletServerContainerFactoryBean return this.maxTextMessageBufferSize; } - public void setMaxBinaryMessageBufferSize(int bufferSize) { + public void setMaxBinaryMessageBufferSize(Integer bufferSize) { this.maxBinaryMessageBufferSize = bufferSize; } diff --git a/spring-websocket/src/main/java/org/springframework/web/socket/sockjs/client/DefaultTransportRequest.java b/spring-websocket/src/main/java/org/springframework/web/socket/sockjs/client/DefaultTransportRequest.java index ff0ffb6ca4..317d8ab9fc 100644 --- a/spring-websocket/src/main/java/org/springframework/web/socket/sockjs/client/DefaultTransportRequest.java +++ b/spring-websocket/src/main/java/org/springframework/web/socket/sockjs/client/DefaultTransportRequest.java @@ -226,9 +226,7 @@ class DefaultTransportRequest implements TransportRequest { fallbackRequest.connect(this.handler, this.future); } else { - if (logger.isErrorEnabled()) { - logger.error("No more fallback transports after " + DefaultTransportRequest.this, ex); - } + logger.error("No more fallback transports after " + DefaultTransportRequest.this, ex); if (ex != null) { this.future.setException(ex); } diff --git a/src/docs/asciidoc/core/core-beans.adoc b/src/docs/asciidoc/core/core-beans.adoc index d4dc591642..e20b9c03ac 100644 --- a/src/docs/asciidoc/core/core-beans.adoc +++ b/src/docs/asciidoc/core/core-beans.adoc @@ -7951,7 +7951,7 @@ Alternatively for XML configuration use the `context:load-time-weaver` element: Once configured for the `ApplicationContext`. Any bean within that `ApplicationContext` may implement `LoadTimeWeaverAware`, thereby receiving a reference to the load-time weaver instance. This is particularly useful in combination with -<> where load-time weaving may be necessary +<> where load-time weaving may be necessary for JPA class transformation. Consult the `LocalContainerEntityManagerFactoryBean` javadocs for more detail. For more on AspectJ load-time weaving, see <>. -- GitLab