StreamListenerAnnotationBeanPostProcessor refactoring/polishing

Continue the work started in f53ff9585a
- simplified 'isDeclarativeMethodParameter(..) operation of StreamListenerAnnotationBeanPostProcessor
- aligned MessageChannelToInputFluxParameterAdapter and MessageChannelToInputObservableParameterAdapter around the actual Message
This commit is contained in:
Oleg Zhurakousky
2017-11-28 14:28:38 -05:00
parent dad81c617b
commit 25877b3d6e
3 changed files with 7 additions and 17 deletions

View File

@@ -47,7 +47,7 @@ public class MessageChannelToInputFluxParameterAdapter
@Override
public boolean supports(Class<?> bindingTargetType, MethodParameter methodParameter) {
return SubscribableChannel.class.isAssignableFrom(bindingTargetType)
return MessageChannel.class.isAssignableFrom(bindingTargetType)
&& Flux.class.isAssignableFrom(methodParameter.getParameterType());
}

View File

@@ -41,8 +41,9 @@ public class MessageChannelToInputObservableParameterAdapter
this.messageChannelToInputFluxArgumentAdapter = messageChannelToInputFluxArgumentAdapter;
}
@Override
public boolean supports(Class<?> bindingTargetType, MethodParameter methodParameter) {
return SubscribableChannel.class.isAssignableFrom(bindingTargetType)
return MessageChannel.class.isAssignableFrom(bindingTargetType)
&& Observable.class.isAssignableFrom(methodParameter.getParameterType());
}

View File

@@ -27,7 +27,6 @@ import org.springframework.beans.BeansException;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.BeanFactoryAware;
import org.springframework.beans.factory.BeanInitializationException;
import org.springframework.beans.factory.NoSuchBeanDefinitionException;
import org.springframework.beans.factory.SmartInitializingSingleton;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.config.BeanExpressionContext;
@@ -213,29 +212,19 @@ public class StreamListenerAnnotationBeanPostProcessor
}
private boolean isDeclarativeMethodParameter(String targetBeanName, MethodParameter methodParameter) {
try {
if (this.applicationContext.containsBean(targetBeanName)) {
Class<?> targetBeanClass = this.applicationContext.getType(targetBeanName);
if (!methodParameter.getParameterType().equals(Object.class)
&& (targetBeanClass.isAssignableFrom(methodParameter.getParameterType()) ||
methodParameter.getParameterType().isAssignableFrom(targetBeanClass))) {
&& (methodParameter.getParameterType().isAssignableFrom(targetBeanClass) || targetBeanClass.isAssignableFrom(methodParameter.getParameterType()))) {
return true;
}
}
catch (NoSuchBeanDefinitionException e) {
// ignore as the bean definition might not exist yet.
}
if (!this.streamListenerParameterAdapters.isEmpty()) {
try {
Object targetBean = this.applicationContext.getBean(targetBeanName);
else if (!this.streamListenerParameterAdapters.isEmpty()) {
for (StreamListenerParameterAdapter<?, ?> streamListenerParameterAdapter : this.streamListenerParameterAdapters) {
if (streamListenerParameterAdapter.supports(targetBean.getClass(), methodParameter)) {
if (streamListenerParameterAdapter.supports(targetBeanClass, methodParameter)) {
return true;
}
}
}
catch (BeansException e) {
// ignore as the bean definition might not exist yet.
}
}
return false;
}