INT-3431: Fix RecipientListRouter.onInit()
JIRA: https://jira.spring.io/browse/INT-3431 The introduced `late channel resolution by name` via https://jira.spring.io/browse/INT-3324 has lost `onInit()` propagation from `RecipientListRouter.onInit()`
This commit is contained in:
committed by
Gary Russell
parent
f5145f531b
commit
ca2ce6adac
@@ -54,6 +54,7 @@ import org.springframework.util.Assert;
|
||||
*
|
||||
* @author Mark Fisher
|
||||
* @author Oleg Zhurakousky
|
||||
* @author Artem Bilan
|
||||
*/
|
||||
public class RecipientListRouter extends AbstractMessageRouter implements InitializingBean {
|
||||
|
||||
@@ -64,7 +65,6 @@ public class RecipientListRouter extends AbstractMessageRouter implements Initia
|
||||
* Set the channels for this router. Either call this method or
|
||||
* {@link #setRecipients(List)} but not both. If MessageSelectors should be
|
||||
* considered, then use {@link #setRecipients(List)}.
|
||||
*
|
||||
* @param channels The channels.
|
||||
*/
|
||||
public void setChannels(List<MessageChannel> channels) {
|
||||
@@ -78,7 +78,6 @@ public class RecipientListRouter extends AbstractMessageRouter implements Initia
|
||||
|
||||
/**
|
||||
* Set the recipients for this router.
|
||||
*
|
||||
* @param recipients The recipients.
|
||||
*/
|
||||
public void setRecipients(List<Recipient> recipients) {
|
||||
@@ -92,8 +91,9 @@ public class RecipientListRouter extends AbstractMessageRouter implements Initia
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onInit() {
|
||||
public void onInit() throws Exception {
|
||||
Assert.notEmpty(this.recipients, "recipient list must not be empty");
|
||||
super.onInit();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -131,7 +131,7 @@ public class RecipientListRouter extends AbstractMessageRouter implements Initia
|
||||
}
|
||||
|
||||
public boolean accept(Message<?> message) {
|
||||
return (this.selector != null ? this.selector.accept(message) : true);
|
||||
return (this.selector == null || this.selector.accept(message));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -16,23 +16,24 @@
|
||||
|
||||
package org.springframework.integration.router;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertNotNull;
|
||||
import static org.junit.Assert.assertNull;
|
||||
import static org.mockito.Mockito.mock;
|
||||
import static org.junit.Assert.*;
|
||||
import static org.mockito.Mockito.*;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import org.junit.Test;
|
||||
import org.mockito.Mockito;
|
||||
|
||||
import org.springframework.beans.DirectFieldAccessor;
|
||||
import org.springframework.beans.factory.BeanFactory;
|
||||
import org.springframework.integration.IntegrationMessageHeaderAccessor;
|
||||
import org.springframework.integration.channel.DirectChannel;
|
||||
import org.springframework.integration.channel.QueueChannel;
|
||||
import org.springframework.integration.core.MessageSelector;
|
||||
import org.springframework.integration.router.RecipientListRouter.Recipient;
|
||||
import org.springframework.integration.test.util.TestUtils;
|
||||
import org.springframework.messaging.Message;
|
||||
import org.springframework.messaging.MessageChannel;
|
||||
import org.springframework.messaging.MessageDeliveryException;
|
||||
@@ -41,6 +42,7 @@ import org.springframework.messaging.support.GenericMessage;
|
||||
/**
|
||||
* @author Mark Fisher
|
||||
* @author Gary Russell
|
||||
* @author Artem Bilan
|
||||
*/
|
||||
public class RecipientListRouterTests {
|
||||
|
||||
@@ -409,6 +411,26 @@ public class RecipientListRouterTests {
|
||||
assertNull(result2);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testDefaultChannelResolutionFromName() {
|
||||
QueueChannel defaultChannel = new QueueChannel();
|
||||
List<Recipient> recipients = new ArrayList<Recipient>();
|
||||
recipients.add(new Recipient(new DirectChannel(), new AlwaysFalseSelector()));
|
||||
RecipientListRouter router = new RecipientListRouter();
|
||||
router.setRecipients(recipients);
|
||||
router.setDefaultOutputChannelName("defaultChannel");
|
||||
|
||||
BeanFactory beanFactory = Mockito.mock(BeanFactory.class);
|
||||
when(beanFactory.getBean(Mockito.eq("defaultChannel"), Mockito.eq(MessageChannel.class)))
|
||||
.thenReturn(defaultChannel);
|
||||
router.setBeanFactory(beanFactory);
|
||||
router.afterPropertiesSet();
|
||||
|
||||
assertSame(defaultChannel, TestUtils.getPropertyValue(router, "defaultOutputChannel"));
|
||||
Mockito.verify(beanFactory).getBean(Mockito.eq("defaultChannel"), Mockito.eq(MessageChannel.class));
|
||||
}
|
||||
|
||||
|
||||
private static class AlwaysTrueSelector implements MessageSelector {
|
||||
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user