From 9afcda0a6803a58f67fe6f6fd95fd69dc3bc93db Mon Sep 17 00:00:00 2001 From: Mark Fisher Date: Sun, 28 Sep 2008 18:56:34 +0000 Subject: [PATCH] The element now creates a DefaultSplitter when no "ref" attribute is defined (INT-354). --- .../integration/config/AbstractEndpointParser.java | 9 +++++---- .../integration/config/SplitterParser.java | 7 +++++++ .../integration/splitter/SplitterEndpoint.java | 4 ++++ .../transformer/config/AbstractTransformerParser.java | 2 +- 4 files changed, 17 insertions(+), 5 deletions(-) diff --git a/org.springframework.integration/src/main/java/org/springframework/integration/config/AbstractEndpointParser.java b/org.springframework.integration/src/main/java/org/springframework/integration/config/AbstractEndpointParser.java index a00f143a42..1199eee125 100644 --- a/org.springframework.integration/src/main/java/org/springframework/integration/config/AbstractEndpointParser.java +++ b/org.springframework.integration/src/main/java/org/springframework/integration/config/AbstractEndpointParser.java @@ -56,12 +56,13 @@ public abstract class AbstractEndpointParser extends AbstractSingleBeanDefinitio /** - * Subclasses may override this method to specify whether the endpoint type - * expects a "ref" (and possibly a "method") in order to adapt an Object. + * Subclasses may override this method to determine whether the endpoint + * type should create an adapter. If so, the "ref" attribute will be + * required, and the "method" attribute will typically be used as well. * *

The default is true. */ - protected boolean requiresBeanReference() { + protected boolean shouldCreateAdapter(Element element) { return true; } @@ -82,7 +83,7 @@ public abstract class AbstractEndpointParser extends AbstractSingleBeanDefinitio @Override protected void doParse(Element element, ParserContext parserContext, BeanDefinitionBuilder builder) { - if (this.requiresBeanReference()) { + if (this.shouldCreateAdapter(element)) { String ref = element.getAttribute(REF_ATTRIBUTE); if (!StringUtils.hasText(ref)) { throw new ConfigurationException("The '" + REF_ATTRIBUTE + "' attribute is required."); diff --git a/org.springframework.integration/src/main/java/org/springframework/integration/config/SplitterParser.java b/org.springframework.integration/src/main/java/org/springframework/integration/config/SplitterParser.java index 34d77252f7..f4abd0e47d 100644 --- a/org.springframework.integration/src/main/java/org/springframework/integration/config/SplitterParser.java +++ b/org.springframework.integration/src/main/java/org/springframework/integration/config/SplitterParser.java @@ -16,6 +16,8 @@ package org.springframework.integration.config; +import org.w3c.dom.Element; + import org.springframework.integration.endpoint.MessageEndpoint; import org.springframework.integration.splitter.MethodInvokingSplitter; import org.springframework.integration.splitter.SplitterEndpoint; @@ -27,6 +29,11 @@ import org.springframework.integration.splitter.SplitterEndpoint; */ public class SplitterParser extends AbstractEndpointParser { + @Override + protected boolean shouldCreateAdapter(Element element) { + return element.hasAttribute("ref"); + } + @Override protected Class getEndpointClass() { return SplitterEndpoint.class; diff --git a/org.springframework.integration/src/main/java/org/springframework/integration/splitter/SplitterEndpoint.java b/org.springframework.integration/src/main/java/org/springframework/integration/splitter/SplitterEndpoint.java index 5778779334..f386f4e7db 100644 --- a/org.springframework.integration/src/main/java/org/springframework/integration/splitter/SplitterEndpoint.java +++ b/org.springframework.integration/src/main/java/org/springframework/integration/splitter/SplitterEndpoint.java @@ -31,6 +31,10 @@ public class SplitterEndpoint extends AbstractMessageHandlingEndpoint { private final Splitter splitter; + public SplitterEndpoint() { + this(new DefaultSplitter()); + } + public SplitterEndpoint(Splitter splitter) { Assert.notNull(splitter, "splitter must not be null"); this.splitter = splitter; diff --git a/org.springframework.integration/src/main/java/org/springframework/integration/transformer/config/AbstractTransformerParser.java b/org.springframework.integration/src/main/java/org/springframework/integration/transformer/config/AbstractTransformerParser.java index 32e1662a21..559258dcb9 100644 --- a/org.springframework.integration/src/main/java/org/springframework/integration/transformer/config/AbstractTransformerParser.java +++ b/org.springframework.integration/src/main/java/org/springframework/integration/transformer/config/AbstractTransformerParser.java @@ -32,7 +32,7 @@ import org.springframework.integration.transformer.TransformerEndpoint; public abstract class AbstractTransformerParser extends AbstractEndpointParser { @Override - protected boolean requiresBeanReference() { + protected boolean shouldCreateAdapter(Element element) { return false; }