Author: davsclaus
Date: Sat Apr 16 12:46:54 2011
New Revision: 1093980

URL: http://svn.apache.org/viewvc?rev=1093980&view=rev
Log:
CAMEL-3873: camel-xmpp should properly clean resources when stopping, so 
hot-deploy works.

Modified:
    
camel/trunk/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppComponent.java
    
camel/trunk/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppEndpoint.java
    
camel/trunk/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppGroupChatProducer.java
    
camel/trunk/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppPrivateChatProducer.java

Modified: 
camel/trunk/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppComponent.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppComponent.java?rev=1093980&r1=1093979&r2=1093980&view=diff
==============================================================================
--- 
camel/trunk/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppComponent.java
 (original)
+++ 
camel/trunk/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppComponent.java
 Sat Apr 16 12:46:54 2011
@@ -22,6 +22,7 @@ import java.util.Map;
 
 import org.apache.camel.Endpoint;
 import org.apache.camel.impl.DefaultComponent;
+import org.apache.camel.util.ServiceHelper;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -32,7 +33,7 @@ public class XmppComponent extends Defau
     private static final transient Logger LOG = 
LoggerFactory.getLogger(XmppComponent.class);
 
     //keep a cache of endpoints so they can be properly cleaned up
-    Map<String, XmppEndpoint> endpointCache = new HashMap<String, 
XmppEndpoint>();
+    private final Map<String, XmppEndpoint> endpointCache = new 
HashMap<String, XmppEndpoint>();
 
     @Override
     protected Endpoint createEndpoint(String uri, String remaining, 
Map<String, Object> parameters) throws Exception {
@@ -73,10 +74,9 @@ public class XmppComponent extends Defau
     }
 
     @Override
-    protected synchronized void doStop() throws Exception {
-        for (Map.Entry<String, XmppEndpoint> entry : endpointCache.entrySet()) 
{
-            entry.getValue().destroy();
-        }
+    protected void doStop() throws Exception {
+        ServiceHelper.stopServices(endpointCache.values());
         endpointCache.clear();
     }
+
 }

Modified: 
camel/trunk/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppEndpoint.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppEndpoint.java?rev=1093980&r1=1093979&r2=1093980&view=diff
==============================================================================
--- 
camel/trunk/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppEndpoint.java
 (original)
+++ 
camel/trunk/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppEndpoint.java
 Sat Apr 16 12:46:54 2011
@@ -215,12 +215,6 @@ public class XmppEndpoint extends Defaul
         return "Chat:" + getParticipant() + ":" + getUser();
     }
 
-    protected synchronized void destroy() throws Exception {
-        if (connection != null) {
-            connection.disconnect();
-        }
-    }
-
     // Properties
     // 
-------------------------------------------------------------------------
     public XmppBinding getBinding() {
@@ -338,4 +332,13 @@ public class XmppEndpoint extends Defaul
     // Implementation methods
     // 
-------------------------------------------------------------------------
 
+    @Override
+    protected void doStop() throws Exception {
+        if (connection != null) {
+            connection.disconnect();
+        }
+        connection = null;
+        binding = null;
+    }
+
 }

Modified: 
camel/trunk/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppGroupChatProducer.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppGroupChatProducer.java?rev=1093980&r1=1093979&r2=1093980&view=diff
==============================================================================
--- 
camel/trunk/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppGroupChatProducer.java
 (original)
+++ 
camel/trunk/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppGroupChatProducer.java
 Sat Apr 16 12:46:54 2011
@@ -93,11 +93,14 @@ public class XmppGroupChatProducer exten
         if (chat != null) {
             LOG.info("Leaving room: {}", room);
             chat.leave();
-            chat = null;
         }
+        chat = null;
+
         if (connection != null && connection.isConnected()) {
             connection.disconnect();
         }
+        connection = null;
+
         super.doStop();
     }
 

Modified: 
camel/trunk/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppPrivateChatProducer.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppPrivateChatProducer.java?rev=1093980&r1=1093979&r2=1093980&view=diff
==============================================================================
--- 
camel/trunk/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppPrivateChatProducer.java
 (original)
+++ 
camel/trunk/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppPrivateChatProducer.java
 Sat Apr 16 12:46:54 2011
@@ -114,6 +114,7 @@ public class XmppPrivateChatProducer ext
         if (connection != null && connection.isConnected()) {
             connection.disconnect();
         }
+        connection = null;
         super.doStop();
     }
 


Reply via email to