From 23db1c0fe926e150e3d8307ef300ada01cfb4a05 Mon Sep 17 00:00:00 2001 From: Mark Fisher Date: Tue, 25 Nov 2008 03:05:12 +0000 Subject: [PATCH] Added some constraints for poller parsing. --- .../integration/config/xml/IntegrationNamespaceUtils.java | 4 ++++ .../springframework/integration/config/xml/PollerParser.java | 2 ++ .../integration/config/xml/spring-integration-1.0.xsd | 4 ++-- 3 files changed, 8 insertions(+), 2 deletions(-) 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 ea47efaeac..fb680a8cff 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 @@ -145,6 +145,10 @@ public abstract class IntegrationNamespaceUtils { public static void configurePollerMetadata(Element pollerElement, BeanDefinitionBuilder targetBuilder, ParserContext parserContext) { String pollerMetadataRef = null; if (pollerElement.hasAttribute("ref")) { + Assert.isTrue(pollerElement.getAttributes().getLength() == 1, + "a 'poller' element that provides a 'ref' must have no other attributes"); + Assert.isTrue(pollerElement.getChildNodes().getLength() == 0, + "a 'poller' element that provides a 'ref' must have no child elements"); pollerMetadataRef = pollerElement.getAttribute("ref"); } else { diff --git a/org.springframework.integration/src/main/java/org/springframework/integration/config/xml/PollerParser.java b/org.springframework.integration/src/main/java/org/springframework/integration/config/xml/PollerParser.java index eba65a5c88..bd7bb69892 100644 --- a/org.springframework.integration/src/main/java/org/springframework/integration/config/xml/PollerParser.java +++ b/org.springframework.integration/src/main/java/org/springframework/integration/config/xml/PollerParser.java @@ -55,6 +55,8 @@ public class PollerParser extends AbstractBeanDefinitionParser { @Override protected AbstractBeanDefinition parseInternal(Element element, ParserContext parserContext) { BeanDefinitionBuilder metadataBuilder = BeanDefinitionBuilder.genericBeanDefinition(PollerMetadata.class); + Assert.isTrue(!element.hasAttribute("ref"), + "the 'ref' attribute must not be present on a 'poller' element submitted to the parser"); configureTrigger(element, metadataBuilder, parserContext); IntegrationNamespaceUtils.setValueIfAttributeDefined(metadataBuilder, element, "max-messages-per-poll"); Element txElement = DomUtils.getChildElementByTagName(element, "transactional"); 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 ebdd4b7bd8..de84f158db 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 @@ -366,7 +366,7 @@ Defines an interval-based trigger. - + @@ -394,7 +394,7 @@ Defines an cron-based trigger. - +