diff --git a/spring-messaging/src/main/java/org/springframework/messaging/handler/invocation/HandlerMethodArgumentResolverComposite.java b/spring-messaging/src/main/java/org/springframework/messaging/handler/invocation/HandlerMethodArgumentResolverComposite.java index 5ee0f4480ae600a508afc98915d1c767741ff25c..56f5efd2f2439467bcfdb6486ce74c5a4e8f05a2 100644 --- a/spring-messaging/src/main/java/org/springframework/messaging/handler/invocation/HandlerMethodArgumentResolverComposite.java +++ b/spring-messaging/src/main/java/org/springframework/messaging/handler/invocation/HandlerMethodArgumentResolverComposite.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2018 the original author or authors. + * Copyright 2002-2019 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. @@ -27,8 +27,8 @@ import org.springframework.messaging.Message; /** * Resolves method parameters by delegating to a list of registered - * {@link HandlerMethodArgumentResolver}. Previously resolved method parameters are cached - * for faster lookups. + * {@link HandlerMethodArgumentResolver HandlerMethodArgumentResolvers}. + * Previously resolved method parameters are cached for faster lookups. * * @author Rossen Stoyanchev * @author Juergen Hoeller @@ -51,26 +51,22 @@ public class HandlerMethodArgumentResolverComposite implements HandlerMethodArgu } /** - * Add the given {@link HandlerMethodArgumentResolver}s. + * Add the given {@link HandlerMethodArgumentResolver HandlerMethodArgumentResolvers}. * @since 4.3 */ public HandlerMethodArgumentResolverComposite addResolvers(HandlerMethodArgumentResolver... resolvers) { if (resolvers != null) { - for (HandlerMethodArgumentResolver resolver : resolvers) { - this.argumentResolvers.add(resolver); - } + Collections.addAll(this.argumentResolvers, resolvers); } return this; } /** - * Add the given {@link HandlerMethodArgumentResolver}s. + * Add the given {@link HandlerMethodArgumentResolver HandlerMethodArgumentResolvers}. */ - public HandlerMethodArgumentResolverComposite addResolvers(List argumentResolvers) { - if (argumentResolvers != null) { - for (HandlerMethodArgumentResolver resolver : argumentResolvers) { - this.argumentResolvers.add(resolver); - } + public HandlerMethodArgumentResolverComposite addResolvers(List resolvers) { + if (resolvers != null) { + this.argumentResolvers.addAll(resolvers); } return this; } @@ -91,8 +87,8 @@ public class HandlerMethodArgumentResolverComposite implements HandlerMethodArgu /** - * Whether the given {@linkplain MethodParameter method parameter} is supported by any registered - * {@link HandlerMethodArgumentResolver}. + * Whether the given {@linkplain MethodParameter method parameter} is + * supported by any registered {@link HandlerMethodArgumentResolver}. */ @Override public boolean supportsParameter(MethodParameter parameter) { @@ -100,20 +96,25 @@ public class HandlerMethodArgumentResolverComposite implements HandlerMethodArgu } /** - * Iterate over registered {@link HandlerMethodArgumentResolver}s and invoke the one that supports it. - * @throws IllegalStateException if no suitable {@link HandlerMethodArgumentResolver} is found. + * Iterate over registered + * {@link HandlerMethodArgumentResolver HandlerMethodArgumentResolvers} + * and invoke the one that supports it. + * @throws IllegalStateException if no suitable + * {@link HandlerMethodArgumentResolver} is found. */ @Override public Object resolveArgument(MethodParameter parameter, Message message) throws Exception { HandlerMethodArgumentResolver resolver = getArgumentResolver(parameter); if (resolver == null) { - throw new IllegalStateException("Unknown parameter type [" + parameter.getParameterType().getName() + "]"); + throw new IllegalArgumentException("Unsupported parameter type [" + + parameter.getParameterType().getName() + "]. supportsParameter should be called first."); } return resolver.resolveArgument(parameter, message); } /** - * Find a registered {@link HandlerMethodArgumentResolver} that supports the given method parameter. + * Find a registered {@link HandlerMethodArgumentResolver} that supports + * the given method parameter. */ private HandlerMethodArgumentResolver getArgumentResolver(MethodParameter parameter) { HandlerMethodArgumentResolver result = this.argumentResolverCache.get(parameter); diff --git a/spring-web/src/main/java/org/springframework/web/method/support/HandlerMethodArgumentResolverComposite.java b/spring-web/src/main/java/org/springframework/web/method/support/HandlerMethodArgumentResolverComposite.java index 50571778118c8b90088ec228196b03443298153f..fa30ef76da04e0ef5159e90e7da68d2f5b0ce1e5 100644 --- a/spring-web/src/main/java/org/springframework/web/method/support/HandlerMethodArgumentResolverComposite.java +++ b/spring-web/src/main/java/org/springframework/web/method/support/HandlerMethodArgumentResolverComposite.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2016 the original author or authors. + * Copyright 2002-2019 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. @@ -30,7 +30,8 @@ import org.springframework.web.bind.support.WebDataBinderFactory; import org.springframework.web.context.request.NativeWebRequest; /** - * Resolves method parameters by delegating to a list of registered {@link HandlerMethodArgumentResolver}s. + * Resolves method parameters by delegating to a list of registered + * {@link HandlerMethodArgumentResolver HandlerMethodArgumentResolvers}. * Previously resolved method parameters are cached for faster lookups. * * @author Rossen Stoyanchev @@ -39,6 +40,7 @@ import org.springframework.web.context.request.NativeWebRequest; */ public class HandlerMethodArgumentResolverComposite implements HandlerMethodArgumentResolver { + @Deprecated protected final Log logger = LogFactory.getLog(getClass()); private final List argumentResolvers = @@ -57,26 +59,22 @@ public class HandlerMethodArgumentResolverComposite implements HandlerMethodArgu } /** - * Add the given {@link HandlerMethodArgumentResolver}s. + * Add the given {@link HandlerMethodArgumentResolver HandlerMethodArgumentResolvers}. * @since 4.3 */ public HandlerMethodArgumentResolverComposite addResolvers(HandlerMethodArgumentResolver... resolvers) { if (resolvers != null) { - for (HandlerMethodArgumentResolver resolver : resolvers) { - this.argumentResolvers.add(resolver); - } + Collections.addAll(this.argumentResolvers, resolvers); } return this; } /** - * Add the given {@link HandlerMethodArgumentResolver}s. + * Add the given {@link HandlerMethodArgumentResolver HandlerMethodArgumentResolvers}. */ public HandlerMethodArgumentResolverComposite addResolvers(List resolvers) { if (resolvers != null) { - for (HandlerMethodArgumentResolver resolver : resolvers) { - this.argumentResolvers.add(resolver); - } + this.argumentResolvers.addAll(resolvers); } return this; } @@ -98,17 +96,20 @@ public class HandlerMethodArgumentResolverComposite implements HandlerMethodArgu /** - * Whether the given {@linkplain MethodParameter method parameter} is supported by any registered - * {@link HandlerMethodArgumentResolver}. + * Whether the given {@linkplain MethodParameter method parameter} is + * supported by any registered {@link HandlerMethodArgumentResolver}. */ @Override public boolean supportsParameter(MethodParameter parameter) { - return (getArgumentResolver(parameter) != null); + return getArgumentResolver(parameter) != null; } /** - * Iterate over registered {@link HandlerMethodArgumentResolver}s and invoke the one that supports it. - * @throws IllegalStateException if no suitable {@link HandlerMethodArgumentResolver} is found. + * Iterate over registered + * {@link HandlerMethodArgumentResolver HandlerMethodArgumentResolvers} and + * invoke the one that supports it. + * @throws IllegalStateException if no suitable + * {@link HandlerMethodArgumentResolver} is found. */ @Override public Object resolveArgument(MethodParameter parameter, ModelAndViewContainer mavContainer, @@ -116,22 +117,20 @@ public class HandlerMethodArgumentResolverComposite implements HandlerMethodArgu HandlerMethodArgumentResolver resolver = getArgumentResolver(parameter); if (resolver == null) { - throw new IllegalArgumentException("Unknown parameter type [" + parameter.getParameterType().getName() + "]"); + throw new IllegalArgumentException("Unsupported parameter type [" + + parameter.getParameterType().getName() + "]. supportsParameter should be called first."); } return resolver.resolveArgument(parameter, mavContainer, webRequest, binderFactory); } /** - * Find a registered {@link HandlerMethodArgumentResolver} that supports the given method parameter. + * Find a registered {@link HandlerMethodArgumentResolver} that supports + * the given method parameter. */ private HandlerMethodArgumentResolver getArgumentResolver(MethodParameter parameter) { HandlerMethodArgumentResolver result = this.argumentResolverCache.get(parameter); if (result == null) { for (HandlerMethodArgumentResolver methodArgumentResolver : this.argumentResolvers) { - if (logger.isTraceEnabled()) { - logger.trace("Testing if argument resolver [" + methodArgumentResolver + "] supports [" + - parameter.getGenericParameterType() + "]"); - } if (methodArgumentResolver.supportsParameter(parameter)) { result = methodArgumentResolver; this.argumentResolverCache.put(parameter, result);