You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ni...@apache.org on 2008/05/14 06:57:25 UTC
svn commit: r656103 - in /activemq/camel/trunk/components/camel-spring/src:
main/java/org/apache/camel/spring/ main/java/org/apache/camel/spring/handler/
test/java/org/apache/camel/spring/config/scan/route/
test/resources/org/apache/camel/spring/config...
Author: ningjiang
Date: Tue May 13 21:57:24 2008
New Revision: 656103
URL: http://svn.apache.org/viewvc?rev=656103&view=rev
Log:
CAMEL-361 Get CamelProcessor work with RouterBuilder
Modified:
activemq/camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/CamelBeanPostProcessor.java
activemq/camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/CamelContextFactoryBean.java
activemq/camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/RouteBuilderFinder.java
activemq/camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/handler/CamelNamespaceHandler.java
activemq/camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/config/scan/route/MyRouteBuilder.java
activemq/camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/config/scan/componentScan.xml
Modified: activemq/camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/CamelBeanPostProcessor.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/CamelBeanPostProcessor.java?rev=656103&r1=656102&r2=656103&view=diff
==============================================================================
--- activemq/camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/CamelBeanPostProcessor.java (original)
+++ activemq/camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/CamelBeanPostProcessor.java Tue May 13 21:57:24 2008
@@ -69,6 +69,7 @@
}
public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
+
injectFields(bean);
injectMethods(bean);
if (bean instanceof CamelContextAware) {
Modified: activemq/camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/CamelContextFactoryBean.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/CamelContextFactoryBean.java?rev=656103&r1=656102&r2=656103&view=diff
==============================================================================
--- activemq/camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/CamelContextFactoryBean.java (original)
+++ activemq/camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/CamelContextFactoryBean.java Tue May 13 21:57:24 2008
@@ -43,6 +43,7 @@
import org.springframework.beans.factory.DisposableBean;
import org.springframework.beans.factory.FactoryBean;
import org.springframework.beans.factory.InitializingBean;
+import org.springframework.beans.factory.config.BeanPostProcessor;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.context.ApplicationEvent;
@@ -96,6 +97,8 @@
private ClassLoader contextClassLoaderOnStart;
@XmlTransient
private InstrumentationAgent instrumentationAgent;
+ @XmlTransient
+ private BeanPostProcessor beanPostProcessor;
public CamelContextFactoryBean() {
@@ -116,6 +119,16 @@
}
public void afterPropertiesSet() throws Exception {
+ // Set the application context and camelContext for the beanPostProcessor
+ if (beanPostProcessor != null) {
+ if (beanPostProcessor instanceof ApplicationContextAware) {
+ ((ApplicationContextAware)beanPostProcessor).setApplicationContext(applicationContext);
+ }
+ if (beanPostProcessor instanceof CamelBeanPostProcessor) {
+ ((CamelBeanPostProcessor)beanPostProcessor).setCamelContext(getContext());
+ }
+
+ }
// lets force any lazy creation
getContext().addRouteDefinitions(routes);
@@ -239,6 +252,14 @@
this.mbeanServer = mbeanServer;
}
+ public void setBeanPostProcessor(BeanPostProcessor postProcessor) {
+ this.beanPostProcessor = postProcessor;
+ }
+
+ public BeanPostProcessor getBeanPostProcessor() {
+ return beanPostProcessor;
+ }
+
public boolean isJmxEnabled() {
return useJmx != null && useJmx.booleanValue();
}
@@ -313,7 +334,7 @@
*/
protected void findRouteBuiders() throws Exception, InstantiationException {
if (packages != null && packages.length > 0) {
- RouteBuilderFinder finder = new RouteBuilderFinder(getContext(), packages, contextClassLoaderOnStart);
+ RouteBuilderFinder finder = new RouteBuilderFinder(getContext(), packages, contextClassLoaderOnStart, getBeanPostProcessor());
finder.appendBuilders(additionalBuilders);
}
}
Modified: activemq/camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/RouteBuilderFinder.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/RouteBuilderFinder.java?rev=656103&r1=656102&r2=656103&view=diff
==============================================================================
--- activemq/camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/RouteBuilderFinder.java (original)
+++ activemq/camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/RouteBuilderFinder.java Tue May 13 21:57:24 2008
@@ -25,6 +25,7 @@
import org.apache.camel.util.ResolverUtil;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.springframework.beans.factory.config.BeanPostProcessor;
import org.springframework.context.ApplicationContext;
/**
@@ -38,13 +39,15 @@
private final String[] packages;
private ApplicationContext applicationContext;
private ResolverUtil resolver = new ResolverUtil();
+ private BeanPostProcessor beanPostProcessor;
- public RouteBuilderFinder(SpringCamelContext camelContext, String[] packages, ClassLoader classLoader) {
+ public RouteBuilderFinder(SpringCamelContext camelContext, String[] packages, ClassLoader classLoader, BeanPostProcessor postProcessor) {
this.camelContext = camelContext;
this.applicationContext = camelContext.getApplicationContext();
this.packages = packages;
+ this.beanPostProcessor = postProcessor;
- // lets add all the available class loaders just in case of wierdness
+ // lets add all the available class loaders just in case of weirdness
// we could make this more strict once we've worked out all the gremlins
// in servicemix-camel
Set set = resolver.getClassLoaders();
@@ -57,6 +60,7 @@
*/
}
+
public String[] getPackages() {
return packages;
}
@@ -78,6 +82,10 @@
}
if (isValidClass(aClass)) {
RouteBuilder builder = instantiateBuilder(aClass);
+ if (beanPostProcessor != null) {
+ // Inject the annotated resource
+ beanPostProcessor.postProcessBeforeInitialization(builder, builder.toString());
+ }
list.add(builder);
}
}
Modified: activemq/camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/handler/CamelNamespaceHandler.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/handler/CamelNamespaceHandler.java?rev=656103&r1=656102&r2=656103&view=diff
==============================================================================
--- activemq/camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/handler/CamelNamespaceHandler.java (original)
+++ activemq/camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/handler/CamelNamespaceHandler.java Tue May 13 21:57:24 2008
@@ -96,11 +96,12 @@
parserMap.put(elementName, parser);
}
- protected void createBeanPostProcessor(ParserContext parserContext, String contextId, Element childElement) {
+ protected void createBeanPostProcessor(ParserContext parserContext, String contextId, Element childElement, BeanDefinitionBuilder parentBuilder) {
String beanPostProcessorId = contextId + ":beanPostProcessor";
childElement.setAttribute("id", beanPostProcessorId);
BeanDefinition definition = beanPostProcessorParser.parse(childElement, parserContext);
definition.getPropertyValues().addPropertyValue("camelContext", new RuntimeBeanReference(contextId));
+ parentBuilder.addPropertyReference("beanPostProcessor", beanPostProcessorId);
}
protected void registerScriptParser(String elementName, String engineName) {
@@ -182,7 +183,7 @@
Element childElement = (Element)child;
String localName = child.getLocalName();
if (localName.equals("beanPostProcessor")) {
- createBeanPostProcessor(parserContext, contextId, childElement);
+ createBeanPostProcessor(parserContext, contextId, childElement, builder);
createdBeanPostProcessor = true;
} else if (localName.equals("endpoint")) {
BeanDefinition definition = endpointParser.parse(childElement, parserContext);
@@ -210,10 +211,10 @@
// lets inject the namespaces into any namespace aware POJOs
injectNamespaces(element);
if (!createdBeanPostProcessor) {
- // no bean processor element so lets add a fake one
+ // no bean processor element so lets create it by ourself
Element childElement = element.getOwnerDocument().createElement("beanPostProcessor");
element.appendChild(childElement);
- createBeanPostProcessor(parserContext, contextId, childElement);
+ createBeanPostProcessor(parserContext, contextId, childElement, builder);
}
}
}
Modified: activemq/camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/config/scan/route/MyRouteBuilder.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/config/scan/route/MyRouteBuilder.java?rev=656103&r1=656102&r2=656103&view=diff
==============================================================================
--- activemq/camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/config/scan/route/MyRouteBuilder.java (original)
+++ activemq/camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/config/scan/route/MyRouteBuilder.java Tue May 13 21:57:24 2008
@@ -27,13 +27,15 @@
MyProcessor component;
- @Autowired
+ @EndpointInject(name = "start")
+ Endpoint startEndpoint;
+
@EndpointInject(name = "result")
Endpoint resultEndpoint;
@Override
public void configure() throws Exception {
- from("direct:start").process(component).to(resultEndpoint);
+ from(startEndpoint).process(component).to(resultEndpoint);
}
@Autowired
Modified: activemq/camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/config/scan/componentScan.xml
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/config/scan/componentScan.xml?rev=656103&r1=656102&r2=656103&view=diff
==============================================================================
--- activemq/camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/config/scan/componentScan.xml (original)
+++ activemq/camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/config/scan/componentScan.xml Tue May 13 21:57:24 2008
@@ -27,6 +27,7 @@
<camelContext xmlns="http://activemq.apache.org/camel/schema/spring">
<package>org.apache.camel.spring.config.scan.route</package>
+ <endpoint id="start" uri="direct:start"/>
<endpoint id="result" uri="mock:end"/>
</camelContext>