remove channel-resolver attribute

remove ChannelResolver awareness from router parsers and FactoryBean

refactor 'channelIdentifierMap' -> 'channelMappings' and other clarity enhancements

trim array tokens

added AbstractMappingMessageRouter
This commit is contained in:
Mark Fisher
2011-10-17 17:24:09 -04:00
parent f11b17f9fb
commit 73c9876aca
30 changed files with 457 additions and 471 deletions

View File

@@ -19,7 +19,7 @@
<bean id="payloadTypeRouter" class="org.springframework.integration.router.PayloadTypeRouter">
<property name="resolutionRequired" value="true"/>
<property name="channelIdentifierMap">
<property name="channelMappings">
<map>
<entry key="java.lang.String" value="strings"/>
</map>

View File

@@ -29,7 +29,7 @@ import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.integration.MessageChannel;
import org.springframework.integration.core.PollableChannel;
import org.springframework.integration.message.GenericMessage;
import org.springframework.integration.router.AbstractMessageRouter;
import org.springframework.integration.router.AbstractMappingMessageRouter;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
@@ -50,7 +50,7 @@ public class RouterFactoryBeanDelegationTests {
private PollableChannel discard;
@Autowired @Qualifier("org.springframework.integration.config.RouterFactoryBean#0")
private AbstractMessageRouter router;
private AbstractMappingMessageRouter router;
@Test

View File

@@ -1,5 +1,5 @@
/*
* Copyright 2002-2010 the original author or authors.
* Copyright 2002-2011 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.
@@ -72,7 +72,7 @@ public class ErrorMessageExceptionTypeRouterTests {
exceptionTypeChannelMap.put(IllegalArgumentException.class.getName(), "illegalArgumentChannel");
exceptionTypeChannelMap.put(RuntimeException.class.getName(), "runtimeExceptionChannel");
exceptionTypeChannelMap.put(MessageHandlingException.class.getName(), "messageHandlingExceptionChannel");
router.setChannelIdentifierMap(exceptionTypeChannelMap);
router.setChannelMappings(exceptionTypeChannelMap);
router.setBeanFactory(beanFactory);
@@ -95,7 +95,7 @@ public class ErrorMessageExceptionTypeRouterTests {
Map<String, String> exceptionTypeChannelMap = new HashMap<String, String>();
exceptionTypeChannelMap.put(RuntimeException.class.getName(), "runtimeExceptionChannel");
exceptionTypeChannelMap.put(MessageHandlingException.class.getName(), "runtimeExceptionChannel");
router.setChannelIdentifierMap(exceptionTypeChannelMap);
router.setChannelMappings(exceptionTypeChannelMap);
router.setBeanFactory(beanFactory);
router.setDefaultOutputChannel(defaultChannel);
@@ -116,7 +116,7 @@ public class ErrorMessageExceptionTypeRouterTests {
ErrorMessageExceptionTypeRouter router = new ErrorMessageExceptionTypeRouter();
Map<String, String> exceptionTypeChannelMap = new HashMap<String, String>();
exceptionTypeChannelMap.put(MessageHandlingException.class.getName(), "messageHandlingExceptionChannel");
router.setChannelIdentifierMap(exceptionTypeChannelMap);
router.setChannelMappings(exceptionTypeChannelMap);
router.setBeanFactory(beanFactory);
router.setDefaultOutputChannel(defaultChannel);
router.handleMessage(message);
@@ -152,7 +152,7 @@ public class ErrorMessageExceptionTypeRouterTests {
ErrorMessageExceptionTypeRouter router = new ErrorMessageExceptionTypeRouter();
Map<String, String> exceptionTypeChannelMap = new HashMap<String, String>();
exceptionTypeChannelMap.put(MessageDeliveryException.class.getName(), "messageDeliveryExceptionChannel");
router.setChannelIdentifierMap(exceptionTypeChannelMap);
router.setChannelMappings(exceptionTypeChannelMap);
router.setBeanFactory(beanFactory);
router.setResolutionRequired(true);
router.handleMessage(message);
@@ -170,7 +170,7 @@ public class ErrorMessageExceptionTypeRouterTests {
exceptionTypeChannelMap.put(IllegalArgumentException.class.getName(), "illegalArgumentChannel");
exceptionTypeChannelMap.put(RuntimeException.class.getName(), "runtimeExceptionChannel");
exceptionTypeChannelMap.put(MessageHandlingException.class.getName(), "messageHandlingExceptionChannel");
router.setChannelIdentifierMap(exceptionTypeChannelMap);
router.setChannelMappings(exceptionTypeChannelMap);
router.setBeanFactory(beanFactory);
router.setDefaultOutputChannel(defaultChannel);
router.handleMessage(message);
@@ -191,7 +191,7 @@ public class ErrorMessageExceptionTypeRouterTests {
Map<String, String> exceptionTypeChannelMap = new HashMap<String, String>();
exceptionTypeChannelMap.put(IllegalArgumentException.class.getName(), "illegalArgumentChannel");
exceptionTypeChannelMap.put(MessageHandlingException.class.getName(), "messageHandlingExceptionChannel");
router.setChannelIdentifierMap(exceptionTypeChannelMap);
router.setChannelMappings(exceptionTypeChannelMap);
router.setBeanFactory(beanFactory);
router.setDefaultOutputChannel(defaultChannel);
router.handleMessage(message);

View File

@@ -1,5 +1,5 @@
/*
* Copyright 2002-2009 the original author or authors.
* Copyright 2002-2011 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.
@@ -90,12 +90,12 @@ public class HeaderValueRouterTests {
@SuppressWarnings({ "unchecked", "rawtypes" })
public void resolveChannelNameFromMap() {
StaticApplicationContext context = new StaticApplicationContext();
ManagedMap channelMap = new ManagedMap();
channelMap.put("testKey", "testChannel");
ManagedMap channelMappings = new ManagedMap();
channelMappings.put("testKey", "testChannel");
RootBeanDefinition routerBeanDefinition = new RootBeanDefinition(HeaderValueRouter.class);
routerBeanDefinition.getConstructorArgumentValues().addGenericArgumentValue("testHeaderName");
routerBeanDefinition.getPropertyValues().addPropertyValue("resolutionRequired", "true");
routerBeanDefinition.getPropertyValues().addPropertyValue("channelIdentifierMap", channelMap);
routerBeanDefinition.getPropertyValues().addPropertyValue("channelMappings", channelMappings);
routerBeanDefinition.getPropertyValues().addPropertyValue("beanFactory", context);
context.registerBeanDefinition("router", routerBeanDefinition);
context.registerBeanDefinition("testChannel", new RootBeanDefinition(QueueChannel.class));
@@ -112,12 +112,12 @@ public class HeaderValueRouterTests {
@SuppressWarnings({ "unchecked", "rawtypes" })
public void resolveChannelNameFromMapAndCustomeResolver() {
final StaticApplicationContext context = new StaticApplicationContext();
ManagedMap channelMap = new ManagedMap();
channelMap.put("testKey", "testChannel");
ManagedMap channelMappings = new ManagedMap();
channelMappings.put("testKey", "testChannel");
RootBeanDefinition routerBeanDefinition = new RootBeanDefinition(HeaderValueRouter.class);
routerBeanDefinition.getConstructorArgumentValues().addGenericArgumentValue("testHeaderName");
routerBeanDefinition.getPropertyValues().addPropertyValue("resolutionRequired", "true");
routerBeanDefinition.getPropertyValues().addPropertyValue("channelIdentifierMap", channelMap);
routerBeanDefinition.getPropertyValues().addPropertyValue("channelMappings", channelMappings);
routerBeanDefinition.getPropertyValues().addPropertyValue("beanFactory", context);
routerBeanDefinition.getPropertyValues().addPropertyValue("channelResolver", new ChannelResolver() {
public MessageChannel resolveChannelName(String channelName) {

View File

@@ -1,5 +1,5 @@
/*
* Copyright 2002-2010 the original author or authors.
* Copyright 2002-2011 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.
@@ -23,6 +23,7 @@ import static org.mockito.Mockito.mock;
import java.util.List;
import org.junit.Test;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.integration.Message;
import org.springframework.integration.MessagingException;
@@ -38,9 +39,9 @@ public class MultiChannelRouterTests {
@Test
public void routeWithChannelMapping() {
AbstractMessageRouter router = new AbstractMessageRouter() {
AbstractMappingMessageRouter router = new AbstractMappingMessageRouter() {
@SuppressWarnings("unchecked")
public List<Object> getChannelIdentifiers(Message<?> message) {
public List<Object> getChannelKeys(Message<?> message) {
return CollectionUtils.arrayToList(new String[] {"channel1", "channel2"});
}
};
@@ -62,9 +63,9 @@ public class MultiChannelRouterTests {
@Test(expected = MessagingException.class)
public void channelNameLookupFailure() {
AbstractMessageRouter router = new AbstractMessageRouter() {
AbstractMappingMessageRouter router = new AbstractMappingMessageRouter() {
@SuppressWarnings("unchecked")
public List<Object> getChannelIdentifiers(Message<?> message) {
public List<Object> getChannelKeys(Message<?> message) {
return CollectionUtils.arrayToList(new String[] {"noSuchChannel"} );
}
};
@@ -76,9 +77,9 @@ public class MultiChannelRouterTests {
@Test(expected = MessagingException.class)
public void channelMappingNotAvailable() {
AbstractMessageRouter router = new AbstractMessageRouter() {
AbstractMappingMessageRouter router = new AbstractMappingMessageRouter() {
@SuppressWarnings("unchecked")
public List<Object> getChannelIdentifiers(Message<?> message) {
public List<Object> getChannelKeys(Message<?> message) {
return CollectionUtils.arrayToList(new String[] {"noSuchChannel"});
}
};

View File

@@ -51,22 +51,32 @@ public class PayloadTypeRouterTests {
payloadTypeChannelMap.put(String.class.getName(), "stringChannel");
payloadTypeChannelMap.put(Integer.class.getName(), "integerChannel");
PayloadTypeRouter router = new PayloadTypeRouter();
router.setChannelIdentifierMap(payloadTypeChannelMap);
router.setChannelMappings(payloadTypeChannelMap);
router.setBeanFactory(beanFactory);
Message<String> message1 = new GenericMessage<String>("test");
Message<Integer> message2 = new GenericMessage<Integer>(123);
assertEquals(1, router.getChannelIdentifiers(message1).size());
assertEquals("stringChannel", router.getChannelIdentifiers(message1).iterator().next());
assertEquals(1, router.getChannelIdentifiers(message2).size());
assertEquals("integerChannel", router.getChannelIdentifiers(message2).iterator().next());
assertEquals(1, router.getChannelKeys(message1).size());
assertNull(stringChannel.receive(0));
router.handleMessage(message1);
assertEquals(message1, stringChannel.receive(0));
assertEquals(1, router.getChannelKeys(message2).size());
assertNull(integerChannel.receive(0));
router.handleMessage(message2);
assertEquals(message2, integerChannel.receive(0));
// validate dynamics
QueueChannel newChannel = new QueueChannel();
beanFactory.registerSingleton("newChannel", newChannel);
router.setChannelMapping(String.class.getName(), "newChannel");
assertEquals(1, router.getChannelIdentifiers(message1).size());
assertEquals("newChannel", router.getChannelIdentifiers(message1).iterator().next());
assertEquals(1, router.getChannelKeys(message1).size());
assertNull(newChannel.receive(0));
router.handleMessage(message1);
assertEquals(message1, newChannel.receive(0));
// validate exception is thrown if mappings were removed and
// channelResolutionRequires = true (which is the default)
@@ -98,7 +108,7 @@ public class PayloadTypeRouterTests {
Map<String, String> payloadTypeChannelMap = new ConcurrentHashMap<String, String>();
payloadTypeChannelMap.put(Number.class.getName(), "numberChannel");
PayloadTypeRouter router = new PayloadTypeRouter();
router.setChannelIdentifierMap(payloadTypeChannelMap);
router.setChannelMappings(payloadTypeChannelMap);
router.setBeanFactory(beanFactory);
router.setDefaultOutputChannel(defaultChannel);
Message<Integer> message = new GenericMessage<Integer>(99);
@@ -112,7 +122,7 @@ public class PayloadTypeRouterTests {
QueueChannel newChannel = new QueueChannel();
beanFactory.registerSingleton("newChannel", newChannel);
router.setChannelMapping(Integer.class.getName(), "newChannel");
assertEquals(1, router.getChannelIdentifiers(message).size());
assertEquals(1, router.getChannelKeys(message).size());
router.handleMessage(message);
result = newChannel.receive(10);
assertNotNull(result);
@@ -138,7 +148,7 @@ public class PayloadTypeRouterTests {
PayloadTypeRouter router = new PayloadTypeRouter();
router.setBeanFactory(beanFactory);
router.setChannelIdentifierMap(payloadTypeChannelMap);
router.setChannelMappings(payloadTypeChannelMap);
router.setDefaultOutputChannel(defaultChannel);
Message<Integer> message = new GenericMessage<Integer>(99);
@@ -166,7 +176,7 @@ public class PayloadTypeRouterTests {
PayloadTypeRouter router = new PayloadTypeRouter();
router.setBeanFactory(beanFactory);
router.setChannelIdentifierMap(payloadTypeChannelMap);
router.setChannelMappings(payloadTypeChannelMap);
router.setDefaultOutputChannel(defaultChannel);
Message<Integer> message = new GenericMessage<Integer>(99);
@@ -193,7 +203,7 @@ public class PayloadTypeRouterTests {
PayloadTypeRouter router = new PayloadTypeRouter();
router.setBeanFactory(beanFactory);
router.setChannelIdentifierMap(payloadTypeChannelMap);
router.setChannelMappings(payloadTypeChannelMap);
router.setDefaultOutputChannel(defaultChannel);
Message<C1> message = new GenericMessage<C1>(new C1());
@@ -224,7 +234,7 @@ public class PayloadTypeRouterTests {
PayloadTypeRouter router = new PayloadTypeRouter();
router.setBeanFactory(beanFactory);
router.setChannelIdentifierMap(payloadTypeChannelMap);
router.setChannelMappings(payloadTypeChannelMap);
router.setDefaultOutputChannel(defaultChannel);
Message<C1> message = new GenericMessage<C1>(new C1());
@@ -255,7 +265,7 @@ public class PayloadTypeRouterTests {
PayloadTypeRouter router = new PayloadTypeRouter();
router.setBeanFactory(beanFactory);
router.setChannelIdentifierMap(payloadTypeChannelMap);
router.setChannelMappings(payloadTypeChannelMap);
router.setDefaultOutputChannel(defaultChannel);
Message<C1> message = new GenericMessage<C1>(new C1());
@@ -286,7 +296,7 @@ public class PayloadTypeRouterTests {
PayloadTypeRouter router = new PayloadTypeRouter();
router.setBeanFactory(beanFactory);
router.setChannelIdentifierMap(payloadTypeChannelMap);
router.setChannelMappings(payloadTypeChannelMap);
router.setDefaultOutputChannel(defaultChannel);
Message<C1> message = new GenericMessage<C1>(new C1());
@@ -315,7 +325,7 @@ public class PayloadTypeRouterTests {
PayloadTypeRouter router = new PayloadTypeRouter();
router.setBeanFactory(beanFactory);
router.setChannelIdentifierMap(payloadTypeChannelMap);
router.setChannelMappings(payloadTypeChannelMap);
router.setDefaultOutputChannel(defaultChannel);
Message<Integer> message = new GenericMessage<Integer>(99);
@@ -330,7 +340,7 @@ public class PayloadTypeRouterTests {
QueueChannel newChannel = new QueueChannel();
beanFactory.registerSingleton("newChannel", newChannel);
router.setChannelMapping(Integer.class.getName(), "newChannel");
assertEquals(1, router.getChannelIdentifiers(message).size());
assertEquals(1, router.getChannelKeys(message).size());
router.handleMessage(message);
result = newChannel.receive(10);
assertNotNull(result);
@@ -356,7 +366,7 @@ public class PayloadTypeRouterTests {
PayloadTypeRouter router = new PayloadTypeRouter();
router.setBeanFactory(beanFactory);
router.setChannelIdentifierMap(payloadTypeChannelMap);
router.setChannelMappings(payloadTypeChannelMap);
router.setDefaultOutputChannel(defaultChannel);
Message<String> message = new GenericMessage<String>("test");
@@ -383,7 +393,7 @@ public class PayloadTypeRouterTests {
PayloadTypeRouter router = new PayloadTypeRouter();
router.setBeanFactory(beanFactory);
router.setChannelIdentifierMap(payloadTypeChannelMap);
router.setChannelMappings(payloadTypeChannelMap);
router.setDefaultOutputChannel(defaultChannel);
Message<Integer> message = new GenericMessage<Integer>(99);
@@ -412,7 +422,7 @@ public class PayloadTypeRouterTests {
PayloadTypeRouter router = new PayloadTypeRouter();
router.setBeanFactory(beanFactory);
router.setChannelIdentifierMap(payloadTypeChannelMap);
router.setChannelMappings(payloadTypeChannelMap);
Message<String> message1 = new GenericMessage<String>("test");
Message<Integer> message2 = new GenericMessage<Integer>(123);
@@ -440,7 +450,7 @@ public class PayloadTypeRouterTests {
PayloadTypeRouter router = new PayloadTypeRouter();
router.setBeanFactory(beanFactory);
router.setChannelIdentifierMap(payloadTypeChannelMap);
router.setChannelMappings(payloadTypeChannelMap);
router.setDefaultOutputChannel(defaultChannel);
Message<String> message1 = new GenericMessage<String>("test");
@@ -481,7 +491,7 @@ public class PayloadTypeRouterTests {
PayloadTypeRouter router = new PayloadTypeRouter();
router.setBeanFactory(beanFactory);
router.setChannelIdentifierMap(payloadTypeChannelMap);
router.setChannelMappings(payloadTypeChannelMap);
router.setDefaultOutputChannel(defaultChannel);
Message<C1> message = new GenericMessage<C1>(new C1());
@@ -515,7 +525,7 @@ public class PayloadTypeRouterTests {
PayloadTypeRouter router = new PayloadTypeRouter();
router.setBeanFactory(beanFactory);
router.setChannelIdentifierMap(payloadTypeChannelMap);
router.setChannelMappings(payloadTypeChannelMap);
router.setDefaultOutputChannel(defaultChannel);
Message<C1> message = new GenericMessage<C1>(new C1());
@@ -548,7 +558,7 @@ public class PayloadTypeRouterTests {
PayloadTypeRouter router = new PayloadTypeRouter();
router.setBeanFactory(beanFactory);
router.setChannelIdentifierMap(payloadTypeChannelMap);
router.setChannelMappings(payloadTypeChannelMap);
router.setDefaultOutputChannel(defaultChannel);
Message<C1> message = new GenericMessage<C1>(new C1());

View File

@@ -44,9 +44,9 @@ public class RouterTests {
@Test(expected = MessageDeliveryException.class)
public void nullChannelRaisesMessageDeliveryExceptionByDefault() {
AbstractMessageRouter router = new AbstractMessageRouter() {
AbstractMappingMessageRouter router = new AbstractMappingMessageRouter() {
@Override
protected List<Object> getChannelIdentifiers(Message<?> message) {
protected List<Object> getChannelKeys(Message<?> message) {
return null;
}
};
@@ -56,9 +56,9 @@ public class RouterTests {
@Test(expected = MessageDeliveryException.class)
public void nullChannelIdentifierUsingChannelResolverRaisesMessageDeliveryExceptionByDefault() {
AbstractMessageRouter router = new AbstractMessageRouter() {
AbstractMappingMessageRouter router = new AbstractMappingMessageRouter() {
@Override
protected List<Object> getChannelIdentifiers(Message<?> message) {
protected List<Object> getChannelKeys(Message<?> message) {
return null;
}
};
@@ -70,9 +70,9 @@ public class RouterTests {
@Test(expected = MessageDeliveryException.class)
public void nullChannelIdentifierInListRaisesMessageDeliveryExceptionByDefault() {
AbstractMessageRouter router = new AbstractMessageRouter() {
AbstractMappingMessageRouter router = new AbstractMappingMessageRouter() {
@Override
protected List<Object> getChannelIdentifiers(Message<?> message) {
protected List<Object> getChannelKeys(Message<?> message) {
return Collections.singletonList(null);
}
};
@@ -84,8 +84,8 @@ public class RouterTests {
@Test(expected = MessageDeliveryException.class)
public void emptyChannelNameArrayRaisesMessageDeliveryExceptionByDefault() {
AbstractMessageRouter router = new AbstractMessageRouter() {
protected List<Object> getChannelIdentifiers(Message<?> message) {
AbstractMappingMessageRouter router = new AbstractMappingMessageRouter() {
protected List<Object> getChannelKeys(Message<?> message) {
return new ArrayList<Object>();
}
};
@@ -97,9 +97,9 @@ public class RouterTests {
@Test(expected = MessagingException.class)
public void channelMappingIsRequiredWhenResolvingChannelNames() {
AbstractMessageRouter router = new AbstractMessageRouter() {
AbstractMappingMessageRouter router = new AbstractMappingMessageRouter() {
@SuppressWarnings("unchecked")
protected List<Object> getChannelIdentifiers(Message<?> message){
protected List<Object> getChannelKeys(Message<?> message){
return CollectionUtils.arrayToList(new String[] { "notImportant" });
}
};
@@ -109,9 +109,9 @@ public class RouterTests {
@Test
public void beanFactoryWithRouter() {
AbstractMessageRouter router = new AbstractMessageRouter() {
AbstractMappingMessageRouter router = new AbstractMappingMessageRouter() {
@SuppressWarnings("unchecked")
protected List<Object> getChannelIdentifiers(Message<?> message) {
protected List<Object> getChannelKeys(Message<?> message) {
return CollectionUtils.arrayToList(new String[] { "testChannel" });
}
};
@@ -126,9 +126,9 @@ public class RouterTests {
@Test
public void beanFactoryWithRouterAndMultipleCommaSeparatedChannelNames() {
AbstractMessageRouter router = new AbstractMessageRouter() {
AbstractMappingMessageRouter router = new AbstractMappingMessageRouter() {
@SuppressWarnings("unchecked")
protected List<Object> getChannelIdentifiers(Message<?> message) {
protected List<Object> getChannelKeys(Message<?> message) {
return CollectionUtils.arrayToList(new String[] { "testChannel1,testChannel2" });
}
};
@@ -154,9 +154,9 @@ public class RouterTests {
@Test(expected = MessagingException.class)
public void channelResolutionIsRequiredByDefault() {
AbstractMessageRouter router = new AbstractMessageRouter() {
AbstractMappingMessageRouter router = new AbstractMappingMessageRouter() {
@SuppressWarnings("unchecked")
protected List<Object> getChannelIdentifiers(Message<?> message) {
protected List<Object> getChannelKeys(Message<?> message) {
return CollectionUtils.arrayToList(new String[] { "testChannelDoesNotExist", "testChannel" });
}
};
@@ -172,9 +172,9 @@ public class RouterTests {
@Test
public void unresolvableChannelIdentifierInListAreIgnoredWhenResolutionRequiredIsFalse() {
AbstractMessageRouter router = new AbstractMessageRouter() {
AbstractMappingMessageRouter router = new AbstractMappingMessageRouter() {
@SuppressWarnings("unchecked")
protected List<Object> getChannelIdentifiers(Message<?> message) {
protected List<Object> getChannelKeys(Message<?> message) {
return CollectionUtils.arrayToList(new String[] { "testChannelDoesNotExist", "testChannel" });
}
};
@@ -193,9 +193,9 @@ public class RouterTests {
@Test
public void beanFactoryWithRouterAndChannelPrefix() {
AbstractMessageRouter router = new AbstractMessageRouter() {
AbstractMappingMessageRouter router = new AbstractMappingMessageRouter() {
@SuppressWarnings("unchecked")
protected List<Object> getChannelIdentifiers(Message<?> message) {
protected List<Object> getChannelKeys(Message<?> message) {
return CollectionUtils.arrayToList(new String[] { "MyChannel" });
}
};
@@ -214,9 +214,9 @@ public class RouterTests {
@Test(expected = MessagingException.class)
public void beanFactoryWithRouterAndChannelPrefixFailing() {
AbstractMessageRouter router = new AbstractMessageRouter() {
AbstractMappingMessageRouter router = new AbstractMappingMessageRouter() {
@SuppressWarnings("unchecked")
protected List<Object> getChannelIdentifiers(Message<?> message) {
protected List<Object> getChannelKeys(Message<?> message) {
return CollectionUtils.arrayToList(new String[] { "testing_MyChannel" });
}
};
@@ -233,9 +233,9 @@ public class RouterTests {
@Test
public void beanFactoryWithRouterAndChannelSuffix() {
AbstractMessageRouter router = new AbstractMessageRouter() {
AbstractMappingMessageRouter router = new AbstractMappingMessageRouter() {
@SuppressWarnings("unchecked")
protected List<Object> getChannelIdentifiers(Message<?> message) {
protected List<Object> getChannelKeys(Message<?> message) {
return CollectionUtils.arrayToList(new String[] { "MyChannel" });
}
};
@@ -253,9 +253,9 @@ public class RouterTests {
@Test(expected = MessagingException.class)
public void beanFactoryWithRouterAndChannelSuffixFailing() {
AbstractMessageRouter router = new AbstractMessageRouter() {
AbstractMappingMessageRouter router = new AbstractMappingMessageRouter() {
@SuppressWarnings("unchecked")
protected List<Object> getChannelIdentifiers(Message<?> message) {
protected List<Object> getChannelKeys(Message<?> message) {
return CollectionUtils.arrayToList(new String[] { "MyChannel_withSuffix" });
}
};
@@ -272,9 +272,9 @@ public class RouterTests {
@Test
public void beanFactoryWithRouterAndChannelIdentifiersInListWithinAList() {
AbstractMessageRouter router = new AbstractMessageRouter() {
AbstractMappingMessageRouter router = new AbstractMappingMessageRouter() {
@SuppressWarnings("unchecked")
protected List<Object> getChannelIdentifiers(Message<?> message) {
protected List<Object> getChannelKeys(Message<?> message) {
List<String> channelNames1 = CollectionUtils.arrayToList(new String[] { "channel1" });
List<String> channelNames2 = CollectionUtils.arrayToList(new String[] { "channel2" });
@@ -312,9 +312,9 @@ public class RouterTests {
final QueueChannel testChannel1 = new QueueChannel();
final QueueChannel testChannel2 = new QueueChannel();
AbstractMessageRouter router = new AbstractMessageRouter() {
AbstractMappingMessageRouter router = new AbstractMappingMessageRouter() {
protected List<Object> getChannelIdentifiers(Message<?> message) {
protected List<Object> getChannelKeys(Message<?> message) {
MessageChannel[] channelNames1 = new MessageChannel[] { testChannel1 };
MessageChannel[] channelNames2 = new MessageChannel[] { testChannel2 };
@@ -349,9 +349,9 @@ public class RouterTests {
final QueueChannel testChannel1 = new QueueChannel();
final QueueChannel testChannel2 = new QueueChannel();
AbstractMessageRouter router = new AbstractMessageRouter() {
AbstractMappingMessageRouter router = new AbstractMappingMessageRouter() {
@SuppressWarnings("unchecked")
protected List<Object> getChannelIdentifiers(Message<?> message) {
protected List<Object> getChannelKeys(Message<?> message) {
return CollectionUtils.arrayToList(new Integer[] { 100, 200 });
}
};
@@ -375,6 +375,7 @@ public class RouterTests {
String channel = "channel1";
@SuppressWarnings("unused")
public String getChannel() {
return this.channel;
}
@@ -386,9 +387,9 @@ public class RouterTests {
final QueueChannel testChannel1 = new QueueChannel();
AbstractMessageRouter router = new AbstractMessageRouter() {
AbstractMappingMessageRouter router = new AbstractMappingMessageRouter() {
@SuppressWarnings("unchecked")
protected List<Object> getChannelIdentifiers(Message<?> message) {
protected List<Object> getChannelKeys(Message<?> message) {
return CollectionUtils.arrayToList(new CustomObjectWithChannelName[] { new CustomObjectWithChannelName() });
}
};

View File

@@ -19,7 +19,6 @@ package org.springframework.integration.router.config;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertSame;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
@@ -29,6 +28,7 @@ import java.util.List;
import org.junit.Test;
import org.mockito.Mockito;
import org.springframework.beans.DirectFieldAccessor;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.integration.Message;
@@ -41,7 +41,7 @@ import org.springframework.integration.core.MessagingTemplate;
import org.springframework.integration.core.PollableChannel;
import org.springframework.integration.core.SubscribableChannel;
import org.springframework.integration.message.GenericMessage;
import org.springframework.integration.router.AbstractMessageRouter;
import org.springframework.integration.router.AbstractMappingMessageRouter;
import org.springframework.integration.router.MethodInvokingRouter;
import org.springframework.integration.support.channel.ChannelResolver;
import org.springframework.integration.test.util.TestUtils;
@@ -142,18 +142,6 @@ public class RouterParserTests {
assertEquals(new Long(1234), timeout);
}
@Test
public void channelResolverConfigured() {
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
"routerParserTests.xml", this.getClass());
Object channelResolverBean = context.getBean("testChannelResolver");
Object endpoint = context.getBean("routerWithChannelResolver");
MethodInvokingRouter router = TestUtils.getPropertyValue(endpoint, "handler", MethodInvokingRouter.class);
ChannelResolver channelResolver = (ChannelResolver)
new DirectFieldAccessor(router).getPropertyValue("channelResolver");
assertSame(channelResolverBean, channelResolver);
}
@Test
public void sequence() {
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
@@ -196,7 +184,7 @@ public class RouterParserTests {
}
}
public static class TestRouterImplementation extends AbstractMessageRouter {
public static class TestRouterImplementation extends AbstractMappingMessageRouter {
private final MessageChannel channel;
@@ -206,7 +194,7 @@ public class RouterParserTests {
@Override
protected List<Object> getChannelIdentifiers(Message<?> message) {
protected List<Object> getChannelKeys(Message<?> message) {
return Collections.singletonList((Object)this.channel);
}
}

View File

@@ -28,7 +28,7 @@ import org.springframework.integration.Message;
import org.springframework.integration.MessageChannel;
import org.springframework.integration.config.ConsumerEndpointFactoryBean;
import org.springframework.integration.core.PollableChannel;
import org.springframework.integration.router.AbstractMessageRouter;
import org.springframework.integration.router.AbstractMappingMessageRouter;
import org.springframework.integration.support.MessageBuilder;
import org.springframework.integration.test.util.TestUtils;
import org.springframework.test.context.ContextConfiguration;
@@ -87,7 +87,7 @@ public class RouterWithMappingTests {
assertNull(fooChannelForExpression.receive(0));
assertNull(barChannelForExpression.receive(0));
// validate dynamics
AbstractMessageRouter router = (AbstractMessageRouter) TestUtils.getPropertyValue(spelRouter, "handler");
AbstractMappingMessageRouter router = (AbstractMappingMessageRouter) TestUtils.getPropertyValue(spelRouter, "handler");
router.setChannelMapping("baz", "fooChannelForExpression");
expressionRouter.send(message3);
assertNull(defaultChannelForExpression.receive(10));

View File

@@ -80,10 +80,6 @@
<channel id="timeoutRouterChannel"/>
<router id="routerWithTimeout" ref="payloadAsChannelNameRouter" timeout="1234" input-channel="timeoutRouterChannel"/>
<channel id="channelResolverRouterChannel"/>
<router id="routerWithChannelResolver" input-channel="channelResolverRouterChannel"
ref="payloadAsChannelNameRouter" channel-resolver="testChannelResolver"/>
<beans:bean id="testChannelResolver"
class="org.springframework.integration.router.config.RouterParserTests$TestChannelResover"/>