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