You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2010/04/15 13:36:25 UTC
svn commit: r934375 - in /camel/trunk/components/camel-spring/src:
main/java/org/apache/camel/spring/
main/java/org/apache/camel/spring/remoting/
test/java/org/apache/camel/spring/config/
Author: davsclaus
Date: Thu Apr 15 11:36:25 2010
New Revision: 934375
URL: http://svn.apache.org/viewvc?rev=934375&view=rev
Log:
CAMEL-2649: FactoryBean for ProducerTemplate and ConsumerTemplate should return singleton instances.
Modified:
camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/CamelConsumerTemplateFactoryBean.java
camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/CamelProducerTemplateFactoryBean.java
camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/remoting/CamelProxyFactoryBean.java
camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/config/ConsumerTemplateAlreadyExistTest.java
camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/config/ProducerTemplateAlreadyExistTest.java
Modified: camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/CamelConsumerTemplateFactoryBean.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/CamelConsumerTemplateFactoryBean.java?rev=934375&r1=934374&r2=934375&view=diff
==============================================================================
--- camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/CamelConsumerTemplateFactoryBean.java (original)
+++ camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/CamelConsumerTemplateFactoryBean.java Thu Apr 15 11:36:25 2010
@@ -28,7 +28,9 @@ import org.apache.camel.ConsumerTemplate
import org.apache.camel.impl.DefaultConsumerTemplate;
import org.apache.camel.model.IdentifiedType;
import org.apache.camel.spring.util.CamelContextResolverHelper;
+import org.apache.camel.util.ServiceHelper;
import org.springframework.beans.BeansException;
+import org.springframework.beans.factory.DisposableBean;
import org.springframework.beans.factory.FactoryBean;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.context.ApplicationContext;
@@ -42,7 +44,9 @@ import org.springframework.context.Appli
*/
@XmlRootElement(name = "consumerTemplate")
@XmlAccessorType(XmlAccessType.FIELD)
-public class CamelConsumerTemplateFactoryBean extends IdentifiedType implements FactoryBean, InitializingBean, CamelContextAware, ApplicationContextAware {
+public class CamelConsumerTemplateFactoryBean extends IdentifiedType implements FactoryBean, InitializingBean, DisposableBean, CamelContextAware, ApplicationContextAware {
+ @XmlTransient
+ private ConsumerTemplate template;
@XmlAttribute
private String camelContextId;
@XmlTransient
@@ -62,16 +66,16 @@ public class CamelConsumerTemplateFactor
}
public Object getObject() throws Exception {
- ConsumerTemplate answer = new DefaultConsumerTemplate(camelContext);
+ template = new DefaultConsumerTemplate(camelContext);
// set custom cache size if provided
if (maximumCacheSize != null) {
- answer.setMaximumCacheSize(maximumCacheSize);
+ template.setMaximumCacheSize(maximumCacheSize);
}
// must start it so its ready to use
- answer.start();
- return answer;
+ ServiceHelper.startService(template);
+ return template;
}
public Class getObjectType() {
@@ -79,7 +83,11 @@ public class CamelConsumerTemplateFactor
}
public boolean isSingleton() {
- return false;
+ return true;
+ }
+
+ public void destroy() throws Exception {
+ ServiceHelper.stopService(template);
}
// Properties
Modified: camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/CamelProducerTemplateFactoryBean.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/CamelProducerTemplateFactoryBean.java?rev=934375&r1=934374&r2=934375&view=diff
==============================================================================
--- camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/CamelProducerTemplateFactoryBean.java (original)
+++ camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/CamelProducerTemplateFactoryBean.java Thu Apr 15 11:36:25 2010
@@ -29,7 +29,9 @@ import org.apache.camel.ProducerTemplate
import org.apache.camel.impl.DefaultProducerTemplate;
import org.apache.camel.model.IdentifiedType;
import org.apache.camel.spring.util.CamelContextResolverHelper;
+import org.apache.camel.util.ServiceHelper;
import org.springframework.beans.BeansException;
+import org.springframework.beans.factory.DisposableBean;
import org.springframework.beans.factory.FactoryBean;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.context.ApplicationContext;
@@ -43,7 +45,9 @@ import org.springframework.context.Appli
*/
@XmlRootElement(name = "template")
@XmlAccessorType(XmlAccessType.FIELD)
-public class CamelProducerTemplateFactoryBean extends IdentifiedType implements FactoryBean, InitializingBean, CamelContextAware, ApplicationContextAware {
+public class CamelProducerTemplateFactoryBean extends IdentifiedType implements FactoryBean, InitializingBean, DisposableBean, CamelContextAware, ApplicationContextAware {
+ @XmlTransient
+ private ProducerTemplate template;
@XmlAttribute(required = false)
private String defaultEndpoint;
@XmlAttribute
@@ -65,28 +69,26 @@ public class CamelProducerTemplateFactor
}
public Object getObject() throws Exception {
- ProducerTemplate answer;
-
CamelContext context = getCamelContext();
if (defaultEndpoint != null) {
Endpoint endpoint = context.getEndpoint(defaultEndpoint);
if (endpoint == null) {
throw new IllegalArgumentException("No endpoint found for URI: " + defaultEndpoint);
} else {
- answer = new DefaultProducerTemplate(context, endpoint);
+ template = new DefaultProducerTemplate(context, endpoint);
}
} else {
- answer = new DefaultProducerTemplate(context);
+ template = new DefaultProducerTemplate(context);
}
// set custom cache size if provided
if (maximumCacheSize != null) {
- answer.setMaximumCacheSize(maximumCacheSize);
+ template.setMaximumCacheSize(maximumCacheSize);
}
// must start it so its ready to use
- answer.start();
- return answer;
+ ServiceHelper.startService(template);
+ return template;
}
public Class getObjectType() {
@@ -94,7 +96,11 @@ public class CamelProducerTemplateFactor
}
public boolean isSingleton() {
- return false;
+ return true;
+ }
+
+ public void destroy() throws Exception {
+ ServiceHelper.stopService(template);
}
// Properties
@@ -129,4 +135,5 @@ public class CamelProducerTemplateFactor
public void setMaximumCacheSize(Integer maximumCacheSize) {
this.maximumCacheSize = maximumCacheSize;
}
+
}
Modified: camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/remoting/CamelProxyFactoryBean.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/remoting/CamelProxyFactoryBean.java?rev=934375&r1=934374&r2=934375&view=diff
==============================================================================
--- camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/remoting/CamelProxyFactoryBean.java (original)
+++ camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/remoting/CamelProxyFactoryBean.java Thu Apr 15 11:36:25 2010
@@ -23,6 +23,7 @@ import org.apache.camel.FailedToCreatePr
import org.apache.camel.Producer;
import org.apache.camel.component.bean.ProxyHelper;
import org.apache.camel.spring.util.CamelContextResolverHelper;
+import org.apache.camel.util.ServiceHelper;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.DisposableBean;
import org.springframework.beans.factory.FactoryBean;
@@ -71,18 +72,16 @@ public class CamelProxyFactoryBean exten
}
try {
- this.producer = endpoint.createProducer();
- this.producer.start();
- this.serviceProxy = ProxyHelper.createProxy(endpoint, producer, getServiceInterface());
+ producer = endpoint.createProducer();
+ ServiceHelper.startService(producer);
+ serviceProxy = ProxyHelper.createProxy(endpoint, producer, getServiceInterface());
} catch (Exception e) {
throw new FailedToCreateProducerException(endpoint, e);
}
}
public void destroy() throws Exception {
- this.producer.stop();
- this.producer = null;
- this.serviceProxy = null;
+ ServiceHelper.stopService(producer);
}
public Class getServiceInterface() {
Modified: camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/config/ConsumerTemplateAlreadyExistTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/config/ConsumerTemplateAlreadyExistTest.java?rev=934375&r1=934374&r2=934375&view=diff
==============================================================================
--- camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/config/ConsumerTemplateAlreadyExistTest.java (original)
+++ camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/config/ConsumerTemplateAlreadyExistTest.java Thu Apr 15 11:36:25 2010
@@ -43,4 +43,15 @@ public class ConsumerTemplateAlreadyExis
ConsumerTemplate lookup2 = context.getRegistry().lookup("consumerTemplate", ConsumerTemplate.class);
assertNull("Should not be able to lookup consumer template", lookup2);
}
+
+ public void testShouldBeSingleton() {
+ ConsumerTemplate lookup = context.getRegistry().lookup("myConsumerTemplate", ConsumerTemplate.class);
+ assertNotNull("Should lookup producer template", lookup);
+
+ ConsumerTemplate lookup2 = context.getRegistry().lookup("myConsumerTemplate", ConsumerTemplate.class);
+ assertNotNull("Should lookup producer template", lookup);
+
+ assertSame("Should be same instances (singleton)", lookup, lookup2);
+ }
+
}
\ No newline at end of file
Modified: camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/config/ProducerTemplateAlreadyExistTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/config/ProducerTemplateAlreadyExistTest.java?rev=934375&r1=934374&r2=934375&view=diff
==============================================================================
--- camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/config/ProducerTemplateAlreadyExistTest.java (original)
+++ camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/config/ProducerTemplateAlreadyExistTest.java Thu Apr 15 11:36:25 2010
@@ -43,4 +43,14 @@ public class ProducerTemplateAlreadyExis
ProducerTemplate lookup2 = context.getRegistry().lookup("template", ProducerTemplate.class);
assertNull("Should not be able to lookup producer template", lookup2);
}
+
+ public void testShouldBeSingleton() {
+ ProducerTemplate lookup = context.getRegistry().lookup("myTemplate", ProducerTemplate.class);
+ assertNotNull("Should lookup producer template", lookup);
+
+ ProducerTemplate lookup2 = context.getRegistry().lookup("myTemplate", ProducerTemplate.class);
+ assertNotNull("Should lookup producer template", lookup);
+
+ assertSame("Should be same instances (singleton)", lookup, lookup2);
+ }
}
\ No newline at end of file