CAMEL-9171 Also handle DefaultPacketExtension
Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/44a07f95 Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/44a07f95 Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/44a07f95 Branch: refs/heads/camel-2.15.x Commit: 44a07f9568d688d0f0c624e315aa9502979b55f0 Parents: 6194038 Author: Christian Schneider <ch...@die-schneider.net> Authored: Thu Oct 8 15:06:18 2015 +0200 Committer: Christian Schneider <ch...@die-schneider.net> Committed: Thu Oct 8 15:12:08 2015 +0200 ---------------------------------------------------------------------- .../camel/component/xmpp/XmppBinding.java | 34 ++++++++++++++++---- .../camel/component/xmpp/XmppEndpoint.java | 20 ++++++------ 2 files changed, 38 insertions(+), 16 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/44a07f95/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppBinding.java ---------------------------------------------------------------------- diff --git a/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppBinding.java b/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppBinding.java index 1960540..ddb198b 100644 --- a/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppBinding.java +++ b/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppBinding.java @@ -24,9 +24,12 @@ import org.apache.camel.Exchange; import org.apache.camel.impl.DefaultHeaderFilterStrategy; import org.apache.camel.spi.HeaderFilterStrategy; import org.apache.camel.util.ObjectHelper; +import org.jivesoftware.smack.packet.DefaultPacketExtension; import org.jivesoftware.smack.packet.Message; import org.jivesoftware.smack.packet.Packet; +import org.jivesoftware.smack.packet.PacketExtension; import org.jivesoftware.smackx.jiveproperties.JivePropertiesManager; +import org.jivesoftware.smackx.jiveproperties.packet.JivePropertiesExtension; import org.jivesoftware.smackx.pubsub.packet.PubSub; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -131,13 +134,13 @@ public class XmppBinding { public Map<String, Object> extractHeadersFromXmpp(Packet xmppPacket, Exchange exchange) { Map<String, Object> answer = new HashMap<String, Object>(); - for (String name : JivePropertiesManager.getPropertiesNames(xmppPacket)) { - Object value = JivePropertiesManager.getProperty(xmppPacket, name); - - if (!headerFilterStrategy.applyFilterToExternalHeaders(name, value, exchange)) { - answer.put(name, value); - } + PacketExtension jpe = xmppPacket.getExtension(JivePropertiesExtension.NAMESPACE); + if (jpe !=null && jpe instanceof JivePropertiesExtension) { + extractHeadersFrom((JivePropertiesExtension)jpe, exchange, answer); } + if (jpe !=null && jpe instanceof DefaultPacketExtension) { + extractHeadersFrom((DefaultPacketExtension)jpe, exchange, answer); + } if (xmppPacket instanceof Message) { Message xmppMessage = (Message) xmppPacket; @@ -154,4 +157,23 @@ public class XmppBinding { return answer; } + + private void extractHeadersFrom(JivePropertiesExtension jpe, Exchange exchange, Map<String, Object> answer) { + for (String name : jpe.getPropertyNames()) { + Object value = jpe.getProperty(name); + if (!headerFilterStrategy.applyFilterToExternalHeaders(name, value, exchange)) { + answer.put(name, value); + } + } + } + + private void extractHeadersFrom(DefaultPacketExtension jpe, Exchange exchange, Map<String, Object> answer) { + for (String name : jpe.getNames()) { + Object value = jpe.getValue(name); + if (!headerFilterStrategy.applyFilterToExternalHeaders(name, value, exchange)) { + answer.put(name, value); + } + } + } + } http://git-wip-us.apache.org/repos/asf/camel/blob/44a07f95/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppEndpoint.java ---------------------------------------------------------------------- diff --git a/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppEndpoint.java b/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppEndpoint.java index 9cbbf47..c7b330f 100644 --- a/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppEndpoint.java +++ b/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppEndpoint.java @@ -163,21 +163,12 @@ public class XmppEndpoint extends DefaultEndpoint implements HeaderFilterStrateg } public synchronized XMPPConnection createConnection() throws XMPPException, SmackException, IOException { - if (connection != null && connection.isConnected()) { return connection; } if (connection == null) { - if (port > 0) { - if (getServiceName() == null) { - connection = new XMPPTCPConnection(new ConnectionConfiguration(host, port)); - } else { - connection = new XMPPTCPConnection(new ConnectionConfiguration(host, port, serviceName)); - } - } else { - connection = new XMPPTCPConnection(host); - } + connection = createConnectionInternal(); } connection.connect(); @@ -226,6 +217,15 @@ public class XmppEndpoint extends DefaultEndpoint implements HeaderFilterStrateg return connection; } + private XMPPTCPConnection createConnectionInternal() { + if (port == 0) { + port = 5222; + } + String sName = getServiceName() == null ? host : getServiceName(); + ConnectionConfiguration conf = new ConnectionConfiguration(host, port, sName); + return new XMPPTCPConnection(conf); + } + /* * If there is no "@" symbol in the room, find the chat service JID and * return fully qualified JID for the room as room@conference.server.domain