INT-1270 added support for <header> sub-elements on the <scheduled-producer>

This commit is contained in:
Mark Fisher
2010-08-17 17:32:18 +00:00
parent 035d0c01b0
commit 10704c94c5
6 changed files with 107 additions and 37 deletions

View File

@@ -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">

View File

@@ -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());
}
}

View File

@@ -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);