You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2009/05/27 13:53:02 UTC
svn commit: r779121 -
/camel/trunk/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppConsumer.java
Author: davsclaus
Date: Wed May 27 11:53:02 2009
New Revision: 779121
URL: http://svn.apache.org/viewvc?rev=779121&view=rev
Log:
CAMEL-1633: Fixed xmpp consumer to filter packages not needed. Thanks to Edward Campbell for the patch.
Modified:
camel/trunk/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppConsumer.java
Modified: camel/trunk/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppConsumer.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppConsumer.java?rev=779121&r1=779120&r2=779121&view=diff
==============================================================================
--- camel/trunk/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppConsumer.java (original)
+++ camel/trunk/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppConsumer.java Wed May 27 11:53:02 2009
@@ -25,8 +25,12 @@
import org.jivesoftware.smack.PacketListener;
import org.jivesoftware.smack.SmackConfiguration;
import org.jivesoftware.smack.XMPPConnection;
+import org.jivesoftware.smack.filter.AndFilter;
+import org.jivesoftware.smack.filter.PacketTypeFilter;
+import org.jivesoftware.smack.filter.ToContainsFilter;
import org.jivesoftware.smack.packet.Message;
import org.jivesoftware.smack.packet.Packet;
+import org.jivesoftware.smack.packet.Presence;
import org.jivesoftware.smackx.muc.DiscussionHistory;
import org.jivesoftware.smackx.muc.MultiUserChat;
@@ -65,6 +69,11 @@
if (LOG.isInfoEnabled()) {
LOG.info("Joined room: " + muc.getRoom() + " as: " + endpoint.getNickname());
}
+
+ // add the presence packet listener to the connection so we only get packets that concers us
+ final ToContainsFilter toFilter = new ToContainsFilter(endpoint.getParticipant());
+ final AndFilter packetFilter = new AndFilter(new PacketTypeFilter(Presence.class), toFilter);
+ connection.addPacketListener(this, packetFilter);
}
super.doStart();
@@ -91,7 +100,7 @@
}
public void processPacket(Packet packet) {
- Message message = (Message)packet;
+ Message message = (Message) packet;
if (LOG.isDebugEnabled()) {
LOG.debug("Recieved XMPP message: " + message.getBody());
@@ -100,13 +109,8 @@
XmppExchange exchange = endpoint.createExchange(message);
try {
getProcessor().process(exchange);
- if (muc != null) {
- // must invoke nextMessage to consume the response from the server
- // otherwise the client local queue will fill up (CAMEL-1467)
- muc.nextMessage();
- }
} catch (Exception e) {
- LOG.error("Error while processing XMPP message", e);
+ exchange.setException(e);
}
}