Polishing
This commit is contained in:
parent
92c657e12d
commit
9fa4dad13c
|
@ -149,9 +149,9 @@ public class GenericMessagingTemplate extends AbstractDestinationResolvingMessag
|
||||||
try {
|
try {
|
||||||
doSend(channel, requestMessage);
|
doSend(channel, requestMessage);
|
||||||
}
|
}
|
||||||
catch (RuntimeException e) {
|
catch (RuntimeException ex) {
|
||||||
tempReplyChannel.setSendFailed(true);
|
tempReplyChannel.setSendFailed(true);
|
||||||
throw e;
|
throw ex;
|
||||||
}
|
}
|
||||||
|
|
||||||
Message<?> replyMessage = this.doReceive(tempReplyChannel);
|
Message<?> replyMessage = this.doReceive(tempReplyChannel);
|
||||||
|
@ -183,7 +183,6 @@ public class GenericMessagingTemplate extends AbstractDestinationResolvingMessag
|
||||||
|
|
||||||
private volatile boolean hasSendFailed;
|
private volatile boolean hasSendFailed;
|
||||||
|
|
||||||
|
|
||||||
public void setSendFailed(boolean hasSendError) {
|
public void setSendFailed(boolean hasSendError) {
|
||||||
this.hasSendFailed = hasSendError;
|
this.hasSendFailed = hasSendError;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright 2002-2013 the original author or authors.
|
* Copyright 2002-2014 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
@ -58,15 +58,15 @@ import org.springframework.util.ClassUtils;
|
||||||
*/
|
*/
|
||||||
public abstract class AbstractNamedValueMethodArgumentResolver implements HandlerMethodArgumentResolver {
|
public abstract class AbstractNamedValueMethodArgumentResolver implements HandlerMethodArgumentResolver {
|
||||||
|
|
||||||
|
private final ConversionService conversionService;
|
||||||
|
|
||||||
private final ConfigurableBeanFactory configurableBeanFactory;
|
private final ConfigurableBeanFactory configurableBeanFactory;
|
||||||
|
|
||||||
private final BeanExpressionContext expressionContext;
|
private final BeanExpressionContext expressionContext;
|
||||||
|
|
||||||
private Map<MethodParameter, NamedValueInfo> namedValueInfoCache =
|
private final Map<MethodParameter, NamedValueInfo> namedValueInfoCache =
|
||||||
new ConcurrentHashMap<MethodParameter, NamedValueInfo>(256);
|
new ConcurrentHashMap<MethodParameter, NamedValueInfo>(256);
|
||||||
|
|
||||||
private ConversionService conversionService;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructor with a {@link ConversionService} and a {@link BeanFactory}.
|
* Constructor with a {@link ConversionService} and a {@link BeanFactory}.
|
||||||
|
@ -77,15 +77,14 @@ public abstract class AbstractNamedValueMethodArgumentResolver implements Handle
|
||||||
* values are not expected to contain expressions
|
* values are not expected to contain expressions
|
||||||
*/
|
*/
|
||||||
protected AbstractNamedValueMethodArgumentResolver(ConversionService cs, ConfigurableBeanFactory beanFactory) {
|
protected AbstractNamedValueMethodArgumentResolver(ConversionService cs, ConfigurableBeanFactory beanFactory) {
|
||||||
this.conversionService = (cs != null) ? cs : new DefaultConversionService();
|
this.conversionService = (cs != null ? cs : new DefaultConversionService());
|
||||||
this.configurableBeanFactory = beanFactory;
|
this.configurableBeanFactory = beanFactory;
|
||||||
this.expressionContext = (beanFactory != null) ? new BeanExpressionContext(beanFactory, null) : null;
|
this.expressionContext = (beanFactory != null ? new BeanExpressionContext(beanFactory, null) : null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Object resolveArgument(MethodParameter parameter, Message<?> message) throws Exception {
|
public Object resolveArgument(MethodParameter parameter, Message<?> message) throws Exception {
|
||||||
|
|
||||||
Class<?> paramType = parameter.getParameterType();
|
Class<?> paramType = parameter.getParameterType();
|
||||||
NamedValueInfo namedValueInfo = getNamedValueInfo(parameter);
|
NamedValueInfo namedValueInfo = getNamedValueInfo(parameter);
|
||||||
|
|
||||||
|
@ -99,7 +98,7 @@ public abstract class AbstractNamedValueMethodArgumentResolver implements Handle
|
||||||
}
|
}
|
||||||
value = handleNullValue(namedValueInfo.name, value, paramType);
|
value = handleNullValue(namedValueInfo.name, value, paramType);
|
||||||
}
|
}
|
||||||
else if ("".equals(value) && (namedValueInfo.defaultValue != null)) {
|
else if ("".equals(value) && namedValueInfo.defaultValue != null) {
|
||||||
value = resolveDefaultValue(namedValueInfo.defaultValue);
|
value = resolveDefaultValue(namedValueInfo.defaultValue);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -21,6 +21,7 @@ import java.util.Map;
|
||||||
|
|
||||||
import org.apache.commons.logging.Log;
|
import org.apache.commons.logging.Log;
|
||||||
import org.apache.commons.logging.LogFactory;
|
import org.apache.commons.logging.LogFactory;
|
||||||
|
|
||||||
import org.springframework.beans.factory.config.ConfigurableBeanFactory;
|
import org.springframework.beans.factory.config.ConfigurableBeanFactory;
|
||||||
import org.springframework.core.MethodParameter;
|
import org.springframework.core.MethodParameter;
|
||||||
import org.springframework.core.convert.ConversionService;
|
import org.springframework.core.convert.ConversionService;
|
||||||
|
@ -44,6 +45,7 @@ public class HeaderMethodArgumentResolver extends AbstractNamedValueMethodArgume
|
||||||
super(cs, beanFactory);
|
super(cs, beanFactory);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean supportsParameter(MethodParameter parameter) {
|
public boolean supportsParameter(MethodParameter parameter) {
|
||||||
return parameter.hasParameterAnnotation(Header.class);
|
return parameter.hasParameterAnnotation(Header.class);
|
||||||
|
@ -56,8 +58,8 @@ public class HeaderMethodArgumentResolver extends AbstractNamedValueMethodArgume
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected Object resolveArgumentInternal(MethodParameter parameter, Message<?> message,
|
protected Object resolveArgumentInternal(MethodParameter parameter, Message<?> message, String name)
|
||||||
String name) throws Exception {
|
throws Exception {
|
||||||
|
|
||||||
Object headerValue = message.getHeaders().get(name);
|
Object headerValue = message.getHeaders().get(name);
|
||||||
Object nativeHeaderValue = getNativeHeaderValue(message, name);
|
Object nativeHeaderValue = getNativeHeaderValue(message, name);
|
||||||
|
@ -71,23 +73,19 @@ public class HeaderMethodArgumentResolver extends AbstractNamedValueMethodArgume
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return (headerValue != null) ? headerValue : nativeHeaderValue;
|
return (headerValue != null ? headerValue : nativeHeaderValue);
|
||||||
}
|
}
|
||||||
|
|
||||||
private Object getNativeHeaderValue(Message<?> message, String name) {
|
private Object getNativeHeaderValue(Message<?> message, String name) {
|
||||||
|
|
||||||
Map<String, List<String>> nativeHeaders = getNativeHeaders(message);
|
Map<String, List<String>> nativeHeaders = getNativeHeaders(message);
|
||||||
|
|
||||||
if (name.startsWith("nativeHeaders.")) {
|
if (name.startsWith("nativeHeaders.")) {
|
||||||
name = name.substring("nativeHeaders.".length());
|
name = name.substring("nativeHeaders.".length());
|
||||||
}
|
}
|
||||||
|
if (nativeHeaders == null || !nativeHeaders.containsKey(name)) {
|
||||||
if ((nativeHeaders == null) || !nativeHeaders.containsKey(name)) {
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
List<?> nativeHeaderValues = nativeHeaders.get(name);
|
List<?> nativeHeaderValues = nativeHeaders.get(name);
|
||||||
return (nativeHeaderValues.size() == 1) ? nativeHeaderValues.get(0) : nativeHeaderValues;
|
return (nativeHeaderValues.size() == 1 ? nativeHeaderValues.get(0) : nativeHeaderValues);
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
|
|
|
@ -62,6 +62,7 @@ public class PayloadArgumentResolver implements HandlerMethodArgumentResolver {
|
||||||
this.validator = validator;
|
this.validator = validator;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean supportsParameter(MethodParameter parameter) {
|
public boolean supportsParameter(MethodParameter parameter) {
|
||||||
return true;
|
return true;
|
||||||
|
@ -69,14 +70,12 @@ public class PayloadArgumentResolver implements HandlerMethodArgumentResolver {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Object resolveArgument(MethodParameter param, Message<?> message) throws Exception {
|
public Object resolveArgument(MethodParameter param, Message<?> message) throws Exception {
|
||||||
|
|
||||||
Payload annot = param.getParameterAnnotation(Payload.class);
|
Payload annot = param.getParameterAnnotation(Payload.class);
|
||||||
if ((annot != null) && StringUtils.hasText(annot.value())) {
|
if ((annot != null) && StringUtils.hasText(annot.value())) {
|
||||||
throw new IllegalStateException("@Payload SpEL expressions not supported by this resolver.");
|
throw new IllegalStateException("@Payload SpEL expressions not supported by this resolver");
|
||||||
}
|
}
|
||||||
|
|
||||||
Object payload = message.getPayload();
|
Object payload = message.getPayload();
|
||||||
|
|
||||||
if (isEmptyPayload(payload)) {
|
if (isEmptyPayload(payload)) {
|
||||||
if (annot == null || annot.required()) {
|
if (annot == null || annot.required()) {
|
||||||
String paramName = getParameterName(param);
|
String paramName = getParameterName(param);
|
||||||
|
@ -122,7 +121,7 @@ public class PayloadArgumentResolver implements HandlerMethodArgumentResolver {
|
||||||
return ((byte[]) payload).length == 0;
|
return ((byte[]) payload).length == 0;
|
||||||
}
|
}
|
||||||
else if (payload instanceof String) {
|
else if (payload instanceof String) {
|
||||||
return ((String) payload).trim().equals("");
|
return !StringUtils.hasText((String) payload);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
return false;
|
return false;
|
||||||
|
@ -130,14 +129,12 @@ public class PayloadArgumentResolver implements HandlerMethodArgumentResolver {
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void validate(Message<?> message, MethodParameter parameter, Object target) {
|
protected void validate(Message<?> message, MethodParameter parameter, Object target) {
|
||||||
|
|
||||||
if (this.validator == null) {
|
if (this.validator == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (Annotation annot : parameter.getParameterAnnotations()) {
|
for (Annotation annot : parameter.getParameterAnnotations()) {
|
||||||
if (annot.annotationType().getSimpleName().startsWith("Valid")) {
|
if (annot.annotationType().getSimpleName().startsWith("Valid")) {
|
||||||
|
|
||||||
BeanPropertyBindingResult bindingResult =
|
BeanPropertyBindingResult bindingResult =
|
||||||
new BeanPropertyBindingResult(target, getParameterName(parameter));
|
new BeanPropertyBindingResult(target, getParameterName(parameter));
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue