INT-1489 removed unnecessary instanceof checks in RouterFactoryBean

This commit is contained in:
Mark Fisher
2010-10-15 16:57:45 -04:00
parent d0426d2147
commit 4bb5443a83

View File

@@ -52,6 +52,7 @@ public class RouterFactoryBean extends AbstractMessageHandlerFactoryBean {
private volatile Boolean ignoreSendFailures; private volatile Boolean ignoreSendFailures;
public void setChannelResolver(ChannelResolver channelResolver) { public void setChannelResolver(ChannelResolver channelResolver) {
this.channelResolver = channelResolver; this.channelResolver = channelResolver;
} }
@@ -86,10 +87,8 @@ public class RouterFactoryBean extends AbstractMessageHandlerFactoryBean {
@Override @Override
MessageHandler createMethodInvokingHandler(Object targetObject, String targetMethodName) { MessageHandler createMethodInvokingHandler(Object targetObject, String targetMethodName) {
Assert.notNull(targetObject, "target object must not be null"); Assert.notNull(targetObject, "target object must not be null");
AbstractMessageRouter router = extractRouter(targetObject); AbstractMessageRouter router = extractRouter(targetObject);
if (router == null) { if (router == null) {
router = this.createRouter(targetObject, targetMethodName); router = this.createRouter(targetObject, targetMethodName);
this.configureRouter(router); this.configureRouter(router);
@@ -99,12 +98,10 @@ public class RouterFactoryBean extends AbstractMessageHandlerFactoryBean {
Assert.isTrue(!StringUtils.hasText(targetMethodName), "target method should not be provided when the target " Assert.isTrue(!StringUtils.hasText(targetMethodName), "target method should not be provided when the target "
+ "object is an implementation of AbstractMessageRouter"); + "object is an implementation of AbstractMessageRouter");
this.configureRouter(router); this.configureRouter(router);
if (targetObject instanceof MessageHandler) { if (targetObject instanceof MessageHandler) {
return (MessageHandler) targetObject; return (MessageHandler) targetObject;
} }
return router; return router;
} }
private AbstractMessageRouter extractRouter(Object targetObject) { private AbstractMessageRouter extractRouter(Object targetObject) {
@@ -122,13 +119,12 @@ public class RouterFactoryBean extends AbstractMessageHandlerFactoryBean {
if (targetSource == null) { if (targetSource == null) {
return null; return null;
} }
Object target;
try { try {
target = targetSource.getTarget(); return extractRouter(targetSource.getTarget());
} catch (Exception e) { }
catch (Exception e) {
throw new IllegalStateException(e); throw new IllegalStateException(e);
} }
return extractRouter(target);
} }
@Override @Override
@@ -137,17 +133,18 @@ public class RouterFactoryBean extends AbstractMessageHandlerFactoryBean {
} }
private AbstractMessageRouter createRouter(Object targetObject, String targetMethodName) { private AbstractMessageRouter createRouter(Object targetObject, String targetMethodName) {
MethodInvokingRouter router = (StringUtils.hasText(targetMethodName)) ? new MethodInvokingRouter(targetObject, MethodInvokingRouter router = (StringUtils.hasText(targetMethodName))
targetMethodName) : new MethodInvokingRouter(targetObject); ? new MethodInvokingRouter(targetObject, targetMethodName)
: new MethodInvokingRouter(targetObject);
return router; return router;
} }
private AbstractMessageRouter configureRouter(AbstractMessageRouter router) { private AbstractMessageRouter configureRouter(AbstractMessageRouter router) {
if (this.channelResolver != null && router instanceof AbstractMessageRouter) { if (this.channelResolver != null) {
((AbstractMessageRouter) router).setChannelResolver(this.channelResolver); router.setChannelResolver(this.channelResolver);
} }
if (this.channelIdentifierMap != null && router instanceof AbstractMessageRouter) { if (this.channelIdentifierMap != null) {
((AbstractMessageRouter) router).setChannelIdentifierMap(this.channelIdentifierMap); router.setChannelIdentifierMap(this.channelIdentifierMap);
} }
if (this.defaultOutputChannel != null) { if (this.defaultOutputChannel != null) {
router.setDefaultOutputChannel(this.defaultOutputChannel); router.setDefaultOutputChannel(this.defaultOutputChannel);
@@ -156,11 +153,7 @@ public class RouterFactoryBean extends AbstractMessageHandlerFactoryBean {
router.setTimeout(timeout.longValue()); router.setTimeout(timeout.longValue());
} }
if (this.ignoreChannelNameResolutionFailures != null) { if (this.ignoreChannelNameResolutionFailures != null) {
Assert.isTrue(router instanceof AbstractMessageRouter, router.setIgnoreChannelNameResolutionFailures(ignoreChannelNameResolutionFailures);
"The 'ignoreChannelNameResolutionFailures' property can only be set on routers that extend "
+ AbstractMessageRouter.class.getName());
((AbstractMessageRouter) router)
.setIgnoreChannelNameResolutionFailures(ignoreChannelNameResolutionFailures);
} }
if (this.applySequence != null) { if (this.applySequence != null) {
router.setApplySequence(this.applySequence); router.setApplySequence(this.applySequence);