You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by js...@apache.org on 2007/08/16 21:22:16 UTC
svn commit: r566805 - in /activemq/camel/trunk/components/camel-spring/src:
main/java/org/apache/camel/spring/CamelBeanPostProcessor.java
test/java/org/apache/camel/spring/InjectedBean.java
test/java/org/apache/camel/spring/InjectedBeanTest.java
Author: jstrachan
Date: Thu Aug 16 12:22:15 2007
New Revision: 566805
URL: http://svn.apache.org/viewvc?view=rev&rev=566805
Log:
added test case and fix for CAMEL-110
Modified:
activemq/camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/CamelBeanPostProcessor.java
activemq/camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/InjectedBean.java
activemq/camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/InjectedBeanTest.java
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?view=diff&rev=566805&r1=566804&r2=566805
==============================================================================
--- 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 Thu Aug 16 12:22:15 2007
@@ -16,38 +16,26 @@
*/
package org.apache.camel.spring;
-import static org.apache.camel.util.ObjectHelper.isNullOrBlank;
-
-import java.lang.reflect.Field;
-import java.lang.reflect.Method;
-
-import javax.xml.bind.annotation.XmlAccessType;
-import javax.xml.bind.annotation.XmlAccessorType;
-import javax.xml.bind.annotation.XmlRootElement;
-import javax.xml.bind.annotation.XmlTransient;
-
-import org.apache.camel.CamelContextAware;
-import org.apache.camel.CamelTemplate;
-import org.apache.camel.Consumer;
-import org.apache.camel.Endpoint;
-import org.apache.camel.EndpointInject;
-import org.apache.camel.MessageDriven;
-import org.apache.camel.Processor;
-import org.apache.camel.Producer;
-import org.apache.camel.RuntimeCamelException;
+import org.apache.camel.*;
import org.apache.camel.component.bean.BeanProcessor;
import org.apache.camel.spring.util.ReflectionUtils;
import org.apache.camel.util.ObjectHelper;
+import static org.apache.camel.util.ObjectHelper.isNotNullAndNonEmpty;
+import static org.apache.camel.util.ObjectHelper.isNullOrBlank;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.NoSuchBeanDefinitionException;
import org.springframework.beans.factory.config.BeanPostProcessor;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
-import static org.apache.camel.util.ObjectHelper.isNotNullAndNonEmpty;
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlTransient;
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
/**
* A post processor to perform injection of {@link Endpoint} and
@@ -220,16 +208,44 @@
if (type.isInstance(endpoint)) {
return endpoint;
} else if (type.isAssignableFrom(Producer.class)) {
- try {
- return endpoint.createProducer();
- } catch (Exception e) {
- throw new RuntimeCamelException(e);
- }
+ return createInjectionProducer(endpoint);
} else if (type.isAssignableFrom(CamelTemplate.class)) {
return new CamelTemplate(getCamelContext(), endpoint);
+ } else if (type.isAssignableFrom(PollingConsumer.class)) {
+ return createInjectionPollingConsumer(endpoint);
+ } else {
+ throw new IllegalArgumentException("Invalid type: " + type.getName() + " which cannot be injected via @EndpointInject for " + endpoint);
}
}
return null;
+ }
+
+ /**
+ * Factory method to create a started {@link PollingConsumer} to be injected
+ * into a POJO
+ */
+ protected PollingConsumer createInjectionPollingConsumer(Endpoint endpoint) {
+ try {
+ PollingConsumer pollingConsumer = endpoint.createPollingConsumer();
+ pollingConsumer.start();
+ return pollingConsumer;
+ }
+ catch (Exception e) {
+ throw new RuntimeCamelException(e);
+ }
+ }
+
+ /**
+ * A Factory method to create a started {@link Producer} to be injected into a POJO
+ */
+ protected Producer createInjectionProducer(Endpoint endpoint) {
+ try {
+ Producer producer = endpoint.createProducer();
+ producer.start();
+ return producer;
+ } catch (Exception e) {
+ throw new RuntimeCamelException(e);
+ }
}
protected Endpoint getEndpointInjection(String uri, String name, String injectionPointName) {
Modified: activemq/camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/InjectedBean.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/InjectedBean.java?view=diff&rev=566805&r1=566804&r2=566805
==============================================================================
--- activemq/camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/InjectedBean.java (original)
+++ activemq/camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/InjectedBean.java Thu Aug 16 12:22:15 2007
@@ -19,6 +19,7 @@
import org.apache.camel.CamelTemplate;
import org.apache.camel.Endpoint;
import org.apache.camel.EndpointInject;
+import org.apache.camel.PollingConsumer;
import org.apache.camel.Producer;
import org.apache.camel.ProducerTemplate;
@@ -29,19 +30,18 @@
@EndpointInject(uri = "direct:fieldInjectedEndpoint")
private Endpoint fieldInjectedEndpoint;
private Endpoint propertyInjectedEndpoint;
-
@EndpointInject(uri = "direct:fieldInjectedProducer")
private Producer fieldInjectedProducer;
private Producer propertyInjectedProducer;
-
@EndpointInject(uri = "direct:fieldInjectedCamelTemplate")
private CamelTemplate fieldInjectedCamelTemplate;
private CamelTemplate propertyInjectedCamelTemplate;
-
@EndpointInject
private ProducerTemplate injectByFieldName;
private ProducerTemplate injectByPropertyName;
-
+ @EndpointInject(uri = "direct:fieldInjectedEndpoint")
+ private PollingConsumer fieldInjectedPollingConsumer;
+ private PollingConsumer propertyInjectedPollingConsumer;
// Endpoint
//-----------------------------------------------------------------------
@@ -107,5 +107,25 @@
@EndpointInject
public void setInjectByPropertyName(ProducerTemplate injectByPropertyName) {
this.injectByPropertyName = injectByPropertyName;
+ }
+
+ // PollingConsumer
+ //-------------------------------------------------------------------------
+
+ public PollingConsumer getFieldInjectedPollingConsumer() {
+ return fieldInjectedPollingConsumer;
+ }
+
+ public void setFieldInjectedPollingConsumer(PollingConsumer fieldInjectedPollingConsumer) {
+ this.fieldInjectedPollingConsumer = fieldInjectedPollingConsumer;
+ }
+
+ public PollingConsumer getPropertyInjectedPollingConsumer() {
+ return propertyInjectedPollingConsumer;
+ }
+
+ @EndpointInject(uri = "direct:propertyInjectedPollingConsumer")
+ public void setPropertyInjectedPollingConsumer(PollingConsumer propertyInjectedPollingConsumer) {
+ this.propertyInjectedPollingConsumer = propertyInjectedPollingConsumer;
}
}
Modified: activemq/camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/InjectedBeanTest.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/InjectedBeanTest.java?view=diff&rev=566805&r1=566804&r2=566805
==============================================================================
--- activemq/camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/InjectedBeanTest.java (original)
+++ activemq/camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/InjectedBeanTest.java Thu Aug 16 12:22:15 2007
@@ -45,6 +45,14 @@
assertNotNull("No ProducerTemplate injected for getInjectByFieldName()", bean.getInjectByFieldName());
assertNotNull("No ProducerTemplate injected for getInjectByPropertyName()", bean.getInjectByPropertyName());
+
+ assertNotNull("No PollingConsumer injected for getFieldInjectedPollingConsumer()", bean.getFieldInjectedPollingConsumer());
+ assertNotNull("No PollingConsumer injected for getPropertyInjectedPollingConsumer()", bean.getPropertyInjectedPollingConsumer());
+
+ }
+
+ public void testSendAndReceive() throws Exception {
+
}
@Override