INT-1270 added support for <header> sub-elements on the <scheduled-producer>
This commit is contained in:
@@ -13,6 +13,8 @@
|
||||
|
||||
<channel id="cronChannel"/>
|
||||
|
||||
<channel id="headerExpressionsChannel"/>
|
||||
|
||||
<channel id="triggerRefChannel">
|
||||
<queue/>
|
||||
</channel>
|
||||
@@ -23,6 +25,11 @@
|
||||
|
||||
<scheduled-producer id="cronProducer" cron="7 6 5 4 3 ?" payload-expression="'cronTest'" channel="cronChannel" auto-startup="false"/>
|
||||
|
||||
<scheduled-producer id="headerExpressionsProducer" fixed-delay="99" payload-expression="'headerExpressionsTest'" channel="headerExpressionsChannel" auto-startup="false">
|
||||
<header name="foo" expression="6 * 7"/>
|
||||
<header name="bar" value="x"/>
|
||||
</scheduled-producer>
|
||||
|
||||
<scheduled-producer id="triggerRefProducer" trigger="customTrigger" payload-expression="'triggerRefTest'" channel="triggerRefChannel"/>
|
||||
|
||||
<beans:bean id="customTrigger" class="org.springframework.scheduling.support.PeriodicTrigger">
|
||||
|
||||
@@ -20,6 +20,8 @@ import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertFalse;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
|
||||
@@ -106,4 +108,18 @@ public class ScheduledProducerParserTests {
|
||||
assertEquals("'triggerRefTest'", payloadExpression.getExpressionString());
|
||||
}
|
||||
|
||||
@Test
|
||||
@SuppressWarnings("unchecked")
|
||||
public void headerExpressions() {
|
||||
ScheduledMessageProducer producer = context.getBean("headerExpressionsProducer", ScheduledMessageProducer.class);
|
||||
assertFalse(producer.isAutoStartup());
|
||||
DirectFieldAccessor producerAccessor = new DirectFieldAccessor(producer);
|
||||
Map<String, Expression> headerExpressions = (Map<String, Expression>) producerAccessor.getPropertyValue("headerExpressions");
|
||||
assertEquals(2, headerExpressions.size());
|
||||
assertEquals("6 * 7", headerExpressions.get("foo").getExpressionString());
|
||||
assertEquals("x", headerExpressions.get("bar").getExpressionString());
|
||||
assertEquals(42, headerExpressions.get("foo").getValue());
|
||||
assertEquals("x", headerExpressions.get("bar").getValue());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -26,6 +26,9 @@ import java.util.concurrent.atomic.AtomicInteger;
|
||||
|
||||
import org.junit.Test;
|
||||
|
||||
import org.springframework.expression.Expression;
|
||||
import org.springframework.expression.common.LiteralExpression;
|
||||
import org.springframework.expression.spel.standard.SpelExpressionParser;
|
||||
import org.springframework.integration.Message;
|
||||
import org.springframework.integration.channel.QueueChannel;
|
||||
import org.springframework.scheduling.Trigger;
|
||||
@@ -48,9 +51,9 @@ public class ScheduledMessageProducerTests {
|
||||
String payloadExpression = "'test-' + T(org.springframework.integration.endpoint.ScheduledMessageProducerTests).next()";
|
||||
ThreadPoolTaskScheduler scheduler = new ThreadPoolTaskScheduler();
|
||||
scheduler.afterPropertiesSet();
|
||||
Map<String, String> headerExpressions = new HashMap<String, String>();
|
||||
headerExpressions.put("foo", "'x'");
|
||||
headerExpressions.put("bar", "7 * 6");
|
||||
Map<String, Expression> headerExpressions = new HashMap<String, Expression>();
|
||||
headerExpressions.put("foo", new LiteralExpression("x"));
|
||||
headerExpressions.put("bar", new SpelExpressionParser().parseExpression("7 * 6"));
|
||||
ScheduledMessageProducer producer = new ScheduledMessageProducer(trigger, payloadExpression);
|
||||
producer.setHeaderExpressions(headerExpressions);
|
||||
producer.setTaskScheduler(scheduler);
|
||||
|
||||
Reference in New Issue
Block a user