CAMEL-9789: Fixed proxy/export to startup and shutdown correctly. That also 
fixes the JMS test failure.


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/342c2182
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/342c2182
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/342c2182

Branch: refs/heads/master
Commit: 342c21829ba595ff8927fd134d8a6aab8c691972
Parents: f4146a7
Author: Claus Ibsen <davscl...@apache.org>
Authored: Sat Apr 9 14:09:54 2016 +0200
Committer: Claus Ibsen <davscl...@apache.org>
Committed: Sat Apr 9 14:09:54 2016 +0200

----------------------------------------------------------------------
 .../camel/blueprint/CamelProxyFactoryBean.java     |  7 +++++--
 .../apache/camel/component/jms/remoting/ISay.java  |  7 +++----
 .../component/jms/remoting/JmsRemotingTest.java    |  4 ++--
 .../camel/component/jms/remoting/SayService.java   | 17 ++++-------------
 .../spring/remoting/CamelProxyFactoryBean.java     |  7 +++++--
 .../spring/remoting/CamelServiceExporter.java      | 14 +++++++++++---
 6 files changed, 30 insertions(+), 26 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/342c2182/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/CamelProxyFactoryBean.java
----------------------------------------------------------------------
diff --git 
a/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/CamelProxyFactoryBean.java
 
b/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/CamelProxyFactoryBean.java
index 6491bbc..8f23210 100644
--- 
a/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/CamelProxyFactoryBean.java
+++ 
b/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/CamelProxyFactoryBean.java
@@ -109,8 +109,11 @@ public class CamelProxyFactoryBean extends 
AbstractCamelFactoryBean<Object> {
         boolean bind = getBinding() != null ? getBinding() : true;
 
         try {
+            // need to start endpoint before we create producer
+            ServiceHelper.startService(endpoint);
             producer = endpoint.createProducer();
-            ServiceHelper.startService(producer);
+            // add and start producer
+            getCamelContext().addService(producer, true, true);
             Class<?> clazz = 
blueprintContainer.loadClass(getServiceInterface());
             serviceProxy = ProxyHelper.createProxy(endpoint, bind, producer, 
clazz);
         } catch (Exception e) {
@@ -119,7 +122,7 @@ public class CamelProxyFactoryBean extends 
AbstractCamelFactoryBean<Object> {
     }
 
     public void destroy() throws Exception {
-        ServiceHelper.stopService(producer);
+        // we let CamelContext manage the lifecycle of the producer and shut 
it down when Camel stops
     }
 
     public String getServiceUrl() {

http://git-wip-us.apache.org/repos/asf/camel/blob/342c2182/components/camel-jms/src/test/java/org/apache/camel/component/jms/remoting/ISay.java
----------------------------------------------------------------------
diff --git 
a/components/camel-jms/src/test/java/org/apache/camel/component/jms/remoting/ISay.java
 
b/components/camel-jms/src/test/java/org/apache/camel/component/jms/remoting/ISay.java
index ed8629e..b15d2a5 100644
--- 
a/components/camel-jms/src/test/java/org/apache/camel/component/jms/remoting/ISay.java
+++ 
b/components/camel-jms/src/test/java/org/apache/camel/component/jms/remoting/ISay.java
@@ -19,9 +19,8 @@ package org.apache.camel.component.jms.remoting;
 import java.rmi.Remote;
 import java.rmi.RemoteException;
 
-/**
- *
- */
 public interface ISay extends Remote {
-    String say() throws RemoteException;
+
+    String say(String name) throws RemoteException;
+
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/342c2182/components/camel-jms/src/test/java/org/apache/camel/component/jms/remoting/JmsRemotingTest.java
----------------------------------------------------------------------
diff --git 
a/components/camel-jms/src/test/java/org/apache/camel/component/jms/remoting/JmsRemotingTest.java
 
b/components/camel-jms/src/test/java/org/apache/camel/component/jms/remoting/JmsRemotingTest.java
index 842c574..b15c34c 100644
--- 
a/components/camel-jms/src/test/java/org/apache/camel/component/jms/remoting/JmsRemotingTest.java
+++ 
b/components/camel-jms/src/test/java/org/apache/camel/component/jms/remoting/JmsRemotingTest.java
@@ -32,7 +32,7 @@ public class JmsRemotingTest extends CamelSpringTestSupport {
     @Test
     public void testRemoting() throws Exception {
         ISay proxy = applicationContext.getBean("sayProxy", ISay.class);
-        String rc = proxy.say();
-        assertEquals("Hello", rc);
+        String rc = proxy.say("Camel");
+        assertEquals("Hello Camel", rc);
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/camel/blob/342c2182/components/camel-jms/src/test/java/org/apache/camel/component/jms/remoting/SayService.java
----------------------------------------------------------------------
diff --git 
a/components/camel-jms/src/test/java/org/apache/camel/component/jms/remoting/SayService.java
 
b/components/camel-jms/src/test/java/org/apache/camel/component/jms/remoting/SayService.java
index 30e2c2a..7f649ab 100644
--- 
a/components/camel-jms/src/test/java/org/apache/camel/component/jms/remoting/SayService.java
+++ 
b/components/camel-jms/src/test/java/org/apache/camel/component/jms/remoting/SayService.java
@@ -19,26 +19,17 @@ package org.apache.camel.component.jms.remoting;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-/**
- *
- */
 public class SayService implements ISay {
 
     private static final Logger LOG = 
LoggerFactory.getLogger(SayService.class);
-
-    String message = "Hello";
+    private String message = "Hello";
 
     public SayService() {
     }
 
-    public SayService(String message) {
-        this.message = message;
-    }
-
-    public String say() {
-        LOG.info("Invoking say() method with message: " + message);
-
-        return message;
+    public String say(String name) {
+        LOG.info("Invoking say() method with {}", name);
+        return message + " " + name;
     }
 
     public String getMessage() {

http://git-wip-us.apache.org/repos/asf/camel/blob/342c2182/components/camel-spring/src/main/java/org/apache/camel/spring/remoting/CamelProxyFactoryBean.java
----------------------------------------------------------------------
diff --git 
a/components/camel-spring/src/main/java/org/apache/camel/spring/remoting/CamelProxyFactoryBean.java
 
b/components/camel-spring/src/main/java/org/apache/camel/spring/remoting/CamelProxyFactoryBean.java
index d2d7132..eac6e40 100644
--- 
a/components/camel-spring/src/main/java/org/apache/camel/spring/remoting/CamelProxyFactoryBean.java
+++ 
b/components/camel-spring/src/main/java/org/apache/camel/spring/remoting/CamelProxyFactoryBean.java
@@ -75,8 +75,11 @@ public class CamelProxyFactoryBean extends 
UrlBasedRemoteAccessor implements Fac
         boolean bind = getBinding() != null ? getBinding() : true;
 
         try {
+            // need to start endpoint before we create producer
+            ServiceHelper.startService(endpoint);
             producer = endpoint.createProducer();
-            ServiceHelper.startService(producer);
+            // add and start producer
+            camelContext.addService(producer, true, true);
             serviceProxy = ProxyHelper.createProxy(endpoint, bind, producer, 
getServiceInterface());
         } catch (Exception e) {
             throw new FailedToCreateProducerException(endpoint, e);
@@ -84,7 +87,7 @@ public class CamelProxyFactoryBean extends 
UrlBasedRemoteAccessor implements Fac
     }
 
     public void destroy() throws Exception {
-        ServiceHelper.stopService(producer);
+        // we let CamelContext manage the lifecycle of the producer and shut 
it down when Camel stops
     }
 
     public Class<?> getServiceInterface() {

http://git-wip-us.apache.org/repos/asf/camel/blob/342c2182/components/camel-spring/src/main/java/org/apache/camel/spring/remoting/CamelServiceExporter.java
----------------------------------------------------------------------
diff --git 
a/components/camel-spring/src/main/java/org/apache/camel/spring/remoting/CamelServiceExporter.java
 
b/components/camel-spring/src/main/java/org/apache/camel/spring/remoting/CamelServiceExporter.java
index fd5bb4e..1caee1a 100644
--- 
a/components/camel-spring/src/main/java/org/apache/camel/spring/remoting/CamelServiceExporter.java
+++ 
b/components/camel-spring/src/main/java/org/apache/camel/spring/remoting/CamelServiceExporter.java
@@ -20,6 +20,7 @@ import org.apache.camel.CamelContext;
 import org.apache.camel.CamelContextAware;
 import org.apache.camel.Consumer;
 import org.apache.camel.Endpoint;
+import org.apache.camel.FailedToCreateConsumerException;
 import org.apache.camel.component.bean.BeanProcessor;
 import org.apache.camel.spring.util.CamelContextResolverHelper;
 import org.apache.camel.util.CamelContextHelper;
@@ -98,12 +99,19 @@ public class CamelServiceExporter extends RemoteExporter 
implements Initializing
         notNull(getService(), "service");
         Object proxy = getProxyForService();
 
-        consumer = endpoint.createConsumer(new BeanProcessor(proxy, 
camelContext));
-        ServiceHelper.startService(consumer);
+        try {
+            // need to start endpoint before we create consumer
+            ServiceHelper.startService(endpoint);
+            consumer = endpoint.createConsumer(new BeanProcessor(proxy, 
camelContext));
+            // add and start consumer
+            camelContext.addService(consumer, true, true);
+        } catch (Exception e) {
+            throw new FailedToCreateConsumerException(endpoint, e);
+        }
     }
 
     public void destroy() throws Exception {
-        ServiceHelper.startService(consumer);
+        // we let CamelContext manage the lifecycle of the consumer and shut 
it down when Camel stops
     }
 
 }

Reply via email to