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();
}