diff --git a/org.springframework.integration.samples/src/main/java/org/springframework/integration/samples/filecopy/fileCopyDemo-file.xml b/org.springframework.integration.samples/src/main/java/org/springframework/integration/samples/filecopy/fileCopyDemo-file.xml index ba67a266cd..0f757c844c 100644 --- a/org.springframework.integration.samples/src/main/java/org/springframework/integration/samples/filecopy/fileCopyDemo-file.xml +++ b/org.springframework.integration.samples/src/main/java/org/springframework/integration/samples/filecopy/fileCopyDemo-file.xml @@ -16,7 +16,9 @@ - + + + - + + + diff --git a/org.springframework.integration.samples/src/main/java/org/springframework/integration/samples/oddeven/intervalOddEvenDemo.xml b/org.springframework.integration.samples/src/main/java/org/springframework/integration/samples/oddeven/intervalOddEvenDemo.xml index e741271e49..4e8c9adf01 100644 --- a/org.springframework.integration.samples/src/main/java/org/springframework/integration/samples/oddeven/intervalOddEvenDemo.xml +++ b/org.springframework.integration.samples/src/main/java/org/springframework/integration/samples/oddeven/intervalOddEvenDemo.xml @@ -13,7 +13,9 @@ - + + + diff --git a/org.springframework.integration.ws/src/test/java/org/springframework/integration/ws/config/simpleWebServiceOutboundGatewayParserTests.xml b/org.springframework.integration.ws/src/test/java/org/springframework/integration/ws/config/simpleWebServiceOutboundGatewayParserTests.xml index 1ae576e692..1dc523fd29 100644 --- a/org.springframework.integration.ws/src/test/java/org/springframework/integration/ws/config/simpleWebServiceOutboundGatewayParserTests.xml +++ b/org.springframework.integration.ws/src/test/java/org/springframework/integration/ws/config/simpleWebServiceOutboundGatewayParserTests.xml @@ -63,7 +63,9 @@ - + + + diff --git a/org.springframework.integration/src/main/java/org/springframework/integration/config/xml/IntegrationNamespaceUtils.java b/org.springframework.integration/src/main/java/org/springframework/integration/config/xml/IntegrationNamespaceUtils.java index f5af5fcf39..f28335ad8c 100644 --- a/org.springframework.integration/src/main/java/org/springframework/integration/config/xml/IntegrationNamespaceUtils.java +++ b/org.springframework.integration/src/main/java/org/springframework/integration/config/xml/IntegrationNamespaceUtils.java @@ -30,6 +30,7 @@ import org.springframework.integration.scheduling.Trigger; import org.springframework.transaction.support.DefaultTransactionDefinition; import org.springframework.util.Assert; import org.springframework.util.StringUtils; +import org.springframework.util.xml.DomUtils; /** * Shared utility methods for integration namespace parsers. @@ -141,26 +142,38 @@ public abstract class IntegrationNamespaceUtils { */ public static void configureTrigger(Element pollerElement, BeanDefinitionBuilder targetBuilder) { Trigger trigger = null; - String interval = pollerElement.getAttribute("interval"); - String cron = pollerElement.getAttribute("cron"); - Assert.isTrue(StringUtils.hasText(interval) ^ StringUtils.hasText(cron), - "A element must include either an 'interval' or a 'cron' expression (but not both)."); - if (StringUtils.hasText(interval)) { - Long period = Long.valueOf(interval); - IntervalTrigger intervalTrigger = new IntervalTrigger(period); - String initialDelay = pollerElement.getAttribute("initial-delay"); - if (StringUtils.hasText(initialDelay)) { - intervalTrigger.setInitialDelay(Long.valueOf(initialDelay)); - } - intervalTrigger.setFixedRate("true".equals(pollerElement.getAttribute("fixed-rate").toLowerCase())); - trigger = intervalTrigger; + Element intervalElement = DomUtils.getChildElementByTagName(pollerElement, "interval-trigger"); + if (intervalElement != null) { + trigger = createIntervalTrigger(intervalElement); } - if (StringUtils.hasText(pollerElement.getAttribute("cron"))) { - trigger = new CronTrigger(pollerElement.getAttribute("cron")); + else { + Element cronElement = DomUtils.getChildElementByTagName(pollerElement, "cron-trigger"); + Assert.notNull(cronElement, + "A element must include either an or child element."); + trigger = createCronTrigger(cronElement); } targetBuilder.addPropertyValue("trigger", trigger); } + private static Trigger createIntervalTrigger(Element element) { + String interval = element.getAttribute("interval"); + Assert.hasText(interval, "the 'interval' attribute is required for an "); + Long period = Long.valueOf(interval); + IntervalTrigger trigger = new IntervalTrigger(period); + String initialDelay = element.getAttribute("initial-delay"); + if (StringUtils.hasText(initialDelay)) { + trigger.setInitialDelay(Long.valueOf(initialDelay)); + } + trigger.setFixedRate("true".equals(element.getAttribute("fixed-rate").toLowerCase())); + return trigger; + } + + private static Trigger createCronTrigger(Element element) { + String cronExpression = element.getAttribute("expression"); + Assert.hasText(cronExpression, "the 'expression' attribute is required for a "); + return new CronTrigger(cronExpression); + } + /** * Parse a "transactional" element and configure the "transactionManager" and "transactionDefinition" * properties for the target builder. diff --git a/org.springframework.integration/src/main/java/org/springframework/integration/config/xml/spring-integration-1.0.xsd b/org.springframework.integration/src/main/java/org/springframework/integration/config/xml/spring-integration-1.0.xsd index 640c342606..2688900c51 100644 --- a/org.springframework.integration/src/main/java/org/springframework/integration/config/xml/spring-integration-1.0.xsd +++ b/org.springframework.integration/src/main/java/org/springframework/integration/config/xml/spring-integration-1.0.xsd @@ -231,12 +231,12 @@ + + + + - - - - @@ -244,6 +244,31 @@ + + + + + Defines an interval-based trigger. + + + + + + + + + + + + + + Defines an cron-based trigger. + + + + + + diff --git a/org.springframework.integration/src/main/java/org/springframework/integration/scheduling/CronSequenceGenerator.java b/org.springframework.integration/src/main/java/org/springframework/integration/scheduling/CronSequenceGenerator.java index 6e6c07b9a7..b6e556beef 100644 --- a/org.springframework.integration/src/main/java/org/springframework/integration/scheduling/CronSequenceGenerator.java +++ b/org.springframework.integration/src/main/java/org/springframework/integration/scheduling/CronSequenceGenerator.java @@ -177,7 +177,8 @@ public class CronSequenceGenerator { private void parse(String expression) throws IllegalArgumentException { String[] fields = StringUtils.tokenizeToStringArray(expression, " "); if (fields.length != 6) { - throw new IllegalArgumentException(String.format("Expression must consist of 6 fields (found %d in %s)", + throw new IllegalArgumentException(String.format("" + + "cron expression must consist of 6 fields (found %d in %s)", fields.length, expression)); } setNumberHits(seconds, fields[0], 60); diff --git a/org.springframework.integration/src/test/java/org/springframework/integration/aggregator/integration/ConcurrentAggregatorIntegrationTests-context.xml b/org.springframework.integration/src/test/java/org/springframework/integration/aggregator/integration/ConcurrentAggregatorIntegrationTests-context.xml index 3e8693cc46..e2865645d3 100644 --- a/org.springframework.integration/src/test/java/org/springframework/integration/aggregator/integration/ConcurrentAggregatorIntegrationTests-context.xml +++ b/org.springframework.integration/src/test/java/org/springframework/integration/aggregator/integration/ConcurrentAggregatorIntegrationTests-context.xml @@ -5,22 +5,29 @@ http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/integration http://www.springframework.org/schema/integration/spring-integration-1.0.xsd"> + - - + + + + + + + + + \ No newline at end of file diff --git a/org.springframework.integration/src/test/java/org/springframework/integration/config/ChannelAdapterParserTests-context.xml b/org.springframework.integration/src/test/java/org/springframework/integration/config/ChannelAdapterParserTests-context.xml index 8c5adaa028..bc016f29ef 100644 --- a/org.springframework.integration/src/test/java/org/springframework/integration/config/ChannelAdapterParserTests-context.xml +++ b/org.springframework.integration/src/test/java/org/springframework/integration/config/ChannelAdapterParserTests-context.xml @@ -18,7 +18,9 @@ - + + + diff --git a/org.springframework.integration/src/test/java/org/springframework/integration/config/simpleEndpointTests.xml b/org.springframework.integration/src/test/java/org/springframework/integration/config/simpleEndpointTests.xml index 7871883fb7..31f2d328c2 100644 --- a/org.springframework.integration/src/test/java/org/springframework/integration/config/simpleEndpointTests.xml +++ b/org.springframework.integration/src/test/java/org/springframework/integration/config/simpleEndpointTests.xml @@ -14,7 +14,9 @@ - + + + diff --git a/org.springframework.integration/src/test/java/org/springframework/integration/dispatcher/propagationMandatoryTests.xml b/org.springframework.integration/src/test/java/org/springframework/integration/dispatcher/propagationMandatoryTests.xml index 5414d20b77..359055188c 100644 --- a/org.springframework.integration/src/test/java/org/springframework/integration/dispatcher/propagationMandatoryTests.xml +++ b/org.springframework.integration/src/test/java/org/springframework/integration/dispatcher/propagationMandatoryTests.xml @@ -26,7 +26,8 @@ ref="testBean" method="good" output-channel="output"> - + + diff --git a/org.springframework.integration/src/test/java/org/springframework/integration/dispatcher/propagationNotSupportedTests.xml b/org.springframework.integration/src/test/java/org/springframework/integration/dispatcher/propagationNotSupportedTests.xml index 7f04d0d8bb..eb82ce1204 100644 --- a/org.springframework.integration/src/test/java/org/springframework/integration/dispatcher/propagationNotSupportedTests.xml +++ b/org.springframework.integration/src/test/java/org/springframework/integration/dispatcher/propagationNotSupportedTests.xml @@ -22,7 +22,8 @@ ref="testBean" method="good" output-channel="output"> - + + diff --git a/org.springframework.integration/src/test/java/org/springframework/integration/dispatcher/propagationRequiredTests.xml b/org.springframework.integration/src/test/java/org/springframework/integration/dispatcher/propagationRequiredTests.xml index 7fb86e121f..8b4b9bd0b4 100644 --- a/org.springframework.integration/src/test/java/org/springframework/integration/dispatcher/propagationRequiredTests.xml +++ b/org.springframework.integration/src/test/java/org/springframework/integration/dispatcher/propagationRequiredTests.xml @@ -22,7 +22,8 @@ ref="testBean" method="good" output-channel="output"> - + + diff --git a/org.springframework.integration/src/test/java/org/springframework/integration/dispatcher/propagationRequiresNewTests.xml b/org.springframework.integration/src/test/java/org/springframework/integration/dispatcher/propagationRequiresNewTests.xml index 31167f7df4..b43e0859ce 100644 --- a/org.springframework.integration/src/test/java/org/springframework/integration/dispatcher/propagationRequiresNewTests.xml +++ b/org.springframework.integration/src/test/java/org/springframework/integration/dispatcher/propagationRequiresNewTests.xml @@ -22,7 +22,8 @@ ref="testBean" method="good" output-channel="output"> - + + diff --git a/org.springframework.integration/src/test/java/org/springframework/integration/dispatcher/propagationSupportsTests.xml b/org.springframework.integration/src/test/java/org/springframework/integration/dispatcher/propagationSupportsTests.xml index 2177a88970..eb82ca3629 100644 --- a/org.springframework.integration/src/test/java/org/springframework/integration/dispatcher/propagationSupportsTests.xml +++ b/org.springframework.integration/src/test/java/org/springframework/integration/dispatcher/propagationSupportsTests.xml @@ -22,7 +22,8 @@ ref="testBean" method="good" output-channel="output"> - + + diff --git a/org.springframework.integration/src/test/java/org/springframework/integration/dispatcher/transactionTests.xml b/org.springframework.integration/src/test/java/org/springframework/integration/dispatcher/transactionTests.xml index c4564c69c8..ee8a4303ec 100644 --- a/org.springframework.integration/src/test/java/org/springframework/integration/dispatcher/transactionTests.xml +++ b/org.springframework.integration/src/test/java/org/springframework/integration/dispatcher/transactionTests.xml @@ -25,7 +25,8 @@ ref="testBean" method="bad" output-channel="output"> - + + @@ -34,7 +35,8 @@ ref="testBean" method="good" output-channel="output"> - + +