Polishing

This commit is contained in:
Juergen Hoeller 2017-09-27 01:34:11 +02:00
parent a4b2ae583e
commit efce7902c4
43 changed files with 107 additions and 98 deletions

View File

@ -91,7 +91,7 @@ public class ReaderContext {
} }
/** /**
* Raise a fatal error. * Raise a regular error.
*/ */
public void error(String message, @Nullable Object source) { public void error(String message, @Nullable Object source) {
error(message, source, null, null); error(message, source, null, null);

View File

@ -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"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.

View File

@ -46,7 +46,6 @@ public class NoOpCache implements Cache {
} }
@Override @Override
public String getName() { public String getName() {
return this.name; return this.name;

View File

@ -97,7 +97,6 @@ public class GenericApplicationListenerAdapter implements GenericApplicationList
ResolvableType declaredEventType = resolveDeclaredEventType(listener.getClass()); ResolvableType declaredEventType = resolveDeclaredEventType(listener.getClass());
if (declaredEventType == null || declaredEventType.isAssignableFrom( if (declaredEventType == null || declaredEventType.isAssignableFrom(
ResolvableType.forClass(ApplicationEvent.class))) { ResolvableType.forClass(ApplicationEvent.class))) {
Class<?> targetClass = AopUtils.getTargetClass(listener); Class<?> targetClass = AopUtils.getTargetClass(listener);
if (targetClass != listener.getClass()) { if (targetClass != listener.getClass()) {
declaredEventType = resolveDeclaredEventType(targetClass); declaredEventType = resolveDeclaredEventType(targetClass);

View File

@ -110,7 +110,6 @@ public class KeyNamingStrategy implements ObjectNamingStrategy, InitializingBean
* Merges the {@code Properties} configured in the {@code mappings} and * Merges the {@code Properties} configured in the {@code mappings} and
* {@code mappingLocations} into the final {@code Properties} instance * {@code mappingLocations} into the final {@code Properties} instance
* used for {@code ObjectName} resolution. * used for {@code ObjectName} resolution.
* @throws IOException
*/ */
@Override @Override
public void afterPropertiesSet() throws IOException { public void afterPropertiesSet() throws IOException {

View File

@ -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"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
@ -142,7 +142,7 @@ public class DefaultMessageCodesResolver implements MessageCodesResolver, Serial
* object/field-specific code, a field-specific code, a plain error code. * object/field-specific code, a field-specific code, a plain error code.
* <p>Arrays, Lists and Maps are resolved both for specific elements and * <p>Arrays, Lists and Maps are resolved both for specific elements and
* the whole collection. * the whole collection.
* <p>See the {@link DefaultMessageCodesResolver class level Javadoc} for * <p>See the {@link DefaultMessageCodesResolver class level javadoc} for
* details on the generated codes. * details on the generated codes.
* @return the list of codes * @return the list of codes
*/ */

View File

@ -91,7 +91,7 @@ public abstract class VfsUtils {
Class<?> visitorAttributesClass = loader.loadClass(VFS3_PKG + "VisitorAttributes"); Class<?> visitorAttributesClass = loader.loadClass(VFS3_PKG + "VisitorAttributes");
VISITOR_ATTRIBUTES_FIELD_RECURSE = visitorAttributesClass.getField("RECURSE"); VISITOR_ATTRIBUTES_FIELD_RECURSE = visitorAttributesClass.getField("RECURSE");
} }
catch (Exception ex) { catch (Throwable ex) {
throw new IllegalStateException("Could not detect JBoss VFS infrastructure", ex); throw new IllegalStateException("Could not detect JBoss VFS infrastructure", ex);
} }
} }

View File

@ -90,6 +90,7 @@ public abstract class TemplateAwareExpressionParser implements ExpressionParser
String prefix = context.getExpressionPrefix(); String prefix = context.getExpressionPrefix();
String suffix = context.getExpressionSuffix(); String suffix = context.getExpressionSuffix();
int startIdx = 0; int startIdx = 0;
while (startIdx < expressionString.length()) { while (startIdx < expressionString.length()) {
int prefixIndex = expressionString.indexOf(prefix, startIdx); int prefixIndex = expressionString.indexOf(prefix, startIdx);
if (prefixIndex >= startIdx) { if (prefixIndex >= startIdx) {
@ -104,22 +105,18 @@ public abstract class TemplateAwareExpressionParser implements ExpressionParser
"No ending suffix '" + suffix + "' for expression starting at character " + "No ending suffix '" + suffix + "' for expression starting at character " +
prefixIndex + ": " + expressionString.substring(prefixIndex)); prefixIndex + ": " + expressionString.substring(prefixIndex));
} }
if (suffixIndex == afterPrefixIndex) { if (suffixIndex == afterPrefixIndex) {
throw new ParseException(expressionString, prefixIndex, throw new ParseException(expressionString, prefixIndex,
"No expression defined within delimiter '" + prefix + suffix + "No expression defined within delimiter '" + prefix + suffix +
"' at character " + prefixIndex); "' at character " + prefixIndex);
} }
String expr = expressionString.substring(prefixIndex + prefix.length(), suffixIndex); String expr = expressionString.substring(prefixIndex + prefix.length(), suffixIndex);
expr = expr.trim(); expr = expr.trim();
if (expr.isEmpty()) { if (expr.isEmpty()) {
throw new ParseException(expressionString, prefixIndex, throw new ParseException(expressionString, prefixIndex,
"No expression defined within delimiter '" + prefix + suffix + "No expression defined within delimiter '" + prefix + suffix +
"' at character " + prefixIndex); "' at character " + prefixIndex);
} }
expressions.add(doParseExpression(expr, context)); expressions.add(doParseExpression(expr, context));
startIdx = suffixIndex + suffix.length(); startIdx = suffixIndex + suffix.length();
} }
@ -129,6 +126,7 @@ public abstract class TemplateAwareExpressionParser implements ExpressionParser
startIdx = expressionString.length(); startIdx = expressionString.length();
} }
} }
return expressions.toArray(new Expression[expressions.size()]); return expressions.toArray(new Expression[expressions.size()]);
} }

View File

@ -62,7 +62,7 @@ public class FunctionReference extends SpelNodeImpl {
public FunctionReference(String functionName, int pos, SpelNodeImpl... arguments) { public FunctionReference(String functionName, int pos, SpelNodeImpl... arguments) {
super(pos,arguments); super(pos, arguments);
this.name = functionName; this.name = functionName;
} }

View File

@ -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"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.

View File

@ -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 * Generate code that handles building the argument values for the specified method.
* of whether the invoked method is a varargs method and if it is then the argument values will be appropriately * This method will take account of whether the invoked method is a varargs method
* packaged into an array. * 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 mv the method visitor where code should be generated
* @param cf the current codeflow * @param cf the current codeflow
* @param member the method or constructor for which arguments are being setup * @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; String[] paramDescriptors = null;
boolean isVarargs = false; boolean isVarargs = false;
if (member instanceof Constructor) { if (member instanceof Constructor) {
Constructor<?> ctor = (Constructor<?>)member; Constructor<?> ctor = (Constructor<?>) member;
paramDescriptors = CodeFlow.toDescriptors(ctor.getParameterTypes()); paramDescriptors = CodeFlow.toDescriptors(ctor.getParameterTypes());
isVarargs = ctor.isVarArgs(); isVarargs = ctor.isVarArgs();
} }

View File

@ -59,6 +59,7 @@ public class ReflectiveMethodExecutor implements MethodExecutor {
} }
} }
public Method getMethod() { public Method getMethod() {
return this.method; return this.method;
} }

View File

@ -56,7 +56,7 @@ import static org.mockito.BDDMockito.*;
/** /**
* Tests for {@link JmsMessagingTemplate}. * Tests for {@link JmsMessagingTemplate}.
* *
* @author Stephane Nicoll * @author Stephane Nicoll
*/ */
public class JmsMessagingTemplateTests { public class JmsMessagingTemplateTests {

View File

@ -34,8 +34,7 @@ public interface ContentTypeResolver {
* Determine the {@link MimeType} of a message from the given MessageHeaders. * Determine the {@link MimeType} of a message from the given MessageHeaders.
* @param headers the headers to use for the resolution * @param headers the headers to use for the resolution
* @return the resolved {@code MimeType}, or {@code null} if none found * @return the resolved {@code MimeType}, or {@code null} if none found
* @throws org.springframework.util.InvalidMimeTypeException if the content type * @throws InvalidMimeTypeException if the content type is a String that cannot be parsed
* is a String that cannot be parsed
* @throws IllegalArgumentException if there is a content type but its type is unknown * @throws IllegalArgumentException if there is a content type but its type is unknown
*/ */
@Nullable @Nullable

View File

@ -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"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.

View File

@ -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 as of 4.3.12, in favor of {@link #interceptors(ChannelInterceptor...)}
*/ */
@Deprecated @Deprecated
public ChannelRegistration setInterceptors(ChannelInterceptor... interceptors) { public ChannelRegistration setInterceptors(@Nullable ChannelInterceptor... interceptors) {
return interceptors(interceptors); if (interceptors != null) {
this.interceptors.addAll(Arrays.asList(interceptors));
}
return this;
} }

View File

@ -148,6 +148,7 @@ public interface StompSession {
/** /**
* Return the headers used on the SUBSCRIBE frame. * Return the headers used on the SUBSCRIBE frame.
* @since 5.0
*/ */
StompHeaders getSubscriptionHeaders(); StompHeaders getSubscriptionHeaders();
@ -160,6 +161,7 @@ public interface StompSession {
* Alternative to {@link #unsubscribe()} with additional custom headers * Alternative to {@link #unsubscribe()} with additional custom headers
* to send to the server. * to send to the server.
* <p><strong>Note:</strong> There is no need to set the subscription id. * <p><strong>Note:</strong> There is no need to set the subscription id.
* @since 5.0
*/ */
void unsubscribe(@Nullable StompHeaders stompHeaders); void unsubscribe(@Nullable StompHeaders stompHeaders);
} }

View File

@ -102,4 +102,5 @@ public class UserDestinationResult {
return "UserDestinationResult [source=" + this.sourceDestination + ", target=" + this.targetDestinations + return "UserDestinationResult [source=" + this.sourceDestination + ", target=" + this.targetDestinations +
", subscribeDestination=" + this.subscribeDestination + ", user=" + this.user + "]"; ", subscribeDestination=" + this.subscribeDestination + ", user=" + this.user + "]";
} }
} }

View File

@ -2,8 +2,8 @@ description = "Spring Object/XML Marshalling"
configurations { configurations {
castor castor
xjc
jibx jibx
xjc
} }
dependencies { dependencies {

View File

@ -96,13 +96,15 @@ class TransactionContext {
void startTransaction() { void startTransaction() {
Assert.state(this.transactionStatus == null, Assert.state(this.transactionStatus == null,
"Cannot start a new transaction without ending the existing transaction first."); "Cannot start a new transaction without ending the existing transaction first.");
this.flaggedForRollback = this.defaultRollback; this.flaggedForRollback = this.defaultRollback;
this.transactionStatus = this.transactionManager.getTransaction(this.transactionDefinition); this.transactionStatus = this.transactionManager.getTransaction(this.transactionDefinition);
++this.transactionsStarted; ++this.transactionsStarted;
if (logger.isInfoEnabled()) { if (logger.isInfoEnabled()) {
logger.info(String.format( logger.info(String.format(
"Began transaction (%s) for test context %s; transaction manager [%s]; rollback [%s]", "Began transaction (%s) for test context %s; transaction manager [%s]; rollback [%s]",
this.transactionsStarted, this.testContext, this.transactionManager, flaggedForRollback)); this.transactionsStarted, this.testContext, this.transactionManager, flaggedForRollback));
} }
} }
@ -113,14 +115,14 @@ class TransactionContext {
void endTransaction() { void endTransaction() {
if (logger.isTraceEnabled()) { if (logger.isTraceEnabled()) {
logger.trace(String.format( logger.trace(String.format(
"Ending transaction for test context %s; transaction status [%s]; rollback [%s]", this.testContext, "Ending transaction for test context %s; transaction status [%s]; rollback [%s]",
this.transactionStatus, flaggedForRollback)); this.testContext, this.transactionStatus, this.flaggedForRollback));
} }
Assert.state(this.transactionStatus != null, () -> String.format( Assert.state(this.transactionStatus != null, () -> String.format(
"Failed to end transaction for test context %s: transaction does not exist.", this.testContext)); "Failed to end transaction for test context %s: transaction does not exist.", this.testContext));
try { try {
if (flaggedForRollback) { if (this.flaggedForRollback) {
this.transactionManager.rollback(this.transactionStatus); this.transactionManager.rollback(this.transactionStatus);
} }
else { else {
@ -132,8 +134,8 @@ class TransactionContext {
} }
if (logger.isInfoEnabled()) { if (logger.isInfoEnabled()) {
logger.info(String.format("%s transaction for test context %s.", (flaggedForRollback ? "Rolled back" logger.info(String.format("%s transaction for test context %s.",
: "Committed"), this.testContext)); (this.flaggedForRollback ? "Rolled back" : "Committed"), this.testContext));
} }
} }

View File

@ -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"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
@ -51,6 +51,7 @@ import org.springframework.util.ObjectUtils;
* return new ResponseEntity&lt;String&gt;("Hello World", responseHeaders, HttpStatus.CREATED); * return new ResponseEntity&lt;String&gt;("Hello World", responseHeaders, HttpStatus.CREATED);
* } * }
* </pre> * </pre>
*
* Or, by using a builder accessible via static methods: * Or, by using a builder accessible via static methods:
* <pre class="code"> * <pre class="code">
* &#64;RequestMapping("/handle") * &#64;RequestMapping("/handle")

View File

@ -106,12 +106,12 @@ class InterceptingAsyncClientHttpRequest extends AbstractBufferingAsyncClientHtt
return interceptor.intercept(request, body, this); return interceptor.intercept(request, body, this);
} }
else { else {
URI theUri = request.getURI(); URI uri = request.getURI();
HttpMethod method = request.getMethod(); HttpMethod method = request.getMethod();
HttpHeaders headers = request.getHeaders(); HttpHeaders headers = request.getHeaders();
Assert.state(method != null, "No standard HTTP method"); Assert.state(method != null, "No standard HTTP method");
AsyncClientHttpRequest delegate = requestFactory.createAsyncRequest(theUri, method); AsyncClientHttpRequest delegate = requestFactory.createAsyncRequest(uri, method);
delegate.getHeaders().putAll(headers); delegate.getHeaders().putAll(headers);
if (body.length > 0) { if (body.length > 0) {
StreamUtils.copy(body, delegate.getBody()); StreamUtils.copy(body, delegate.getBody());

View File

@ -90,7 +90,7 @@ public class ServletPathExtensionContentNegotiationStrategy extends PathExtensio
* {@link PathExtensionContentNegotiationStrategy#getMediaTypeForResource} * {@link PathExtensionContentNegotiationStrategy#getMediaTypeForResource}
* with the ability to also look up through the ServletContext. * with the ability to also look up through the ServletContext.
* @param resource the resource to look up * @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 * @since 4.3
*/ */
@Override @Override

View File

@ -289,11 +289,11 @@ public class ServletWebRequest extends ServletRequestAttributes implements Nativ
etag = padEtagIfNecessary(etag); etag = padEtagIfNecessary(etag);
while (ifNoneMatch.hasMoreElements()) { while (ifNoneMatch.hasMoreElements()) {
String clientETags = ifNoneMatch.nextElement(); 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 // Compare weak/strong ETags as per https://tools.ietf.org/html/rfc7232#section-2.3
while (eTagMatcher.find()) { while (etagMatcher.find()) {
if (StringUtils.hasLength(eTagMatcher.group()) && if (StringUtils.hasLength(etagMatcher.group()) &&
etag.replaceFirst("^W/", "").equals(eTagMatcher.group(3))) { etag.replaceFirst("^W/", "").equals(etagMatcher.group(3))) {
this.notModified = true; this.notModified = true;
break; break;
} }

View File

@ -162,7 +162,7 @@ public class DelegatingFilterProxy extends GenericFilterBean {
* @see #setEnvironment(org.springframework.core.env.Environment) * @see #setEnvironment(org.springframework.core.env.Environment)
*/ */
public DelegatingFilterProxy(String targetBeanName, @Nullable WebApplicationContext wac) { 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.setTargetBeanName(targetBeanName);
this.webApplicationContext = wac; this.webApplicationContext = wac;
if (wac != null) { if (wac != null) {

View File

@ -44,6 +44,7 @@ import org.springframework.web.context.request.WebRequest;
* {@link SessionStatus#setComplete()}. * {@link SessionStatus#setComplete()}.
* *
* @author Rossen Stoyanchev * @author Rossen Stoyanchev
* @author Juergen Hoeller
* @since 3.1 * @since 3.1
*/ */
public class SessionAttributesHandler { public class SessionAttributesHandler {
@ -154,7 +155,7 @@ public class SessionAttributesHandler {
* A pass-through call to the underlying {@link SessionAttributeStore}. * A pass-through call to the underlying {@link SessionAttributeStore}.
* @param request the current request * @param request the current request
* @param attributeName the name of the attribute of interest * @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 @Nullable
Object retrieveAttribute(WebRequest request, String attributeName) { Object retrieveAttribute(WebRequest request, String attributeName) {

View File

@ -189,7 +189,7 @@ abstract class MvcNamespaceUtils {
/** /**
* Find the {@code ContentNegotiationManager} bean created by or registered * Find the {@code ContentNegotiationManager} bean created by or registered
* with the {@code annotation-driven} element. * with the {@code annotation-driven} element.
* @return a bean definition, bean reference, or null. * @return a bean definition, bean reference, or {@code null}
*/ */
@Nullable @Nullable
public static Object getContentNegotiationManager(ParserContext context) { public static Object getContentNegotiationManager(ParserContext context) {

View File

@ -37,9 +37,9 @@ import org.springframework.web.servlet.view.RedirectView;
* {@link org.springframework.beans.factory.xml.BeanDefinitionParser} that * {@link org.springframework.beans.factory.xml.BeanDefinitionParser} that
* parses the following MVC namespace elements: * parses the following MVC namespace elements:
* <ul> * <ul>
* <li>{@code <view-controller>} * <li>{@code <view-controller>}
* <li>{@code <redirect-view-controller>} * <li>{@code <redirect-view-controller>}
* <li>{@code <status-controller>} * <li>{@code <status-controller>}
* </ul> * </ul>
* *
* <p>All elements result in the registration of a * <p>All elements result in the registration of a
@ -56,7 +56,7 @@ import org.springframework.web.servlet.view.RedirectView;
class ViewControllerBeanDefinitionParser implements BeanDefinitionParser { class ViewControllerBeanDefinitionParser implements BeanDefinitionParser {
private static final String HANDLER_MAPPING_BEAN_NAME = private static final String HANDLER_MAPPING_BEAN_NAME =
"org.springframework.web.servlet.config.viewControllerHandlerMapping"; "org.springframework.web.servlet.config.viewControllerHandlerMapping";
@Override @Override

View File

@ -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"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.

View File

@ -42,11 +42,11 @@ public class InterceptorRegistration {
private final List<String> excludePatterns = new ArrayList<>(); private final List<String> excludePatterns = new ArrayList<>();
private int order = 0;
@Nullable @Nullable
private PathMatcher pathMatcher; private PathMatcher pathMatcher;
private int order = 0;
/** /**
* Creates an {@link InterceptorRegistration} instance. * Creates an {@link InterceptorRegistration} instance.
@ -72,18 +72,6 @@ public class InterceptorRegistration {
return this; 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, * A PathMatcher implementation to use with this interceptor. This is an optional,
* advanced property required only if using custom PathMatcher implementations * advanced property required only if using custom PathMatcher implementations
@ -95,6 +83,23 @@ public class InterceptorRegistration {
return this; 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 * Returns the underlying interceptor. If URL patterns are provided the returned type is
* {@link MappedInterceptor}; otherwise {@link HandlerInterceptor}. * {@link MappedInterceptor}; otherwise {@link HandlerInterceptor}.

View File

@ -134,4 +134,5 @@ abstract class AbstractNameValueExpression<T> implements NameValueExpression<T>
} }
return builder.toString(); return builder.toString();
} }
} }

View File

@ -144,8 +144,8 @@ public final class ParamsRequestCondition extends AbstractRequestCondition<Param
@Override @Override
protected boolean matchName(HttpServletRequest request) { protected boolean matchName(HttpServletRequest request) {
return WebUtils.hasSubmitParameter(request, this.name) || return (WebUtils.hasSubmitParameter(request, this.name) ||
request.getParameterMap().containsKey(this.name); request.getParameterMap().containsKey(this.name));
} }
@Override @Override

View File

@ -113,55 +113,55 @@ public final class RequestMappingInfo implements RequestCondition<RequestMapping
} }
/** /**
* Returns the URL patterns of this {@link RequestMappingInfo}; * Return the URL patterns of this {@link RequestMappingInfo};
* or instance with 0 patterns, never {@code null}. * or instance with 0 patterns (never {@code null}).
*/ */
public PatternsRequestCondition getPatternsCondition() { public PatternsRequestCondition getPatternsCondition() {
return this.patternsCondition; return this.patternsCondition;
} }
/** /**
* Returns the HTTP request methods of this {@link RequestMappingInfo}; * Return the HTTP request methods of this {@link RequestMappingInfo};
* or instance with 0 request methods, never {@code null}. * or instance with 0 request methods (never {@code null}).
*/ */
public RequestMethodsRequestCondition getMethodsCondition() { public RequestMethodsRequestCondition getMethodsCondition() {
return this.methodsCondition; return this.methodsCondition;
} }
/** /**
* Returns the "parameters" condition of this {@link RequestMappingInfo}; * Return the "parameters" condition of this {@link RequestMappingInfo};
* or instance with 0 parameter expressions, never {@code null}. * or instance with 0 parameter expressions (never {@code null}).
*/ */
public ParamsRequestCondition getParamsCondition() { public ParamsRequestCondition getParamsCondition() {
return this.paramsCondition; return this.paramsCondition;
} }
/** /**
* Returns the "headers" condition of this {@link RequestMappingInfo}; * Return the "headers" condition of this {@link RequestMappingInfo};
* or instance with 0 header expressions, never {@code null}. * or instance with 0 header expressions (never {@code null}).
*/ */
public HeadersRequestCondition getHeadersCondition() { public HeadersRequestCondition getHeadersCondition() {
return this.headersCondition; return this.headersCondition;
} }
/** /**
* Returns the "consumes" condition of this {@link RequestMappingInfo}; * Return the "consumes" condition of this {@link RequestMappingInfo};
* or instance with 0 consumes expressions, never {@code null}. * or instance with 0 consumes expressions (never {@code null}).
*/ */
public ConsumesRequestCondition getConsumesCondition() { public ConsumesRequestCondition getConsumesCondition() {
return this.consumesCondition; return this.consumesCondition;
} }
/** /**
* Returns the "produces" condition of this {@link RequestMappingInfo}; * Return the "produces" condition of this {@link RequestMappingInfo};
* or instance with 0 produces expressions, never {@code null}. * or instance with 0 produces expressions (never {@code null}).
*/ */
public ProducesRequestCondition getProducesCondition() { public ProducesRequestCondition getProducesCondition() {
return this.producesCondition; return this.producesCondition;
} }
/** /**
* Returns the "custom" condition of this {@link RequestMappingInfo}; or {@code null}. * Return the "custom" condition of this {@link RequestMappingInfo}, or {@code null}.
*/ */
@Nullable @Nullable
public RequestCondition<?> getCustomCondition() { public RequestCondition<?> getCustomCondition() {
@ -170,7 +170,7 @@ public final class RequestMappingInfo implements RequestCondition<RequestMapping
/** /**
* Combines "this" request mapping info (i.e. the current instance) with another request mapping info instance. * Combine "this" request mapping info (i.e. the current instance) with another request mapping info instance.
* <p>Example: combine type- and method-level request mappings. * <p>Example: combine type- and method-level request mappings.
* @return a new request mapping info instance; never {@code null} * @return a new request mapping info instance; never {@code null}
*/ */
@ -199,7 +199,7 @@ public final class RequestMappingInfo implements RequestCondition<RequestMapping
return this.name; return this.name;
} }
else { else {
return (other.name != null ? other.name : null); return other.name;
} }
} }

View File

@ -55,7 +55,7 @@ public class HttpHeadersReturnValueHandler implements HandlerMethodReturnValueHa
Assert.state(servletResponse != null, "No HttpServletResponse"); Assert.state(servletResponse != null, "No HttpServletResponse");
ServletServerHttpResponse outputMessage = new ServletServerHttpResponse(servletResponse); ServletServerHttpResponse outputMessage = new ServletServerHttpResponse(servletResponse);
outputMessage.getHeaders().putAll(headers); outputMessage.getHeaders().putAll(headers);
outputMessage.getBody(); // flush headers outputMessage.getBody(); // flush headers
} }
} }

View File

@ -250,7 +250,7 @@ public class RequestMappingHandlerAdapter extends AbstractHandlerMethodAdapter
*/ */
@Nullable @Nullable
public List<HandlerMethodArgumentResolver> getInitBinderArgumentResolvers() { public List<HandlerMethodArgumentResolver> 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 * Configure the registry for reactive library types to be supported as
* return values from controller methods. * return values from controller methods.
* @since 5.0
*/ */
public void setReactiveRegistry(ReactiveAdapterRegistry reactiveRegistry) { public void setReactiveRegistry(ReactiveAdapterRegistry reactiveRegistry) {
Assert.notNull(reactiveRegistry, "ReactiveAdapterRegistry is required"); Assert.notNull(reactiveRegistry, "ReactiveAdapterRegistry is required");
@ -435,6 +436,7 @@ public class RequestMappingHandlerAdapter extends AbstractHandlerMethodAdapter
/** /**
* Return the configured reactive type registry of adapters. * Return the configured reactive type registry of adapters.
* @since 5.0
*/ */
public ReactiveAdapterRegistry getReactiveAdapterRegistry() { public ReactiveAdapterRegistry getReactiveAdapterRegistry() {
return this.reactiveRegistry; return this.reactiveRegistry;

View File

@ -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) { public void setName(@Nullable String name) {
this.name = 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) { public void setValue(@Nullable String value) {
this.value = value; this.value = value;
} }
/** /**
* Return the raw parameter value * Return the raw parameter value.
*/ */
@Nullable @Nullable
public String getValue() { public String getValue() {

View File

@ -203,7 +203,6 @@ public class UrlTag extends HtmlEscapingAwareTag implements ParamAware {
/** /**
* Build the URL for the tag from the tag attributes and parameters. * Build the URL for the tag from the tag attributes and parameters.
* @return the URL value as a String * @return the URL value as a String
* @throws JspException
*/ */
String createUrl() throws JspException { String createUrl() throws JspException {
Assert.state(this.value != null, "No value set"); Assert.state(this.value != null, "No value set");

View File

@ -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"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
@ -33,7 +33,7 @@ import freemarker.template.Configuration;
public interface FreeMarkerConfig { public interface FreeMarkerConfig {
/** /**
* Return the FreeMarker Configuration object for the current * Return the FreeMarker {@link Configuration} object for the current
* web application context. * web application context.
* <p>A FreeMarker Configuration object may be used to set FreeMarker * <p>A FreeMarker Configuration object may be used to set FreeMarker
* properties and shared objects, and allows to retrieve templates. * properties and shared objects, and allows to retrieve templates.

View File

@ -115,7 +115,6 @@ public class HttpEntityMethodProcessorMockTests {
@Before @Before
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
public void setup() throws Exception { public void setup() throws Exception {
stringHttpMessageConverter = mock(HttpMessageConverter.class); stringHttpMessageConverter = mock(HttpMessageConverter.class);
given(stringHttpMessageConverter.getSupportedMediaTypes()).willReturn(Collections.singletonList(MediaType.TEXT_PLAIN)); given(stringHttpMessageConverter.getSupportedMediaTypes()).willReturn(Collections.singletonList(MediaType.TEXT_PLAIN));
resourceMessageConverter = mock(HttpMessageConverter.class); resourceMessageConverter = mock(HttpMessageConverter.class);

View File

@ -110,8 +110,7 @@ public class WebMvcStompWebSocketEndpointRegistration implements StompWebSocketE
this.registration.setTransportHandlerOverrides(handler); this.registration.setTransportHandlerOverrides(handler);
} }
if (!this.allowedOrigins.isEmpty()) { if (!this.allowedOrigins.isEmpty()) {
this.registration.setAllowedOrigins( this.registration.setAllowedOrigins(this.allowedOrigins.toArray(new String[this.allowedOrigins.size()]));
this.allowedOrigins.toArray(new String[this.allowedOrigins.size()]));
} }
return this.registration; return this.registration;
} }

View File

@ -66,7 +66,7 @@ public class ServletServerContainerFactoryBean
private ServerContainer serverContainer; private ServerContainer serverContainer;
public void setAsyncSendTimeout(long timeoutInMillis) { public void setAsyncSendTimeout(Long timeoutInMillis) {
this.asyncSendTimeout = timeoutInMillis; this.asyncSendTimeout = timeoutInMillis;
} }
@ -75,7 +75,7 @@ public class ServletServerContainerFactoryBean
return this.asyncSendTimeout; return this.asyncSendTimeout;
} }
public void setMaxSessionIdleTimeout(long timeoutInMillis) { public void setMaxSessionIdleTimeout(Long timeoutInMillis) {
this.maxSessionIdleTimeout = timeoutInMillis; this.maxSessionIdleTimeout = timeoutInMillis;
} }
@ -84,7 +84,7 @@ public class ServletServerContainerFactoryBean
return this.maxSessionIdleTimeout; return this.maxSessionIdleTimeout;
} }
public void setMaxTextMessageBufferSize(int bufferSize) { public void setMaxTextMessageBufferSize(Integer bufferSize) {
this.maxTextMessageBufferSize = bufferSize; this.maxTextMessageBufferSize = bufferSize;
} }
@ -93,7 +93,7 @@ public class ServletServerContainerFactoryBean
return this.maxTextMessageBufferSize; return this.maxTextMessageBufferSize;
} }
public void setMaxBinaryMessageBufferSize(int bufferSize) { public void setMaxBinaryMessageBufferSize(Integer bufferSize) {
this.maxBinaryMessageBufferSize = bufferSize; this.maxBinaryMessageBufferSize = bufferSize;
} }

View File

@ -226,9 +226,7 @@ class DefaultTransportRequest implements TransportRequest {
fallbackRequest.connect(this.handler, this.future); fallbackRequest.connect(this.handler, this.future);
} }
else { 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) { if (ex != null) {
this.future.setException(ex); this.future.setException(ex);
} }

View File

@ -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` Once configured for the `ApplicationContext`. Any bean within that `ApplicationContext`
may implement `LoadTimeWeaverAware`, thereby receiving a reference to the load-time may implement `LoadTimeWeaverAware`, thereby receiving a reference to the load-time
weaver instance. This is particularly useful in combination with weaver instance. This is particularly useful in combination with
<<data-acess.adoc#orm-jpa,Spring's JPA support>> where load-time weaving may be necessary <<data-access.adoc#orm-jpa,Spring's JPA support>> where load-time weaving may be necessary
for JPA class transformation. for JPA class transformation.
Consult the `LocalContainerEntityManagerFactoryBean` javadocs for more detail. For more on Consult the `LocalContainerEntityManagerFactoryBean` javadocs for more detail. For more on
AspectJ load-time weaving, see <<aop-aj-ltw>>. AspectJ load-time weaving, see <<aop-aj-ltw>>.