- Smack version: 4.4.2
- Exception
W/AbstractXMPPConnection: Connection XMPPTCPConnection[x@xyz.com/587a8g38ss] (5) closed with error
java.lang.IllegalArgumentException: The class org.jivesoftware.smackx.offline.packet.OfflineMessageInfo has no ELEMENT, NAMESPACE or QNAME member. Consider adding QNAME
at org.jivesoftware.smack.util.XmppElementUtil.getQNameFor(XmppElementUtil.java:66)
at org.jivesoftware.smack.packet.StanzaView.getExtension(StanzaView.java:91)
at org.jivesoftware.smackx.offline.OfflineMessageManager$1.accept(OfflineMessageManager.java:175)
at org.jivesoftware.smack.filter.AndFilter.accept(AndFilter.java:61)
at org.jivesoftware.smack.StanzaCollector.processStanza(StanzaCollector.java:347)
at org.jivesoftware.smack.AbstractXMPPConnection.invokeStanzaCollectorsAndNotifyRecvListeners(AbstractXMPPConnection.java:1612)
at org.jivesoftware.smack.AbstractXMPPConnection.processStanza(AbstractXMPPConnection.java:1483)
at org.jivesoftware.smack.AbstractXMPPConnection.parseAndProcessStanza(AbstractXMPPConnection.java:1461)
at org.jivesoftware.smack.tcp.XMPPTCPConnection.access$1000(XMPPTCPConnection.java:130)
at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader.parsePackets(XMPPTCPConnection.java:969)
at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader.access$700(XMPPTCPConnection.java:913)
at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader$1.run(XMPPTCPConnection.java:936)
at java.lang.Thread.run(Thread.java:919)
Caused by: java.lang.NoSuchFieldException: ELEMENT
at java.lang.Class.getField(Class.java:1604)
at org.jivesoftware.smack.util.XmppElementUtil.getQNameFor(XmppElementUtil.java:62)
at org.jivesoftware.smack.packet.StanzaView.getExtension(StanzaView.java:91)
at org.jivesoftware.smackx.offline.OfflineMessageManager$1.accept(OfflineMessageManager.java:175)
at org.jivesoftware.smack.filter.AndFilter.accept(AndFilter.java:61)
at org.jivesoftware.smack.StanzaCollector.processStanza(StanzaCollector.java:347)
at org.jivesoftware.smack.AbstractXMPPConnection.invokeStanzaCollectorsAndNotifyRecvListeners(AbstractXMPPConnection.java:1612)
at org.jivesoftware.smack.AbstractXMPPConnection.processStanza(AbstractXMPPConnection.java:1483)
at org.jivesoftware.smack.AbstractXMPPConnection.parseAndProcessStanza(AbstractXMPPConnection.java:1461)
at org.jivesoftware.smack.tcp.XMPPTCPConnection.access$1000(XMPPTCPConnection.java:130)
at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader.parsePackets(XMPPTCPConnection.java:969)
at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader.access$700(XMPPTCPConnection.java:913)
at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader$1.run(XMPPTCPConnection.java:936)
at java.lang.Thread.run(Thread.java:919)
- XMPP Trace
D/SMACK: SENT (5):
<iq id='QCB9G-120' type='get'>
<offline xmlns='http://jabber.org/protocol/offline'>
<item action="view" node="2021-04-13T11:37:56.160Z"/>
</offline>
</iq>
D/SMACK: RECV (5):
<message type="chat" to="x@xyz.com/android" id="788BFD31-066A-4268-8A6F-8D3973001D95" from="y@xyz.com/ios">
<body>
Test
</body>
<active xmlns="http://jabber.org/protocol/chatstates">
</active>
<request xmlns="urn:xmpp:receipts">
</request>
<delay xmlns="urn:xmpp:delay" stamp="2021-04-13T11:37:56.151Z">
</delay>
<delay xmlns="urn:xmpp:delay" from="xyz.com" stamp="2021-04-13T11:37:56.160Z"/>
<offline xmlns="http://jabber.org/protocol/offline">
<item node="2021-04-13T11:37:56.160Z"/>
</offline>
</message>
- Code Parts
private val connection = XMPPTCPConnection(config)
private val offlineMessageManager = OfflineMessageManager.getInstanceFor(connection)
offlineMessageManager.getMessages(listOf("2021-04-13T11:37:56.160Z"))
I am trying to fetch offline messages using OfflineMessageManager. There is an error while getting OfflineMessageInfo
extension from received Stanza. I guess it is because of the following filter,
StanzaFilter messageFilter = new AndFilter(PACKET_FILTER, new StanzaFilter() {
@Override
public boolean accept(Stanza packet) {
OfflineMessageInfo info = packet.getExtension(OfflineMessageInfo.class);
return nodes.contains(info.getNode());
}
});
This was a working way while using Smack 4.3.5
, but with upgrade to Smack 4.4.2
this exception occurred.