From b1844cbefd61dfa4a062e8e3f9b9f35af5dd0fae Mon Sep 17 00:00:00 2001 From: Andrea Cosentino Date: Mon, 20 Jul 2026 18:46:07 +0200 Subject: [PATCH] CAMEL-23562: camel-xmpp - upgrade Smack from 4.3.5 to 4.4.8 The smack-java7 module no longer exists in Smack 4.4 and is replaced by smack-java8. DefaultExtensionElement was removed: unparsed JiveProperties extensions are now represented by StandardExtensionElement, with flat child elements mapped to headers as before. Stanza logging uses the no-arg toXML() since toXML(null) is ambiguous against the 4.4 Element overloads. The camel-xmpp container integration tests fail identically on smack 4.3.5 in the same environment (TLS handshake against the test server), so their outcome is unchanged by this upgrade; unit tests pass. Co-Authored-By: Claude Fable 5 Signed-off-by: Andrea Cosentino --- components/camel-xmpp/pom.xml | 2 +- .../apache/camel/component/xmpp/XmppBinding.java | 13 +++++++------ .../org/apache/camel/component/xmpp/XmppLogger.java | 2 +- .../ROOT/pages/camel-4x-upgrade-guide-4_22.adoc | 10 ++++++++++ parent/pom.xml | 2 +- 5 files changed, 20 insertions(+), 9 deletions(-) diff --git a/components/camel-xmpp/pom.xml b/components/camel-xmpp/pom.xml index 10a8eabf30ca5..88815edd1a7ec 100644 --- a/components/camel-xmpp/pom.xml +++ b/components/camel-xmpp/pom.xml @@ -61,7 +61,7 @@ org.igniterealtime.smack - smack-java7 + smack-java8 ${smack-version} 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 b4862547c03f3..76d3a20a9d004 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,9 @@ import org.apache.camel.spi.HeaderFilterStrategy; import org.apache.camel.support.DefaultHeaderFilterStrategy; import org.apache.camel.util.ObjectHelper; -import org.jivesoftware.smack.packet.DefaultExtensionElement; import org.jivesoftware.smack.packet.ExtensionElement; import org.jivesoftware.smack.packet.Message; +import org.jivesoftware.smack.packet.StandardExtensionElement; import org.jivesoftware.smack.packet.Stanza; import org.jivesoftware.smackx.jiveproperties.JivePropertiesManager; import org.jivesoftware.smackx.jiveproperties.packet.JivePropertiesExtension; @@ -135,8 +135,8 @@ public Map extractHeadersFromXmpp(Stanza stanza, Exchange exchan if (jpe instanceof JivePropertiesExtension) { extractHeadersFrom((JivePropertiesExtension) jpe, exchange, answer); } - if (jpe instanceof DefaultExtensionElement) { - extractHeadersFrom((DefaultExtensionElement) jpe, exchange, answer); + if (jpe instanceof StandardExtensionElement) { + extractHeadersFrom((StandardExtensionElement) jpe, exchange, answer); } if (stanza instanceof Message) { @@ -165,9 +165,10 @@ private void extractHeadersFrom(JivePropertiesExtension jpe, Exchange exchange, } } - private void extractHeadersFrom(DefaultExtensionElement jpe, Exchange exchange, Map answer) { - for (String name : jpe.getNames()) { - Object value = jpe.getValue(name); + private void extractHeadersFrom(StandardExtensionElement jpe, Exchange exchange, Map answer) { + for (StandardExtensionElement element : jpe.getElements()) { + String name = element.getElementName(); + Object value = element.getText(); if (!headerFilterStrategy.applyFilterToExternalHeaders(name, value, exchange)) { answer.put(name, value); } diff --git a/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppLogger.java b/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppLogger.java index 48edffc949d0c..cfec90532b943 100644 --- a/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppLogger.java +++ b/components/camel-xmpp/src/main/java/org/apache/camel/component/xmpp/XmppLogger.java @@ -33,7 +33,7 @@ public XmppLogger(String direction) { @Override public void processStanza(Stanza stanza) { if (LOG.isDebugEnabled()) { - LOG.debug("{} : {}", direction, stanza.toXML(null)); + LOG.debug("{} : {}", direction, stanza.toXML()); } } } diff --git a/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_22.adoc b/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_22.adoc index e70c63e1c5506..4bccef49b3209 100644 --- a/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_22.adoc +++ b/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_22.adoc @@ -497,6 +497,16 @@ by the file-based consumers (see the `localWorkDirectory` note in the 4.21 upgra Ordinary object names are unaffected. A name that resolves outside `fileDir` is now rejected with an `IllegalArgumentException`. +=== camel-xmpp - Smack upgraded to 4.4 + +The camel-xmpp component has upgraded Smack from 4.3.5 to 4.4.8. The `smack-java7` module no longer exists in +Smack 4.4 and has been replaced by `smack-java8` (relevant if you declared it explicitly alongside camel-xmpp). +When extracting headers from a stanza whose JiveProperties extension is not parsed by a registered provider, +the unparsed extension is now represented by Smack's `StandardExtensionElement` (the replacement for the removed +`DefaultExtensionElement`); flat child elements are mapped to headers as before. See the +https://github.com/igniterealtime/Smack/wiki/Smack-4.4-Readme[Smack 4.4 readme] for behavioral changes in the +Smack library itself. + === camel-weaviate - potential breaking change The Weaviate Java client has been upgraded from v5 (`io.weaviate:client`) to v6 (`io.weaviate:client6`). diff --git a/parent/pom.xml b/parent/pom.xml index 0512aa9d79662..8db8ed52b3e4a 100644 --- a/parent/pom.xml +++ b/parent/pom.xml @@ -467,7 +467,7 @@ 1.49.0 2.0.18 2.0.17 - 4.3.5 + 4.4.8 3.18.1 4.3.0 6.11.2