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