diff --git a/org.springframework.integration/src/main/java/org/springframework/integration/config/IntegrationNamespaceHandler.java b/org.springframework.integration/src/main/java/org/springframework/integration/config/IntegrationNamespaceHandler.java
index e3636c3110..ba55e71394 100644
--- a/org.springframework.integration/src/main/java/org/springframework/integration/config/IntegrationNamespaceHandler.java
+++ b/org.springframework.integration/src/main/java/org/springframework/integration/config/IntegrationNamespaceHandler.java
@@ -17,7 +17,6 @@
package org.springframework.integration.config;
import org.springframework.beans.factory.xml.NamespaceHandlerSupport;
-import org.springframework.integration.config.annotation.AnnotationDrivenParser;
import org.springframework.integration.gateway.config.GatewayParser;
/**
@@ -30,7 +29,6 @@ public class IntegrationNamespaceHandler extends NamespaceHandlerSupport {
public void init() {
registerBeanDefinitionParser("message-bus", new MessageBusParser());
- registerBeanDefinitionParser("annotation-driven", new AnnotationDrivenParser());
registerBeanDefinitionParser("channel", new PointToPointChannelParser());
registerBeanDefinitionParser("thread-local-channel", new ThreadLocalChannelParser());
registerBeanDefinitionParser("publish-subscribe-channel", new PublishSubscribeChannelParser());
diff --git a/org.springframework.integration/src/main/java/org/springframework/integration/config/MessageBusParser.java b/org.springframework.integration/src/main/java/org/springframework/integration/config/MessageBusParser.java
index 093ff30e4a..0a7fb8aa9f 100644
--- a/org.springframework.integration/src/main/java/org/springframework/integration/config/MessageBusParser.java
+++ b/org.springframework.integration/src/main/java/org/springframework/integration/config/MessageBusParser.java
@@ -23,14 +23,18 @@ import org.w3c.dom.NodeList;
import org.springframework.beans.factory.BeanDefinitionStoreException;
import org.springframework.beans.factory.config.BeanDefinition;
import org.springframework.beans.factory.config.RuntimeBeanReference;
+import org.springframework.beans.factory.parsing.BeanComponentDefinition;
import org.springframework.beans.factory.support.AbstractBeanDefinition;
import org.springframework.beans.factory.support.BeanDefinitionBuilder;
import org.springframework.beans.factory.support.ManagedList;
+import org.springframework.beans.factory.support.RootBeanDefinition;
import org.springframework.beans.factory.xml.AbstractSimpleBeanDefinitionParser;
import org.springframework.beans.factory.xml.ParserContext;
import org.springframework.integration.bus.DefaultMessageBus;
import org.springframework.integration.bus.MessageBus;
import org.springframework.integration.bus.MessageBusAwareBeanPostProcessor;
+import org.springframework.integration.config.annotation.MessagingAnnotationPostProcessor;
+import org.springframework.integration.config.annotation.PublisherAnnotationPostProcessor;
import org.springframework.util.Assert;
/**
@@ -43,17 +47,14 @@ public class MessageBusParser extends AbstractSimpleBeanDefinitionParser {
public static final String MESSAGE_BUS_BEAN_NAME = "internal.MessageBus";
- public static final String MESSAGE_BUS_AWARE_POST_PROCESSOR_BEAN_NAME = "internal.MessageBusAwareBeanPostProcessor";
+ public static final String MESSAGE_BUS_AWARE_POST_PROCESSOR_BEAN_NAME =
+ "internal.MessageBusAwareBeanPostProcessor";
- private static final String TASK_SCHEDULER_ATTRIBUTE = "task-scheduler";
+ private static final String PUBLISHER_ANNOTATION_POST_PROCESSOR_BEAN_NAME =
+ "internal.PublisherAnnotationPostProcessor";
- private static final String CHANNEL_FACTORY_ATTRIBUTE = "channel-factory";
-
- private static final String INTERCEPTOR_ELEMENT = "interceptor";
-
- private static final String REFERENCE_ATTRIBUTE = "ref";
-
- private static final String INTERCEPTORS_PROPERTY = "interceptors";
+ private static final String MESSAGING_ANNOTATION_POST_PROCESSOR_BEAN_NAME =
+ "internal.MessagingAnnotationPostProcessor";
@Override
@@ -71,15 +72,14 @@ public class MessageBusParser extends AbstractSimpleBeanDefinitionParser {
@Override
protected boolean isEligibleAttribute(String attributeName) {
- return !TASK_SCHEDULER_ATTRIBUTE.equals(attributeName) &&
- !CHANNEL_FACTORY_ATTRIBUTE.equals(attributeName) &&
+ return !"task-scheduler".equals(attributeName) &&
+ !"enable-annotations".equals(attributeName) &&
super.isEligibleAttribute(attributeName);
}
@Override
protected void postProcess(BeanDefinitionBuilder builder, Element element) {
- IntegrationNamespaceUtils.setReferenceIfAttributeDefined(builder, element, TASK_SCHEDULER_ATTRIBUTE);
- IntegrationNamespaceUtils.setReferenceIfAttributeDefined(builder, element, CHANNEL_FACTORY_ATTRIBUTE);
+ IntegrationNamespaceUtils.setReferenceIfAttributeDefined(builder, element, "task-scheduler");
this.processChildElements(builder, element);
}
@@ -90,28 +90,31 @@ public class MessageBusParser extends AbstractSimpleBeanDefinitionParser {
for (int i = 0; i < childNodes.getLength(); i++) {
Node child = childNodes.item(i);
if (child.getNodeType() == Node.ELEMENT_NODE) {
- String localName = child.getLocalName();
- if (INTERCEPTOR_ELEMENT.equals(localName)) {
- interceptors.add(new RuntimeBeanReference(((Element)child).getAttribute(REFERENCE_ATTRIBUTE)));
+ if ("interceptor".equals(child.getLocalName())) {
+ interceptors.add(new RuntimeBeanReference(((Element)child).getAttribute("ref")));
}
}
}
if (interceptors.size() > 0) {
- builder.addPropertyValue(INTERCEPTORS_PROPERTY, interceptors);
+ builder.addPropertyValue("interceptors", interceptors);
}
}
@Override
protected void doParse(Element element, ParserContext parserContext, BeanDefinitionBuilder builder) {
super.doParse(element, parserContext, builder);
- this.addPostProcessors(parserContext);
+ this.addPostProcessors(element, parserContext);
}
/**
* Adds extra post-processors to the context, to inject the objects configured by the MessageBus
*/
- private void addPostProcessors(ParserContext parserContext) {
+ private void addPostProcessors(Element element, ParserContext parserContext) {
this.registerMessageBusAwarePostProcessor(parserContext);
+ if ("true".equals(element.getAttribute("enable-annotations").toLowerCase())) {
+ this.registerPublisherPostProcessor(parserContext);
+ this.registerMessagingAnnotationPostProcessor(parserContext);
+ }
}
private void registerMessageBusAwarePostProcessor(ParserContext parserContext) {
@@ -121,4 +124,20 @@ public class MessageBusParser extends AbstractSimpleBeanDefinitionParser {
parserContext.getRegistry().registerBeanDefinition(MESSAGE_BUS_AWARE_POST_PROCESSOR_BEAN_NAME, builder.getBeanDefinition());
}
+ private void registerPublisherPostProcessor(ParserContext parserContext) {
+ BeanDefinition bd = new RootBeanDefinition(PublisherAnnotationPostProcessor.class);
+ bd.getPropertyValues().addPropertyValue("channelRegistry",
+ new RuntimeBeanReference(MessageBusParser.MESSAGE_BUS_BEAN_NAME));
+ BeanComponentDefinition bcd = new BeanComponentDefinition(
+ bd, PUBLISHER_ANNOTATION_POST_PROCESSOR_BEAN_NAME);
+ parserContext.registerBeanComponent(bcd);
+ }
+
+ private void registerMessagingAnnotationPostProcessor(ParserContext parserContext) {
+ BeanDefinition bd = new RootBeanDefinition(MessagingAnnotationPostProcessor.class);
+ BeanComponentDefinition bcd = new BeanComponentDefinition(
+ bd, MESSAGING_ANNOTATION_POST_PROCESSOR_BEAN_NAME);
+ parserContext.registerBeanComponent(bcd);
+ }
+
}
diff --git a/org.springframework.integration/src/main/java/org/springframework/integration/config/annotation/AnnotationDrivenParser.java b/org.springframework.integration/src/main/java/org/springframework/integration/config/annotation/AnnotationDrivenParser.java
deleted file mode 100644
index d38d2a2559..0000000000
--- a/org.springframework.integration/src/main/java/org/springframework/integration/config/annotation/AnnotationDrivenParser.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * Copyright 2002-2008 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.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.springframework.integration.config.annotation;
-
-import org.w3c.dom.Element;
-
-import org.springframework.beans.factory.config.BeanDefinition;
-import org.springframework.beans.factory.config.RuntimeBeanReference;
-import org.springframework.beans.factory.parsing.BeanComponentDefinition;
-import org.springframework.beans.factory.support.RootBeanDefinition;
-import org.springframework.beans.factory.xml.BeanDefinitionParser;
-import org.springframework.beans.factory.xml.ParserContext;
-import org.springframework.integration.config.MessageBusParser;
-
-/**
- * Parser for the annotation-driven element of the integration
- * namespace. Registers the annotation-driven post-processors.
- *
- * @author Mark Fisher
- */
-public class AnnotationDrivenParser implements BeanDefinitionParser {
-
- private static final String PUBLISHER_ANNOTATION_POST_PROCESSOR_BEAN_NAME =
- "internal.PublisherAnnotationPostProcessor";
-
- private static final String MESSAGING_ANNOTATION_POST_PROCESSOR_BEAN_NAME =
- "internal.MessagingAnnotationPostProcessor";
-
-
- public BeanDefinition parse(Element element, ParserContext parserContext) {
- this.registerPublisherPostProcessor(parserContext);
- this.registerMessagingAnnotationPostProcessor(parserContext);
- return null;
- }
-
- private void registerPublisherPostProcessor(ParserContext parserContext) {
- BeanDefinition bd = new RootBeanDefinition(PublisherAnnotationPostProcessor.class);
- bd.getPropertyValues().addPropertyValue("channelRegistry",
- new RuntimeBeanReference(MessageBusParser.MESSAGE_BUS_BEAN_NAME));
- BeanComponentDefinition bcd = new BeanComponentDefinition(
- bd, PUBLISHER_ANNOTATION_POST_PROCESSOR_BEAN_NAME);
- parserContext.registerBeanComponent(bcd);
- }
-
- private void registerMessagingAnnotationPostProcessor(ParserContext parserContext) {
- BeanDefinition bd = new RootBeanDefinition(MessagingAnnotationPostProcessor.class);
- BeanComponentDefinition bcd = new BeanComponentDefinition(
- bd, MESSAGING_ANNOTATION_POST_PROCESSOR_BEAN_NAME);
- parserContext.registerBeanComponent(bcd);
- }
-
-}
diff --git a/org.springframework.integration/src/main/java/org/springframework/integration/config/spring-integration-1.0.xsd b/org.springframework.integration/src/main/java/org/springframework/integration/config/spring-integration-1.0.xsd
index 5ffeb92861..d642c7d24b 100644
--- a/org.springframework.integration/src/main/java/org/springframework/integration/config/spring-integration-1.0.xsd
+++ b/org.springframework.integration/src/main/java/org/springframework/integration/config/spring-integration-1.0.xsd
@@ -30,22 +30,13 @@
-
+
+
-
-
-
-
- Enables the annotation-driven post-processors.
-
-
-
-
-
diff --git a/org.springframework.integration/src/test/java/org/springframework/integration/config/annotation/messageParameterAnnotatedEndpointTests.xml b/org.springframework.integration/src/test/java/org/springframework/integration/config/annotation/messageParameterAnnotatedEndpointTests.xml
index 19bbed5674..9f6f0cd176 100644
--- a/org.springframework.integration/src/test/java/org/springframework/integration/config/annotation/messageParameterAnnotatedEndpointTests.xml
+++ b/org.springframework.integration/src/test/java/org/springframework/integration/config/annotation/messageParameterAnnotatedEndpointTests.xml
@@ -7,9 +7,7 @@
http://www.springframework.org/schema/integration
http://www.springframework.org/schema/integration/spring-integration-1.0.xsd">
-
-
-
+
diff --git a/org.springframework.integration/src/test/java/org/springframework/integration/config/annotation/serviceActivatorAnnotationPostProcessorTests.xml b/org.springframework.integration/src/test/java/org/springframework/integration/config/annotation/serviceActivatorAnnotationPostProcessorTests.xml
index 7f955e3223..a53da87b4e 100644
--- a/org.springframework.integration/src/test/java/org/springframework/integration/config/annotation/serviceActivatorAnnotationPostProcessorTests.xml
+++ b/org.springframework.integration/src/test/java/org/springframework/integration/config/annotation/serviceActivatorAnnotationPostProcessorTests.xml
@@ -7,8 +7,7 @@
http://www.springframework.org/schema/integration
http://www.springframework.org/schema/integration/spring-integration-1.0.xsd">
-
-
+
diff --git a/org.springframework.integration/src/test/java/org/springframework/integration/config/annotation/simpleAnnotatedEndpointTests.xml b/org.springframework.integration/src/test/java/org/springframework/integration/config/annotation/simpleAnnotatedEndpointTests.xml
index 06082d12df..f2cbeb2061 100644
--- a/org.springframework.integration/src/test/java/org/springframework/integration/config/annotation/simpleAnnotatedEndpointTests.xml
+++ b/org.springframework.integration/src/test/java/org/springframework/integration/config/annotation/simpleAnnotatedEndpointTests.xml
@@ -7,9 +7,7 @@
http://www.springframework.org/schema/integration
http://www.springframework.org/schema/integration/spring-integration-1.0.xsd">
-
-
-
+
diff --git a/org.springframework.integration/src/test/java/org/springframework/integration/config/annotation/testAnnotatedAggregator.xml b/org.springframework.integration/src/test/java/org/springframework/integration/config/annotation/testAnnotatedAggregator.xml
index 8f8c19a4ab..6df7de8e61 100644
--- a/org.springframework.integration/src/test/java/org/springframework/integration/config/annotation/testAnnotatedAggregator.xml
+++ b/org.springframework.integration/src/test/java/org/springframework/integration/config/annotation/testAnnotatedAggregator.xml
@@ -9,9 +9,7 @@
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-2.5.xsd">
-
-
-
+
diff --git a/org.springframework.integration/src/test/java/org/springframework/integration/config/annotation/typeConvertingEndpointTests.xml b/org.springframework.integration/src/test/java/org/springframework/integration/config/annotation/typeConvertingEndpointTests.xml
index 1b5f5cff02..d4144a866f 100644
--- a/org.springframework.integration/src/test/java/org/springframework/integration/config/annotation/typeConvertingEndpointTests.xml
+++ b/org.springframework.integration/src/test/java/org/springframework/integration/config/annotation/typeConvertingEndpointTests.xml
@@ -7,9 +7,7 @@
http://www.springframework.org/schema/integration
http://www.springframework.org/schema/integration/spring-integration-1.0.xsd">
-
-
-
+
diff --git a/org.springframework.integration/src/test/java/org/springframework/integration/splitter/SplitterIntegrationTests-context.xml b/org.springframework.integration/src/test/java/org/springframework/integration/splitter/SplitterIntegrationTests-context.xml
index eb4c9c9193..afa6ba0ac1 100644
--- a/org.springframework.integration/src/test/java/org/springframework/integration/splitter/SplitterIntegrationTests-context.xml
+++ b/org.springframework.integration/src/test/java/org/springframework/integration/splitter/SplitterIntegrationTests-context.xml
@@ -6,8 +6,7 @@
http://www.springframework.org/schema/integration
http://www.springframework.org/schema/integration/spring-integration-1.0.xsd">
-
-
+