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&password=meapassword&[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;