diff --git a/org.springframework.integration/src/main/java/org/springframework/integration/config/xml/AbstractChannelAdapterParser.java b/org.springframework.integration/src/main/java/org/springframework/integration/config/xml/AbstractChannelAdapterParser.java
index 733a760906..04c19e58a6 100644
--- a/org.springframework.integration/src/main/java/org/springframework/integration/config/xml/AbstractChannelAdapterParser.java
+++ b/org.springframework.integration/src/main/java/org/springframework/integration/config/xml/AbstractChannelAdapterParser.java
@@ -25,8 +25,6 @@ import org.springframework.beans.factory.support.BeanDefinitionBuilder;
import org.springframework.beans.factory.support.BeanDefinitionReaderUtils;
import org.springframework.beans.factory.xml.AbstractBeanDefinitionParser;
import org.springframework.beans.factory.xml.ParserContext;
-import org.springframework.integration.channel.DirectChannel;
-import org.springframework.util.Assert;
import org.springframework.util.StringUtils;
/**
@@ -60,9 +58,12 @@ public abstract class AbstractChannelAdapterParser extends AbstractBeanDefinitio
private String createDirectChannel(Element element, ParserContext parserContext) {
String channelId = element.getAttribute("id");
- Assert.hasText(channelId, "The channel-adapter's 'id' attribute is required when no 'channel' "
- + "reference has been provided, because that 'id' would be used for the created channel.");
- BeanDefinitionBuilder channelBuilder = BeanDefinitionBuilder.genericBeanDefinition(DirectChannel.class);
+ if (!StringUtils.hasText(channelId)) {
+ parserContext.getReaderContext().error("The channel-adapter's 'id' attribute is required when no 'channel' "
+ + "reference has been provided, because that 'id' would be used for the created channel.", element);
+ }
+ BeanDefinitionBuilder channelBuilder = BeanDefinitionBuilder.genericBeanDefinition(
+ IntegrationNamespaceUtils.BASE_PACKAGE + ".channel.DirectChannel");
BeanDefinitionHolder holder = new BeanDefinitionHolder(channelBuilder.getBeanDefinition(), channelId);
BeanDefinitionReaderUtils.registerBeanDefinition(holder, parserContext.getRegistry());
return channelId;
diff --git a/org.springframework.integration/src/main/java/org/springframework/integration/config/xml/AbstractChannelParser.java b/org.springframework.integration/src/main/java/org/springframework/integration/config/xml/AbstractChannelParser.java
index cdc5119d36..c8a609318f 100644
--- a/org.springframework.integration/src/main/java/org/springframework/integration/config/xml/AbstractChannelParser.java
+++ b/org.springframework.integration/src/main/java/org/springframework/integration/config/xml/AbstractChannelParser.java
@@ -26,8 +26,6 @@ import org.springframework.beans.factory.support.ManagedList;
import org.springframework.beans.factory.support.RootBeanDefinition;
import org.springframework.beans.factory.xml.AbstractBeanDefinitionParser;
import org.springframework.beans.factory.xml.ParserContext;
-import org.springframework.integration.channel.interceptor.MessageSelectingInterceptor;
-import org.springframework.integration.selector.PayloadTypeSelector;
import org.springframework.util.StringUtils;
import org.springframework.util.xml.DomUtils;
@@ -54,12 +52,14 @@ public abstract class AbstractChannelParser extends AbstractBeanDefinitionParser
String datatypeAttr = element.getAttribute("datatype");
if (StringUtils.hasText(datatypeAttr)) {
String[] datatypes = StringUtils.commaDelimitedListToStringArray(datatypeAttr);
- RootBeanDefinition selectorDef = new RootBeanDefinition(PayloadTypeSelector.class);
+ RootBeanDefinition selectorDef = new RootBeanDefinition();
+ selectorDef.setBeanClassName(IntegrationNamespaceUtils.BASE_PACKAGE + ".selector.PayloadTypeSelector");
selectorDef.getConstructorArgumentValues().addGenericArgumentValue(datatypes);
String selectorBeanName = parserContext.getReaderContext().generateBeanName(selectorDef);
BeanComponentDefinition selectorComponent = new BeanComponentDefinition(selectorDef, selectorBeanName);
parserContext.registerBeanComponent(selectorComponent);
- RootBeanDefinition interceptorDef = new RootBeanDefinition(MessageSelectingInterceptor.class);
+ RootBeanDefinition interceptorDef = new RootBeanDefinition();
+ interceptorDef.setBeanClassName(IntegrationNamespaceUtils.BASE_PACKAGE + ".channel.interceptor.MessageSelectingInterceptor");
interceptorDef.getConstructorArgumentValues().addGenericArgumentValue(new RuntimeBeanReference(selectorBeanName));
String interceptorBeanName = parserContext.getReaderContext().generateBeanName(interceptorDef);
BeanComponentDefinition interceptorComponent = new BeanComponentDefinition(interceptorDef, interceptorBeanName);
diff --git a/org.springframework.integration/src/main/java/org/springframework/integration/config/xml/AbstractConsumerEndpointParser.java b/org.springframework.integration/src/main/java/org/springframework/integration/config/xml/AbstractConsumerEndpointParser.java
index a99be5cf87..38de3d2b06 100644
--- a/org.springframework.integration/src/main/java/org/springframework/integration/config/xml/AbstractConsumerEndpointParser.java
+++ b/org.springframework.integration/src/main/java/org/springframework/integration/config/xml/AbstractConsumerEndpointParser.java
@@ -24,8 +24,6 @@ import org.springframework.beans.factory.support.BeanDefinitionBuilder;
import org.springframework.beans.factory.support.BeanDefinitionReaderUtils;
import org.springframework.beans.factory.xml.AbstractBeanDefinitionParser;
import org.springframework.beans.factory.xml.ParserContext;
-import org.springframework.integration.channel.DirectChannel;
-import org.springframework.integration.config.ConsumerEndpointFactoryBean;
import org.springframework.util.xml.DomUtils;
/**
@@ -72,12 +70,14 @@ public abstract class AbstractConsumerEndpointParser extends AbstractBeanDefinit
}
return handlerBeanDefinition;
}
- BeanDefinitionBuilder builder = BeanDefinitionBuilder.genericBeanDefinition(ConsumerEndpointFactoryBean.class);
+ BeanDefinitionBuilder builder = BeanDefinitionBuilder.genericBeanDefinition(
+ IntegrationNamespaceUtils.BASE_PACKAGE + ".config.ConsumerEndpointFactoryBean");
String handlerBeanName = BeanDefinitionReaderUtils.registerWithGeneratedName(handlerBeanDefinition, parserContext.getRegistry());
builder.addConstructorArgReference(handlerBeanName);
String inputChannelName = element.getAttribute(inputChannelAttributeName);
if (!parserContext.getRegistry().containsBeanDefinition(inputChannelName)) {
- BeanDefinitionBuilder channelDef = BeanDefinitionBuilder.genericBeanDefinition(DirectChannel.class);
+ BeanDefinitionBuilder channelDef = BeanDefinitionBuilder.genericBeanDefinition(
+ IntegrationNamespaceUtils.BASE_PACKAGE + ".channel.DirectChannel");
BeanDefinitionHolder holder = new BeanDefinitionHolder(channelDef.getBeanDefinition(), inputChannelName);
BeanDefinitionReaderUtils.registerBeanDefinition(holder, parserContext.getRegistry());
}
diff --git a/org.springframework.integration/src/main/java/org/springframework/integration/config/xml/AbstractOutboundChannelAdapterParser.java b/org.springframework.integration/src/main/java/org/springframework/integration/config/xml/AbstractOutboundChannelAdapterParser.java
index b5182bc29b..064751dc61 100644
--- a/org.springframework.integration/src/main/java/org/springframework/integration/config/xml/AbstractOutboundChannelAdapterParser.java
+++ b/org.springframework.integration/src/main/java/org/springframework/integration/config/xml/AbstractOutboundChannelAdapterParser.java
@@ -22,8 +22,7 @@ import org.springframework.beans.factory.support.AbstractBeanDefinition;
import org.springframework.beans.factory.support.BeanDefinitionBuilder;
import org.springframework.beans.factory.support.BeanDefinitionReaderUtils;
import org.springframework.beans.factory.xml.ParserContext;
-import org.springframework.integration.config.ConsumerEndpointFactoryBean;
-import org.springframework.util.Assert;
+import org.springframework.util.StringUtils;
import org.springframework.util.xml.DomUtils;
/**
@@ -36,10 +35,14 @@ public abstract class AbstractOutboundChannelAdapterParser extends AbstractChann
@Override
protected AbstractBeanDefinition doParse(Element element, ParserContext parserContext, String channelName) {
Element pollerElement = DomUtils.getChildElementByTagName(element, "poller");
- BeanDefinitionBuilder builder = BeanDefinitionBuilder.genericBeanDefinition(ConsumerEndpointFactoryBean.class);
+ BeanDefinitionBuilder builder = BeanDefinitionBuilder.genericBeanDefinition(
+ IntegrationNamespaceUtils.BASE_PACKAGE + ".config.ConsumerEndpointFactoryBean");
builder.addConstructorArgReference(this.parseAndRegisterConsumer(element, parserContext));
if (pollerElement != null) {
- Assert.hasText(channelName, "outbound channel adapter with a 'poller' requires a 'channel' to poll");
+ if (!StringUtils.hasText(channelName)) {
+ parserContext.getReaderContext().error(
+ "outbound channel adapter with a 'poller' requires a 'channel' to poll", element);
+ }
IntegrationNamespaceUtils.configurePollerMetadata(pollerElement, builder, parserContext);
}
builder.addPropertyValue("inputChannelName", channelName);
@@ -53,7 +56,10 @@ public abstract class AbstractOutboundChannelAdapterParser extends AbstractChann
*/
protected String parseAndRegisterConsumer(Element element, ParserContext parserContext) {
AbstractBeanDefinition definition = this.parseConsumer(element, parserContext);
- Assert.notNull(definition, "Consumer parsing must return a BeanDefinition.");
+ if (definition == null) {
+ parserContext.getReaderContext().error(
+ "Consumer parsing must return a BeanDefinition.", element);
+ }
return BeanDefinitionReaderUtils.registerWithGeneratedName(
definition, parserContext.getRegistry());
}
diff --git a/org.springframework.integration/src/main/java/org/springframework/integration/config/xml/AbstractPollingInboundChannelAdapterParser.java b/org.springframework.integration/src/main/java/org/springframework/integration/config/xml/AbstractPollingInboundChannelAdapterParser.java
index dea2cf4d8f..27a4b1ca30 100644
--- a/org.springframework.integration/src/main/java/org/springframework/integration/config/xml/AbstractPollingInboundChannelAdapterParser.java
+++ b/org.springframework.integration/src/main/java/org/springframework/integration/config/xml/AbstractPollingInboundChannelAdapterParser.java
@@ -21,8 +21,7 @@ import org.w3c.dom.Element;
import org.springframework.beans.factory.support.AbstractBeanDefinition;
import org.springframework.beans.factory.support.BeanDefinitionBuilder;
import org.springframework.beans.factory.xml.ParserContext;
-import org.springframework.integration.config.SourcePollingChannelAdapterFactoryBean;
-import org.springframework.util.Assert;
+import org.springframework.util.StringUtils;
import org.springframework.util.xml.DomUtils;
/**
@@ -35,8 +34,11 @@ public abstract class AbstractPollingInboundChannelAdapterParser extends Abstrac
@Override
protected AbstractBeanDefinition doParse(Element element, ParserContext parserContext, String channelName) {
String source = this.parseSource(element, parserContext);
- Assert.hasText(source, "failed to parse source");
- BeanDefinitionBuilder adapterBuilder = BeanDefinitionBuilder.genericBeanDefinition(SourcePollingChannelAdapterFactoryBean.class);
+ if (!StringUtils.hasText(source)) {
+ parserContext.getReaderContext().error("failed to parse source", element);
+ }
+ BeanDefinitionBuilder adapterBuilder = BeanDefinitionBuilder.genericBeanDefinition(
+ IntegrationNamespaceUtils.BASE_PACKAGE + ".config.SourcePollingChannelAdapterFactoryBean");
adapterBuilder.addPropertyReference("source", source);
adapterBuilder.addPropertyReference("outputChannel", channelName);
Element pollerElement = DomUtils.getChildElementByTagName(element, "poller");
diff --git a/org.springframework.integration/src/main/java/org/springframework/integration/config/xml/AggregatorParser.java b/org.springframework.integration/src/main/java/org/springframework/integration/config/xml/AggregatorParser.java
index c128b03130..b643dfc9e4 100644
--- a/org.springframework.integration/src/main/java/org/springframework/integration/config/xml/AggregatorParser.java
+++ b/org.springframework.integration/src/main/java/org/springframework/integration/config/xml/AggregatorParser.java
@@ -21,9 +21,6 @@ import org.w3c.dom.Element;
import org.springframework.beans.factory.support.BeanDefinitionBuilder;
import org.springframework.beans.factory.support.BeanDefinitionReaderUtils;
import org.springframework.beans.factory.xml.ParserContext;
-import org.springframework.integration.aggregator.CompletionStrategyAdapter;
-import org.springframework.integration.aggregator.MethodInvokingAggregator;
-import org.springframework.util.Assert;
import org.springframework.util.StringUtils;
/**
@@ -56,9 +53,12 @@ public class AggregatorParser extends AbstractConsumerEndpointParser {
@Override
protected BeanDefinitionBuilder parseHandler(Element element, ParserContext parserContext) {
- BeanDefinitionBuilder builder = BeanDefinitionBuilder.genericBeanDefinition(MethodInvokingAggregator.class);
+ BeanDefinitionBuilder builder = BeanDefinitionBuilder.genericBeanDefinition(
+ IntegrationNamespaceUtils.BASE_PACKAGE + ".aggregator.MethodInvokingAggregator");
String ref = element.getAttribute(REF_ATTRIBUTE);
- Assert.hasText(ref, "The '" + REF_ATTRIBUTE + "' attribute is required.");
+ if (!StringUtils.hasText(ref)) {
+ parserContext.getReaderContext().error("The '" + REF_ATTRIBUTE + "' attribute is required.", element);
+ }
builder.addConstructorArgReference(ref);
if (StringUtils.hasText(element.getAttribute(METHOD_ATTRIBUTE))) {
String method = element.getAttribute(METHOD_ATTRIBUTE);
@@ -87,7 +87,8 @@ public class AggregatorParser extends AbstractConsumerEndpointParser {
}
private String createCompletionStrategyAdapter(String ref, String method, ParserContext parserContext) {
- BeanDefinitionBuilder builder = BeanDefinitionBuilder.genericBeanDefinition(CompletionStrategyAdapter.class);
+ BeanDefinitionBuilder builder = BeanDefinitionBuilder.genericBeanDefinition(
+ IntegrationNamespaceUtils.BASE_PACKAGE + ".aggregator.CompletionStrategyAdapter");
builder.addConstructorArgReference(ref);
builder.addConstructorArgValue(method);
return BeanDefinitionReaderUtils.registerWithGeneratedName(builder.getBeanDefinition(), parserContext.getRegistry());
diff --git a/org.springframework.integration/src/main/java/org/springframework/integration/config/xml/AnnotationConfigParser.java b/org.springframework.integration/src/main/java/org/springframework/integration/config/xml/AnnotationConfigParser.java
index 47a0835cba..a1532818be 100644
--- a/org.springframework.integration/src/main/java/org/springframework/integration/config/xml/AnnotationConfigParser.java
+++ b/org.springframework.integration/src/main/java/org/springframework/integration/config/xml/AnnotationConfigParser.java
@@ -24,25 +24,28 @@ import org.springframework.beans.factory.support.AbstractBeanDefinition;
import org.springframework.beans.factory.support.BeanDefinitionBuilder;
import org.springframework.beans.factory.xml.AbstractSingleBeanDefinitionParser;
import org.springframework.beans.factory.xml.ParserContext;
-import org.springframework.integration.config.annotation.MessagingAnnotationPostProcessor;
/**
* Parser for the <annotation-config> element of the integration namespace.
- * Adds a {@link MessagingAnnotationPostProcessor} to the application context.
+ * Adds a {@link org.springframework.integration.config.annotation.MessagingAnnotationPostProcessor}
+ * to the application context.
*
* @author Mark Fisher
*/
public class AnnotationConfigParser extends AbstractSingleBeanDefinitionParser {
+ private final static String PACKAGE_NAME = IntegrationNamespaceUtils.BASE_PACKAGE + ".config.annotation";
+
+
@Override
- protected Class> getBeanClass(Element element) {
- return MessagingAnnotationPostProcessor.class;
+ protected String getBeanClassName(Element element) {
+ return PACKAGE_NAME + ".MessagingAnnotationPostProcessor";
}
@Override
protected String resolveId(Element element, AbstractBeanDefinition definition, ParserContext parserContext)
throws BeanDefinitionStoreException {
- return "internal." + MessagingAnnotationPostProcessor.class.getName();
+ return PACKAGE_NAME + ".internalMessagingAnnotationPostProcessor";
}
@Override
diff --git a/org.springframework.integration/src/main/java/org/springframework/integration/config/xml/ApplicationEventMulticasterParser.java b/org.springframework.integration/src/main/java/org/springframework/integration/config/xml/ApplicationEventMulticasterParser.java
index db1927a324..02335872d9 100644
--- a/org.springframework.integration/src/main/java/org/springframework/integration/config/xml/ApplicationEventMulticasterParser.java
+++ b/org.springframework.integration/src/main/java/org/springframework/integration/config/xml/ApplicationEventMulticasterParser.java
@@ -25,7 +25,6 @@ import org.springframework.beans.factory.support.AbstractBeanDefinition;
import org.springframework.beans.factory.support.BeanDefinitionBuilder;
import org.springframework.beans.factory.xml.AbstractSingleBeanDefinitionParser;
import org.springframework.beans.factory.xml.ParserContext;
-import org.springframework.context.event.SimpleApplicationEventMulticaster;
import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.core.task.TaskExecutor;
import org.springframework.integration.context.IntegrationContextUtils;
@@ -40,8 +39,8 @@ import org.springframework.util.StringUtils;
public class ApplicationEventMulticasterParser extends AbstractSingleBeanDefinitionParser {
@Override
- protected Class> getBeanClass(Element element) {
- return SimpleApplicationEventMulticaster.class;
+ protected String getBeanClassName(Element element) {
+ return "org.springframework.context.event.SimpleApplicationEventMulticaster";
}
@Override
diff --git a/org.springframework.integration/src/main/java/org/springframework/integration/config/xml/BridgeParser.java b/org.springframework.integration/src/main/java/org/springframework/integration/config/xml/BridgeParser.java
index 95557f29d0..ad2a01d0c4 100644
--- a/org.springframework.integration/src/main/java/org/springframework/integration/config/xml/BridgeParser.java
+++ b/org.springframework.integration/src/main/java/org/springframework/integration/config/xml/BridgeParser.java
@@ -20,7 +20,6 @@ import org.w3c.dom.Element;
import org.springframework.beans.factory.support.BeanDefinitionBuilder;
import org.springframework.beans.factory.xml.ParserContext;
-import org.springframework.integration.handler.BridgeHandler;
/**
* Parser for the <bridge> element.
@@ -31,7 +30,8 @@ public class BridgeParser extends AbstractConsumerEndpointParser {
@Override
protected BeanDefinitionBuilder parseHandler(Element element, ParserContext parserContext) {
- return BeanDefinitionBuilder.genericBeanDefinition(BridgeHandler.class);
+ return BeanDefinitionBuilder.genericBeanDefinition(
+ IntegrationNamespaceUtils.BASE_PACKAGE + ".handler.BridgeHandler");
}
}
diff --git a/org.springframework.integration/src/main/java/org/springframework/integration/config/xml/ChainParser.java b/org.springframework.integration/src/main/java/org/springframework/integration/config/xml/ChainParser.java
index 5e824da92b..43a0f8dd17 100644
--- a/org.springframework.integration/src/main/java/org/springframework/integration/config/xml/ChainParser.java
+++ b/org.springframework.integration/src/main/java/org/springframework/integration/config/xml/ChainParser.java
@@ -21,14 +21,12 @@ import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.springframework.beans.factory.config.BeanDefinition;
+import org.springframework.beans.factory.config.BeanDefinitionHolder;
import org.springframework.beans.factory.config.RuntimeBeanReference;
-import org.springframework.beans.factory.support.AbstractBeanDefinition;
import org.springframework.beans.factory.support.BeanDefinitionBuilder;
import org.springframework.beans.factory.support.BeanDefinitionReaderUtils;
import org.springframework.beans.factory.support.ManagedList;
import org.springframework.beans.factory.xml.ParserContext;
-import org.springframework.integration.handler.MessageHandlerChain;
-import org.springframework.util.Assert;
/**
* Parser for the <chain> element.
@@ -40,7 +38,8 @@ public class ChainParser extends AbstractConsumerEndpointParser {
@Override
@SuppressWarnings("unchecked")
protected BeanDefinitionBuilder parseHandler(Element element, ParserContext parserContext) {
- BeanDefinitionBuilder builder = BeanDefinitionBuilder.genericBeanDefinition(MessageHandlerChain.class);
+ BeanDefinitionBuilder builder = BeanDefinitionBuilder.genericBeanDefinition(
+ IntegrationNamespaceUtils.BASE_PACKAGE + ".handler.MessageHandlerChain");
ManagedList handlerList = new ManagedList();
NodeList children = element.getChildNodes();
for (int i = 0; i < children.getLength(); i++) {
@@ -56,10 +55,13 @@ public class ChainParser extends AbstractConsumerEndpointParser {
private String parseChild(Element element, ParserContext parserContext, BeanDefinition parentDefinition) {
BeanDefinition beanDefinition = parserContext.getDelegate().parseCustomElement(element, parentDefinition);
- Assert.notNull(beanDefinition, "BeanDefinition must not be null");
- Assert.isInstanceOf(AbstractBeanDefinition.class, beanDefinition);
- return BeanDefinitionReaderUtils.registerWithGeneratedName(
- (AbstractBeanDefinition) beanDefinition, parserContext.getRegistry());
+ if (beanDefinition == null) {
+ parserContext.getReaderContext().error("child BeanDefinition must not be null", element);
+ }
+ String beanName = BeanDefinitionReaderUtils.generateBeanName(beanDefinition, parserContext.getRegistry());
+ BeanDefinitionHolder holder = new BeanDefinitionHolder(beanDefinition, beanName);
+ BeanDefinitionReaderUtils.registerBeanDefinition(holder, parserContext.getRegistry());
+ return beanName;
}
}
diff --git a/org.springframework.integration/src/main/java/org/springframework/integration/config/xml/FilterParser.java b/org.springframework.integration/src/main/java/org/springframework/integration/config/xml/FilterParser.java
index 138ecd37ec..1bb906fe6d 100644
--- a/org.springframework.integration/src/main/java/org/springframework/integration/config/xml/FilterParser.java
+++ b/org.springframework.integration/src/main/java/org/springframework/integration/config/xml/FilterParser.java
@@ -21,9 +21,6 @@ import org.w3c.dom.Element;
import org.springframework.beans.factory.support.BeanDefinitionBuilder;
import org.springframework.beans.factory.support.BeanDefinitionReaderUtils;
import org.springframework.beans.factory.xml.ParserContext;
-import org.springframework.integration.filter.MessageFilter;
-import org.springframework.integration.filter.MethodInvokingSelector;
-import org.springframework.util.Assert;
import org.springframework.util.StringUtils;
/**
@@ -35,7 +32,8 @@ public class FilterParser extends AbstractConsumerEndpointParser {
@Override
protected BeanDefinitionBuilder parseHandler(Element element, ParserContext parserContext) {
- BeanDefinitionBuilder builder = BeanDefinitionBuilder.genericBeanDefinition(MessageFilter.class);
+ BeanDefinitionBuilder builder = BeanDefinitionBuilder.genericBeanDefinition(
+ IntegrationNamespaceUtils.BASE_PACKAGE + ".filter.MessageFilter");
builder.addConstructorArgReference(this.parseSelector(element, parserContext));
IntegrationNamespaceUtils.setValueIfAttributeDefined(builder, element, "throw-exception-on-rejection");
return builder;
@@ -43,12 +41,15 @@ public class FilterParser extends AbstractConsumerEndpointParser {
private String parseSelector(Element element, ParserContext parserContext) {
String ref = element.getAttribute("ref");
- Assert.hasText(ref, "The 'ref' attribute is required.");
+ if (!StringUtils.hasText(ref)) {
+ parserContext.getReaderContext().error("The 'ref' attribute is required.", element);
+ }
String method = element.getAttribute("method");
if (!StringUtils.hasText(method)) {
return ref;
}
- BeanDefinitionBuilder builder = BeanDefinitionBuilder.genericBeanDefinition(MethodInvokingSelector.class);
+ BeanDefinitionBuilder builder = BeanDefinitionBuilder.genericBeanDefinition(
+ IntegrationNamespaceUtils.BASE_PACKAGE + ".filter.MethodInvokingSelector");
builder.addConstructorArgReference(ref);
builder.addConstructorArgValue(method);
return BeanDefinitionReaderUtils.registerWithGeneratedName(
diff --git a/org.springframework.integration/src/main/java/org/springframework/integration/config/xml/GatewayParser.java b/org.springframework.integration/src/main/java/org/springframework/integration/config/xml/GatewayParser.java
index 6d7f3b98c7..65edbd451b 100644
--- a/org.springframework.integration/src/main/java/org/springframework/integration/config/xml/GatewayParser.java
+++ b/org.springframework.integration/src/main/java/org/springframework/integration/config/xml/GatewayParser.java
@@ -20,7 +20,6 @@ import org.w3c.dom.Element;
import org.springframework.beans.factory.support.BeanDefinitionBuilder;
import org.springframework.beans.factory.xml.AbstractSimpleBeanDefinitionParser;
-import org.springframework.integration.gateway.GatewayProxyFactoryBean;
import org.springframework.util.ObjectUtils;
/**
@@ -36,8 +35,8 @@ public class GatewayParser extends AbstractSimpleBeanDefinitionParser {
@Override
- protected Class> getBeanClass(Element element) {
- return GatewayProxyFactoryBean.class;
+ protected String getBeanClassName(Element element) {
+ return IntegrationNamespaceUtils.BASE_PACKAGE + ".gateway.GatewayProxyFactoryBean";
}
@Override
diff --git a/org.springframework.integration/src/main/java/org/springframework/integration/config/xml/MethodInvokingInboundChannelAdapterParser.java b/org.springframework.integration/src/main/java/org/springframework/integration/config/xml/MethodInvokingInboundChannelAdapterParser.java
index 6e761daccd..4b9789f642 100644
--- a/org.springframework.integration/src/main/java/org/springframework/integration/config/xml/MethodInvokingInboundChannelAdapterParser.java
+++ b/org.springframework.integration/src/main/java/org/springframework/integration/config/xml/MethodInvokingInboundChannelAdapterParser.java
@@ -21,8 +21,6 @@ import org.w3c.dom.Element;
import org.springframework.beans.factory.support.BeanDefinitionBuilder;
import org.springframework.beans.factory.support.BeanDefinitionReaderUtils;
import org.springframework.beans.factory.xml.ParserContext;
-import org.springframework.integration.message.MethodInvokingMessageSource;
-import org.springframework.util.Assert;
import org.springframework.util.StringUtils;
/**
@@ -35,10 +33,13 @@ public class MethodInvokingInboundChannelAdapterParser extends AbstractPollingIn
@Override
protected String parseSource(Element element, ParserContext parserContext) {
String sourceRef = element.getAttribute("ref");
- Assert.hasText(sourceRef, "The 'ref' attribute is required.");
+ if (!StringUtils.hasText(sourceRef)) {
+ parserContext.getReaderContext().error("The 'ref' attribute is required.", element);
+ }
String methodName = element.getAttribute("method");
if (StringUtils.hasText(methodName)) {
- BeanDefinitionBuilder invokerBuilder = BeanDefinitionBuilder.genericBeanDefinition(MethodInvokingMessageSource.class);
+ BeanDefinitionBuilder invokerBuilder = BeanDefinitionBuilder.genericBeanDefinition(
+ IntegrationNamespaceUtils.BASE_PACKAGE + ".message.MethodInvokingMessageSource");
invokerBuilder.addPropertyReference("object", sourceRef);
invokerBuilder.addPropertyValue("methodName", methodName);
sourceRef = BeanDefinitionReaderUtils.registerWithGeneratedName(
diff --git a/org.springframework.integration/src/main/java/org/springframework/integration/config/xml/MethodInvokingOutboundChannelAdapterParser.java b/org.springframework.integration/src/main/java/org/springframework/integration/config/xml/MethodInvokingOutboundChannelAdapterParser.java
index 4c3c745278..29809e7909 100644
--- a/org.springframework.integration/src/main/java/org/springframework/integration/config/xml/MethodInvokingOutboundChannelAdapterParser.java
+++ b/org.springframework.integration/src/main/java/org/springframework/integration/config/xml/MethodInvokingOutboundChannelAdapterParser.java
@@ -22,8 +22,6 @@ import org.springframework.beans.factory.support.AbstractBeanDefinition;
import org.springframework.beans.factory.support.BeanDefinitionBuilder;
import org.springframework.beans.factory.support.BeanDefinitionReaderUtils;
import org.springframework.beans.factory.xml.ParserContext;
-import org.springframework.integration.handler.MethodInvokingMessageHandler;
-import org.springframework.util.Assert;
import org.springframework.util.StringUtils;
/**
@@ -36,7 +34,9 @@ public class MethodInvokingOutboundChannelAdapterParser extends AbstractOutbound
@Override
protected String parseAndRegisterConsumer(Element element, ParserContext parserContext) {
String consumerRef = element.getAttribute("ref");
- Assert.isTrue(StringUtils.hasText(consumerRef), "The 'ref' attribute is required.");
+ if (!StringUtils.hasText(consumerRef)) {
+ parserContext.getReaderContext().error("The 'ref' attribute is required.", element);
+ }
if (element.hasAttribute("method")) {
consumerRef = BeanDefinitionReaderUtils.registerWithGeneratedName(
this.parseConsumer(element, parserContext), parserContext.getRegistry());
@@ -46,7 +46,8 @@ public class MethodInvokingOutboundChannelAdapterParser extends AbstractOutbound
@Override
protected AbstractBeanDefinition parseConsumer(Element element, ParserContext parserContext) {
- BeanDefinitionBuilder invokerBuilder = BeanDefinitionBuilder.genericBeanDefinition(MethodInvokingMessageHandler.class);
+ BeanDefinitionBuilder invokerBuilder = BeanDefinitionBuilder.genericBeanDefinition(
+ IntegrationNamespaceUtils.BASE_PACKAGE + ".handler.MethodInvokingMessageHandler");
invokerBuilder.addConstructorArgReference(element.getAttribute("ref"));
invokerBuilder.addConstructorArgValue(element.getAttribute("method"));
return invokerBuilder.getBeanDefinition();
diff --git a/org.springframework.integration/src/main/java/org/springframework/integration/config/xml/PointToPointChannelParser.java b/org.springframework.integration/src/main/java/org/springframework/integration/config/xml/PointToPointChannelParser.java
index 29164598d2..bb67d88329 100644
--- a/org.springframework.integration/src/main/java/org/springframework/integration/config/xml/PointToPointChannelParser.java
+++ b/org.springframework.integration/src/main/java/org/springframework/integration/config/xml/PointToPointChannelParser.java
@@ -20,10 +20,6 @@ import org.w3c.dom.Element;
import org.springframework.beans.factory.support.BeanDefinitionBuilder;
import org.springframework.beans.factory.xml.ParserContext;
-import org.springframework.integration.channel.DirectChannel;
-import org.springframework.integration.channel.PriorityChannel;
-import org.springframework.integration.channel.QueueChannel;
-import org.springframework.integration.channel.RendezvousChannel;
import org.springframework.util.StringUtils;
import org.springframework.util.xml.DomUtils;
@@ -34,7 +30,7 @@ import org.springframework.util.xml.DomUtils;
*/
public class PointToPointChannelParser extends AbstractChannelParser {
- private static final String CAPACITY_ATTRIBUTE = "capacity";
+ private static final String CHANNEL_PACKAGE = IntegrationNamespaceUtils.BASE_PACKAGE + ".channel";
@Override
@@ -42,11 +38,11 @@ public class PointToPointChannelParser extends AbstractChannelParser {
BeanDefinitionBuilder builder = null;
Element queueElement = null;
if ((queueElement = DomUtils.getChildElementByTagName(element, "queue")) != null) {
- builder = BeanDefinitionBuilder.genericBeanDefinition(QueueChannel.class);
+ builder = BeanDefinitionBuilder.genericBeanDefinition(CHANNEL_PACKAGE + ".QueueChannel");
this.parseQueueCapacity(builder, queueElement);
}
else if ((queueElement = DomUtils.getChildElementByTagName(element, "priority-queue")) != null) {
- builder = BeanDefinitionBuilder.genericBeanDefinition(PriorityChannel.class);
+ builder = BeanDefinitionBuilder.genericBeanDefinition(CHANNEL_PACKAGE + ".PriorityChannel");
this.parseQueueCapacity(builder, queueElement);
String comparatorRef = queueElement.getAttribute("comparator");
if (StringUtils.hasText(comparatorRef)) {
@@ -54,16 +50,16 @@ public class PointToPointChannelParser extends AbstractChannelParser {
}
}
else if ((queueElement = DomUtils.getChildElementByTagName(element, "rendezvous-queue")) != null) {
- builder = BeanDefinitionBuilder.genericBeanDefinition(RendezvousChannel.class);
+ builder = BeanDefinitionBuilder.genericBeanDefinition(CHANNEL_PACKAGE + ".RendezvousChannel");
}
else {
- builder = BeanDefinitionBuilder.genericBeanDefinition(DirectChannel.class);
+ builder = BeanDefinitionBuilder.genericBeanDefinition(CHANNEL_PACKAGE + ".DirectChannel");
}
return builder;
}
private void parseQueueCapacity(BeanDefinitionBuilder builder, Element queueElement) {
- String capacity = queueElement.getAttribute(CAPACITY_ATTRIBUTE);
+ String capacity = queueElement.getAttribute("capacity");
if (StringUtils.hasText(capacity)) {
builder.addConstructorArgValue(Integer.valueOf(capacity));
}
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 97f8ff09b2..ac18c44252 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
@@ -27,11 +27,8 @@ import org.springframework.beans.factory.support.BeanDefinitionReaderUtils;
import org.springframework.beans.factory.xml.AbstractBeanDefinitionParser;
import org.springframework.beans.factory.xml.ParserContext;
import org.springframework.integration.context.IntegrationContextUtils;
-import org.springframework.integration.scheduling.CronTrigger;
-import org.springframework.integration.scheduling.IntervalTrigger;
-import org.springframework.integration.scheduling.PollerMetadata;
import org.springframework.transaction.support.DefaultTransactionDefinition;
-import org.springframework.util.Assert;
+import org.springframework.util.StringUtils;
import org.springframework.util.xml.DomUtils;
/**
@@ -45,8 +42,9 @@ public class PollerParser extends AbstractBeanDefinitionParser {
protected String resolveId(Element element, AbstractBeanDefinition definition, ParserContext parserContext) throws BeanDefinitionStoreException {
String id = super.resolveId(element, definition, parserContext);
if (element.getAttribute("default").equals("true")) {
- Assert.isTrue(!parserContext.getRegistry().isBeanNameInUse(IntegrationContextUtils.DEFAULT_POLLER_METADATA_BEAN_NAME),
- "only one default element is allowed per context");
+ if (parserContext.getRegistry().isBeanNameInUse(IntegrationContextUtils.DEFAULT_POLLER_METADATA_BEAN_NAME)) {
+ parserContext.getReaderContext().error("only one default element is allowed per context", element);
+ }
parserContext.getRegistry().registerAlias(id, IntegrationContextUtils.DEFAULT_POLLER_METADATA_BEAN_NAME);
}
return id;
@@ -54,9 +52,12 @@ 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");
+ BeanDefinitionBuilder metadataBuilder = BeanDefinitionBuilder.genericBeanDefinition(
+ IntegrationNamespaceUtils.BASE_PACKAGE + ".scheduling.PollerMetadata");
+ if (element.hasAttribute("ref")) {
+ parserContext.getReaderContext().error(
+ "the 'ref' attribute must not be present on a 'poller' element submitted to the parser", element);
+ }
configureTrigger(element, metadataBuilder, parserContext);
IntegrationNamespaceUtils.setValueIfAttributeDefined(metadataBuilder, element, "max-messages-per-poll");
Element txElement = DomUtils.getChildElementByTagName(element, "transactional");
@@ -75,8 +76,10 @@ public class PollerParser extends AbstractBeanDefinitionParser {
}
else {
Element cronElement = DomUtils.getChildElementByTagName(pollerElement, "cron-trigger");
- Assert.notNull(cronElement,
- "A element must include either an or child element.");
+ if (cronElement == null) {
+ parserContext.getReaderContext().error(
+ "A element must include either an or child element.", pollerElement);
+ }
triggerBeanName = parseCronTrigger(cronElement, parserContext);
}
targetBuilder.addPropertyReference("trigger", triggerBeanName);
@@ -87,9 +90,12 @@ public class PollerParser extends AbstractBeanDefinitionParser {
*/
private String parseIntervalTrigger(Element element, ParserContext parserContext) {
String interval = element.getAttribute("interval");
- Assert.hasText(interval, "the 'interval' attribute is required for an ");
+ if (!StringUtils.hasText(interval)) {
+ parserContext.getReaderContext().error("the 'interval' attribute is required for an ", element);
+ }
TimeUnit timeUnit = TimeUnit.valueOf(element.getAttribute("time-unit"));
- BeanDefinitionBuilder builder = BeanDefinitionBuilder.genericBeanDefinition(IntervalTrigger.class);
+ BeanDefinitionBuilder builder = BeanDefinitionBuilder.genericBeanDefinition(
+ IntegrationNamespaceUtils.BASE_PACKAGE + ".scheduling.IntervalTrigger");
builder.addConstructorArgValue(interval);
builder.addConstructorArgValue(timeUnit);
IntegrationNamespaceUtils.setValueIfAttributeDefined(builder, element, "initial-delay");
@@ -102,8 +108,11 @@ public class PollerParser extends AbstractBeanDefinitionParser {
*/
private String parseCronTrigger(Element element, ParserContext parserContext) {
String cronExpression = element.getAttribute("expression");
- Assert.hasText(cronExpression, "the 'expression' attribute is required for a ");
- BeanDefinitionBuilder builder = BeanDefinitionBuilder.genericBeanDefinition(CronTrigger.class);
+ if (!StringUtils.hasText(cronExpression)) {
+ parserContext.getReaderContext().error("the 'expression' attribute is required for a ", element);
+ }
+ BeanDefinitionBuilder builder = BeanDefinitionBuilder.genericBeanDefinition(
+ IntegrationNamespaceUtils.BASE_PACKAGE + ".scheduling.CronTrigger");
builder.addConstructorArgValue(cronExpression);
return BeanDefinitionReaderUtils.registerWithGeneratedName(builder.getBeanDefinition(), parserContext.getRegistry());
}
diff --git a/org.springframework.integration/src/main/java/org/springframework/integration/config/xml/PublishSubscribeChannelParser.java b/org.springframework.integration/src/main/java/org/springframework/integration/config/xml/PublishSubscribeChannelParser.java
index fbeb364469..f2a18be536 100644
--- a/org.springframework.integration/src/main/java/org/springframework/integration/config/xml/PublishSubscribeChannelParser.java
+++ b/org.springframework.integration/src/main/java/org/springframework/integration/config/xml/PublishSubscribeChannelParser.java
@@ -20,7 +20,6 @@ import org.w3c.dom.Element;
import org.springframework.beans.factory.support.BeanDefinitionBuilder;
import org.springframework.beans.factory.xml.ParserContext;
-import org.springframework.integration.channel.PublishSubscribeChannel;
import org.springframework.util.StringUtils;
/**
@@ -32,7 +31,8 @@ public class PublishSubscribeChannelParser extends AbstractChannelParser {
@Override
protected BeanDefinitionBuilder buildBeanDefinition(Element element, ParserContext parserContext) {
- BeanDefinitionBuilder builder = BeanDefinitionBuilder.genericBeanDefinition(PublishSubscribeChannel.class);
+ BeanDefinitionBuilder builder = BeanDefinitionBuilder.genericBeanDefinition(
+ IntegrationNamespaceUtils.BASE_PACKAGE + ".channel.PublishSubscribeChannel");
String taskExecutorRef = element.getAttribute("task-executor");
if (StringUtils.hasText(taskExecutorRef)) {
builder.addConstructorArgReference(taskExecutorRef);
diff --git a/org.springframework.integration/src/main/java/org/springframework/integration/config/xml/ResequencerParser.java b/org.springframework.integration/src/main/java/org/springframework/integration/config/xml/ResequencerParser.java
index 16de484f20..32cb2c41d8 100644
--- a/org.springframework.integration/src/main/java/org/springframework/integration/config/xml/ResequencerParser.java
+++ b/org.springframework.integration/src/main/java/org/springframework/integration/config/xml/ResequencerParser.java
@@ -20,7 +20,6 @@ import org.w3c.dom.Element;
import org.springframework.beans.factory.support.BeanDefinitionBuilder;
import org.springframework.beans.factory.xml.ParserContext;
-import org.springframework.integration.aggregator.Resequencer;
/**
* Parser for the <resequencer> element.
@@ -29,31 +28,17 @@ import org.springframework.integration.aggregator.Resequencer;
*/
public class ResequencerParser extends AbstractConsumerEndpointParser {
- private static final String DISCARD_CHANNEL_ATTRIBUTE = "discard-channel";
-
- private static final String SEND_TIMEOUT_ATTRIBUTE = "send-timeout";
-
- private static final String RELEASE_PARTIAL_SEQUENCES = "release-partial-sequences";
-
- private static final String SEND_PARTIAL_RESULT_ON_TIMEOUT_ATTRIBUTE = "send-partial-result-on-timeout";
-
- private static final String REAPER_INTERVAL_ATTRIBUTE = "reaper-interval";
-
- private static final String TRACKED_CORRELATION_ID_CAPACITY_ATTRIBUTE = "tracked-correlation-id-capacity";
-
- private static final String TIMEOUT_ATTRIBUTE = "timeout";
-
-
@Override
protected BeanDefinitionBuilder parseHandler(Element element, ParserContext parserContext) {
- BeanDefinitionBuilder builder = BeanDefinitionBuilder.genericBeanDefinition(Resequencer.class);
- IntegrationNamespaceUtils.setReferenceIfAttributeDefined(builder, element, DISCARD_CHANNEL_ATTRIBUTE);
- IntegrationNamespaceUtils.setValueIfAttributeDefined(builder, element, SEND_TIMEOUT_ATTRIBUTE);
- IntegrationNamespaceUtils.setValueIfAttributeDefined(builder, element, RELEASE_PARTIAL_SEQUENCES);
- IntegrationNamespaceUtils.setValueIfAttributeDefined(builder, element, SEND_PARTIAL_RESULT_ON_TIMEOUT_ATTRIBUTE);
- IntegrationNamespaceUtils.setValueIfAttributeDefined(builder, element, REAPER_INTERVAL_ATTRIBUTE);
- IntegrationNamespaceUtils.setValueIfAttributeDefined(builder, element, TRACKED_CORRELATION_ID_CAPACITY_ATTRIBUTE);
- IntegrationNamespaceUtils.setValueIfAttributeDefined(builder, element, TIMEOUT_ATTRIBUTE);
+ BeanDefinitionBuilder builder = BeanDefinitionBuilder.genericBeanDefinition(
+ IntegrationNamespaceUtils.BASE_PACKAGE + ".aggregator.Resequencer");
+ IntegrationNamespaceUtils.setReferenceIfAttributeDefined(builder, element, "discard-channel");
+ IntegrationNamespaceUtils.setValueIfAttributeDefined(builder, element, "send-timeout");
+ IntegrationNamespaceUtils.setValueIfAttributeDefined(builder, element, "release-partial-sequences");
+ IntegrationNamespaceUtils.setValueIfAttributeDefined(builder, element, "send-partial-result-on-timeout");
+ IntegrationNamespaceUtils.setValueIfAttributeDefined(builder, element, "reaper-interval");
+ IntegrationNamespaceUtils.setValueIfAttributeDefined(builder, element, "tracked-correlation-id-capacity");
+ IntegrationNamespaceUtils.setValueIfAttributeDefined(builder, element, "timeout");
IntegrationNamespaceUtils.setValueIfAttributeDefined(builder, element, "auto-startup");
return builder;
}
diff --git a/org.springframework.integration/src/main/java/org/springframework/integration/config/xml/RouterParser.java b/org.springframework.integration/src/main/java/org/springframework/integration/config/xml/RouterParser.java
index 06eaf98c99..1b234f2768 100644
--- a/org.springframework.integration/src/main/java/org/springframework/integration/config/xml/RouterParser.java
+++ b/org.springframework.integration/src/main/java/org/springframework/integration/config/xml/RouterParser.java
@@ -21,9 +21,6 @@ import org.w3c.dom.Element;
import org.springframework.beans.factory.support.BeanDefinitionBuilder;
import org.springframework.beans.factory.support.BeanDefinitionReaderUtils;
import org.springframework.beans.factory.xml.ParserContext;
-import org.springframework.integration.channel.BeanFactoryChannelResolver;
-import org.springframework.integration.config.RouterFactoryBean;
-import org.springframework.util.Assert;
import org.springframework.util.StringUtils;
/**
@@ -36,14 +33,18 @@ public class RouterParser extends AbstractConsumerEndpointParser {
@Override
protected BeanDefinitionBuilder parseHandler(Element element, ParserContext parserContext) {
String ref = element.getAttribute(REF_ATTRIBUTE);
- Assert.hasText(ref, "The '" + REF_ATTRIBUTE + "' attribute is required.");
- BeanDefinitionBuilder builder = BeanDefinitionBuilder.genericBeanDefinition(RouterFactoryBean.class);
+ if (!StringUtils.hasText(ref)) {
+ parserContext.getReaderContext().error("The '" + REF_ATTRIBUTE + "' attribute is required.", element);
+ }
+ BeanDefinitionBuilder builder = BeanDefinitionBuilder.genericBeanDefinition(
+ IntegrationNamespaceUtils.BASE_PACKAGE + ".config.RouterFactoryBean");
builder.addPropertyReference("targetObject", ref);
if (StringUtils.hasText(element.getAttribute(METHOD_ATTRIBUTE))) {
String method = element.getAttribute(METHOD_ATTRIBUTE);
builder.addPropertyValue("targetMethodName", method);
}
- BeanDefinitionBuilder resolverBuilder = BeanDefinitionBuilder.genericBeanDefinition(BeanFactoryChannelResolver.class);
+ BeanDefinitionBuilder resolverBuilder = BeanDefinitionBuilder.genericBeanDefinition(
+ IntegrationNamespaceUtils.BASE_PACKAGE + ".channel.BeanFactoryChannelResolver");
String resolverBeanName = BeanDefinitionReaderUtils.registerWithGeneratedName(
resolverBuilder.getBeanDefinition(), parserContext.getRegistry());
builder.addPropertyReference("channelResolver", resolverBeanName);
diff --git a/org.springframework.integration/src/main/java/org/springframework/integration/config/xml/SelectorChainParser.java b/org.springframework.integration/src/main/java/org/springframework/integration/config/xml/SelectorChainParser.java
index 0d46c70399..d49bda075b 100644
--- a/org.springframework.integration/src/main/java/org/springframework/integration/config/xml/SelectorChainParser.java
+++ b/org.springframework.integration/src/main/java/org/springframework/integration/config/xml/SelectorChainParser.java
@@ -26,8 +26,7 @@ import org.springframework.beans.factory.support.BeanDefinitionReaderUtils;
import org.springframework.beans.factory.support.ManagedList;
import org.springframework.beans.factory.xml.AbstractSingleBeanDefinitionParser;
import org.springframework.beans.factory.xml.ParserContext;
-import org.springframework.integration.selector.MessageSelectorChain;
-import org.springframework.util.Assert;
+import org.springframework.util.StringUtils;
/**
* Parser for the <selector-chain/> element.
@@ -36,13 +35,18 @@ import org.springframework.util.Assert;
*/
public class SelectorChainParser extends AbstractSingleBeanDefinitionParser {
+ private static final String SELECTOR_CHAIN_CLASSNAME = IntegrationNamespaceUtils.BASE_PACKAGE + ".selector.MessageSelectorChain";
+
+
@Override
- protected Class> getBeanClass(Element element) {
- return MessageSelectorChain.class;
+ protected String getBeanClassName(Element element) {
+ return SELECTOR_CHAIN_CLASSNAME;
}
public void doParse(Element element, ParserContext parserContext, BeanDefinitionBuilder builder) {
- Assert.hasText(element.getAttribute("id"), "id is required");
+ if (!StringUtils.hasText(element.getAttribute("id"))) {
+ parserContext.getReaderContext().error("id is required", element);
+ }
this.parseSelectorChain(builder, element, parserContext);
}
@@ -61,7 +65,7 @@ public class SelectorChainParser extends AbstractSingleBeanDefinitionParser {
}
else if ("selector-chain".equals(nodeName)) {
BeanDefinitionBuilder nestedBuilder =
- BeanDefinitionBuilder.genericBeanDefinition(MessageSelectorChain.class);
+ BeanDefinitionBuilder.genericBeanDefinition(SELECTOR_CHAIN_CLASSNAME);
this.parseSelectorChain(nestedBuilder, (Element) child, parserContext);
String nestedBeanName = BeanDefinitionReaderUtils.registerWithGeneratedName(
nestedBuilder.getBeanDefinition(), parserContext.getRegistry());
diff --git a/org.springframework.integration/src/main/java/org/springframework/integration/config/xml/ServiceActivatorParser.java b/org.springframework.integration/src/main/java/org/springframework/integration/config/xml/ServiceActivatorParser.java
index ff21605663..b00b738804 100644
--- a/org.springframework.integration/src/main/java/org/springframework/integration/config/xml/ServiceActivatorParser.java
+++ b/org.springframework.integration/src/main/java/org/springframework/integration/config/xml/ServiceActivatorParser.java
@@ -20,8 +20,6 @@ import org.w3c.dom.Element;
import org.springframework.beans.factory.support.BeanDefinitionBuilder;
import org.springframework.beans.factory.xml.ParserContext;
-import org.springframework.integration.handler.ServiceActivatingHandler;
-import org.springframework.util.Assert;
import org.springframework.util.StringUtils;
/**
@@ -33,9 +31,12 @@ public class ServiceActivatorParser extends AbstractConsumerEndpointParser {
@Override
protected BeanDefinitionBuilder parseHandler(Element element, ParserContext parserContext) {
- BeanDefinitionBuilder builder = BeanDefinitionBuilder.genericBeanDefinition(ServiceActivatingHandler.class);
+ BeanDefinitionBuilder builder = BeanDefinitionBuilder.genericBeanDefinition(
+ IntegrationNamespaceUtils.BASE_PACKAGE + ".handler.ServiceActivatingHandler");
String ref = element.getAttribute(REF_ATTRIBUTE);
- Assert.hasText(ref, "The '" + REF_ATTRIBUTE + "' attribute is required.");
+ if (!StringUtils.hasText(ref)) {
+ parserContext.getReaderContext().error("The '" + REF_ATTRIBUTE + "' attribute is required.", element);
+ }
builder.addConstructorArgReference(ref);
if (StringUtils.hasText(element.getAttribute(METHOD_ATTRIBUTE))) {
String method = element.getAttribute(METHOD_ATTRIBUTE);
diff --git a/org.springframework.integration/src/main/java/org/springframework/integration/config/xml/SimpleHeaderEnricherParser.java b/org.springframework.integration/src/main/java/org/springframework/integration/config/xml/SimpleHeaderEnricherParser.java
index b90f830fa8..c8d469f87d 100644
--- a/org.springframework.integration/src/main/java/org/springframework/integration/config/xml/SimpleHeaderEnricherParser.java
+++ b/org.springframework.integration/src/main/java/org/springframework/integration/config/xml/SimpleHeaderEnricherParser.java
@@ -93,7 +93,7 @@ public class SimpleHeaderEnricherParser extends AbstractTransformerParser {
headers.put(name, value);
}
}
- this.postProcessHeaders(element, headers);
+ this.postProcessHeaders(element, headers, parserContext);
builder.addConstructorArgValue(headers);
builder.addPropertyValue("overwrite", this.shouldOverwrite(element));
}
@@ -101,7 +101,7 @@ public class SimpleHeaderEnricherParser extends AbstractTransformerParser {
/**
* Subclasses may implement this method to provide additional headers.
*/
- protected void postProcessHeaders(Element element, ManagedMap headers) {
+ protected void postProcessHeaders(Element element, ManagedMap headers, ParserContext parserContext) {
}
}
diff --git a/org.springframework.integration/src/main/java/org/springframework/integration/config/xml/SplitterParser.java b/org.springframework.integration/src/main/java/org/springframework/integration/config/xml/SplitterParser.java
index 2850d183ca..e545260727 100644
--- a/org.springframework.integration/src/main/java/org/springframework/integration/config/xml/SplitterParser.java
+++ b/org.springframework.integration/src/main/java/org/springframework/integration/config/xml/SplitterParser.java
@@ -20,7 +20,6 @@ import org.w3c.dom.Element;
import org.springframework.beans.factory.support.BeanDefinitionBuilder;
import org.springframework.beans.factory.xml.ParserContext;
-import org.springframework.integration.config.SplitterFactoryBean;
import org.springframework.util.StringUtils;
/**
@@ -32,7 +31,8 @@ public class SplitterParser extends AbstractConsumerEndpointParser {
@Override
protected BeanDefinitionBuilder parseHandler(Element element, ParserContext parserContext) {
- BeanDefinitionBuilder builder = BeanDefinitionBuilder.genericBeanDefinition(SplitterFactoryBean.class);
+ BeanDefinitionBuilder builder = BeanDefinitionBuilder.genericBeanDefinition(
+ IntegrationNamespaceUtils.BASE_PACKAGE + ".config.SplitterFactoryBean");
if (element.hasAttribute(REF_ATTRIBUTE)) {
String ref = element.getAttribute(REF_ATTRIBUTE);
builder.addPropertyReference("targetObject", ref);
diff --git a/org.springframework.integration/src/main/java/org/springframework/integration/config/xml/StandardHeaderEnricherParser.java b/org.springframework.integration/src/main/java/org/springframework/integration/config/xml/StandardHeaderEnricherParser.java
index 62d42b4266..cee4ba0c00 100644
--- a/org.springframework.integration/src/main/java/org/springframework/integration/config/xml/StandardHeaderEnricherParser.java
+++ b/org.springframework.integration/src/main/java/org/springframework/integration/config/xml/StandardHeaderEnricherParser.java
@@ -22,8 +22,8 @@ import org.w3c.dom.NodeList;
import org.springframework.beans.factory.config.RuntimeBeanReference;
import org.springframework.beans.factory.support.ManagedMap;
+import org.springframework.beans.factory.xml.ParserContext;
import org.springframework.integration.core.MessageHeaders;
-import org.springframework.util.Assert;
import org.springframework.util.StringUtils;
/**
@@ -49,7 +49,7 @@ public class StandardHeaderEnricherParser extends SimpleHeaderEnricherParser {
@Override
@SuppressWarnings("unchecked")
- protected void postProcessHeaders(Element element, ManagedMap headers) {
+ protected void postProcessHeaders(Element element, ManagedMap headers, ParserContext parserContext) {
NodeList childNodes = element.getChildNodes();
for (int i = 0; i < childNodes.getLength(); i++) {
Node node = childNodes.item(i);
@@ -60,7 +60,10 @@ public class StandardHeaderEnricherParser extends SimpleHeaderEnricherParser {
String ref = headerElement.getAttribute("ref");
boolean isValue = StringUtils.hasText(value);
boolean isRef = StringUtils.hasText(ref);
- Assert.isTrue(isValue ^ isRef, "Exactly one of the 'value' or 'ref' attributes is required.");
+ if (!(isValue ^ isRef)) {
+ parserContext.getReaderContext().error(
+ "Exactly one of the 'value' or 'ref' attributes is required.", element);
+ }
if (isValue) {
headers.put(name, value);
}
diff --git a/org.springframework.integration/src/main/java/org/springframework/integration/config/xml/ThreadLocalChannelParser.java b/org.springframework.integration/src/main/java/org/springframework/integration/config/xml/ThreadLocalChannelParser.java
index d2544902ef..6ea55a3c48 100644
--- a/org.springframework.integration/src/main/java/org/springframework/integration/config/xml/ThreadLocalChannelParser.java
+++ b/org.springframework.integration/src/main/java/org/springframework/integration/config/xml/ThreadLocalChannelParser.java
@@ -20,7 +20,6 @@ import org.w3c.dom.Element;
import org.springframework.beans.factory.support.BeanDefinitionBuilder;
import org.springframework.beans.factory.xml.ParserContext;
-import org.springframework.integration.channel.ThreadLocalChannel;
/**
* Parser for the <thread-local-channel> element.
@@ -31,7 +30,8 @@ public class ThreadLocalChannelParser extends AbstractChannelParser {
@Override
protected BeanDefinitionBuilder buildBeanDefinition(Element element, ParserContext parserContext) {
- return BeanDefinitionBuilder.genericBeanDefinition(ThreadLocalChannel.class);
+ return BeanDefinitionBuilder.genericBeanDefinition(
+ IntegrationNamespaceUtils.BASE_PACKAGE + ".channel.ThreadLocalChannel");
}
}
diff --git a/org.springframework.integration/src/main/java/org/springframework/integration/config/xml/ThreadPoolTaskExecutorParser.java b/org.springframework.integration/src/main/java/org/springframework/integration/config/xml/ThreadPoolTaskExecutorParser.java
index 43839c4a73..8786e4185e 100644
--- a/org.springframework.integration/src/main/java/org/springframework/integration/config/xml/ThreadPoolTaskExecutorParser.java
+++ b/org.springframework.integration/src/main/java/org/springframework/integration/config/xml/ThreadPoolTaskExecutorParser.java
@@ -23,10 +23,11 @@ import org.w3c.dom.Element;
import org.springframework.beans.factory.support.BeanDefinitionBuilder;
import org.springframework.beans.factory.xml.AbstractSimpleBeanDefinitionParser;
-import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import org.springframework.util.StringUtils;
/**
+ * Parser for the 'thread-pool-task-executor' element.
+ *
* @author Mark Fisher
*/
public class ThreadPoolTaskExecutorParser extends AbstractSimpleBeanDefinitionParser {
@@ -39,8 +40,8 @@ public class ThreadPoolTaskExecutorParser extends AbstractSimpleBeanDefinitionPa
@Override
- protected Class> getBeanClass(Element element) {
- return ThreadPoolTaskExecutor.class;
+ protected String getBeanClassName(Element element) {
+ return "org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor";
}
@Override
diff --git a/org.springframework.integration/src/main/java/org/springframework/integration/config/xml/TransformerParser.java b/org.springframework.integration/src/main/java/org/springframework/integration/config/xml/TransformerParser.java
index 7db2b39576..fe557bfdce 100644
--- a/org.springframework.integration/src/main/java/org/springframework/integration/config/xml/TransformerParser.java
+++ b/org.springframework.integration/src/main/java/org/springframework/integration/config/xml/TransformerParser.java
@@ -21,9 +21,6 @@ import org.w3c.dom.Element;
import org.springframework.beans.factory.support.BeanDefinitionBuilder;
import org.springframework.beans.factory.support.BeanDefinitionReaderUtils;
import org.springframework.beans.factory.xml.ParserContext;
-import org.springframework.integration.transformer.MessageTransformingHandler;
-import org.springframework.integration.transformer.MethodInvokingTransformer;
-import org.springframework.util.Assert;
import org.springframework.util.StringUtils;
/**
@@ -33,21 +30,28 @@ import org.springframework.util.StringUtils;
*/
public class TransformerParser extends AbstractConsumerEndpointParser {
+ private final static String TRANSFORMER_PACKAGE = IntegrationNamespaceUtils.BASE_PACKAGE + ".transformer";
+
+
@Override
protected BeanDefinitionBuilder parseHandler(Element element, ParserContext parserContext) {
- BeanDefinitionBuilder builder = BeanDefinitionBuilder.genericBeanDefinition(MessageTransformingHandler.class);
+ BeanDefinitionBuilder builder = BeanDefinitionBuilder.genericBeanDefinition(
+ TRANSFORMER_PACKAGE + ".MessageTransformingHandler");
builder.addConstructorArgReference(this.parseTransformer(element, parserContext));
return builder;
}
private String parseTransformer(Element element, ParserContext parserContext) {
String ref = element.getAttribute("ref");
- Assert.hasText(ref, "The 'ref' attribute is required.");
+ if (!StringUtils.hasText(ref)) {
+ parserContext.getReaderContext().error("The 'ref' attribute is required.", element);
+ }
String method = element.getAttribute("method");
if (!StringUtils.hasText(method)) {
return ref;
}
- BeanDefinitionBuilder builder = BeanDefinitionBuilder.genericBeanDefinition(MethodInvokingTransformer.class);
+ BeanDefinitionBuilder builder = BeanDefinitionBuilder.genericBeanDefinition(
+ TRANSFORMER_PACKAGE + ".MethodInvokingTransformer");
builder.addConstructorArgReference(ref);
builder.addConstructorArgValue(method);
return BeanDefinitionReaderUtils.registerWithGeneratedName(
diff --git a/org.springframework.integration/src/main/java/org/springframework/integration/config/xml/WireTapParser.java b/org.springframework.integration/src/main/java/org/springframework/integration/config/xml/WireTapParser.java
index 775c1ad102..8f121705e5 100644
--- a/org.springframework.integration/src/main/java/org/springframework/integration/config/xml/WireTapParser.java
+++ b/org.springframework.integration/src/main/java/org/springframework/integration/config/xml/WireTapParser.java
@@ -21,8 +21,6 @@ import org.w3c.dom.Element;
import org.springframework.beans.factory.support.BeanDefinitionBuilder;
import org.springframework.beans.factory.support.BeanDefinitionReaderUtils;
import org.springframework.beans.factory.xml.ParserContext;
-import org.springframework.integration.channel.interceptor.WireTap;
-import org.springframework.util.Assert;
import org.springframework.util.StringUtils;
/**
@@ -33,9 +31,12 @@ import org.springframework.util.StringUtils;
public class WireTapParser implements BeanDefinitionRegisteringParser {
public String parse(Element element, ParserContext parserContext) {
- BeanDefinitionBuilder builder = BeanDefinitionBuilder.genericBeanDefinition(WireTap.class);
+ BeanDefinitionBuilder builder = BeanDefinitionBuilder.genericBeanDefinition(
+ IntegrationNamespaceUtils.BASE_PACKAGE + ".channel.interceptor.WireTap");
String targetRef = element.getAttribute("channel");
- Assert.hasText(targetRef, "the 'channel' attribute is required");
+ if (!StringUtils.hasText(targetRef)) {
+ parserContext.getReaderContext().error("The 'channel' attribute is required.", element);
+ }
builder.addConstructorArgReference(targetRef);
String selectorRef = element.getAttribute("selector");
if (StringUtils.hasText(selectorRef)) {