Author: ningjiang
Date: Thu Aug  7 09:12:47 2008
New Revision: 683640

URL: http://svn.apache.org/viewvc?rev=683640&view=rev
Log:
CAMEL-659 applied patch with thanks to Michael

Modified:
    activemq/camel/trunk/components/camel-xmpp/README.txt
    activemq/camel/trunk/components/camel-xmpp/pom.xml
    
activemq/camel/trunk/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppBinding.java
    
activemq/camel/trunk/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppConsumer.java
    
activemq/camel/trunk/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppEndpoint.java
    
activemq/camel/trunk/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppMessage.java
    
activemq/camel/trunk/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppPrivateChatProducer.java

Modified: activemq/camel/trunk/components/camel-xmpp/README.txt
URL: 
http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-xmpp/README.txt?rev=683640&r1=683639&r2=683640&view=diff
==============================================================================
--- activemq/camel/trunk/components/camel-xmpp/README.txt (original)
+++ activemq/camel/trunk/components/camel-xmpp/README.txt Thu Aug  7 09:12:47 
2008
@@ -8,6 +8,21 @@
   http://activemq.apache.org/camel/xmpp.html
 
 
+Using Spring based xml configuration in 'activemq.xml'
+------------------------------------------------------
+
+In this example an xmpp user called 'bot' will propagate any messages to the 
queue 'gimme_an_a' to a muc 
+called 'monitor'. The conference subdomain is part of openfire muc jid 
implementation (i guess). Notice 
+the quoted ampersands.
+
+<camelContext id="camel" 
xmlns="http://activemq.apache.org/camel/schema/spring";>
+    <route>
+        <from uri="activemq:gimme_an_a"/>
+        <to uri="xmpp://[EMAIL 
PROTECTED]/?port=5222&amp;password=meapassword&amp;[EMAIL PROTECTED]"/>
+    </route>
+</camelContext>
+
+
 Running the Integration Tests
 -----------------------------
 
@@ -22,3 +37,4 @@
 
   xmpp.url = xmpp://[EMAIL PROTECTED]/?login=false&room=
 
+

Modified: activemq/camel/trunk/components/camel-xmpp/pom.xml
URL: 
http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-xmpp/pom.xml?rev=683640&r1=683639&r2=683640&view=diff
==============================================================================
--- activemq/camel/trunk/components/camel-xmpp/pom.xml (original)
+++ activemq/camel/trunk/components/camel-xmpp/pom.xml Thu Aug  7 09:12:47 2008
@@ -37,6 +37,15 @@
        
<camel.osgi.export.pkg>org.apache.camel.component.xmpp.*</camel.osgi.export.pkg>
   </properties>
 
+  <repositories>
+       <!-- ServiceMix repo -->
+       <repository>
+               <id>servicemix</id>
+               <name>Apache ServiceMix Repository</name>
+               <url>http://svn.apache.org/repos/asf/servicemix/m2-repo</url>
+       </repository>
+  </repositories>
+
   <dependencies>
 
     <dependency>
@@ -50,14 +59,14 @@
     </dependency>
 
     <dependency>
-      <groupId>jivesoftware</groupId>
+      <groupId>org.igniterealtime.smack</groupId>
       <artifactId>smack</artifactId>
-      <version>2.2.1</version>
+      <version>3.0.4</version>
     </dependency>
     <dependency>
-      <groupId>jivesoftware</groupId>
+      <groupId>org.igniterealtime.smack</groupId>
       <artifactId>smackx</artifactId>
-      <version>2.2.1</version>
+      <version>3.0.4</version>
     </dependency>
     <!-- to allow Spring annotations (jmx) to be tested -->
     <dependency>

Modified: 
activemq/camel/trunk/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppBinding.java
URL: 
http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppBinding.java?rev=683640&r1=683639&r2=683640&view=diff
==============================================================================
--- 
activemq/camel/trunk/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppBinding.java
 (original)
+++ 
activemq/camel/trunk/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppBinding.java
 Thu Aug  7 09:12:47 2008
@@ -40,7 +40,8 @@
         for (Map.Entry<String, Object> entry : entries) {
             String name = entry.getKey();
             Object value = entry.getValue();
-            if (shouldOutputHeader(exchange, name, value)) {
+            // BUG?
+            if (value != null && shouldOutputHeader(exchange, name, value)) {
                 message.setProperty(name, value);
             }
         }

Modified: 
activemq/camel/trunk/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppConsumer.java
URL: 
http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppConsumer.java?rev=683640&r1=683639&r2=683640&view=diff
==============================================================================
--- 
activemq/camel/trunk/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppConsumer.java
 (original)
+++ 
activemq/camel/trunk/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppConsumer.java
 Thu Aug  7 09:12:47 2008
@@ -21,6 +21,7 @@
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.jivesoftware.smack.Chat;
+import org.jivesoftware.smack.MessageListener;
 import org.jivesoftware.smack.PacketListener;
 import org.jivesoftware.smack.SmackConfiguration;
 import org.jivesoftware.smack.packet.Message;
@@ -33,7 +34,7 @@
  *
  * @version $Revision$
  */
-public class XmppConsumer extends DefaultConsumer<XmppExchange> implements 
PacketListener {
+public class XmppConsumer extends DefaultConsumer<XmppExchange> implements 
PacketListener, MessageListener {
     private static final transient Log LOG = 
LogFactory.getLog(XmppConsumer.class);
     private final XmppEndpoint endpoint;
     private Chat privateChat;
@@ -47,8 +48,7 @@
     @Override
     protected void doStart() throws Exception {
         if (endpoint.getRoom() == null) {
-            privateChat = 
endpoint.getConnection().createChat(endpoint.getParticipant());
-            privateChat.addMessageListener(this);
+            privateChat = 
endpoint.getConnection().getChatManager().createChat(endpoint.getParticipant(), 
this);
             LOG.info("Open chat to " + privateChat.getParticipant());
         } else {
             muc = new MultiUserChat(endpoint.getConnection(), 
endpoint.resolveRoom());
@@ -85,4 +85,8 @@
         }
     }
 
+    public void processMessage(Chat chat, Message message) {
+        processPacket(message);
+    }
+
 }

Modified: 
activemq/camel/trunk/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppEndpoint.java
URL: 
http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppEndpoint.java?rev=683640&r1=683639&r2=683640&view=diff
==============================================================================
--- 
activemq/camel/trunk/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppEndpoint.java
 (original)
+++ 
activemq/camel/trunk/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppEndpoint.java
 Thu Aug  7 09:12:47 2008
@@ -27,6 +27,7 @@
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.jivesoftware.smack.AccountManager;
+import org.jivesoftware.smack.ConnectionConfiguration;
 import org.jivesoftware.smack.XMPPConnection;
 import org.jivesoftware.smack.XMPPException;
 import org.jivesoftware.smack.packet.Message;
@@ -206,10 +207,13 @@
     protected XMPPConnection createConnection() throws XMPPException {
         XMPPConnection connection;
         if (port > 0) {
-            connection = new XMPPConnection(host, port);
+            connection = new XMPPConnection(new ConnectionConfiguration(host, 
port));
         } else {
             connection = new XMPPConnection(host);
         }
+
+        connection.connect();
+
         if (login && !connection.isAuthenticated()) {
             if (user != null) {
                 LOG.info("Logging in to XMPP as user: " + user + " on 
connection: " + connection);

Modified: 
activemq/camel/trunk/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppMessage.java
URL: 
http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppMessage.java?rev=683640&r1=683639&r2=683640&view=diff
==============================================================================
--- 
activemq/camel/trunk/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppMessage.java
 (original)
+++ 
activemq/camel/trunk/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppMessage.java
 Thu Aug  7 09:12:47 2008
@@ -16,6 +16,7 @@
  */
 package org.apache.camel.component.xmpp;
 
+import java.util.Collection;
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.Map;
@@ -26,7 +27,7 @@
 
 /**
  * Represents a [EMAIL PROTECTED] org.apache.camel.Message} for working with 
XMPP
- * 
+ *
  * @version $Revision:520964 $
  */
 public class XmppMessage extends DefaultMessage {
@@ -81,8 +82,8 @@
     @Override
     public Map<String, Object> getHeaders() {
         Map<String, Object> answer = new HashMap<String, Object>();
-        Iterator iter = xmppMessage.getPropertyNames();
-        while (iter.hasNext()) {
+        Collection<String> propertyNames = xmppMessage.getPropertyNames();
+        for (Iterator iter = propertyNames.iterator(); iter.hasNext();) {
             String name = (String)iter.next();
             answer.put(name, xmppMessage.getProperty(name));
         }

Modified: 
activemq/camel/trunk/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppPrivateChatProducer.java
URL: 
http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppPrivateChatProducer.java?rev=683640&r1=683639&r2=683640&view=diff
==============================================================================
--- 
activemq/camel/trunk/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppPrivateChatProducer.java
 (original)
+++ 
activemq/camel/trunk/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppPrivateChatProducer.java
 Thu Aug  7 09:12:47 2008
@@ -21,6 +21,7 @@
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.jivesoftware.smack.Chat;
+import org.jivesoftware.smack.MessageListener;
 import org.jivesoftware.smack.XMPPException;
 import org.jivesoftware.smack.packet.Message;
 
@@ -31,7 +32,7 @@
     private static final transient Log LOG = 
LogFactory.getLog(XmppPrivateChatProducer.class);
     private final XmppEndpoint endpoint;
     private final String participant;
-    private Chat chat;
+
 
     public XmppPrivateChatProducer(XmppEndpoint endpoint, String participant) {
         super(endpoint);
@@ -43,16 +44,31 @@
     }
 
     public void process(Exchange exchange) {
-        // TODO it would be nice if we could reuse the message from the 
exchange
-        Message message = chat.createMessage();
-        message.setTo(participant);
-        message.setThread(exchange.getExchangeId());
-
-        endpoint.getBinding().populateXmppMessage(message, exchange);
-        if (LOG.isDebugEnabled()) {
-            LOG.debug(">>>> message: " + message.getBody());
-        }
+        String threadId = exchange.getExchangeId();
+
         try {
+            Chat chat = 
endpoint.getConnection().getChatManager().getThreadChat(threadId);
+
+            if(chat == null) {
+              chat = 
endpoint.getConnection().getChatManager().createChat(getParticipant(), 
threadId, new MessageListener() {
+                public void processMessage(Chat chat, Message message) {
+                  // not here to do conversation
+                }
+              });
+            }
+
+            // TODO it would be nice if we could reuse the message from the 
exchange
+            Message message = new Message();
+            message.setTo(participant);
+            //message.setFrom(endpoint.getUser());
+            message.setThread(threadId);
+            //message.setType(Message.Type.normal);
+
+            endpoint.getBinding().populateXmppMessage(message, exchange);
+            if (LOG.isDebugEnabled()) {
+                LOG.debug(">>>> message: " + message.getBody());
+            }
+
             chat.sendMessage(message);
         } catch (XMPPException e) {
             throw new RuntimeXmppException(e);
@@ -62,26 +78,16 @@
     @Override
     protected void doStart() throws Exception {
         super.doStart();
-        if (chat == null) {
-            chat = endpoint.getConnection().createChat(getParticipant());
-        }
     }
 
     @Override
     protected void doStop() throws Exception {
-        chat = null;
         super.doStop();
     }
 
     // Properties
     // 
-------------------------------------------------------------------------
-    public Chat getChat() {
-        return chat;
-    }
 
-    public void setChat(Chat chat) {
-        this.chat = chat;
-    }
 
     public String getParticipant() {
         return participant;


Reply via email to