From 2fd8f894634745c5f8dc84017c35aba5f5d39e5a Mon Sep 17 00:00:00 2001 From: Mark Fisher Date: Tue, 27 Sep 2011 16:52:00 -0400 Subject: [PATCH] PollerParser correctly prevents multiple triggers --- .../integration/config/xml/PollerParser.java | 6 +++--- .../integration/config/xml/PollerParserTests.java | 9 ++++++++- .../config/xml/pollerWithCronAndFixedDelay.xml | 12 ++++++++++++ 3 files changed, 23 insertions(+), 4 deletions(-) create mode 100644 spring-integration-core/src/test/java/org/springframework/integration/config/xml/pollerWithCronAndFixedDelay.xml diff --git a/spring-integration-core/src/main/java/org/springframework/integration/config/xml/PollerParser.java b/spring-integration-core/src/main/java/org/springframework/integration/config/xml/PollerParser.java index da7b57d860..383b8bdac9 100644 --- a/spring-integration-core/src/main/java/org/springframework/integration/config/xml/PollerParser.java +++ b/spring-integration-core/src/main/java/org/springframework/integration/config/xml/PollerParser.java @@ -126,7 +126,7 @@ public class PollerParser extends AbstractBeanDefinitionParser { } triggerBeanNames.add(triggerAttribute); } - else if (StringUtils.hasText(fixedRateAttribute)) { + if (StringUtils.hasText(fixedRateAttribute)) { BeanDefinitionBuilder builder = BeanDefinitionBuilder.genericBeanDefinition(PERIODIC_TRIGGER_CLASSNAME); builder.addConstructorArgValue(fixedRateAttribute); if (StringUtils.hasText(timeUnit)) { @@ -137,7 +137,7 @@ public class PollerParser extends AbstractBeanDefinitionParser { builder.getBeanDefinition(), parserContext.getRegistry()); triggerBeanNames.add(triggerBeanName); } - else if (StringUtils.hasText(fixedDelayAttribute)) { + if (StringUtils.hasText(fixedDelayAttribute)) { BeanDefinitionBuilder builder = BeanDefinitionBuilder.genericBeanDefinition(PERIODIC_TRIGGER_CLASSNAME); builder.addConstructorArgValue(fixedDelayAttribute); if (StringUtils.hasText(timeUnit)) { @@ -148,7 +148,7 @@ public class PollerParser extends AbstractBeanDefinitionParser { builder.getBeanDefinition(), parserContext.getRegistry()); triggerBeanNames.add(triggerBeanName); } - else if (StringUtils.hasText(cronAttribute)) { + if (StringUtils.hasText(cronAttribute)) { if (StringUtils.hasText(timeUnit)) { parserContext.getReaderContext().error("The 'time-unit' attribute cannot be used with a 'cron' trigger.", pollerElement); } diff --git a/spring-integration-core/src/test/java/org/springframework/integration/config/xml/PollerParserTests.java b/spring-integration-core/src/test/java/org/springframework/integration/config/xml/PollerParserTests.java index 8f3babc228..97f260a315 100644 --- a/spring-integration-core/src/test/java/org/springframework/integration/config/xml/PollerParserTests.java +++ b/spring-integration-core/src/test/java/org/springframework/integration/config/xml/PollerParserTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2009 the original author or authors. + * Copyright 2002-2011 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -118,4 +118,11 @@ public class PollerParserTests { new ClassPathXmlApplicationContext( "defaultPollerWithRef.xml", PollerParserTests.class); } + + @Test(expected=BeanDefinitionParsingException.class) + public void pollerWithCronAndFixedDelay() { + new ClassPathXmlApplicationContext( + "pollerWithCronAndFixedDelay.xml", PollerParserTests.class); + } + } diff --git a/spring-integration-core/src/test/java/org/springframework/integration/config/xml/pollerWithCronAndFixedDelay.xml b/spring-integration-core/src/test/java/org/springframework/integration/config/xml/pollerWithCronAndFixedDelay.xml new file mode 100644 index 0000000000..bf632277b9 --- /dev/null +++ b/spring-integration-core/src/test/java/org/springframework/integration/config/xml/pollerWithCronAndFixedDelay.xml @@ -0,0 +1,12 @@ + + + + + +