From 3d4e7938a7cc3fa511521702be7688e42a5ff20f Mon Sep 17 00:00:00 2001 From: Florian Schmaus Date: Sun, 18 Apr 2021 18:58:50 +0200 Subject: [PATCH] Make ExtensionElement marker interface wrt. QNAME field ExtensionElement is now a marker interface that requires all implementation non-abstract classes to carry a static final QNAME field (of type QName). This is verified by a new unit test. Also FullyQualifiedElement is renamed to simply XmlElement. XmlElement is used over ExtensionElement when implementing classes do not statically know the qualified name of the XML elements they represent. In general, XmlElement should be used sparingly, and every XML element should be modeled by its own Java class (implementing ExtensionElement). --- build.gradle | 1 + .../smack/AbstractXMPPConnection.java | 10 +-- .../jivesoftware/smack/XMPPConnection.java | 8 +-- .../smack/filter/ExtensionElementFilter.java | 5 +- .../smack/packet/AbstractError.java | 16 ++--- .../smack/packet/ExtensionElement.java | 21 +++---- .../org/jivesoftware/smack/packet/IQ.java | 2 +- .../jivesoftware/smack/packet/Message.java | 2 +- .../smack/packet/MessageView.java | 6 +- .../smack/packet/NamedElement.java | 2 +- .../jivesoftware/smack/packet/Presence.java | 4 +- .../packet/StandardExtensionElement.java | 4 +- .../org/jivesoftware/smack/packet/Stanza.java | 45 ++++++------- .../smack/packet/StanzaBuilder.java | 20 +++--- .../smack/packet/StanzaError.java | 2 +- .../jivesoftware/smack/packet/StanzaView.java | 12 ++-- .../smack/packet/StreamError.java | 2 +- .../smack/packet/TopLevelStreamElement.java | 2 +- ...yQualifiedElement.java => XmlElement.java} | 20 +++++- .../provider/EmbeddedExtensionProvider.java | 8 +-- .../provider/ExtensionElementProvider.java | 4 +- .../smack/util/PacketParserUtils.java | 21 ++++--- .../jivesoftware/smack/util/PacketUtil.java | 8 +-- .../smack/util/XmlStringBuilder.java | 8 +-- .../smack/util/XmppElementUtil.java | 16 ++--- .../smack/packet/StreamErrorTest.java | 2 +- .../carbons/packet/CarbonExtension.java | 8 ++- .../filter/EligibleForChatMarkerFilter.java | 4 +- .../csi/packet/ClientStateIndication.java | 17 +++-- .../FallbackIndicationListener.java | 1 + .../FallbackIndicationManager.java | 1 + .../FallbackIndicationElementProvider.java | 1 + .../hoxt/packet/AbstractHttpOverXmpp.java | 8 +++ .../httpfileupload/HttpFileUploadManager.java | 2 +- .../smackx/iot/control/element/SetData.java | 6 +- .../data/element/IoTDataExtensionElement.java | 6 +- .../jingle_filetransfer/element/Checksum.java | 8 ++- .../element/JingleFileTransfer.java | 7 ++- .../jingle_filetransfer/element/Range.java | 4 +- .../jivesoftware/smackx/mam/MamManager.java | 1 + .../MessageFasteningManager.java | 1 + .../element/FasteningElement.java | 16 ++--- .../provider/FasteningElementProvider.java | 5 +- .../element/BlockQuoteElement.java | 2 +- .../element/CodeBlockElement.java | 3 + .../message_markup/element/ListElement.java | 14 +++-- .../message_markup/element/MarkupElement.java | 2 + .../message_markup/element/SpanElement.java | 5 +- .../provider/MarkupElementProvider.java | 2 +- .../MessageRetractionManager.java | 1 + .../element/RetractedElement.java | 8 ++- .../provider/RetractElementProvider.java | 1 + .../provider/RetractedElementProvider.java | 1 + .../reference/element/ReferenceElement.java | 20 +++--- .../reference/provider/ReferenceProvider.java | 4 +- .../spoiler/element/SpoilerElement.java | 8 ++- .../element/ContentElement.java | 9 ++- .../element/PayloadElement.java | 8 +-- .../AffixExtensionElementProvider.java | 1 + .../provider/ContentElementProvider.java | 5 +- .../ExplicitMessageEncryptionElementTest.java | 4 +- .../MessageFasteningElementsTest.java | 1 + .../element/RetractElementTest.java | 1 + .../element/RetractedElementTest.java | 1 + .../element/ContentElementTest.java | 1 + .../provider/ContentElementProviderTest.java | 1 + .../address/packet/MultipleAddresses.java | 5 +- .../attention/packet/AttentionExtension.java | 8 ++- .../smackx/bob/element/BoBDataExtension.java | 1 + .../provider/BoBDataExtensionProvider.java | 1 + .../smackx/bob/provider/BoBProviderUtil.java | 1 + .../bytestreams/socks5/packet/Bytestream.java | 17 +++-- .../socks5/provider/BytestreamsProvider.java | 6 +- .../smackx/chatstates/ChatStateManager.java | 4 +- .../chatstates/packet/ChatStateExtension.java | 4 +- .../commands/packet/AdHocCommandData.java | 4 +- .../smackx/formtypes/FormFieldRegistry.java | 1 + .../provider/RegistrationProvider.java | 4 +- .../smackx/jingle/element/JingleContent.java | 4 +- .../element/JingleContentDescription.java | 6 +- .../JingleContentDescriptionChildElement.java | 4 +- .../element/JingleContentTransport.java | 6 +- .../JingleContentTransportCandidate.java | 4 +- .../element/JingleContentTransportInfo.java | 4 +- .../smackx/jingle/element/JingleError.java | 6 +- .../smackx/jingle/element/JingleReason.java | 4 +- .../element/JingleIBBTransport.java | 9 ++- .../elements/JingleS5BTransport.java | 9 ++- .../mediaelement/element/MediaElement.java | 4 +- .../smackx/mood/element/MoodElement.java | 4 +- .../offline/packet/OfflineMessageInfo.java | 1 + .../offline/packet/OfflineMessageRequest.java | 1 + .../smackx/pubsub/Affiliation.java | 4 +- .../smackx/pubsub/ConfigurationEvent.java | 6 +- .../pubsub/EmbeddedPacketExtension.java | 5 +- .../smackx/pubsub/EventElement.java | 11 ++-- .../smackx/pubsub/ItemsExtension.java | 5 +- .../jivesoftware/smackx/pubsub/LeafNode.java | 10 +-- .../org/jivesoftware/smackx/pubsub/Node.java | 28 ++++----- .../smackx/pubsub/NodeExtension.java | 4 +- .../smackx/pubsub/PayloadItem.java | 3 +- .../smackx/pubsub/PubSubManager.java | 8 +-- .../smackx/pubsub/RetractItem.java | 8 ++- .../smackx/pubsub/SimplePayload.java | 4 +- .../smackx/pubsub/packet/PubSub.java | 4 +- .../pubsub/provider/AffiliationsProvider.java | 4 +- .../pubsub/provider/ConfigEventProvider.java | 4 +- .../smackx/pubsub/provider/EventProvider.java | 4 +- .../pubsub/provider/FormNodeProvider.java | 4 +- .../smackx/pubsub/provider/ItemsProvider.java | 4 +- .../pubsub/provider/RetractEventProvider.java | 4 +- .../pubsub/provider/SimpleNodeProvider.java | 4 +- .../provider/SubscriptionsProvider.java | 4 +- .../smackx/receipts/DeliveryReceipt.java | 3 +- .../jivesoftware/smackx/rsm/RSMManager.java | 16 ++--- .../smackx/shim/packet/Header.java | 7 ++- .../smackx/shim/provider/HeadersProvider.java | 4 +- .../smackx/si/packet/StreamInitiation.java | 20 ++++-- .../softwareinfo/SoftwareInfoManager.java | 1 + .../softwareinfo/form/SoftwareInfoForm.java | 1 + .../jivesoftware/smackx/xdata/FormField.java | 10 +-- .../smackx/xdata/FormFieldChildElement.java | 4 +- .../smackx/xdatalayout/packet/DataLayout.java | 9 ++- .../packet/ValidateElement.java | 4 +- .../smackx/pubsub/ItemValidationTest.java | 10 +-- .../softwareinfo/SoftwareInfoFormTest.java | 1 + .../xdata/provider/DataFormProviderTest.java | 1 + smack-integration-test/build.gradle | 2 +- smack-java8-full/build.gradle | 1 + .../ExtensionElementQNameDeclaredTest.java | 63 +++++++++++++++++++ .../smackx/workgroup/MetaData.java | 4 ++ .../smackx/workgroup/packet/AgentStatus.java | 4 ++ .../smackx/workgroup/packet/QueueDetails.java | 3 + .../workgroup/packet/QueueOverview.java | 3 + .../smackx/workgroup/packet/QueueUpdate.java | 4 ++ .../workgroup/packet/RoomInvitation.java | 4 ++ .../smackx/workgroup/packet/RoomTransfer.java | 4 ++ .../smackx/workgroup/packet/SessionID.java | 4 ++ .../smackx/workgroup/packet/UserID.java | 4 ++ .../packet/WorkgroupInformation.java | 4 ++ .../smackx/workgroup/user/Workgroup.java | 6 +- .../smackx/xroster/packet/RosterExchange.java | 8 ++- .../omemo/element/OmemoHeaderElement.java | 4 +- .../smackx/omemo/element/OmemoKeyElement.java | 4 +- .../ox/element/OpenPgpContentElement.java | 13 ++-- .../smack/sm/packet/StreamManagement.java | 10 ++- 146 files changed, 600 insertions(+), 344 deletions(-) rename smack-core/src/main/java/org/jivesoftware/smack/packet/{FullyQualifiedElement.java => XmlElement.java} (54%) create mode 100644 smack-java8-full/src/test/java/org/jivesoftware/smack/full/ExtensionElementQNameDeclaredTest.java diff --git a/build.gradle b/build.gradle index 2d4f95f23..3077bdd3e 100644 --- a/build.gradle +++ b/build.gradle @@ -153,6 +153,7 @@ allprojects { bouncyCastleVersion = '1.68' guavaVersion = '30.1-jre' mockitoVersion = '3.7.7' + orgReflectionsVersion = '0.9.11' if (project.hasProperty("useSonatype")) { useSonatype = project.getProperty("useSonatype").toBoolean() diff --git a/smack-core/src/main/java/org/jivesoftware/smack/AbstractXMPPConnection.java b/smack-core/src/main/java/org/jivesoftware/smack/AbstractXMPPConnection.java index 3c2f9f21b..33d306b32 100644 --- a/smack-core/src/main/java/org/jivesoftware/smack/AbstractXMPPConnection.java +++ b/smack-core/src/main/java/org/jivesoftware/smack/AbstractXMPPConnection.java @@ -74,7 +74,6 @@ import org.jivesoftware.smack.packet.AbstractStreamOpen; import org.jivesoftware.smack.packet.Bind; import org.jivesoftware.smack.packet.ErrorIQ; import org.jivesoftware.smack.packet.ExtensionElement; -import org.jivesoftware.smack.packet.FullyQualifiedElement; import org.jivesoftware.smack.packet.IQ; import org.jivesoftware.smack.packet.Mechanisms; import org.jivesoftware.smack.packet.Message; @@ -92,6 +91,7 @@ import org.jivesoftware.smack.packet.StartTls; import org.jivesoftware.smack.packet.StreamError; import org.jivesoftware.smack.packet.StreamOpen; import org.jivesoftware.smack.packet.TopLevelStreamElement; +import org.jivesoftware.smack.packet.XmlElement; import org.jivesoftware.smack.packet.XmlEnvironment; import org.jivesoftware.smack.packet.id.StanzaIdSource; import org.jivesoftware.smack.parsing.ParsingExceptionCallback; @@ -239,7 +239,7 @@ public abstract class AbstractXMPPConnection implements XMPPConnection { protected final Lock connectionLock = new ReentrantLock(); - protected final Map streamFeatures = new HashMap<>(); + protected final Map streamFeatures = new HashMap<>(); /** * The full JID of the authenticated user, as returned by the resource binding response of the server. @@ -1859,7 +1859,7 @@ public abstract class AbstractXMPPConnection implements XMPPConnection { XmlPullParser.Event eventType = parser.next(); if (eventType == XmlPullParser.Event.START_ELEMENT && parser.getDepth() == initialDepth + 1) { - FullyQualifiedElement streamFeature = null; + XmlElement streamFeature = null; String name = parser.getName(); String namespace = parser.getNamespace(); switch (name) { @@ -1928,7 +1928,7 @@ public abstract class AbstractXMPPConnection implements XMPPConnection { @SuppressWarnings("unchecked") @Override - public F getFeature(QName qname) { + public F getFeature(QName qname) { return (F) streamFeatures.get(qname); } @@ -1937,7 +1937,7 @@ public abstract class AbstractXMPPConnection implements XMPPConnection { return streamFeatures.containsKey(qname); } - protected void addStreamFeature(FullyQualifiedElement feature) { + protected void addStreamFeature(XmlElement feature) { QName key = feature.getQName(); streamFeatures.put(key, feature); } diff --git a/smack-core/src/main/java/org/jivesoftware/smack/XMPPConnection.java b/smack-core/src/main/java/org/jivesoftware/smack/XMPPConnection.java index 1d3ca49d1..aea730058 100644 --- a/smack-core/src/main/java/org/jivesoftware/smack/XMPPConnection.java +++ b/smack-core/src/main/java/org/jivesoftware/smack/XMPPConnection.java @@ -27,7 +27,6 @@ import org.jivesoftware.smack.filter.IQReplyFilter; import org.jivesoftware.smack.filter.StanzaFilter; import org.jivesoftware.smack.iqrequest.IQRequestHandler; import org.jivesoftware.smack.packet.ExtensionElement; -import org.jivesoftware.smack.packet.FullyQualifiedElement; import org.jivesoftware.smack.packet.IQ; import org.jivesoftware.smack.packet.Message; import org.jivesoftware.smack.packet.MessageBuilder; @@ -36,6 +35,7 @@ import org.jivesoftware.smack.packet.Presence; import org.jivesoftware.smack.packet.PresenceBuilder; import org.jivesoftware.smack.packet.Stanza; import org.jivesoftware.smack.packet.StanzaFactory; +import org.jivesoftware.smack.packet.XmlElement; import org.jivesoftware.smack.util.Consumer; import org.jivesoftware.smack.util.Predicate; import org.jivesoftware.smack.util.XmppElementUtil; @@ -583,7 +583,7 @@ public interface XMPPConnection { */ // TODO: Remove in Smack 4.5. @Deprecated - default F getFeature(String element, String namespace) { + default F getFeature(String element, String namespace) { QName qname = new QName(namespace, element); return getFeature(qname); } @@ -597,7 +597,7 @@ public interface XMPPConnection { * @return a stanza extensions of the feature or null * @since 4.4 */ - F getFeature(QName qname); + F getFeature(QName qname); /** * Get the feature stanza extensions for a given stream feature of the @@ -608,7 +608,7 @@ public interface XMPPConnection { * @return a stanza extensions of the feature or null * @since 4.4 */ - default F getFeature(Class featureClass) { + default F getFeature(Class featureClass) { QName qname = XmppElementUtil.getQNameFor(featureClass); return getFeature(qname); } diff --git a/smack-core/src/main/java/org/jivesoftware/smack/filter/ExtensionElementFilter.java b/smack-core/src/main/java/org/jivesoftware/smack/filter/ExtensionElementFilter.java index ff84f403d..a0a6ce977 100644 --- a/smack-core/src/main/java/org/jivesoftware/smack/filter/ExtensionElementFilter.java +++ b/smack-core/src/main/java/org/jivesoftware/smack/filter/ExtensionElementFilter.java @@ -1,6 +1,6 @@ /** * - * Copyright 2020 Florian Schmaus + * Copyright 2020-2021 Florian Schmaus * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -20,6 +20,7 @@ import javax.xml.namespace.QName; import org.jivesoftware.smack.packet.ExtensionElement; import org.jivesoftware.smack.packet.Stanza; +import org.jivesoftware.smack.packet.XmlElement; import org.jivesoftware.smack.util.XmppElementUtil; public class ExtensionElementFilter implements StanzaFilter { @@ -34,7 +35,7 @@ public class ExtensionElementFilter implements Stanz @Override public final boolean accept(Stanza stanza) { - ExtensionElement extensionElement = stanza.getExtension(extensionElementQName); + XmlElement extensionElement = stanza.getExtension(extensionElementQName); if (extensionElement == null) { return false; } diff --git a/smack-core/src/main/java/org/jivesoftware/smack/packet/AbstractError.java b/smack-core/src/main/java/org/jivesoftware/smack/packet/AbstractError.java index 4c4fe93d1..147b4f031 100644 --- a/smack-core/src/main/java/org/jivesoftware/smack/packet/AbstractError.java +++ b/smack-core/src/main/java/org/jivesoftware/smack/packet/AbstractError.java @@ -1,6 +1,6 @@ /** * - * Copyright 2014-2015 Florian Schmaus + * Copyright 2014-2021 Florian Schmaus * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -32,18 +32,18 @@ public class AbstractError { protected final String textNamespace; protected final Map descriptiveTexts; - protected final List extensions; + protected final List extensions; protected AbstractError(Map descriptiveTexts) { this(descriptiveTexts, null); } - protected AbstractError(Map descriptiveTexts, List extensions) { + protected AbstractError(Map descriptiveTexts, List extensions) { this(descriptiveTexts, null, extensions); } - protected AbstractError(Map descriptiveTexts, String textNamespace, List extensions) { + protected AbstractError(Map descriptiveTexts, String textNamespace, List extensions) { if (descriptiveTexts != null) { this.descriptiveTexts = descriptiveTexts; } else { @@ -108,7 +108,7 @@ public class AbstractError { * @param type of the ExtensionElement. * @return the extension, or null if it doesn't exist. */ - public PE getExtension(String elementName, String namespace) { + public PE getExtension(String elementName, String namespace) { return PacketUtil.extensionElementFrom(extensions, elementName, namespace); } @@ -128,7 +128,7 @@ public class AbstractError { public abstract static class Builder> { protected String textNamespace; protected Map descriptiveTexts; - protected List extensions; + protected List extensions; public B setDescriptiveTexts(Map descriptiveTexts) { if (descriptiveTexts == null) { @@ -173,7 +173,7 @@ public class AbstractError { return getThis(); } - public B setExtensions(List extensions) { + public B setExtensions(List extensions) { if (this.extensions == null) { this.extensions = extensions; } @@ -183,7 +183,7 @@ public class AbstractError { return getThis(); } - public B addExtension(ExtensionElement extension) { + public B addExtension(XmlElement extension) { if (extensions == null) { extensions = new ArrayList<>(); } diff --git a/smack-core/src/main/java/org/jivesoftware/smack/packet/ExtensionElement.java b/smack-core/src/main/java/org/jivesoftware/smack/packet/ExtensionElement.java index 86dfe5291..5a7f00650 100644 --- a/smack-core/src/main/java/org/jivesoftware/smack/packet/ExtensionElement.java +++ b/smack-core/src/main/java/org/jivesoftware/smack/packet/ExtensionElement.java @@ -1,6 +1,6 @@ /** * - * Copyright 2003-2007 Jive Software, 2018 Florian Schmaus. + * Copyright 2003-2007 Jive Software, 2018-2021 Florian Schmaus. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -17,21 +17,16 @@ package org.jivesoftware.smack.packet; /** - * Interface to represent extension elements. + * Interface to represent XMPP extension elements. Unlike {@link XmlElement}, every non-abstract class that implements + * {@link ExtensionElement} must have a static final QNAME member of the type {@link javax.xml.namespace.QName}. This + * allows type-safe functions like {@link StanzaView#getExtension(Class)}. Hence this is a marker interface. *

- * An extension element is an XML subdocument - * with a root element name and namespace. Extension elements are used to provide - * extended functionality beyond what is in the base XMPP specification. Examples of - * extensions elements include message events, message properties, and extra presence data. - * IQ stanzas have limited support for extension elements. - *

- * This class is used primarily for extended content in XMPP Stanzas, to act as so called "extension elements". For more - * information see RFC 6120 § 8.4 Extended Content. + * Use this class when implementing new extension elements when possible. This means that every instance of your + * implemented class must represent an XML element of the same qualified name. *

* - * @see org.jivesoftware.smack.provider.ExtensionElementProvider - * @author Matt Tucker + * @see RFC 6120 § 8.4 Extended Content */ -public interface ExtensionElement extends FullyQualifiedElement { +public interface ExtensionElement extends XmlElement { } diff --git a/smack-core/src/main/java/org/jivesoftware/smack/packet/IQ.java b/smack-core/src/main/java/org/jivesoftware/smack/packet/IQ.java index 0f412b602..2fcfe88fc 100644 --- a/smack-core/src/main/java/org/jivesoftware/smack/packet/IQ.java +++ b/smack-core/src/main/java/org/jivesoftware/smack/packet/IQ.java @@ -211,7 +211,7 @@ public abstract class IQ extends Stanza implements IqView { xml.append(iqChildElement); - List extensionsXml = getExtensions(); + List extensionsXml = getExtensions(); if (iqChildElement.isEmptyElement) { if (extensionsXml.isEmpty()) { xml.closeEmptyElement(); diff --git a/smack-core/src/main/java/org/jivesoftware/smack/packet/Message.java b/smack-core/src/main/java/org/jivesoftware/smack/packet/Message.java index 61e43552b..d47cafda7 100644 --- a/smack-core/src/main/java/org/jivesoftware/smack/packet/Message.java +++ b/smack-core/src/main/java/org/jivesoftware/smack/packet/Message.java @@ -344,7 +344,7 @@ public final class Message extends MessageOrPresence @Deprecated // TODO: Remove when stanza builder is ready. public boolean removeBody(Body body) { - ExtensionElement removedElement = removeExtension(body); + XmlElement removedElement = removeExtension(body); return removedElement != null; } diff --git a/smack-core/src/main/java/org/jivesoftware/smack/packet/MessageView.java b/smack-core/src/main/java/org/jivesoftware/smack/packet/MessageView.java index 62d78b829..22d106a2e 100644 --- a/smack-core/src/main/java/org/jivesoftware/smack/packet/MessageView.java +++ b/smack-core/src/main/java/org/jivesoftware/smack/packet/MessageView.java @@ -1,6 +1,6 @@ /** * - * Copyright 2003-2007 Jive Software, 2019-2020 Florian Schmaus + * Copyright 2003-2007 Jive Software, 2019-2021 Florian Schmaus * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -150,9 +150,9 @@ public interface MessageView extends StanzaView { * @since 3.0.2 */ default Set getBodies() { - List bodiesList = getExtensions(Message.Body.QNAME); + List bodiesList = getExtensions(Message.Body.QNAME); Set resultSet = new HashSet<>(bodiesList.size()); - for (ExtensionElement extensionElement : bodiesList) { + for (XmlElement extensionElement : bodiesList) { Message.Body body = (Message.Body) extensionElement; resultSet.add(body); } diff --git a/smack-core/src/main/java/org/jivesoftware/smack/packet/NamedElement.java b/smack-core/src/main/java/org/jivesoftware/smack/packet/NamedElement.java index 219b35ad1..91e3fb8ff 100644 --- a/smack-core/src/main/java/org/jivesoftware/smack/packet/NamedElement.java +++ b/smack-core/src/main/java/org/jivesoftware/smack/packet/NamedElement.java @@ -23,7 +23,7 @@ package org.jivesoftware.smack.packet; *

* Please note that usage of this interface is discouraged. The reason is that every XML element is fully * qualified, i.e., it is qualified by a namespace. The namespace may not be explicitly given, but instead, is inherited - * from an outer element. Use {@link FullyQualifiedElement} instead when possible. + * from an outer element. Use {@link XmlElement} instead when possible. *

*/ public interface NamedElement extends Element { diff --git a/smack-core/src/main/java/org/jivesoftware/smack/packet/Presence.java b/smack-core/src/main/java/org/jivesoftware/smack/packet/Presence.java index 0c7014110..3490e1a23 100644 --- a/smack-core/src/main/java/org/jivesoftware/smack/packet/Presence.java +++ b/smack-core/src/main/java/org/jivesoftware/smack/packet/Presence.java @@ -1,6 +1,6 @@ /** * - * Copyright 2003-2007 Jive Software, 2020 Florian Schmaus. + * Copyright 2003-2007 Jive Software, 2020-2021 Florian Schmaus. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -319,7 +319,7 @@ public final class Presence extends MessageOrPresence buf.attribute("type", type); } - List extensions = getExtensions(); + List extensions = getExtensions(); if (status == null && priority == null && (mode == null || mode == Mode.available) diff --git a/smack-core/src/main/java/org/jivesoftware/smack/packet/StandardExtensionElement.java b/smack-core/src/main/java/org/jivesoftware/smack/packet/StandardExtensionElement.java index d78ce1845..8ae1f5a7a 100644 --- a/smack-core/src/main/java/org/jivesoftware/smack/packet/StandardExtensionElement.java +++ b/smack-core/src/main/java/org/jivesoftware/smack/packet/StandardExtensionElement.java @@ -1,6 +1,6 @@ /** * - * Copyright 2015-2020 Florian Schmaus. + * Copyright 2015-2021 Florian Schmaus. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -41,7 +41,7 @@ import org.jivesoftware.smack.util.XmlStringBuilder; * @since 4.2 * @author Florian Schmaus */ -public final class StandardExtensionElement implements ExtensionElement { +public final class StandardExtensionElement implements XmlElement { private final String name; private final String namespace; diff --git a/smack-core/src/main/java/org/jivesoftware/smack/packet/Stanza.java b/smack-core/src/main/java/org/jivesoftware/smack/packet/Stanza.java index bce5ba0f5..7123e82f8 100644 --- a/smack-core/src/main/java/org/jivesoftware/smack/packet/Stanza.java +++ b/smack-core/src/main/java/org/jivesoftware/smack/packet/Stanza.java @@ -64,7 +64,7 @@ public abstract class Stanza implements StanzaView, TopLevelStreamElement { protected static final String DEFAULT_LANGUAGE = java.util.Locale.getDefault().getLanguage().toLowerCase(Locale.US); - private final MultiMap extensionElements; + private final MultiMap extensionElements; // Assume that all stanzas Smack handles are in the client namespace, since Smack is an XMPP client library. We can // change this behavior later if it is required. @@ -284,18 +284,18 @@ public abstract class Stanza implements StanzaView, TopLevelStreamElement { } @Override - public final List getExtensions() { + public final List getExtensions() { synchronized (extensionElements) { // No need to create a new list, values() will already create a new one for us return extensionElements.values(); } } - public final MultiMap getExtensionsMap() { + public final MultiMap getExtensionsMap() { return cloneExtensionsMap(); } - final MultiMap cloneExtensionsMap() { + final MultiMap cloneExtensionsMap() { synchronized (extensionElements) { return extensionElements.clone(); } @@ -312,7 +312,7 @@ public abstract class Stanza implements StanzaView, TopLevelStreamElement { * @return a set of all matching extensions. * @since 4.1 */ - public final List getExtensions(String elementName, String namespace) { + public final List getExtensions(String elementName, String namespace) { requireNotNullNorEmpty(elementName, "elementName must not be null nor empty"); requireNotNullNorEmpty(namespace, "namespace must not be null nor empty"); QName key = new QName(namespace, elementName); @@ -320,8 +320,8 @@ public abstract class Stanza implements StanzaView, TopLevelStreamElement { } @Override - public final List getExtensions(QName qname) { - List res; + public final List getExtensions(QName qname) { + List res; synchronized (extensionElements) { res = extensionElements.getAll(qname); } @@ -344,7 +344,8 @@ public abstract class Stanza implements StanzaView, TopLevelStreamElement { * @param namespace the namespace of the extension that is desired. * @return the stanza extension with the given namespace. */ - public final ExtensionElement getExtension(String namespace) { + // TODO: Mark this method as deprecated in favor of getExtension(QName). + public final XmlElement getExtension(String namespace) { return PacketUtil.extensionElementFrom(getExtensions(), null, namespace); } @@ -361,12 +362,12 @@ public abstract class Stanza implements StanzaView, TopLevelStreamElement { * @param namespace the XML element namespace of the extension. * @return the extension, or null if it doesn't exist. */ - public final ExtensionElement getExtensionElement(String elementName, String namespace) { + public final XmlElement getExtensionElement(String elementName, String namespace) { if (namespace == null) { return null; } QName key = new QName(namespace, elementName); - ExtensionElement packetExtension = getExtension(key); + XmlElement packetExtension = getExtension(key); if (packetExtension == null) { return null; } @@ -390,7 +391,7 @@ public abstract class Stanza implements StanzaView, TopLevelStreamElement { } @Override - public final ExtensionElement getExtension(QName qname) { + public final XmlElement getExtension(QName qname) { synchronized (extensionElements) { return extensionElements.getFirst(qname); } @@ -400,13 +401,13 @@ public abstract class Stanza implements StanzaView, TopLevelStreamElement { * Adds a stanza extension to the packet. Does nothing if extension is null. *

* Please note that although this method is not yet marked as deprecated, it is recommended to use - * {@link StanzaBuilder#addExtension(ExtensionElement)} instead. + * {@link StanzaBuilder#addExtension(XmlElement)} instead. *

* * @param extension a stanza extension. */ // TODO: Mark this as deprecated once StanzaBuilder is ready and all call sites are gone. - public final void addExtension(ExtensionElement extension) { + public final void addExtension(XmlElement extension) { if (extension == null) return; QName key = extension.getQName(); synchronized (extensionElements) { @@ -419,7 +420,7 @@ public abstract class Stanza implements StanzaView, TopLevelStreamElement { * namespace. *

* Please note that although this method is not yet marked as deprecated, it is recommended to use - * {@link StanzaBuilder#overrideExtension(ExtensionElement)} instead. + * {@link StanzaBuilder#overrideExtension(XmlElement)} instead. *

* * @param extension the extension element to add. @@ -427,13 +428,13 @@ public abstract class Stanza implements StanzaView, TopLevelStreamElement { * @since 4.1.2 */ // TODO: Mark this as deprecated once StanzaBuilder is ready and all call sites are gone. - public final ExtensionElement overrideExtension(ExtensionElement extension) { + public final XmlElement overrideExtension(XmlElement extension) { if (extension == null) return null; synchronized (extensionElements) { // Note that we need to use removeExtension(String, String) here. If would use // removeExtension(ExtensionElement) then we would remove based on the equality of ExtensionElement, which // is not what we want in this case. - ExtensionElement removedExtension = removeExtension(extension.getElementName(), extension.getNamespace()); + XmlElement removedExtension = removeExtension(extension.getElementName(), extension.getNamespace()); addExtension(extension); return removedExtension; } @@ -445,9 +446,9 @@ public abstract class Stanza implements StanzaView, TopLevelStreamElement { * @param extensions a collection of stanza extensions */ // TODO: Mark this as deprecated once StanzaBuilder is ready and all call sites are gone. - public final void addExtensions(Collection extensions) { + public final void addExtensions(Collection extensions) { if (extensions == null) return; - for (ExtensionElement packetExtension : extensions) { + for (XmlElement packetExtension : extensions) { addExtension(packetExtension); } } @@ -476,7 +477,7 @@ public abstract class Stanza implements StanzaView, TopLevelStreamElement { @Override public final boolean hasExtension(String namespace) { synchronized (extensionElements) { - for (ExtensionElement packetExtension : extensionElements.values()) { + for (XmlElement packetExtension : extensionElements.values()) { if (packetExtension.getNamespace().equals(namespace)) { return true; } @@ -493,7 +494,7 @@ public abstract class Stanza implements StanzaView, TopLevelStreamElement { * @return the removed stanza extension or null. */ // TODO: Mark this as deprecated once StanzaBuilder is ready and all call sites are gone. - public final ExtensionElement removeExtension(String elementName, String namespace) { + public final XmlElement removeExtension(String elementName, String namespace) { QName key = new QName(namespace, elementName); synchronized (extensionElements) { return extensionElements.remove(key); @@ -509,10 +510,10 @@ public abstract class Stanza implements StanzaView, TopLevelStreamElement { */ @Deprecated // TODO: Remove in Smack 4.5. - public final ExtensionElement removeExtension(ExtensionElement extension) { + public final XmlElement removeExtension(XmlElement extension) { QName key = extension.getQName(); synchronized (extensionElements) { - List list = extensionElements.getAll(key); + List list = extensionElements.getAll(key); boolean removed = list.remove(extension); if (removed) { return extension; diff --git a/smack-core/src/main/java/org/jivesoftware/smack/packet/StanzaBuilder.java b/smack-core/src/main/java/org/jivesoftware/smack/packet/StanzaBuilder.java index d37ce41b2..41265d633 100644 --- a/smack-core/src/main/java/org/jivesoftware/smack/packet/StanzaBuilder.java +++ b/smack-core/src/main/java/org/jivesoftware/smack/packet/StanzaBuilder.java @@ -1,6 +1,6 @@ /** * - * Copyright 2019-2020 Florian Schmaus + * Copyright 2019-2021 Florian Schmaus * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -44,7 +44,7 @@ public abstract class StanzaBuilder> implements Stanz String language; - MultiMap extensionElements = new MultiMap<>(); + MultiMap extensionElements = new MultiMap<>(); protected StanzaBuilder(StanzaBuilder other) { stanzaIdSource = other.stanzaIdSource; @@ -156,13 +156,13 @@ public abstract class StanzaBuilder> implements Stanz return getThis(); } - public final B addExtension(ExtensionElement extensionElement) { + public final B addExtension(XmlElement extensionElement) { QName key = extensionElement.getQName(); extensionElements.put(key, extensionElement); return getThis(); } - public final B addOptExtensions(Collection extensionElements) { + public final B addOptExtensions(Collection extensionElements) { if (extensionElements == null) { return getThis(); } @@ -170,14 +170,14 @@ public abstract class StanzaBuilder> implements Stanz return addExtensions(extensionElements); } - public final B addExtensions(Collection extensionElements) { - for (ExtensionElement extensionElement : extensionElements) { + public final B addExtensions(Collection extensionElements) { + for (XmlElement extensionElement : extensionElements) { addExtension(extensionElement); } return getThis(); } - public final B overrideExtension(ExtensionElement extensionElement) { + public final B overrideExtension(XmlElement extensionElement) { QName key = extensionElement.getQName(); extensionElements.remove(key); extensionElements.put(key, extensionElement); @@ -214,17 +214,17 @@ public abstract class StanzaBuilder> implements Stanz } @Override - public final ExtensionElement getExtension(QName qname) { + public final XmlElement getExtension(QName qname) { return extensionElements.getFirst(qname); } @Override - public final List getExtensions() { + public final List getExtensions() { return extensionElements.values(); } @Override - public final List getExtensions(QName qname) { + public final List getExtensions(QName qname) { return extensionElements.getAll(qname); } diff --git a/smack-core/src/main/java/org/jivesoftware/smack/packet/StanzaError.java b/smack-core/src/main/java/org/jivesoftware/smack/packet/StanzaError.java index 5c595115b..36ba53254 100644 --- a/smack-core/src/main/java/org/jivesoftware/smack/packet/StanzaError.java +++ b/smack-core/src/main/java/org/jivesoftware/smack/packet/StanzaError.java @@ -125,7 +125,7 @@ public class StanzaError extends AbstractError implements ExtensionElement { * @param extensions list of stanza extensions */ public StanzaError(Condition condition, String conditionText, String errorGenerator, Type type, Map descriptiveTexts, - List extensions) { + List extensions) { super(descriptiveTexts, ERROR_CONDITION_AND_TEXT_NAMESPACE, extensions); this.condition = Objects.requireNonNull(condition, "condition must not be null"); // Some implementations may send the condition as non-empty element containing the empty string, that is diff --git a/smack-core/src/main/java/org/jivesoftware/smack/packet/StanzaView.java b/smack-core/src/main/java/org/jivesoftware/smack/packet/StanzaView.java index 003ddbeef..85c4af1a9 100644 --- a/smack-core/src/main/java/org/jivesoftware/smack/packet/StanzaView.java +++ b/smack-core/src/main/java/org/jivesoftware/smack/packet/StanzaView.java @@ -1,6 +1,6 @@ /** * - * Copyright 2019-2020 Florian Schmaus + * Copyright 2019-2021 Florian Schmaus * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -61,7 +61,7 @@ public interface StanzaView extends XmlLangElement { */ StanzaError getError(); - ExtensionElement getExtension(QName qname); + XmlElement getExtension(QName qname); default boolean hasExtension(QName qname) { return getExtension(qname) != null; @@ -78,7 +78,7 @@ public interface StanzaView extends XmlLangElement { * @return true if a stanza extension exists, false otherwise. */ default boolean hasExtension(String namespace) { - for (ExtensionElement packetExtension : getExtensions()) { + for (XmlElement packetExtension : getExtensions()) { if (packetExtension.getNamespace().equals(namespace)) { return true; } @@ -89,7 +89,7 @@ public interface StanzaView extends XmlLangElement { default E getExtension(Class extensionElementClass) { QName qname = XmppElementUtil.getQNameFor(extensionElementClass); - ExtensionElement extensionElement = getExtension(qname); + XmlElement extensionElement = getExtension(qname); if (extensionElement == null) { return null; @@ -103,9 +103,9 @@ public interface StanzaView extends XmlLangElement { * * @return a list of all extension elements of this stanza. */ - List getExtensions(); + List getExtensions(); - List getExtensions(QName qname); + List getExtensions(QName qname); /** * Return all extension elements of the given type. Returns the empty list if there a none. diff --git a/smack-core/src/main/java/org/jivesoftware/smack/packet/StreamError.java b/smack-core/src/main/java/org/jivesoftware/smack/packet/StreamError.java index f4be13f2f..f034be9d3 100644 --- a/smack-core/src/main/java/org/jivesoftware/smack/packet/StreamError.java +++ b/smack-core/src/main/java/org/jivesoftware/smack/packet/StreamError.java @@ -105,7 +105,7 @@ public class StreamError extends AbstractError implements Nonza { private final Condition condition; private final String conditionText; - public StreamError(Condition condition, String conditionText, Map descriptiveTexts, List extensions) { + public StreamError(Condition condition, String conditionText, Map descriptiveTexts, List extensions) { super(descriptiveTexts, extensions); // Some implementations may send the condition as non-empty element containing the empty string, that is // , in this case the parser may calls this constructor with the empty string diff --git a/smack-core/src/main/java/org/jivesoftware/smack/packet/TopLevelStreamElement.java b/smack-core/src/main/java/org/jivesoftware/smack/packet/TopLevelStreamElement.java index 7cca472ca..da30c08e2 100644 --- a/smack-core/src/main/java/org/jivesoftware/smack/packet/TopLevelStreamElement.java +++ b/smack-core/src/main/java/org/jivesoftware/smack/packet/TopLevelStreamElement.java @@ -20,6 +20,6 @@ package org.jivesoftware.smack.packet; * A XMPP top level stream element. This is either a stanza ({@link Stanza}) or * just a plain stream element ({@link Nonza}). */ -public interface TopLevelStreamElement extends FullyQualifiedElement { +public interface TopLevelStreamElement extends XmlElement { } diff --git a/smack-core/src/main/java/org/jivesoftware/smack/packet/FullyQualifiedElement.java b/smack-core/src/main/java/org/jivesoftware/smack/packet/XmlElement.java similarity index 54% rename from smack-core/src/main/java/org/jivesoftware/smack/packet/FullyQualifiedElement.java rename to smack-core/src/main/java/org/jivesoftware/smack/packet/XmlElement.java index 40da81351..1f1fee587 100644 --- a/smack-core/src/main/java/org/jivesoftware/smack/packet/FullyQualifiedElement.java +++ b/smack-core/src/main/java/org/jivesoftware/smack/packet/XmlElement.java @@ -1,6 +1,6 @@ /** * - * Copyright 2018-2019 Florian Schmaus + * Copyright 2018-2021 Florian Schmaus * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -18,7 +18,23 @@ package org.jivesoftware.smack.packet; import javax.xml.namespace.QName; -public interface FullyQualifiedElement extends NamedElement, XmlLangElement { +/** + * Interface to represent XML elements. Every XML element in XMPP has a qualified XML name ({@link QName}). This name + * can be obtained via {@link #getQName()}. + *

+ * XMPP uses "extension elements", i.e. XML elements, to provide extended functionality beyond what is in the base XMPP + * specification. Examples of extensions elements include message events, message properties, and extra presence data. + * IQ stanzas have limited support for extension elements. See {@link ExtensionElement} for more information about XMPP + * extension elements. + *

+ *

+ * It is recommend to use {@link ExtensionElement} over this class when creating new extension elements. + *

+ * + * @see org.jivesoftware.smack.provider.ExtensionElementProvider + * @since 4.5 + */ +public interface XmlElement extends NamedElement, XmlLangElement { /** * Returns the root element XML namespace. diff --git a/smack-core/src/main/java/org/jivesoftware/smack/provider/EmbeddedExtensionProvider.java b/smack-core/src/main/java/org/jivesoftware/smack/provider/EmbeddedExtensionProvider.java index 995751211..3525e26b7 100644 --- a/smack-core/src/main/java/org/jivesoftware/smack/provider/EmbeddedExtensionProvider.java +++ b/smack-core/src/main/java/org/jivesoftware/smack/provider/EmbeddedExtensionProvider.java @@ -22,7 +22,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; -import org.jivesoftware.smack.packet.ExtensionElement; +import org.jivesoftware.smack.packet.XmlElement; import org.jivesoftware.smack.packet.XmlEnvironment; import org.jivesoftware.smack.parsing.SmackParsingException; import org.jivesoftware.smack.util.PacketParserUtils; @@ -82,7 +82,7 @@ import org.jivesoftware.smack.xml.XmlPullParserException; * * @author Robin Collier */ -public abstract class EmbeddedExtensionProvider extends ExtensionElementProvider { +public abstract class EmbeddedExtensionProvider extends ExtensionElementProvider { @Override public final PE parse(XmlPullParser parser, int initialDepth, XmlEnvironment xmlEnvironment) throws XmlPullParserException, IOException, SmackParsingException { @@ -95,7 +95,7 @@ public abstract class EmbeddedExtensionProvider ext attMap.put(parser.getAttributeName(i), parser.getAttributeValue(i)); } - List extensions = new ArrayList<>(); + List extensions = new ArrayList<>(); XmlPullParser.Event event; do { event = parser.next(); @@ -109,5 +109,5 @@ public abstract class EmbeddedExtensionProvider ext } protected abstract PE createReturnExtension(String currentElement, String currentNamespace, - Map attributeMap, List content); + Map attributeMap, List content); } diff --git a/smack-core/src/main/java/org/jivesoftware/smack/provider/ExtensionElementProvider.java b/smack-core/src/main/java/org/jivesoftware/smack/provider/ExtensionElementProvider.java index 9bb34f1cf..041dea6fb 100644 --- a/smack-core/src/main/java/org/jivesoftware/smack/provider/ExtensionElementProvider.java +++ b/smack-core/src/main/java/org/jivesoftware/smack/provider/ExtensionElementProvider.java @@ -17,7 +17,7 @@ package org.jivesoftware.smack.provider; -import org.jivesoftware.smack.packet.ExtensionElement; +import org.jivesoftware.smack.packet.XmlElement; /** * An abstract class for parsing custom extensions elements. Each ExtensionElementProvider must @@ -26,6 +26,6 @@ import org.jivesoftware.smack.packet.ExtensionElement; * * @author Matt Tucker */ -public abstract class ExtensionElementProvider extends Provider { +public abstract class ExtensionElementProvider extends Provider { } diff --git a/smack-core/src/main/java/org/jivesoftware/smack/util/PacketParserUtils.java b/smack-core/src/main/java/org/jivesoftware/smack/util/PacketParserUtils.java index d5168ba50..7729bea9d 100644 --- a/smack-core/src/main/java/org/jivesoftware/smack/util/PacketParserUtils.java +++ b/smack-core/src/main/java/org/jivesoftware/smack/util/PacketParserUtils.java @@ -48,6 +48,7 @@ import org.jivesoftware.smack.packet.StanzaError; import org.jivesoftware.smack.packet.StartTls; import org.jivesoftware.smack.packet.StreamError; import org.jivesoftware.smack.packet.UnparsedIQ; +import org.jivesoftware.smack.packet.XmlElement; import org.jivesoftware.smack.packet.XmlEnvironment; import org.jivesoftware.smack.parsing.SmackParsingException; import org.jivesoftware.smack.parsing.StandardExtensionElementProvider; @@ -183,7 +184,7 @@ public class PacketParserUtils { message.setError(parseError(parser, messageXmlEnvironment)); break; default: - ExtensionElement extensionElement = parseExtensionElement(elementName, namespace, parser, messageXmlEnvironment); + XmlElement extensionElement = parseExtensionElement(elementName, namespace, parser, messageXmlEnvironment); message.addExtension(extensionElement); break; } @@ -474,7 +475,7 @@ public class PacketParserUtils { // Be extra robust: Skip PacketExtensions that cause Exceptions, instead of // failing completely here. See SMACK-390 for more information. try { - ExtensionElement extensionElement = parseExtensionElement(elementName, namespace, parser, presenceXmlEnvironment); + XmlElement extensionElement = parseExtensionElement(elementName, namespace, parser, presenceXmlEnvironment); presence.addExtension(extensionElement); } catch (Exception e) { LOGGER.log(Level.WARNING, "Failed to parse extension element in Presence stanza: " + presence, e); @@ -701,7 +702,7 @@ public class PacketParserUtils { */ public static StreamError parseStreamError(XmlPullParser parser, XmlEnvironment outerXmlEnvironment) throws XmlPullParserException, IOException, SmackParsingException { final int initialDepth = parser.getDepth(); - List extensions = new ArrayList<>(); + List extensions = new ArrayList<>(); Map descriptiveTexts = null; StreamError.Condition condition = null; String conditionText = null; @@ -765,7 +766,7 @@ public class PacketParserUtils { final int initialDepth = parser.getDepth(); Map descriptiveTexts = null; XmlEnvironment stanzaErrorXmlEnvironment = XmlEnvironment.from(parser, outerXmlEnvironment); - List extensions = new ArrayList<>(); + List extensions = new ArrayList<>(); StanzaError.Builder builder = StanzaError.getBuilder(); // Parse the error header @@ -825,7 +826,7 @@ public class PacketParserUtils { * @throws IOException if an I/O error occurred. * @throws SmackParsingException if the Smack parser (provider) encountered invalid input. */ - public static ExtensionElement parseExtensionElement(String elementName, String namespace, + public static XmlElement parseExtensionElement(String elementName, String namespace, XmlPullParser parser, XmlEnvironment outerXmlEnvironment) throws XmlPullParserException, IOException, SmackParsingException { ParserUtils.assertAtStartTag(parser); // See if a provider is registered to handle the extension. @@ -907,7 +908,7 @@ public class PacketParserUtils { public static void addExtensionElement(StanzaBuilder stanzaBuilder, XmlPullParser parser, String elementName, String namespace, XmlEnvironment outerXmlEnvironment) throws XmlPullParserException, IOException, SmackParsingException { - ExtensionElement extensionElement = parseExtensionElement(elementName, namespace, parser, outerXmlEnvironment); + XmlElement extensionElement = parseExtensionElement(elementName, namespace, parser, outerXmlEnvironment); stanzaBuilder.addExtension(extensionElement); } @@ -919,18 +920,18 @@ public class PacketParserUtils { public static void addExtensionElement(Stanza packet, XmlPullParser parser, String elementName, String namespace, XmlEnvironment outerXmlEnvironment) throws XmlPullParserException, IOException, SmackParsingException { - ExtensionElement packetExtension = parseExtensionElement(elementName, namespace, parser, outerXmlEnvironment); + XmlElement packetExtension = parseExtensionElement(elementName, namespace, parser, outerXmlEnvironment); packet.addExtension(packetExtension); } - public static void addExtensionElement(Collection collection, XmlPullParser parser, XmlEnvironment outerXmlEnvironment) + public static void addExtensionElement(Collection collection, XmlPullParser parser, XmlEnvironment outerXmlEnvironment) throws XmlPullParserException, IOException, SmackParsingException { addExtensionElement(collection, parser, parser.getName(), parser.getNamespace(), outerXmlEnvironment); } - public static void addExtensionElement(Collection collection, XmlPullParser parser, + public static void addExtensionElement(Collection collection, XmlPullParser parser, String elementName, String namespace, XmlEnvironment outerXmlEnvironment) throws XmlPullParserException, IOException, SmackParsingException { - ExtensionElement packetExtension = parseExtensionElement(elementName, namespace, parser, outerXmlEnvironment); + XmlElement packetExtension = parseExtensionElement(elementName, namespace, parser, outerXmlEnvironment); collection.add(packetExtension); } } diff --git a/smack-core/src/main/java/org/jivesoftware/smack/util/PacketUtil.java b/smack-core/src/main/java/org/jivesoftware/smack/util/PacketUtil.java index 59755660c..a68e91dd0 100644 --- a/smack-core/src/main/java/org/jivesoftware/smack/util/PacketUtil.java +++ b/smack-core/src/main/java/org/jivesoftware/smack/util/PacketUtil.java @@ -1,6 +1,6 @@ /** * - * Copyright © 2014-2020 Florian Schmaus + * Copyright © 2014-2021 Florian Schmaus * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -18,7 +18,7 @@ package org.jivesoftware.smack.util; import java.util.Collection; -import org.jivesoftware.smack.packet.ExtensionElement; +import org.jivesoftware.smack.packet.XmlElement; public class PacketUtil { @@ -33,9 +33,9 @@ public class PacketUtil { * @return the extension element */ @SuppressWarnings("unchecked") - public static PE extensionElementFrom(Collection collection, + public static PE extensionElementFrom(Collection collection, String element, String namespace) { - for (ExtensionElement packetExtension : collection) { + for (XmlElement packetExtension : collection) { if ((element == null || packetExtension.getElementName().equals( element)) && packetExtension.getNamespace().equals(namespace)) { diff --git a/smack-core/src/main/java/org/jivesoftware/smack/util/XmlStringBuilder.java b/smack-core/src/main/java/org/jivesoftware/smack/util/XmlStringBuilder.java index 49972aacb..ec0e11cad 100644 --- a/smack-core/src/main/java/org/jivesoftware/smack/util/XmlStringBuilder.java +++ b/smack-core/src/main/java/org/jivesoftware/smack/util/XmlStringBuilder.java @@ -24,8 +24,8 @@ import java.util.Date; import java.util.List; import org.jivesoftware.smack.packet.Element; -import org.jivesoftware.smack.packet.FullyQualifiedElement; import org.jivesoftware.smack.packet.NamedElement; +import org.jivesoftware.smack.packet.XmlElement; import org.jivesoftware.smack.packet.XmlEnvironment; import org.jxmpp.util.XmppDateTime; @@ -42,7 +42,7 @@ public class XmlStringBuilder implements Appendable, CharSequence, Element { effectiveXmlEnvironment = null; } - public XmlStringBuilder(FullyQualifiedElement pe) { + public XmlStringBuilder(XmlElement pe) { this(pe, null); } @@ -51,7 +51,7 @@ public class XmlStringBuilder implements Appendable, CharSequence, Element { halfOpenElement(e.getElementName()); } - public XmlStringBuilder(FullyQualifiedElement element, XmlEnvironment enclosingXmlEnvironment) { + public XmlStringBuilder(XmlElement element, XmlEnvironment enclosingXmlEnvironment) { sb = new LazyStringBuilder(); halfOpenElement(element); @@ -516,7 +516,7 @@ public class XmlStringBuilder implements Appendable, CharSequence, Element { return escape(text.toString()); } - protected XmlStringBuilder prelude(FullyQualifiedElement pe) { + protected XmlStringBuilder prelude(XmlElement pe) { return prelude(pe.getElementName(), pe.getNamespace()); } diff --git a/smack-core/src/main/java/org/jivesoftware/smack/util/XmppElementUtil.java b/smack-core/src/main/java/org/jivesoftware/smack/util/XmppElementUtil.java index 1e4eabbc3..5639a7e5f 100644 --- a/smack-core/src/main/java/org/jivesoftware/smack/util/XmppElementUtil.java +++ b/smack-core/src/main/java/org/jivesoftware/smack/util/XmppElementUtil.java @@ -1,6 +1,6 @@ /** * - * Copyright 2018-2020 Florian Schmaus + * Copyright 2018-2021 Florian Schmaus * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -24,19 +24,19 @@ import java.util.logging.Logger; import javax.xml.namespace.QName; import org.jivesoftware.smack.packet.ExtensionElement; -import org.jivesoftware.smack.packet.FullyQualifiedElement; import org.jivesoftware.smack.packet.StandardExtensionElement; +import org.jivesoftware.smack.packet.XmlElement; import org.jivesoftware.smack.provider.ProviderManager; import org.jxmpp.util.cache.LruCache; public class XmppElementUtil { - private static final LruCache, QName> CLASS_TO_QNAME_CACHE = new LruCache<>(512); + private static final LruCache, QName> CLASS_TO_QNAME_CACHE = new LruCache<>(512); public static final Logger LOGGER = Logger.getLogger(XmppElementUtil.class.getName()); - public static QName getQNameFor(Class fullyQualifiedElement) { + public static QName getQNameFor(Class fullyQualifiedElement) { QName qname = CLASS_TO_QNAME_CACHE.get(fullyQualifiedElement); if (qname != null) { return qname; @@ -72,24 +72,24 @@ public class XmppElementUtil { } public static List getElementsFrom( - MultiMap elementMap, Class extensionElementClass) { + MultiMap elementMap, Class extensionElementClass) { QName qname = XmppElementUtil.getQNameFor(extensionElementClass); - List extensionElements = elementMap.getAll(qname); + List extensionElements = elementMap.getAll(qname); if (extensionElements.isEmpty()) { return Collections.emptyList(); } List res = new ArrayList<>(extensionElements.size()); - for (ExtensionElement extensionElement : extensionElements) { + for (XmlElement extensionElement : extensionElements) { E e = castOrThrow(extensionElement, extensionElementClass); res.add(e); } return res; } - public static E castOrThrow(ExtensionElement extensionElement, Class extensionElementClass) { + public static E castOrThrow(XmlElement extensionElement, Class extensionElementClass) { if (!extensionElementClass.isInstance(extensionElement)) { final QName qname = getQNameFor(extensionElementClass); diff --git a/smack-core/src/test/java/org/jivesoftware/smack/packet/StreamErrorTest.java b/smack-core/src/test/java/org/jivesoftware/smack/packet/StreamErrorTest.java index 76682f07f..5e15f43c2 100644 --- a/smack-core/src/test/java/org/jivesoftware/smack/packet/StreamErrorTest.java +++ b/smack-core/src/test/java/org/jivesoftware/smack/packet/StreamErrorTest.java @@ -101,7 +101,7 @@ public class StreamErrorTest { assertNotNull(error); assertEquals(Condition.conflict, error.getCondition()); assertEquals("Replaced by new connection", error.getDescriptiveText()); - ExtensionElement appSpecificElement = error.getExtension("appSpecificElement", "myns"); + XmlElement appSpecificElement = error.getExtension("appSpecificElement", "myns"); assertNotNull(appSpecificElement); } diff --git a/smack-experimental/src/main/java/org/jivesoftware/smackx/carbons/packet/CarbonExtension.java b/smack-experimental/src/main/java/org/jivesoftware/smackx/carbons/packet/CarbonExtension.java index 028ec56b2..5b73304d2 100644 --- a/smack-experimental/src/main/java/org/jivesoftware/smackx/carbons/packet/CarbonExtension.java +++ b/smack-experimental/src/main/java/org/jivesoftware/smackx/carbons/packet/CarbonExtension.java @@ -1,6 +1,6 @@ /** * - * Copyright 2013-2014 Georg Lukas, 2020 Florian Schmaus + * Copyright 2013-2014 Georg Lukas, 2020-2021 Florian Schmaus * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,9 +16,12 @@ */ package org.jivesoftware.smackx.carbons.packet; +import javax.xml.namespace.QName; + import org.jivesoftware.smack.packet.ExtensionElement; import org.jivesoftware.smack.packet.Message; import org.jivesoftware.smack.packet.MessageBuilder; +import org.jivesoftware.smack.packet.XmlElement; import org.jivesoftware.smack.util.XmlStringBuilder; import org.jivesoftware.smackx.forward.packet.Forwarded; @@ -34,7 +37,7 @@ import org.jivesoftware.smackx.forward.packet.Forwarded; * * @author Georg Lukas */ -public class CarbonExtension implements ExtensionElement { +public class CarbonExtension implements XmlElement { public static final String NAMESPACE = Carbon.NAMESPACE; private final Direction dir; @@ -136,6 +139,7 @@ public class CarbonExtension implements ExtensionElement { public static final class Private implements ExtensionElement { public static final Private INSTANCE = new Private(); public static final String ELEMENT = "private"; + public static final QName QNAME = new QName(NAMESPACE, ELEMENT); private Private() { } diff --git a/smack-experimental/src/main/java/org/jivesoftware/smackx/chat_markers/filter/EligibleForChatMarkerFilter.java b/smack-experimental/src/main/java/org/jivesoftware/smackx/chat_markers/filter/EligibleForChatMarkerFilter.java index 56035fbd0..00205e214 100644 --- a/smack-experimental/src/main/java/org/jivesoftware/smackx/chat_markers/filter/EligibleForChatMarkerFilter.java +++ b/smack-experimental/src/main/java/org/jivesoftware/smackx/chat_markers/filter/EligibleForChatMarkerFilter.java @@ -17,8 +17,8 @@ package org.jivesoftware.smackx.chat_markers.filter; import org.jivesoftware.smack.filter.StanzaExtensionFilter; -import org.jivesoftware.smack.packet.ExtensionElement; import org.jivesoftware.smack.packet.Stanza; +import org.jivesoftware.smack.packet.XmlElement; import org.jivesoftware.smackx.chatstates.ChatState; import org.jivesoftware.smackx.chatstates.ChatStateManager; @@ -56,7 +56,7 @@ public final class EligibleForChatMarkerFilter extends StanzaExtensionFilter { } if (super.accept(message)) { - ExtensionElement extension = message.getExtension(ChatStateManager.NAMESPACE); + XmlElement extension = message.getExtension(ChatStateManager.NAMESPACE); String chatStateElementName = extension.getElementName(); ChatState state; diff --git a/smack-experimental/src/main/java/org/jivesoftware/smackx/csi/packet/ClientStateIndication.java b/smack-experimental/src/main/java/org/jivesoftware/smackx/csi/packet/ClientStateIndication.java index 139161ac0..2cdd5a8e9 100644 --- a/smack-experimental/src/main/java/org/jivesoftware/smackx/csi/packet/ClientStateIndication.java +++ b/smack-experimental/src/main/java/org/jivesoftware/smackx/csi/packet/ClientStateIndication.java @@ -1,6 +1,6 @@ /** * - * Copyright © 2014-2015 Florian Schmaus + * Copyright © 2014-2021 Florian Schmaus * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,6 +16,8 @@ */ package org.jivesoftware.smackx.csi.packet; +import javax.xml.namespace.QName; + import org.jivesoftware.smack.packet.ExtensionElement; import org.jivesoftware.smack.packet.Nonza; @@ -77,12 +79,19 @@ public class ClientStateIndication { public static final Feature INSTANCE = new Feature(); public static final String ELEMENT = "csi"; + public static final QName QNAME = new QName(NAMESPACE, ELEMENT); + private Feature() { } @Override public String getElementName() { - return ELEMENT; + return QNAME.getLocalPart(); + } + + @Override + public String getNamespace() { + return QNAME.getNamespaceURI(); } @Override @@ -90,9 +99,5 @@ public class ClientStateIndication { return '<' + ELEMENT + " xmlns='" + NAMESPACE + "'/>"; } - @Override - public String getNamespace() { - return NAMESPACE; - } } } diff --git a/smack-experimental/src/main/java/org/jivesoftware/smackx/fallback_indication/FallbackIndicationListener.java b/smack-experimental/src/main/java/org/jivesoftware/smackx/fallback_indication/FallbackIndicationListener.java index b7ef22525..3d90f97d8 100644 --- a/smack-experimental/src/main/java/org/jivesoftware/smackx/fallback_indication/FallbackIndicationListener.java +++ b/smack-experimental/src/main/java/org/jivesoftware/smackx/fallback_indication/FallbackIndicationListener.java @@ -17,6 +17,7 @@ package org.jivesoftware.smackx.fallback_indication; import org.jivesoftware.smack.packet.Message; + import org.jivesoftware.smackx.fallback_indication.element.FallbackIndicationElement; public interface FallbackIndicationListener { diff --git a/smack-experimental/src/main/java/org/jivesoftware/smackx/fallback_indication/FallbackIndicationManager.java b/smack-experimental/src/main/java/org/jivesoftware/smackx/fallback_indication/FallbackIndicationManager.java index e0859dd26..50d2363dc 100644 --- a/smack-experimental/src/main/java/org/jivesoftware/smackx/fallback_indication/FallbackIndicationManager.java +++ b/smack-experimental/src/main/java/org/jivesoftware/smackx/fallback_indication/FallbackIndicationManager.java @@ -35,6 +35,7 @@ import org.jivesoftware.smack.filter.StanzaTypeFilter; import org.jivesoftware.smack.packet.Message; import org.jivesoftware.smack.packet.MessageBuilder; import org.jivesoftware.smack.packet.Stanza; + import org.jivesoftware.smackx.disco.ServiceDiscoveryManager; import org.jivesoftware.smackx.fallback_indication.element.FallbackIndicationElement; diff --git a/smack-experimental/src/main/java/org/jivesoftware/smackx/fallback_indication/provider/FallbackIndicationElementProvider.java b/smack-experimental/src/main/java/org/jivesoftware/smackx/fallback_indication/provider/FallbackIndicationElementProvider.java index 66bc9fb9e..d4997b9e9 100644 --- a/smack-experimental/src/main/java/org/jivesoftware/smackx/fallback_indication/provider/FallbackIndicationElementProvider.java +++ b/smack-experimental/src/main/java/org/jivesoftware/smackx/fallback_indication/provider/FallbackIndicationElementProvider.java @@ -23,6 +23,7 @@ import org.jivesoftware.smack.parsing.SmackParsingException; import org.jivesoftware.smack.provider.ExtensionElementProvider; import org.jivesoftware.smack.xml.XmlPullParser; import org.jivesoftware.smack.xml.XmlPullParserException; + import org.jivesoftware.smackx.fallback_indication.element.FallbackIndicationElement; public class FallbackIndicationElementProvider extends ExtensionElementProvider { diff --git a/smack-experimental/src/main/java/org/jivesoftware/smackx/hoxt/packet/AbstractHttpOverXmpp.java b/smack-experimental/src/main/java/org/jivesoftware/smackx/hoxt/packet/AbstractHttpOverXmpp.java index 08d273678..f571b5058 100644 --- a/smack-experimental/src/main/java/org/jivesoftware/smackx/hoxt/packet/AbstractHttpOverXmpp.java +++ b/smack-experimental/src/main/java/org/jivesoftware/smackx/hoxt/packet/AbstractHttpOverXmpp.java @@ -16,6 +16,8 @@ */ package org.jivesoftware.smackx.hoxt.packet; +import javax.xml.namespace.QName; + import org.jivesoftware.smack.packet.ExtensionElement; import org.jivesoftware.smack.packet.IQ; import org.jivesoftware.smack.packet.NamedElement; @@ -161,6 +163,7 @@ public abstract class AbstractHttpOverXmpp extends IQ { public static class Data extends HoxExtensionElement { public static final String ELEMENT = "data"; + public static final QName QNAME = new QName(NAMESPACE, ELEMENT); private final NamedElement child; @@ -210,6 +213,7 @@ public abstract class AbstractHttpOverXmpp extends IQ { public static class Text extends HoxExtensionElement { public static final String ELEMENT = "text"; + public static final QName QNAME = new QName(NAMESPACE, ELEMENT); private final String text; @@ -252,6 +256,7 @@ public abstract class AbstractHttpOverXmpp extends IQ { public static class Base64 extends HoxExtensionElement { public static final String ELEMENT = "base64"; + public static final QName QNAME = new QName(NAMESPACE, ELEMENT); private final String text; @@ -294,6 +299,7 @@ public abstract class AbstractHttpOverXmpp extends IQ { public static class Xml extends HoxExtensionElement { public static final String ELEMENT = "xml"; + public static final QName QNAME = new QName(NAMESPACE, ELEMENT); private final String text; @@ -336,6 +342,7 @@ public abstract class AbstractHttpOverXmpp extends IQ { public static class ChunkedBase64 extends HoxExtensionElement { public static final String ELEMENT = "chunkedBase64"; + public static final QName QNAME = new QName(NAMESPACE, ELEMENT); private final String streamId; @@ -379,6 +386,7 @@ public abstract class AbstractHttpOverXmpp extends IQ { public static class Ibb extends HoxExtensionElement { public static final String ELEMENT = "ibb"; + public static final QName QNAME = new QName(NAMESPACE, ELEMENT); private final String sid; diff --git a/smack-experimental/src/main/java/org/jivesoftware/smackx/httpfileupload/HttpFileUploadManager.java b/smack-experimental/src/main/java/org/jivesoftware/smackx/httpfileupload/HttpFileUploadManager.java index 4e7f4a19e..4b7cfa079 100644 --- a/smack-experimental/src/main/java/org/jivesoftware/smackx/httpfileupload/HttpFileUploadManager.java +++ b/smack-experimental/src/main/java/org/jivesoftware/smackx/httpfileupload/HttpFileUploadManager.java @@ -45,8 +45,8 @@ import org.jivesoftware.smack.XMPPConnection; import org.jivesoftware.smack.XMPPConnectionRegistry; import org.jivesoftware.smack.XMPPException; import org.jivesoftware.smack.XMPPException.XMPPErrorException; - import org.jivesoftware.smack.proxy.ProxyInfo; + import org.jivesoftware.smackx.disco.ServiceDiscoveryManager; import org.jivesoftware.smackx.disco.packet.DiscoverInfo; import org.jivesoftware.smackx.httpfileupload.UploadService.Version; diff --git a/smack-experimental/src/main/java/org/jivesoftware/smackx/iot/control/element/SetData.java b/smack-experimental/src/main/java/org/jivesoftware/smackx/iot/control/element/SetData.java index 15d44f641..b68c322d1 100644 --- a/smack-experimental/src/main/java/org/jivesoftware/smackx/iot/control/element/SetData.java +++ b/smack-experimental/src/main/java/org/jivesoftware/smackx/iot/control/element/SetData.java @@ -1,6 +1,6 @@ /** * - * Copyright © 2016-2019 Florian Schmaus + * Copyright © 2016-2021 Florian Schmaus * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -18,10 +18,10 @@ package org.jivesoftware.smackx.iot.control.element; import java.util.Locale; -import org.jivesoftware.smack.packet.ExtensionElement; +import org.jivesoftware.smack.packet.XmlElement; import org.jivesoftware.smack.util.XmlStringBuilder; -public abstract class SetData implements ExtensionElement { +public abstract class SetData implements XmlElement { public enum Type { BOOL, diff --git a/smack-experimental/src/main/java/org/jivesoftware/smackx/iot/data/element/IoTDataExtensionElement.java b/smack-experimental/src/main/java/org/jivesoftware/smackx/iot/data/element/IoTDataExtensionElement.java index 62e0cf3c6..2d7d5cc74 100644 --- a/smack-experimental/src/main/java/org/jivesoftware/smackx/iot/data/element/IoTDataExtensionElement.java +++ b/smack-experimental/src/main/java/org/jivesoftware/smackx/iot/data/element/IoTDataExtensionElement.java @@ -1,6 +1,6 @@ /** * - * Copyright 2019 Florian Schmaus + * Copyright 2019-2021 Florian Schmaus * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,9 +16,9 @@ */ package org.jivesoftware.smackx.iot.data.element; -import org.jivesoftware.smack.packet.ExtensionElement; +import org.jivesoftware.smack.packet.XmlElement; -public abstract class IoTDataExtensionElement implements ExtensionElement { +public abstract class IoTDataExtensionElement implements XmlElement { @Override public final String getNamespace() { diff --git a/smack-experimental/src/main/java/org/jivesoftware/smackx/jingle_filetransfer/element/Checksum.java b/smack-experimental/src/main/java/org/jivesoftware/smackx/jingle_filetransfer/element/Checksum.java index f1455b7ca..361010672 100644 --- a/smack-experimental/src/main/java/org/jivesoftware/smackx/jingle_filetransfer/element/Checksum.java +++ b/smack-experimental/src/main/java/org/jivesoftware/smackx/jingle_filetransfer/element/Checksum.java @@ -16,6 +16,8 @@ */ package org.jivesoftware.smackx.jingle_filetransfer.element; +import javax.xml.namespace.QName; + import org.jivesoftware.smack.packet.ExtensionElement; import org.jivesoftware.smack.util.Objects; import org.jivesoftware.smack.util.XmlStringBuilder; @@ -27,6 +29,8 @@ import org.jivesoftware.smackx.jingle.element.JingleContent; */ public class Checksum implements ExtensionElement { public static final String ELEMENT = "checksum"; + public static final QName QNAME = new QName(JingleFileTransfer.NAMESPACE_V5, ELEMENT); + public static final String ATTR_CREATOR = "creator"; public static final String ATTR_NAME = "name"; @@ -43,7 +47,7 @@ public class Checksum implements ExtensionElement { @Override public String getElementName() { - return ELEMENT; + return QNAME.getLocalPart(); } @Override @@ -59,6 +63,6 @@ public class Checksum implements ExtensionElement { @Override public String getNamespace() { - return JingleFileTransfer.NAMESPACE_V5; + return QNAME.getNamespaceURI(); } } diff --git a/smack-experimental/src/main/java/org/jivesoftware/smackx/jingle_filetransfer/element/JingleFileTransfer.java b/smack-experimental/src/main/java/org/jivesoftware/smackx/jingle_filetransfer/element/JingleFileTransfer.java index 40dc1aaa2..4789b023c 100644 --- a/smack-experimental/src/main/java/org/jivesoftware/smackx/jingle_filetransfer/element/JingleFileTransfer.java +++ b/smack-experimental/src/main/java/org/jivesoftware/smackx/jingle_filetransfer/element/JingleFileTransfer.java @@ -18,14 +18,19 @@ package org.jivesoftware.smackx.jingle_filetransfer.element; import java.util.List; +import javax.xml.namespace.QName; + +import org.jivesoftware.smack.packet.ExtensionElement; + import org.jivesoftware.smackx.jingle.element.JingleContentDescription; import org.jivesoftware.smackx.jingle.element.JingleContentDescriptionChildElement; /** * File element. */ -public class JingleFileTransfer extends JingleContentDescription { +public class JingleFileTransfer extends JingleContentDescription implements ExtensionElement { public static final String NAMESPACE_V5 = "urn:xmpp:jingle:apps:file-transfer:5"; + public static final QName QNAME = new QName(NAMESPACE_V5, ELEMENT); public JingleFileTransfer(List payloads) { super(payloads); diff --git a/smack-experimental/src/main/java/org/jivesoftware/smackx/jingle_filetransfer/element/Range.java b/smack-experimental/src/main/java/org/jivesoftware/smackx/jingle_filetransfer/element/Range.java index 20bfc9f6a..093ca2ff6 100644 --- a/smack-experimental/src/main/java/org/jivesoftware/smackx/jingle_filetransfer/element/Range.java +++ b/smack-experimental/src/main/java/org/jivesoftware/smackx/jingle_filetransfer/element/Range.java @@ -16,7 +16,7 @@ */ package org.jivesoftware.smackx.jingle_filetransfer.element; -import org.jivesoftware.smack.packet.FullyQualifiedElement; +import org.jivesoftware.smack.packet.XmlElement; import org.jivesoftware.smack.util.XmlStringBuilder; import org.jivesoftware.smackx.hashes.element.HashElement; @@ -24,7 +24,7 @@ import org.jivesoftware.smackx.hashes.element.HashElement; /** * RangeElement which specifies, which range of a file shall be transferred. */ -public class Range implements FullyQualifiedElement { +public class Range implements XmlElement { public static final String ELEMENT = "range"; public static final String NAMESPACE = JingleFileTransferChild.NAMESPACE; diff --git a/smack-experimental/src/main/java/org/jivesoftware/smackx/mam/MamManager.java b/smack-experimental/src/main/java/org/jivesoftware/smackx/mam/MamManager.java index 2d87daba6..382f1af3f 100644 --- a/smack-experimental/src/main/java/org/jivesoftware/smackx/mam/MamManager.java +++ b/smack-experimental/src/main/java/org/jivesoftware/smackx/mam/MamManager.java @@ -49,6 +49,7 @@ import org.jivesoftware.smackx.commands.RemoteCommand; import org.jivesoftware.smackx.disco.ServiceDiscoveryManager; import org.jivesoftware.smackx.disco.packet.DiscoverItems; import org.jivesoftware.smackx.forward.packet.Forwarded; +import org.jivesoftware.smackx.mam.MamManager.MamQueryArgs; import org.jivesoftware.smackx.mam.element.MamElements; import org.jivesoftware.smackx.mam.element.MamElements.MamResultExtension; import org.jivesoftware.smackx.mam.element.MamFinIQ; diff --git a/smack-experimental/src/main/java/org/jivesoftware/smackx/message_fastening/MessageFasteningManager.java b/smack-experimental/src/main/java/org/jivesoftware/smackx/message_fastening/MessageFasteningManager.java index d66cd1bff..0ce90c8b8 100644 --- a/smack-experimental/src/main/java/org/jivesoftware/smackx/message_fastening/MessageFasteningManager.java +++ b/smack-experimental/src/main/java/org/jivesoftware/smackx/message_fastening/MessageFasteningManager.java @@ -24,6 +24,7 @@ import org.jivesoftware.smack.Manager; import org.jivesoftware.smack.XMPPConnection; import org.jivesoftware.smack.XMPPConnectionRegistry; import org.jivesoftware.smack.packet.MessageBuilder; + import org.jivesoftware.smackx.disco.ServiceDiscoveryManager; import org.jivesoftware.smackx.message_fastening.element.FasteningElement; diff --git a/smack-experimental/src/main/java/org/jivesoftware/smackx/message_fastening/element/FasteningElement.java b/smack-experimental/src/main/java/org/jivesoftware/smackx/message_fastening/element/FasteningElement.java index 5328bd0b2..54b039c21 100644 --- a/smack-experimental/src/main/java/org/jivesoftware/smackx/message_fastening/element/FasteningElement.java +++ b/smack-experimental/src/main/java/org/jivesoftware/smackx/message_fastening/element/FasteningElement.java @@ -24,9 +24,11 @@ import org.jivesoftware.smack.packet.ExtensionElement; import org.jivesoftware.smack.packet.Message; import org.jivesoftware.smack.packet.MessageBuilder; import org.jivesoftware.smack.packet.Stanza; +import org.jivesoftware.smack.packet.XmlElement; import org.jivesoftware.smack.packet.XmlEnvironment; import org.jivesoftware.smack.util.Objects; import org.jivesoftware.smack.util.XmlStringBuilder; + import org.jivesoftware.smackx.message_fastening.MessageFasteningManager; import org.jivesoftware.smackx.sid.element.OriginIdElement; @@ -43,12 +45,12 @@ public final class FasteningElement implements ExtensionElement { private final OriginIdElement referencedStanzasOriginId; private final List externalPayloads = new ArrayList<>(); - private final List wrappedPayloads = new ArrayList<>(); + private final List wrappedPayloads = new ArrayList<>(); private final boolean clear; private final boolean shell; private FasteningElement(OriginIdElement originId, - List wrappedPayloads, + List wrappedPayloads, List externalPayloads, boolean clear, boolean shell) { @@ -76,7 +78,7 @@ public final class FasteningElement implements ExtensionElement { * * @return wrapped payloads. */ - public List getWrappedPayloads() { + public List getWrappedPayloads() { return Collections.unmodifiableList(wrappedPayloads); } @@ -162,7 +164,7 @@ public final class FasteningElement implements ExtensionElement { for (ExternalElement external : externalPayloads) { xml.append(external); } - for (ExtensionElement wrapped : wrappedPayloads) { + for (XmlElement wrapped : wrappedPayloads) { xml.append(wrapped); } } @@ -204,7 +206,7 @@ public final class FasteningElement implements ExtensionElement { public static class Builder { private OriginIdElement originId; - private final List wrappedPayloads = new ArrayList<>(); + private final List wrappedPayloads = new ArrayList<>(); private final List externalPayloads = new ArrayList<>(); private boolean isClear = false; private boolean isShell = false; @@ -236,7 +238,7 @@ public final class FasteningElement implements ExtensionElement { * @param wrappedPayload wrapped payload * @return builder instance */ - public Builder addWrappedPayload(ExtensionElement wrappedPayload) { + public Builder addWrappedPayload(XmlElement wrappedPayload) { return addWrappedPayloads(Collections.singletonList(wrappedPayload)); } @@ -246,7 +248,7 @@ public final class FasteningElement implements ExtensionElement { * @param wrappedPayloads list of wrapped payloads * @return builder instance */ - public Builder addWrappedPayloads(List wrappedPayloads) { + public Builder addWrappedPayloads(List wrappedPayloads) { this.wrappedPayloads.addAll(wrappedPayloads); return this; } diff --git a/smack-experimental/src/main/java/org/jivesoftware/smackx/message_fastening/provider/FasteningElementProvider.java b/smack-experimental/src/main/java/org/jivesoftware/smackx/message_fastening/provider/FasteningElementProvider.java index 7005bda99..a610c9fc6 100644 --- a/smack-experimental/src/main/java/org/jivesoftware/smackx/message_fastening/provider/FasteningElementProvider.java +++ b/smack-experimental/src/main/java/org/jivesoftware/smackx/message_fastening/provider/FasteningElementProvider.java @@ -18,7 +18,7 @@ package org.jivesoftware.smackx.message_fastening.provider; import java.io.IOException; -import org.jivesoftware.smack.packet.ExtensionElement; +import org.jivesoftware.smack.packet.XmlElement; import org.jivesoftware.smack.packet.XmlEnvironment; import org.jivesoftware.smack.parsing.SmackParsingException; import org.jivesoftware.smack.provider.ExtensionElementProvider; @@ -26,6 +26,7 @@ import org.jivesoftware.smack.util.PacketParserUtils; import org.jivesoftware.smack.util.ParserUtils; import org.jivesoftware.smack.xml.XmlPullParser; import org.jivesoftware.smack.xml.XmlPullParserException; + import org.jivesoftware.smackx.message_fastening.MessageFasteningManager; import org.jivesoftware.smackx.message_fastening.element.ExternalElement; import org.jivesoftware.smackx.message_fastening.element.FasteningElement; @@ -62,7 +63,7 @@ public class FasteningElementProvider extends ExtensionElementProvider entries; @@ -52,7 +54,7 @@ public class ListElement extends MarkupElement.NonEmptyChildElement { @Override public String getElementName() { - return ELEMENT; + return QNAME.getLocalPart(); } @Override @@ -62,6 +64,10 @@ public class ListElement extends MarkupElement.NonEmptyChildElement { public static class ListEntryElement implements ExtensionElement { + public static final String ELEMENT = "li"; + + public static final QName QNAME = new QName(NAMESPACE, ELEMENT); + private final int start; /** @@ -83,12 +89,12 @@ public class ListElement extends MarkupElement.NonEmptyChildElement { @Override public String getElementName() { - return ELEM_LI; + return QNAME.getLocalPart(); } @Override public String getNamespace() { - return MarkupElement.NAMESPACE; + return QNAME.getNamespaceURI(); } @Override diff --git a/smack-experimental/src/main/java/org/jivesoftware/smackx/message_markup/element/MarkupElement.java b/smack-experimental/src/main/java/org/jivesoftware/smackx/message_markup/element/MarkupElement.java index 0c368e0cf..d64c31172 100644 --- a/smack-experimental/src/main/java/org/jivesoftware/smackx/message_markup/element/MarkupElement.java +++ b/smack-experimental/src/main/java/org/jivesoftware/smackx/message_markup/element/MarkupElement.java @@ -271,6 +271,8 @@ public class MarkupElement implements ExtensionElement { */ public abstract static class MarkupChildElement implements ExtensionElement { + public static final String NAMESPACE = MarkupElement.NAMESPACE; + public static final String ATTR_START = "start"; public static final String ATTR_END = "end"; diff --git a/smack-experimental/src/main/java/org/jivesoftware/smackx/message_markup/element/SpanElement.java b/smack-experimental/src/main/java/org/jivesoftware/smackx/message_markup/element/SpanElement.java index 5a5fa1338..b33559921 100644 --- a/smack-experimental/src/main/java/org/jivesoftware/smackx/message_markup/element/SpanElement.java +++ b/smack-experimental/src/main/java/org/jivesoftware/smackx/message_markup/element/SpanElement.java @@ -19,11 +19,14 @@ package org.jivesoftware.smackx.message_markup.element; import java.util.Collections; import java.util.Set; +import javax.xml.namespace.QName; + import org.jivesoftware.smack.util.XmlStringBuilder; public class SpanElement extends MarkupElement.NonEmptyChildElement { public static final String ELEMENT = "span"; + public static final QName QNAME = new QName(NAMESPACE, ELEMENT); private final Set styles; @@ -60,7 +63,7 @@ public class SpanElement extends MarkupElement.NonEmptyChildElement { @Override public String getElementName() { - return ELEMENT; + return QNAME.getLocalPart(); } @Override diff --git a/smack-experimental/src/main/java/org/jivesoftware/smackx/message_markup/provider/MarkupElementProvider.java b/smack-experimental/src/main/java/org/jivesoftware/smackx/message_markup/provider/MarkupElementProvider.java index 58210c59a..243e1d09c 100644 --- a/smack-experimental/src/main/java/org/jivesoftware/smackx/message_markup/provider/MarkupElementProvider.java +++ b/smack-experimental/src/main/java/org/jivesoftware/smackx/message_markup/provider/MarkupElementProvider.java @@ -99,7 +99,7 @@ public class MarkupElementProvider extends ExtensionElementProvider { diff --git a/smack-experimental/src/main/java/org/jivesoftware/smackx/message_retraction/provider/RetractedElementProvider.java b/smack-experimental/src/main/java/org/jivesoftware/smackx/message_retraction/provider/RetractedElementProvider.java index f45307566..bd9f5f851 100644 --- a/smack-experimental/src/main/java/org/jivesoftware/smackx/message_retraction/provider/RetractedElementProvider.java +++ b/smack-experimental/src/main/java/org/jivesoftware/smackx/message_retraction/provider/RetractedElementProvider.java @@ -26,6 +26,7 @@ import org.jivesoftware.smack.provider.ExtensionElementProvider; import org.jivesoftware.smack.util.ParserUtils; import org.jivesoftware.smack.xml.XmlPullParser; import org.jivesoftware.smack.xml.XmlPullParserException; + import org.jivesoftware.smackx.message_retraction.element.RetractedElement; import org.jivesoftware.smackx.sid.StableUniqueStanzaIdManager; import org.jivesoftware.smackx.sid.element.OriginIdElement; diff --git a/smack-experimental/src/main/java/org/jivesoftware/smackx/reference/element/ReferenceElement.java b/smack-experimental/src/main/java/org/jivesoftware/smackx/reference/element/ReferenceElement.java index cf0f5492b..3062e53bf 100644 --- a/smack-experimental/src/main/java/org/jivesoftware/smackx/reference/element/ReferenceElement.java +++ b/smack-experimental/src/main/java/org/jivesoftware/smackx/reference/element/ReferenceElement.java @@ -21,8 +21,11 @@ import java.net.URISyntaxException; import java.util.ArrayList; import java.util.List; +import javax.xml.namespace.QName; + import org.jivesoftware.smack.packet.ExtensionElement; import org.jivesoftware.smack.packet.Stanza; +import org.jivesoftware.smack.packet.XmlElement; import org.jivesoftware.smack.util.Objects; import org.jivesoftware.smack.util.XmlStringBuilder; @@ -33,6 +36,9 @@ import org.jxmpp.jid.BareJid; public class ReferenceElement implements ExtensionElement { public static final String ELEMENT = "reference"; + public static final String NAMESPACE = ReferenceManager.NAMESPACE; + public static final QName QNAME = new QName(NAMESPACE, ELEMENT); + public static final String ATTR_BEGIN = "begin"; public static final String ATTR_END = "end"; public static final String ATTR_TYPE = "type"; @@ -51,7 +57,7 @@ public class ReferenceElement implements ExtensionElement { private final URI uri; // Non-XEP-compliant, but needed for SIMS - private final ExtensionElement child; + private final XmlElement child; /** * XEP-incompliant (v0.2) constructor. This is needed for SIMS. @@ -63,7 +69,7 @@ public class ReferenceElement implements ExtensionElement { * @param uri TODO javadoc me please * @param child TODO javadoc me please */ - public ReferenceElement(Integer begin, Integer end, Type type, String anchor, URI uri, ExtensionElement child) { + public ReferenceElement(Integer begin, Integer end, Type type, String anchor, URI uri, XmlElement child) { if (begin != null && begin < 0) { throw new IllegalArgumentException("Attribute 'begin' MUST NOT be smaller than 0."); } @@ -147,9 +153,9 @@ public class ReferenceElement implements ExtensionElement { */ public static List getReferencesFromStanza(Stanza stanza) { List references = new ArrayList<>(); - List extensions = stanza.getExtensions(ReferenceElement.ELEMENT, ReferenceManager.NAMESPACE); - for (ExtensionElement e : extensions) { - references.add((ReferenceElement) e); + List extensions = stanza.getExtensions(ReferenceElement.class); + for (ReferenceElement e : extensions) { + references.add(e); } return references; } @@ -166,12 +172,12 @@ public class ReferenceElement implements ExtensionElement { @Override public String getNamespace() { - return ReferenceManager.NAMESPACE; + return QNAME.getNamespaceURI(); } @Override public String getElementName() { - return ELEMENT; + return QNAME.getLocalPart(); } @Override diff --git a/smack-experimental/src/main/java/org/jivesoftware/smackx/reference/provider/ReferenceProvider.java b/smack-experimental/src/main/java/org/jivesoftware/smackx/reference/provider/ReferenceProvider.java index 349d2c054..b49a2d58f 100644 --- a/smack-experimental/src/main/java/org/jivesoftware/smackx/reference/provider/ReferenceProvider.java +++ b/smack-experimental/src/main/java/org/jivesoftware/smackx/reference/provider/ReferenceProvider.java @@ -20,7 +20,7 @@ import java.io.IOException; import java.net.URI; import java.net.URISyntaxException; -import org.jivesoftware.smack.packet.ExtensionElement; +import org.jivesoftware.smack.packet.XmlElement; import org.jivesoftware.smack.packet.XmlEnvironment; import org.jivesoftware.smack.parsing.SmackParsingException; import org.jivesoftware.smack.provider.ExtensionElementProvider; @@ -51,7 +51,7 @@ public class ReferenceProvider extends ExtensionElementProvider spoilers = message.getExtensions(SpoilerElement.ELEMENT, NAMESPACE); + List spoilers = message.getExtensions(SpoilerElement.class); Map map = new HashMap<>(); - for (ExtensionElement e : spoilers) { - SpoilerElement s = (SpoilerElement) e; + for (SpoilerElement s : spoilers) { if (s.getLanguage() == null || s.getLanguage().equals("")) { map.put("", s.getHint()); } else { diff --git a/smack-experimental/src/main/java/org/jivesoftware/smackx/stanza_content_encryption/element/ContentElement.java b/smack-experimental/src/main/java/org/jivesoftware/smackx/stanza_content_encryption/element/ContentElement.java index 1ec2e98c1..6332fe4be 100644 --- a/smack-experimental/src/main/java/org/jivesoftware/smackx/stanza_content_encryption/element/ContentElement.java +++ b/smack-experimental/src/main/java/org/jivesoftware/smackx/stanza_content_encryption/element/ContentElement.java @@ -23,12 +23,15 @@ import java.util.Date; import java.util.HashSet; import java.util.List; import java.util.Set; + import javax.xml.namespace.QName; import org.jivesoftware.smack.packet.ExtensionElement; +import org.jivesoftware.smack.packet.XmlElement; import org.jivesoftware.smack.packet.XmlEnvironment; import org.jivesoftware.smack.util.Objects; import org.jivesoftware.smack.util.XmlStringBuilder; + import org.jivesoftware.smackx.address.packet.MultipleAddresses; import org.jivesoftware.smackx.hints.element.MessageProcessingHint; import org.jivesoftware.smackx.sid.element.StanzaIdElement; @@ -120,7 +123,7 @@ public class ContentElement implements ExtensionElement { private RandomPaddingAffixElement rpad = null; private final List otherAffixElements = new ArrayList<>(); - private final List payloadItems = new ArrayList<>(); + private final List payloadItems = new ArrayList<>(); private Builder() { @@ -246,7 +249,7 @@ public class ContentElement implements ExtensionElement { * @return builder * @throws IllegalArgumentException in case an extension element from the blacklist is added. */ - public Builder addPayloadItem(ExtensionElement payloadItem) { + public Builder addPayloadItem(XmlElement payloadItem) { Objects.requireNonNull(payloadItem, "Payload item MUST NOT be null."); this.payloadItems.add(checkForIllegalPayloadsAndPossiblyThrow(payloadItem)); return this; @@ -263,7 +266,7 @@ public class ContentElement implements ExtensionElement { return new ContentElement(payloadElement, allAffixElements); } - private static ExtensionElement checkForIllegalPayloadsAndPossiblyThrow(ExtensionElement payloadItem) { + private static XmlElement checkForIllegalPayloadsAndPossiblyThrow(XmlElement payloadItem) { QName qName = payloadItem.getQName(); if (BLACKLISTED_QNAMES.contains(qName)) { throw new IllegalArgumentException("Element identified by " + qName + diff --git a/smack-experimental/src/main/java/org/jivesoftware/smackx/stanza_content_encryption/element/PayloadElement.java b/smack-experimental/src/main/java/org/jivesoftware/smackx/stanza_content_encryption/element/PayloadElement.java index c3a3431ec..1bf9fd2a6 100644 --- a/smack-experimental/src/main/java/org/jivesoftware/smackx/stanza_content_encryption/element/PayloadElement.java +++ b/smack-experimental/src/main/java/org/jivesoftware/smackx/stanza_content_encryption/element/PayloadElement.java @@ -19,8 +19,8 @@ package org.jivesoftware.smackx.stanza_content_encryption.element; import java.util.Collections; import java.util.List; -import org.jivesoftware.smack.packet.ExtensionElement; import org.jivesoftware.smack.packet.NamedElement; +import org.jivesoftware.smack.packet.XmlElement; import org.jivesoftware.smack.packet.XmlEnvironment; import org.jivesoftware.smack.util.XmlStringBuilder; @@ -28,13 +28,13 @@ public class PayloadElement implements NamedElement { public static final String ELEMENT = "payload"; - private final List payloadElements; + private final List payloadElements; - public PayloadElement(List payloadElements) { + public PayloadElement(List payloadElements) { this.payloadElements = Collections.unmodifiableList(payloadElements); } - public List getItems() { + public List getItems() { return payloadElements; } diff --git a/smack-experimental/src/main/java/org/jivesoftware/smackx/stanza_content_encryption/provider/AffixExtensionElementProvider.java b/smack-experimental/src/main/java/org/jivesoftware/smackx/stanza_content_encryption/provider/AffixExtensionElementProvider.java index be4ffe19d..8c82c6108 100644 --- a/smack-experimental/src/main/java/org/jivesoftware/smackx/stanza_content_encryption/provider/AffixExtensionElementProvider.java +++ b/smack-experimental/src/main/java/org/jivesoftware/smackx/stanza_content_encryption/provider/AffixExtensionElementProvider.java @@ -17,6 +17,7 @@ package org.jivesoftware.smackx.stanza_content_encryption.provider; import org.jivesoftware.smack.provider.ExtensionElementProvider; + import org.jivesoftware.smackx.stanza_content_encryption.element.AffixExtensionElement; /** diff --git a/smack-experimental/src/main/java/org/jivesoftware/smackx/stanza_content_encryption/provider/ContentElementProvider.java b/smack-experimental/src/main/java/org/jivesoftware/smackx/stanza_content_encryption/provider/ContentElementProvider.java index a01062531..9037ff577 100644 --- a/smack-experimental/src/main/java/org/jivesoftware/smackx/stanza_content_encryption/provider/ContentElementProvider.java +++ b/smack-experimental/src/main/java/org/jivesoftware/smackx/stanza_content_encryption/provider/ContentElementProvider.java @@ -20,7 +20,7 @@ import java.io.IOException; import java.text.ParseException; import java.util.Date; -import org.jivesoftware.smack.packet.ExtensionElement; +import org.jivesoftware.smack.packet.XmlElement; import org.jivesoftware.smack.packet.XmlEnvironment; import org.jivesoftware.smack.parsing.SmackParsingException; import org.jivesoftware.smack.provider.ExtensionElementProvider; @@ -28,6 +28,7 @@ import org.jivesoftware.smack.util.PacketParserUtils; import org.jivesoftware.smack.util.ParserUtils; import org.jivesoftware.smack.xml.XmlPullParser; import org.jivesoftware.smack.xml.XmlPullParserException; + import org.jivesoftware.smackx.stanza_content_encryption.element.AffixElement; import org.jivesoftware.smackx.stanza_content_encryption.element.ContentElement; import org.jivesoftware.smackx.stanza_content_encryption.element.FromAffixElement; @@ -102,7 +103,7 @@ public class ContentElementProvider extends ExtensionElementProvider extensions = message.getExtensions(); + List extensions = message.getExtensions(); assertEquals(0, extensions.size()); MessageBuilder messageBuilder = StanzaBuilder.buildMessage(); diff --git a/smack-experimental/src/test/java/org/jivesoftware/smackx/message_fastening/MessageFasteningElementsTest.java b/smack-experimental/src/test/java/org/jivesoftware/smackx/message_fastening/MessageFasteningElementsTest.java index 8230f974a..5222587db 100644 --- a/smack-experimental/src/test/java/org/jivesoftware/smackx/message_fastening/MessageFasteningElementsTest.java +++ b/smack-experimental/src/test/java/org/jivesoftware/smackx/message_fastening/MessageFasteningElementsTest.java @@ -36,6 +36,7 @@ import org.jivesoftware.smack.parsing.SmackParsingException; import org.jivesoftware.smack.test.util.SmackTestUtil; import org.jivesoftware.smack.test.util.TestUtils; import org.jivesoftware.smack.xml.XmlPullParserException; + import org.jivesoftware.smackx.message_fastening.element.ExternalElement; import org.jivesoftware.smackx.message_fastening.element.FasteningElement; import org.jivesoftware.smackx.message_fastening.provider.FasteningElementProvider; diff --git a/smack-experimental/src/test/java/org/jivesoftware/smackx/message_retraction/element/RetractElementTest.java b/smack-experimental/src/test/java/org/jivesoftware/smackx/message_retraction/element/RetractElementTest.java index 1278caed4..de627bdbe 100644 --- a/smack-experimental/src/test/java/org/jivesoftware/smackx/message_retraction/element/RetractElementTest.java +++ b/smack-experimental/src/test/java/org/jivesoftware/smackx/message_retraction/element/RetractElementTest.java @@ -24,6 +24,7 @@ import java.io.IOException; import org.jivesoftware.smack.parsing.SmackParsingException; import org.jivesoftware.smack.test.util.SmackTestUtil; import org.jivesoftware.smack.xml.XmlPullParserException; + import org.jivesoftware.smackx.message_retraction.provider.RetractElementProvider; import org.junit.jupiter.api.Test; diff --git a/smack-experimental/src/test/java/org/jivesoftware/smackx/message_retraction/element/RetractedElementTest.java b/smack-experimental/src/test/java/org/jivesoftware/smackx/message_retraction/element/RetractedElementTest.java index ba5acea49..df0ef6393 100644 --- a/smack-experimental/src/test/java/org/jivesoftware/smackx/message_retraction/element/RetractedElementTest.java +++ b/smack-experimental/src/test/java/org/jivesoftware/smackx/message_retraction/element/RetractedElementTest.java @@ -26,6 +26,7 @@ import java.util.Date; import org.jivesoftware.smack.parsing.SmackParsingException; import org.jivesoftware.smack.test.util.SmackTestUtil; import org.jivesoftware.smack.xml.XmlPullParserException; + import org.jivesoftware.smackx.message_retraction.provider.RetractedElementProvider; import org.jivesoftware.smackx.sid.element.OriginIdElement; diff --git a/smack-experimental/src/test/java/org/jivesoftware/smackx/stanza_content_encryption/element/ContentElementTest.java b/smack-experimental/src/test/java/org/jivesoftware/smackx/stanza_content_encryption/element/ContentElementTest.java index 2ad676a96..48521ff5e 100644 --- a/smack-experimental/src/test/java/org/jivesoftware/smackx/stanza_content_encryption/element/ContentElementTest.java +++ b/smack-experimental/src/test/java/org/jivesoftware/smackx/stanza_content_encryption/element/ContentElementTest.java @@ -25,6 +25,7 @@ import java.text.ParseException; import java.util.Collections; import org.jivesoftware.smack.packet.Message; + import org.jivesoftware.smackx.hints.element.StoreHint; import org.jivesoftware.smackx.sid.element.StanzaIdElement; diff --git a/smack-experimental/src/test/java/org/jivesoftware/smackx/stanza_content_encryption/provider/ContentElementProviderTest.java b/smack-experimental/src/test/java/org/jivesoftware/smackx/stanza_content_encryption/provider/ContentElementProviderTest.java index 2720334bf..9b098f7a1 100644 --- a/smack-experimental/src/test/java/org/jivesoftware/smackx/stanza_content_encryption/provider/ContentElementProviderTest.java +++ b/smack-experimental/src/test/java/org/jivesoftware/smackx/stanza_content_encryption/provider/ContentElementProviderTest.java @@ -29,6 +29,7 @@ import org.jivesoftware.smack.parsing.SmackParsingException; import org.jivesoftware.smack.test.util.TestUtils; import org.jivesoftware.smack.util.ParserUtils; import org.jivesoftware.smack.xml.XmlPullParserException; + import org.jivesoftware.smackx.stanza_content_encryption.element.ContentElement; import org.jivesoftware.smackx.stanza_content_encryption.element.FromAffixElement; import org.jivesoftware.smackx.stanza_content_encryption.element.RandomPaddingAffixElement; diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/address/packet/MultipleAddresses.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/address/packet/MultipleAddresses.java index d4a81fea3..fba5979ce 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/address/packet/MultipleAddresses.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/address/packet/MultipleAddresses.java @@ -134,6 +134,7 @@ public class MultipleAddresses implements ExtensionElement { public static final class Address implements ExtensionElement { public static final String ELEMENT = "address"; + public static final QName QNAME = new QName(NAMESPACE, ELEMENT); private final Type type; private Jid jid; @@ -192,12 +193,12 @@ public class MultipleAddresses implements ExtensionElement { @Override public String getElementName() { - return ELEMENT; + return QNAME.getLocalPart(); } @Override public String getNamespace() { - return NAMESPACE; + return QNAME.getNamespaceURI(); } @Override diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/attention/packet/AttentionExtension.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/attention/packet/AttentionExtension.java index c107fe5c3..7f041f89a 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/attention/packet/AttentionExtension.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/attention/packet/AttentionExtension.java @@ -16,6 +16,8 @@ */ package org.jivesoftware.smackx.attention.packet; +import javax.xml.namespace.QName; + import org.jivesoftware.smack.packet.ExtensionElement; import org.jivesoftware.smack.packet.XmlEnvironment; import org.jivesoftware.smack.provider.ExtensionElementProvider; @@ -44,6 +46,8 @@ public class AttentionExtension implements ExtensionElement { */ public static final String NAMESPACE = "urn:xmpp:attention:0"; + public static final QName QNAME = new QName(NAMESPACE, ELEMENT_NAME); + /* * (non-Javadoc) * @@ -51,7 +55,7 @@ public class AttentionExtension implements ExtensionElement { */ @Override public String getElementName() { - return ELEMENT_NAME; + return QNAME.getLocalPart(); } /* @@ -61,7 +65,7 @@ public class AttentionExtension implements ExtensionElement { */ @Override public String getNamespace() { - return NAMESPACE; + return QNAME.getNamespaceURI(); } /* diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/bob/element/BoBDataExtension.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/bob/element/BoBDataExtension.java index 1bea87b82..723df4908 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/bob/element/BoBDataExtension.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/bob/element/BoBDataExtension.java @@ -20,6 +20,7 @@ import org.jivesoftware.smack.packet.ExtensionElement; import org.jivesoftware.smack.packet.StanzaView; import org.jivesoftware.smack.util.Objects; import org.jivesoftware.smack.util.XmlStringBuilder; + import org.jivesoftware.smackx.bob.BoBData; import org.jivesoftware.smackx.bob.BoBManager; import org.jivesoftware.smackx.bob.ContentId; diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/bob/provider/BoBDataExtensionProvider.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/bob/provider/BoBDataExtensionProvider.java index a633c8b07..a8e624334 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/bob/provider/BoBDataExtensionProvider.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/bob/provider/BoBDataExtensionProvider.java @@ -23,6 +23,7 @@ import org.jivesoftware.smack.provider.ExtensionElementProvider; import org.jivesoftware.smack.util.Pair; import org.jivesoftware.smack.xml.XmlPullParser; import org.jivesoftware.smack.xml.XmlPullParserException; + import org.jivesoftware.smackx.bob.BoBData; import org.jivesoftware.smackx.bob.ContentId; import org.jivesoftware.smackx.bob.element.BoBDataExtension; diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/bob/provider/BoBProviderUtil.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/bob/provider/BoBProviderUtil.java index 81c166b45..4c36c9dea 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/bob/provider/BoBProviderUtil.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/bob/provider/BoBProviderUtil.java @@ -23,6 +23,7 @@ import org.jivesoftware.smack.util.Pair; import org.jivesoftware.smack.util.ParserUtils; import org.jivesoftware.smack.xml.XmlPullParser; import org.jivesoftware.smack.xml.XmlPullParserException; + import org.jivesoftware.smackx.bob.BoBData; import org.jivesoftware.smackx.bob.ContentId; diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/bytestreams/socks5/packet/Bytestream.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/bytestreams/socks5/packet/Bytestream.java index 64b3ad7d9..f050db26e 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/bytestreams/socks5/packet/Bytestream.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/bytestreams/socks5/packet/Bytestream.java @@ -21,6 +21,8 @@ import java.util.ArrayList; import java.util.Collections; import java.util.List; +import javax.xml.namespace.QName; + import org.jivesoftware.smack.packet.ExtensionElement; import org.jivesoftware.smack.packet.IQ; import org.jivesoftware.smack.util.InternetAddress; @@ -275,7 +277,8 @@ public class Bytestream extends IQ { */ public static class StreamHost extends BytestreamExtensionElement { - public static String ELEMENTNAME = "streamhost"; + public static final String ELEMENT = "streamhost"; + public static final QName QNAME = new QName(NAMESPACE, ELEMENT); private final Jid jid; @@ -344,7 +347,7 @@ public class Bytestream extends IQ { @Override public String getElementName() { - return ELEMENTNAME; + return QNAME.getLocalPart(); } @Override @@ -375,7 +378,8 @@ public class Bytestream extends IQ { */ public static class StreamHostUsed extends BytestreamExtensionElement { - public static String ELEMENTNAME = "streamhost-used"; + public static final String ELEMENT = "streamhost-used"; + public static final QName QNAME = new QName(NAMESPACE, ELEMENT); private final Jid jid; @@ -399,7 +403,7 @@ public class Bytestream extends IQ { @Override public String getElementName() { - return ELEMENTNAME; + return QNAME.getLocalPart(); } @Override @@ -418,7 +422,8 @@ public class Bytestream extends IQ { */ public static class Activate extends BytestreamExtensionElement { - public static String ELEMENTNAME = "activate"; + public static final String ELEMENT = "activate"; + public static final QName QNAME = new QName(NAMESPACE, ELEMENT); private final Jid target; @@ -442,7 +447,7 @@ public class Bytestream extends IQ { @Override public String getElementName() { - return ELEMENTNAME; + return QNAME.getLocalPart(); } @Override diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/bytestreams/socks5/provider/BytestreamsProvider.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/bytestreams/socks5/provider/BytestreamsProvider.java index 92aba36c0..d376fab97 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/bytestreams/socks5/provider/BytestreamsProvider.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/bytestreams/socks5/provider/BytestreamsProvider.java @@ -57,15 +57,15 @@ public class BytestreamsProvider extends IQProvider { eventType = parser.next(); elementName = parser.getName(); if (eventType == XmlPullParser.Event.START_ELEMENT) { - if (elementName.equals(Bytestream.StreamHost.ELEMENTNAME)) { + if (elementName.equals(Bytestream.StreamHost.ELEMENT)) { JID = ParserUtils.getJidAttribute(parser); host = parser.getAttributeValue("", "host"); port = parser.getAttributeValue("", "port"); } - else if (elementName.equals(Bytestream.StreamHostUsed.ELEMENTNAME)) { + else if (elementName.equals(Bytestream.StreamHostUsed.ELEMENT)) { toReturn.setUsedHost(ParserUtils.getJidAttribute(parser)); } - else if (elementName.equals(Bytestream.Activate.ELEMENTNAME)) { + else if (elementName.equals(Bytestream.Activate.ELEMENT)) { toReturn.setToActivate(ParserUtils.getJidAttribute(parser)); } } diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/chatstates/ChatStateManager.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/chatstates/ChatStateManager.java index 8e5060172..b010c2329 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/chatstates/ChatStateManager.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/chatstates/ChatStateManager.java @@ -39,11 +39,11 @@ import org.jivesoftware.smack.filter.FromTypeFilter; import org.jivesoftware.smack.filter.MessageTypeFilter; import org.jivesoftware.smack.filter.StanzaExtensionFilter; import org.jivesoftware.smack.filter.StanzaFilter; -import org.jivesoftware.smack.packet.ExtensionElement; import org.jivesoftware.smack.packet.Message; import org.jivesoftware.smack.packet.MessageBuilder; import org.jivesoftware.smack.packet.Stanza; import org.jivesoftware.smack.packet.StanzaBuilder; +import org.jivesoftware.smack.packet.XmlElement; import org.jivesoftware.smackx.chatstates.packet.ChatStateExtension; import org.jivesoftware.smackx.disco.ServiceDiscoveryManager; @@ -142,7 +142,7 @@ public final class ChatStateManager extends Manager { EntityBareJid bareFrom = fullFrom.asEntityBareJid(); final Chat chat = ChatManager.getInstanceFor(connection()).chatWith(bareFrom); - ExtensionElement extension = message.getExtension(NAMESPACE); + XmlElement extension = message.getExtension(NAMESPACE); String chatStateElementName = extension.getElementName(); ChatState state; diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/chatstates/packet/ChatStateExtension.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/chatstates/packet/ChatStateExtension.java index eb7e5ff1d..32ce80dcd 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/chatstates/packet/ChatStateExtension.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/chatstates/packet/ChatStateExtension.java @@ -17,7 +17,7 @@ package org.jivesoftware.smackx.chatstates.packet; -import org.jivesoftware.smack.packet.ExtensionElement; +import org.jivesoftware.smack.packet.XmlElement; import org.jivesoftware.smack.util.XmlStringBuilder; import org.jivesoftware.smackx.chatstates.ChatState; @@ -29,7 +29,7 @@ import org.jivesoftware.smackx.chatstates.ChatState; * @author Alexander Wenckus * @see org.jivesoftware.smackx.chatstates.ChatState */ -public class ChatStateExtension implements ExtensionElement { +public class ChatStateExtension implements XmlElement { public static final String NAMESPACE = "http://jabber.org/protocol/chatstates"; diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/commands/packet/AdHocCommandData.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/commands/packet/AdHocCommandData.java index f9341aa5b..f5681b0fc 100755 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/commands/packet/AdHocCommandData.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/commands/packet/AdHocCommandData.java @@ -20,8 +20,8 @@ package org.jivesoftware.smackx.commands.packet; import java.util.ArrayList; import java.util.List; -import org.jivesoftware.smack.packet.ExtensionElement; import org.jivesoftware.smack.packet.IQ; +import org.jivesoftware.smack.packet.XmlElement; import org.jivesoftware.smackx.commands.AdHocCommand; import org.jivesoftware.smackx.commands.AdHocCommand.Action; @@ -240,7 +240,7 @@ public class AdHocCommandData extends IQ { return sessionID; } - public static class SpecificError implements ExtensionElement { + public static class SpecificError implements XmlElement { public static final String namespace = "http://jabber.org/protocol/commands"; diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/formtypes/FormFieldRegistry.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/formtypes/FormFieldRegistry.java index 9eab79b73..356cf52fb 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/formtypes/FormFieldRegistry.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/formtypes/FormFieldRegistry.java @@ -24,6 +24,7 @@ import java.util.logging.Logger; import org.jivesoftware.smack.util.Objects; import org.jivesoftware.smack.util.StringUtils; import org.jivesoftware.smack.util.XmlUtil; + import org.jivesoftware.smackx.xdata.FormField; import org.jivesoftware.smackx.xdata.TextSingleFormField; import org.jivesoftware.smackx.xdata.packet.DataForm; diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/iqregister/provider/RegistrationProvider.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/iqregister/provider/RegistrationProvider.java index 33bbed247..b57a349f1 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/iqregister/provider/RegistrationProvider.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/iqregister/provider/RegistrationProvider.java @@ -22,8 +22,8 @@ import java.util.LinkedList; import java.util.List; import java.util.Map; -import org.jivesoftware.smack.packet.ExtensionElement; import org.jivesoftware.smack.packet.IQ; +import org.jivesoftware.smack.packet.XmlElement; import org.jivesoftware.smack.packet.XmlEnvironment; import org.jivesoftware.smack.parsing.SmackParsingException; import org.jivesoftware.smack.provider.IQProvider; @@ -39,7 +39,7 @@ public class RegistrationProvider extends IQProvider { public Registration parse(XmlPullParser parser, int initialDepth, XmlEnvironment xmlEnvironment) throws XmlPullParserException, IOException, SmackParsingException { String instruction = null; Map fields = new HashMap<>(); - List packetExtensions = new LinkedList<>(); + List packetExtensions = new LinkedList<>(); outerloop: while (true) { XmlPullParser.Event eventType = parser.next(); diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/element/JingleContent.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/element/JingleContent.java index 171231a9b..bfc085f60 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/element/JingleContent.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/element/JingleContent.java @@ -16,7 +16,7 @@ */ package org.jivesoftware.smackx.jingle.element; -import org.jivesoftware.smack.packet.FullyQualifiedElement; +import org.jivesoftware.smack.packet.XmlElement; import org.jivesoftware.smack.packet.XmlEnvironment; import org.jivesoftware.smack.util.Objects; import org.jivesoftware.smack.util.StringUtils; @@ -25,7 +25,7 @@ import org.jivesoftware.smack.util.XmlStringBuilder; /** * Jingle content element. */ -public final class JingleContent implements FullyQualifiedElement { +public final class JingleContent implements XmlElement { public static final String ELEMENT = "content"; public static final String NAMESPACE = Jingle.NAMESPACE; diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/element/JingleContentDescription.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/element/JingleContentDescription.java index a26e303d8..962f69159 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/element/JingleContentDescription.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/element/JingleContentDescription.java @@ -1,6 +1,6 @@ /** * - * Copyright 2017 Florian Schmaus. + * Copyright 2017-2021 Florian Schmaus. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -19,15 +19,15 @@ package org.jivesoftware.smackx.jingle.element; import java.util.Collections; import java.util.List; -import org.jivesoftware.smack.packet.ExtensionElement; import org.jivesoftware.smack.packet.NamedElement; +import org.jivesoftware.smack.packet.XmlElement; import org.jivesoftware.smack.util.XmlStringBuilder; /** * Jingle content description. * */ -public abstract class JingleContentDescription implements ExtensionElement { +public abstract class JingleContentDescription implements XmlElement { public static final String ELEMENT = "description"; diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/element/JingleContentDescriptionChildElement.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/element/JingleContentDescriptionChildElement.java index aaf2cb269..ccf3ceea4 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/element/JingleContentDescriptionChildElement.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/element/JingleContentDescriptionChildElement.java @@ -16,12 +16,12 @@ */ package org.jivesoftware.smackx.jingle.element; -import org.jivesoftware.smack.packet.FullyQualifiedElement; +import org.jivesoftware.smack.packet.XmlElement; /** * An element found usually in 'description' elements. * */ -public interface JingleContentDescriptionChildElement extends FullyQualifiedElement { +public interface JingleContentDescriptionChildElement extends XmlElement { } diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/element/JingleContentTransport.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/element/JingleContentTransport.java index a683a9d6e..bd65b2f9d 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/element/JingleContentTransport.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/element/JingleContentTransport.java @@ -1,6 +1,6 @@ /** * - * Copyright 2017-2019 Florian Schmaus + * Copyright 2017-2021 Florian Schmaus * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -19,7 +19,7 @@ package org.jivesoftware.smackx.jingle.element; import java.util.Collections; import java.util.List; -import org.jivesoftware.smack.packet.ExtensionElement; +import org.jivesoftware.smack.packet.XmlElement; import org.jivesoftware.smack.packet.XmlEnvironment; import org.jivesoftware.smack.util.XmlStringBuilder; @@ -27,7 +27,7 @@ import org.jivesoftware.smack.util.XmlStringBuilder; * A jingle transport extension. * */ -public abstract class JingleContentTransport implements ExtensionElement { +public abstract class JingleContentTransport implements XmlElement { public static final String ELEMENT = "transport"; diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/element/JingleContentTransportCandidate.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/element/JingleContentTransportCandidate.java index 1a8cfb923..286fd3ad7 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/element/JingleContentTransportCandidate.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/element/JingleContentTransportCandidate.java @@ -16,13 +16,13 @@ */ package org.jivesoftware.smackx.jingle.element; -import org.jivesoftware.smack.packet.FullyQualifiedElement; +import org.jivesoftware.smack.packet.XmlElement; /** * An element found usually in Jingle 'transport' elements. * */ -public abstract class JingleContentTransportCandidate implements FullyQualifiedElement { +public abstract class JingleContentTransportCandidate implements XmlElement { public static final String ELEMENT = "candidate"; diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/element/JingleContentTransportInfo.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/element/JingleContentTransportInfo.java index 7b4a13e9e..22524ae60 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/element/JingleContentTransportInfo.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/element/JingleContentTransportInfo.java @@ -16,11 +16,11 @@ */ package org.jivesoftware.smackx.jingle.element; -import org.jivesoftware.smack.packet.FullyQualifiedElement; +import org.jivesoftware.smack.packet.XmlElement; /** * Abstract JingleContentTransportInfo element. */ -public interface JingleContentTransportInfo extends FullyQualifiedElement { +public interface JingleContentTransportInfo extends XmlElement { } diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/element/JingleError.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/element/JingleError.java index 15a07f1e0..5bfdd61d3 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/element/JingleError.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/element/JingleError.java @@ -1,6 +1,6 @@ /** * - * Copyright 2003-2005 Jive Software, 2017 Florian Schmaus. + * Copyright 2003-2005 Jive Software, 2017-2021 Florian Schmaus. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -19,10 +19,10 @@ package org.jivesoftware.smackx.jingle.element; import java.util.Locale; -import org.jivesoftware.smack.packet.ExtensionElement; +import org.jivesoftware.smack.packet.XmlElement; import org.jivesoftware.smack.util.XmlStringBuilder; -public final class JingleError implements ExtensionElement { +public final class JingleError implements XmlElement { public static String NAMESPACE = "urn:xmpp:jingle:errors:1"; diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/element/JingleReason.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/element/JingleReason.java index 08f609867..0f0c1d759 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/element/JingleReason.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/element/JingleReason.java @@ -19,7 +19,7 @@ package org.jivesoftware.smackx.jingle.element; import java.util.HashMap; import java.util.Map; -import org.jivesoftware.smack.packet.FullyQualifiedElement; +import org.jivesoftware.smack.packet.XmlElement; import org.jivesoftware.smack.packet.XmlEnvironment; import org.jivesoftware.smack.util.StringUtils; import org.jivesoftware.smack.util.XmlStringBuilder; @@ -30,7 +30,7 @@ import org.jivesoftware.smack.util.XmlStringBuilder; * @see XEP-0166 § 7.4 * */ -public class JingleReason implements FullyQualifiedElement { +public class JingleReason implements XmlElement { public static final String ELEMENT = "reason"; public static final String NAMESPACE = Jingle.NAMESPACE; diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/transports/jingle_ibb/element/JingleIBBTransport.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/transports/jingle_ibb/element/JingleIBBTransport.java index 656db54a3..e82d6c28d 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/transports/jingle_ibb/element/JingleIBBTransport.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/transports/jingle_ibb/element/JingleIBBTransport.java @@ -16,6 +16,9 @@ */ package org.jivesoftware.smackx.jingle.transports.jingle_ibb.element; +import javax.xml.namespace.QName; + +import org.jivesoftware.smack.packet.ExtensionElement; import org.jivesoftware.smack.util.StringUtils; import org.jivesoftware.smack.util.XmlStringBuilder; @@ -24,8 +27,10 @@ import org.jivesoftware.smackx.jingle.element.JingleContentTransport; /** * Transport Element for JingleInBandBytestream transports. */ -public class JingleIBBTransport extends JingleContentTransport { +public class JingleIBBTransport extends JingleContentTransport implements ExtensionElement { public static final String NAMESPACE_V1 = "urn:xmpp:jingle:transports:ibb:1"; + public static final QName QNAME = new QName(NAMESPACE_V1, ELEMENT); + public static final String ATTR_BLOCK_SIZE = "block-size"; public static final String ATTR_SID = "sid"; @@ -72,7 +77,7 @@ public class JingleIBBTransport extends JingleContentTransport { @Override public String getNamespace() { - return NAMESPACE_V1; + return QNAME.getNamespaceURI(); } @Override diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/transports/jingle_s5b/elements/JingleS5BTransport.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/transports/jingle_s5b/elements/JingleS5BTransport.java index 18d58639e..c37e18ed1 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/transports/jingle_s5b/elements/JingleS5BTransport.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/jingle/transports/jingle_s5b/elements/JingleS5BTransport.java @@ -19,6 +19,9 @@ package org.jivesoftware.smackx.jingle.transports.jingle_s5b.elements; import java.util.ArrayList; import java.util.List; +import javax.xml.namespace.QName; + +import org.jivesoftware.smack.packet.ExtensionElement; import org.jivesoftware.smack.util.StringUtils; import org.jivesoftware.smack.util.XmlStringBuilder; @@ -30,12 +33,14 @@ import org.jivesoftware.smackx.jingle.element.JingleContentTransportInfo; /** * Socks5Bytestream transport element. */ -public class JingleS5BTransport extends JingleContentTransport { +public class JingleS5BTransport extends JingleContentTransport implements ExtensionElement { public static final String NAMESPACE_V1 = "urn:xmpp:jingle:transports:s5b:1"; public static final String ATTR_DSTADDR = "dstaddr"; public static final String ATTR_MODE = "mode"; public static final String ATTR_SID = "sid"; + public static final QName QNAME = new QName(NAMESPACE_V1, ELEMENT); + private final String streamId; private final String dstAddr; private final Bytestream.Mode mode; @@ -62,7 +67,7 @@ public class JingleS5BTransport extends JingleContentTransport { @Override public String getNamespace() { - return NAMESPACE_V1; + return QNAME.getNamespaceURI(); } @Override diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/mediaelement/element/MediaElement.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/mediaelement/element/MediaElement.java index 406d65b7c..797b84644 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/mediaelement/element/MediaElement.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/mediaelement/element/MediaElement.java @@ -24,7 +24,7 @@ import java.util.List; import javax.xml.namespace.QName; import org.jivesoftware.smack.datatypes.UInt16; -import org.jivesoftware.smack.packet.FullyQualifiedElement; +import org.jivesoftware.smack.packet.XmlElement; import org.jivesoftware.smack.packet.XmlEnvironment; import org.jivesoftware.smack.util.Objects; import org.jivesoftware.smack.util.StringUtils; @@ -130,7 +130,7 @@ public class MediaElement implements FormFieldChildElement { } } - public static final class Uri implements FullyQualifiedElement { + public static final class Uri implements XmlElement { public static final String ELEMENT = "uri"; public static final QName QNAME = new QName(NAMESPACE, ELEMENT); diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/mood/element/MoodElement.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/mood/element/MoodElement.java index 39b3c22bf..344eef1dd 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/mood/element/MoodElement.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/mood/element/MoodElement.java @@ -19,9 +19,9 @@ package org.jivesoftware.smackx.mood.element; import javax.xml.namespace.QName; import org.jivesoftware.smack.packet.ExtensionElement; -import org.jivesoftware.smack.packet.FullyQualifiedElement; import org.jivesoftware.smack.packet.Message; import org.jivesoftware.smack.packet.NamedElement; +import org.jivesoftware.smack.packet.XmlElement; import org.jivesoftware.smack.packet.XmlEnvironment; import org.jivesoftware.smack.util.Objects; import org.jivesoftware.smack.util.XmlStringBuilder; @@ -158,7 +158,7 @@ public class MoodElement implements ExtensionElement { * {@link NamedElement} which represents the mood. * This element has the element name of the mood selected from {@link Mood}. */ - public static class MoodSubjectElement implements FullyQualifiedElement { + public static class MoodSubjectElement implements XmlElement { private final Mood mood; private final MoodConcretisation concretisation; diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/offline/packet/OfflineMessageInfo.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/offline/packet/OfflineMessageInfo.java index df4958abd..4f547a154 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/offline/packet/OfflineMessageInfo.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/offline/packet/OfflineMessageInfo.java @@ -26,6 +26,7 @@ import org.jivesoftware.smack.packet.XmlEnvironment; import org.jivesoftware.smack.provider.ExtensionElementProvider; import org.jivesoftware.smack.xml.XmlPullParser; import org.jivesoftware.smack.xml.XmlPullParserException; + import org.jivesoftware.smackx.offline.OfflineMessageManager; /** diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/offline/packet/OfflineMessageRequest.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/offline/packet/OfflineMessageRequest.java index d255b74f9..f867af712 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/offline/packet/OfflineMessageRequest.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/offline/packet/OfflineMessageRequest.java @@ -27,6 +27,7 @@ import org.jivesoftware.smack.packet.XmlEnvironment; import org.jivesoftware.smack.provider.IQProvider; import org.jivesoftware.smack.xml.XmlPullParser; import org.jivesoftware.smack.xml.XmlPullParserException; + import org.jivesoftware.smackx.offline.OfflineMessageManager; /** diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/pubsub/Affiliation.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/pubsub/Affiliation.java index 982f8668d..be84e48cb 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/pubsub/Affiliation.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/pubsub/Affiliation.java @@ -17,7 +17,7 @@ package org.jivesoftware.smackx.pubsub; import org.jivesoftware.smack.XMPPConnection; -import org.jivesoftware.smack.packet.ExtensionElement; +import org.jivesoftware.smack.packet.XmlElement; import org.jivesoftware.smack.util.Objects; import org.jivesoftware.smack.util.StringUtils; import org.jivesoftware.smack.util.XmlStringBuilder; @@ -36,7 +36,7 @@ import org.jxmpp.jid.BareJid; * * @author Robin Collier */ -public class Affiliation implements ExtensionElement { +public class Affiliation implements XmlElement { public static final String ELEMENT = "affiliation"; public enum AffiliationNamespace { diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/pubsub/ConfigurationEvent.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/pubsub/ConfigurationEvent.java index 7f47847b5..5da00c348 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/pubsub/ConfigurationEvent.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/pubsub/ConfigurationEvent.java @@ -20,7 +20,7 @@ import java.util.Arrays; import java.util.Collections; import java.util.List; -import org.jivesoftware.smack.packet.ExtensionElement; +import org.jivesoftware.smack.packet.XmlElement; import org.jivesoftware.smackx.pubsub.form.FilledConfigureForm; @@ -48,10 +48,10 @@ public class ConfigurationEvent extends NodeExtension implements EmbeddedPacketE } @Override - public List getExtensions() { + public List getExtensions() { if (getConfiguration() == null) return Collections.emptyList(); else - return Arrays.asList((ExtensionElement) getConfiguration().getDataForm()); + return Arrays.asList((XmlElement) getConfiguration().getDataForm()); } } diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/pubsub/EmbeddedPacketExtension.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/pubsub/EmbeddedPacketExtension.java index 9bdaaef15..42f19c72a 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/pubsub/EmbeddedPacketExtension.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/pubsub/EmbeddedPacketExtension.java @@ -20,6 +20,7 @@ import java.util.List; import org.jivesoftware.smack.packet.ExtensionElement; import org.jivesoftware.smack.packet.Stanza; +import org.jivesoftware.smack.packet.XmlElement; import org.jivesoftware.smack.util.PacketParserUtils; /** @@ -37,11 +38,11 @@ import org.jivesoftware.smack.util.PacketParserUtils; * * @author Robin Collier */ -public interface EmbeddedPacketExtension extends ExtensionElement { +public interface EmbeddedPacketExtension extends XmlElement { /** * Get the list of embedded {@link ExtensionElement} objects. * * @return List of embedded {@link ExtensionElement} */ - List getExtensions(); + List getExtensions(); } diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/pubsub/EventElement.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/pubsub/EventElement.java index 7a70c4f5d..f03326457 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/pubsub/EventElement.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/pubsub/EventElement.java @@ -23,6 +23,7 @@ import javax.xml.namespace.QName; import org.jivesoftware.smack.packet.ExtensionElement; import org.jivesoftware.smack.packet.Stanza; +import org.jivesoftware.smack.packet.XmlElement; import org.jivesoftware.smack.util.XmlStringBuilder; import org.jivesoftware.smackx.pubsub.packet.PubSubNamespace; @@ -35,7 +36,7 @@ import org.jivesoftware.smackx.pubsub.packet.PubSubNamespace; * * @author Robin Collier */ -public class EventElement implements EmbeddedPacketExtension { +public class EventElement implements EmbeddedPacketExtension, ExtensionElement { /** * The constant String "event". */ @@ -61,8 +62,8 @@ public class EventElement implements EmbeddedPacketExtension { } @Override - public List getExtensions() { - return Arrays.asList(new ExtensionElement[] {getEvent()}); + public List getExtensions() { + return Arrays.asList(new XmlElement[] {getEvent()}); } public NodeExtension getEvent() { @@ -71,12 +72,12 @@ public class EventElement implements EmbeddedPacketExtension { @Override public String getElementName() { - return "event"; + return QNAME.getLocalPart(); } @Override public String getNamespace() { - return PubSubNamespace.event.getXmlns(); + return QNAME.getNamespaceURI(); } @Override diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/pubsub/ItemsExtension.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/pubsub/ItemsExtension.java index 02ae67901..317a14e5d 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/pubsub/ItemsExtension.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/pubsub/ItemsExtension.java @@ -20,6 +20,7 @@ import java.util.List; import org.jivesoftware.smack.packet.ExtensionElement; import org.jivesoftware.smack.packet.NamedElement; +import org.jivesoftware.smack.packet.XmlElement; import org.jivesoftware.smack.util.XmlStringBuilder; /** @@ -127,8 +128,8 @@ public class ItemsExtension extends NodeExtension implements EmbeddedPacketExten @Override @SuppressWarnings("unchecked") - public List getExtensions() { - return (List) getItems(); + public List getExtensions() { + return (List) getItems(); } /** diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/pubsub/LeafNode.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/pubsub/LeafNode.java index 22277f4b0..35c807240 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/pubsub/LeafNode.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/pubsub/LeafNode.java @@ -23,8 +23,8 @@ import java.util.List; import org.jivesoftware.smack.SmackException.NoResponseException; import org.jivesoftware.smack.SmackException.NotConnectedException; import org.jivesoftware.smack.XMPPException.XMPPErrorException; -import org.jivesoftware.smack.packet.ExtensionElement; import org.jivesoftware.smack.packet.IQ; +import org.jivesoftware.smack.packet.XmlElement; import org.jivesoftware.smackx.disco.packet.DiscoverItems; import org.jivesoftware.smackx.pubsub.form.ConfigureForm; @@ -71,7 +71,7 @@ public class LeafNode extends Node { * @throws InterruptedException if the calling thread was interrupted. */ public List getItems() throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException { - return getItems((List) null, null); + return getItems((List) null, null); } /** @@ -177,8 +177,8 @@ public class LeafNode extends Node { * @throws NotConnectedException if the XMPP connection is not connected. * @throws InterruptedException if the calling thread was interrupted. */ - public List getItems(List additionalExtensions, - List returnedExtensions) throws NoResponseException, + public List getItems(List additionalExtensions, + List returnedExtensions) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException { PubSub request = createPubsubPacket(IQ.Type.get, new GetItemsRequest(getId())); request.addExtensions(additionalExtensions); @@ -192,7 +192,7 @@ public class LeafNode extends Node { @SuppressWarnings("unchecked") private List getItems(PubSub request, - List returnedExtensions) throws NoResponseException, + List returnedExtensions) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException { PubSub result = pubSubManager.getConnection().createStanzaCollectorAndSend(request).nextResultOrThrow(); ItemsExtension itemsElem = result.getExtension(PubSubElementType.ITEMS); diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/pubsub/Node.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/pubsub/Node.java index ed4fd11dc..26d4a060c 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/pubsub/Node.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/pubsub/Node.java @@ -28,10 +28,10 @@ import org.jivesoftware.smack.XMPPConnection; import org.jivesoftware.smack.XMPPException.XMPPErrorException; import org.jivesoftware.smack.filter.FlexibleStanzaTypeFilter; import org.jivesoftware.smack.filter.OrFilter; -import org.jivesoftware.smack.packet.ExtensionElement; import org.jivesoftware.smack.packet.IQ; import org.jivesoftware.smack.packet.Message; import org.jivesoftware.smack.packet.Stanza; +import org.jivesoftware.smack.packet.XmlElement; import org.jivesoftware.smackx.delay.DelayInformationManager; import org.jivesoftware.smackx.disco.packet.DiscoverInfo; @@ -163,7 +163,7 @@ public abstract class Node { * @throws NotConnectedException if the XMPP connection is not connected. * @throws InterruptedException if the calling thread was interrupted. */ - public List getSubscriptions(List additionalExtensions, Collection returnedExtensions) + public List getSubscriptions(List additionalExtensions, Collection returnedExtensions) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException { return getSubscriptions(SubscriptionsNamespace.basic, additionalExtensions, returnedExtensions); } @@ -207,20 +207,20 @@ public abstract class Node { * Retrieve Subscriptions List * @since 4.1 */ - public List getSubscriptionsAsOwner(List additionalExtensions, - Collection returnedExtensions) throws NoResponseException, XMPPErrorException, + public List getSubscriptionsAsOwner(List additionalExtensions, + Collection returnedExtensions) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException { return getSubscriptions(SubscriptionsNamespace.owner, additionalExtensions, returnedExtensions); } - private List getSubscriptions(SubscriptionsNamespace subscriptionsNamespace, List additionalExtensions, - Collection returnedExtensions) + private List getSubscriptions(SubscriptionsNamespace subscriptionsNamespace, List additionalExtensions, + Collection returnedExtensions) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException { PubSubElementType pubSubElementType = subscriptionsNamespace.type; PubSub pubSub = createPubsubPacket(IQ.Type.get, new NodeExtension(pubSubElementType, getId())); if (additionalExtensions != null) { - for (ExtensionElement pe : additionalExtensions) { + for (XmlElement pe : additionalExtensions) { pubSub.addExtension(pe); } } @@ -286,7 +286,7 @@ public abstract class Node { * @throws NotConnectedException if the XMPP connection is not connected. * @throws InterruptedException if the calling thread was interrupted. */ - public List getAffiliations(List additionalExtensions, Collection returnedExtensions) + public List getAffiliations(List additionalExtensions, Collection returnedExtensions) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException { return getAffiliations(AffiliationNamespace.basic, additionalExtensions, returnedExtensions); @@ -326,20 +326,20 @@ public abstract class Node { * @see XEP-60 § 8.9.1 Retrieve Affiliations List * @since 4.2 */ - public List getAffiliationsAsOwner(List additionalExtensions, Collection returnedExtensions) + public List getAffiliationsAsOwner(List additionalExtensions, Collection returnedExtensions) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException { return getAffiliations(AffiliationNamespace.owner, additionalExtensions, returnedExtensions); } - private List getAffiliations(AffiliationNamespace affiliationsNamespace, List additionalExtensions, - Collection returnedExtensions) throws NoResponseException, XMPPErrorException, + private List getAffiliations(AffiliationNamespace affiliationsNamespace, List additionalExtensions, + Collection returnedExtensions) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException { PubSubElementType pubSubElementType = affiliationsNamespace.type; PubSub pubSub = createPubsubPacket(IQ.Type.get, new NodeExtension(pubSubElementType, getId())); if (additionalExtensions != null) { - for (ExtensionElement pe : additionalExtensions) { + for (XmlElement pe : additionalExtensions) { pubSub.addExtension(pe); } } @@ -717,7 +717,7 @@ public abstract class Node { // CHECKSTYLE:OFF EventElement event = (EventElement) packet.getExtensionElement("event", PubSubNamespace.event.getXmlns()); - List extList = event.getExtensions(); + List extList = event.getExtensions(); if (extList.get(0).getElementName().equals(PubSubElementType.PURGE_EVENT.getElementName())) { listener.handlePurge(); @@ -804,7 +804,7 @@ public abstract class Node { return true; if (embedEvent instanceof EmbeddedPacketExtension) { - List secondLevelList = ((EmbeddedPacketExtension) embedEvent).getExtensions(); + List secondLevelList = ((EmbeddedPacketExtension) embedEvent).getExtensions(); // XEP-0060 allows no elements on second level for notifications. See schema or // for example § 4.3: diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/pubsub/NodeExtension.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/pubsub/NodeExtension.java index d89e438ca..4720e47f6 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/pubsub/NodeExtension.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/pubsub/NodeExtension.java @@ -16,7 +16,7 @@ */ package org.jivesoftware.smackx.pubsub; -import org.jivesoftware.smack.packet.ExtensionElement; +import org.jivesoftware.smack.packet.XmlElement; import org.jivesoftware.smack.packet.XmlEnvironment; import org.jivesoftware.smack.util.XmlStringBuilder; @@ -30,7 +30,7 @@ import org.jivesoftware.smackx.pubsub.packet.PubSubNamespace; * * @author Robin Collier */ -public class NodeExtension implements ExtensionElement { +public class NodeExtension implements XmlElement { private final PubSubElementType element; private final String node; diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/pubsub/PayloadItem.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/pubsub/PayloadItem.java index 94462de7c..a51b88ab5 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/pubsub/PayloadItem.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/pubsub/PayloadItem.java @@ -18,6 +18,7 @@ package org.jivesoftware.smackx.pubsub; import org.jivesoftware.smack.packet.ExtensionElement; import org.jivesoftware.smack.packet.Message; +import org.jivesoftware.smack.packet.XmlElement; import org.jivesoftware.smack.util.XmlStringBuilder; import org.jivesoftware.smackx.pubsub.form.ConfigureForm; @@ -55,7 +56,7 @@ import org.jivesoftware.smackx.pubsub.provider.ItemProvider; * * @author Robin Collier */ -public class PayloadItem extends Item { +public class PayloadItem extends Item { private final E payload; /** diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/pubsub/PubSubManager.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/pubsub/PubSubManager.java index 1ef450b33..861fcdb06 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/pubsub/PubSubManager.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/pubsub/PubSubManager.java @@ -33,11 +33,11 @@ import org.jivesoftware.smack.SmackException.NotConnectedException; import org.jivesoftware.smack.XMPPConnection; import org.jivesoftware.smack.XMPPException.XMPPErrorException; import org.jivesoftware.smack.packet.EmptyResultIQ; -import org.jivesoftware.smack.packet.ExtensionElement; import org.jivesoftware.smack.packet.IQ; import org.jivesoftware.smack.packet.Stanza; import org.jivesoftware.smack.packet.StanzaError; import org.jivesoftware.smack.packet.StanzaError.Condition; +import org.jivesoftware.smack.packet.XmlElement; import org.jivesoftware.smack.util.StringUtils; import org.jivesoftware.smackx.disco.ServiceDiscoveryManager; @@ -643,7 +643,7 @@ public final class PubSubManager extends Manager { return true; } - private PubSub sendPubsubPacket(IQ.Type type, ExtensionElement ext, PubSubNamespace ns) + private PubSub sendPubsubPacket(IQ.Type type, XmlElement ext, PubSubNamespace ns) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException { return sendPubsubPacket(pubSubService, type, Collections.singletonList(ext), ns); } @@ -652,12 +652,12 @@ public final class PubSubManager extends Manager { return connection(); } - PubSub sendPubsubPacket(Jid to, IQ.Type type, List extList, PubSubNamespace ns) + PubSub sendPubsubPacket(Jid to, IQ.Type type, List extList, PubSubNamespace ns) throws NoResponseException, XMPPErrorException, NotConnectedException, InterruptedException { // CHECKSTYLE:OFF PubSub pubSub = new PubSub(to, type, ns); - for (ExtensionElement pe : extList) { + for (XmlElement pe : extList) { pubSub.addExtension(pe); } // CHECKSTYLE:ON diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/pubsub/RetractItem.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/pubsub/RetractItem.java index 6e8b39d26..d875dafef 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/pubsub/RetractItem.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/pubsub/RetractItem.java @@ -16,6 +16,8 @@ */ package org.jivesoftware.smackx.pubsub; +import javax.xml.namespace.QName; + import org.jivesoftware.smack.packet.ExtensionElement; import org.jivesoftware.smackx.pubsub.packet.PubSubNamespace; @@ -26,6 +28,8 @@ import org.jivesoftware.smackx.pubsub.packet.PubSubNamespace; * @author Robin Collier */ public class RetractItem implements ExtensionElement { + public static final QName QNAME = new QName(PubSubNamespace.event.getXmlns(), "retract"); + private final String id; /** @@ -45,12 +49,12 @@ public class RetractItem implements ExtensionElement { @Override public String getElementName() { - return "retract"; + return QNAME.getLocalPart(); } @Override public String getNamespace() { - return PubSubNamespace.event.getXmlns(); + return QNAME.getNamespaceURI(); } @Override diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/pubsub/SimplePayload.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/pubsub/SimplePayload.java index 20f535d0f..200be7f4b 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/pubsub/SimplePayload.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/pubsub/SimplePayload.java @@ -20,7 +20,7 @@ import java.io.IOException; import javax.xml.namespace.QName; -import org.jivesoftware.smack.packet.ExtensionElement; +import org.jivesoftware.smack.packet.XmlElement; import org.jivesoftware.smack.util.PacketParserUtils; import org.jivesoftware.smack.util.StringUtils; import org.jivesoftware.smack.xml.XmlPullParser; @@ -32,7 +32,7 @@ import org.jivesoftware.smack.xml.XmlPullParserException; * * @author Robin Collier */ -public class SimplePayload implements ExtensionElement { +public class SimplePayload implements XmlElement { private final String elemName; private final String ns; private final String payload; diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/pubsub/packet/PubSub.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/pubsub/packet/PubSub.java index a71410139..a2756d5ff 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/pubsub/packet/PubSub.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/pubsub/packet/PubSub.java @@ -16,8 +16,8 @@ */ package org.jivesoftware.smackx.pubsub.packet; -import org.jivesoftware.smack.packet.ExtensionElement; import org.jivesoftware.smack.packet.IQ; +import org.jivesoftware.smack.packet.XmlElement; import org.jivesoftware.smackx.pubsub.NodeExtension; import org.jivesoftware.smackx.pubsub.PubSubElementType; @@ -50,7 +50,7 @@ public class PubSub extends IQ { } @SuppressWarnings("unchecked") - public PE getExtension(PubSubElementType elem) { + public PE getExtension(PubSubElementType elem) { return (PE) getExtensionElement(elem.getElementName(), elem.getNamespace().getXmlns()); } diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/pubsub/provider/AffiliationsProvider.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/pubsub/provider/AffiliationsProvider.java index 6e77025d2..059826490 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/pubsub/provider/AffiliationsProvider.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/pubsub/provider/AffiliationsProvider.java @@ -19,7 +19,7 @@ package org.jivesoftware.smackx.pubsub.provider; import java.util.List; import java.util.Map; -import org.jivesoftware.smack.packet.ExtensionElement; +import org.jivesoftware.smack.packet.XmlElement; import org.jivesoftware.smack.provider.EmbeddedExtensionProvider; import org.jivesoftware.smackx.pubsub.Affiliation; @@ -34,7 +34,7 @@ import org.jivesoftware.smackx.pubsub.AffiliationsExtension; */public class AffiliationsProvider extends EmbeddedExtensionProvider { @SuppressWarnings("unchecked") @Override - protected AffiliationsExtension createReturnExtension(String currentElement, String currentNamespace, Map attributeMap, List content) { + protected AffiliationsExtension createReturnExtension(String currentElement, String currentNamespace, Map attributeMap, List content) { AffiliationNamespace affiliationsNamespace = AffiliationNamespace.fromXmlns(currentNamespace); return new AffiliationsExtension(affiliationsNamespace, (List) content); } diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/pubsub/provider/ConfigEventProvider.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/pubsub/provider/ConfigEventProvider.java index 1ae3324f8..1823b286c 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/pubsub/provider/ConfigEventProvider.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/pubsub/provider/ConfigEventProvider.java @@ -19,7 +19,7 @@ package org.jivesoftware.smackx.pubsub.provider; import java.util.List; import java.util.Map; -import org.jivesoftware.smack.packet.ExtensionElement; +import org.jivesoftware.smack.packet.XmlElement; import org.jivesoftware.smack.provider.EmbeddedExtensionProvider; import org.jivesoftware.smackx.pubsub.ConfigurationEvent; @@ -34,7 +34,7 @@ import org.jivesoftware.smackx.xdata.packet.DataForm; */ public class ConfigEventProvider extends EmbeddedExtensionProvider { @Override - protected ConfigurationEvent createReturnExtension(String currentElement, String currentNamespace, Map attMap, List content) { + protected ConfigurationEvent createReturnExtension(String currentElement, String currentNamespace, Map attMap, List content) { if (content.size() == 0) return new ConfigurationEvent(attMap.get("node")); else diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/pubsub/provider/EventProvider.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/pubsub/provider/EventProvider.java index 33915ef50..94a8c02eb 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/pubsub/provider/EventProvider.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/pubsub/provider/EventProvider.java @@ -19,7 +19,7 @@ package org.jivesoftware.smackx.pubsub.provider; import java.util.List; import java.util.Map; -import org.jivesoftware.smack.packet.ExtensionElement; +import org.jivesoftware.smack.packet.XmlElement; import org.jivesoftware.smack.provider.EmbeddedExtensionProvider; import org.jivesoftware.smackx.pubsub.EventElement; @@ -34,7 +34,7 @@ import org.jivesoftware.smackx.pubsub.NodeExtension; */ public class EventProvider extends EmbeddedExtensionProvider { @Override - protected EventElement createReturnExtension(String currentElement, String currentNamespace, Map attMap, List content) { + protected EventElement createReturnExtension(String currentElement, String currentNamespace, Map attMap, List content) { // TODO: Shouldn't be an embedded extension provider. return new EventElement(EventElementType.valueOf(content.get(0).getElementName()), (NodeExtension) content.get(0)); } diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/pubsub/provider/FormNodeProvider.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/pubsub/provider/FormNodeProvider.java index 176d71544..e7d8b0946 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/pubsub/provider/FormNodeProvider.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/pubsub/provider/FormNodeProvider.java @@ -19,7 +19,7 @@ package org.jivesoftware.smackx.pubsub.provider; import java.util.List; import java.util.Map; -import org.jivesoftware.smack.packet.ExtensionElement; +import org.jivesoftware.smack.packet.XmlElement; import org.jivesoftware.smack.provider.EmbeddedExtensionProvider; import org.jivesoftware.smackx.pubsub.FormNode; @@ -34,7 +34,7 @@ import org.jivesoftware.smackx.xdata.packet.DataForm; */ public class FormNodeProvider extends EmbeddedExtensionProvider { @Override - protected FormNode createReturnExtension(String currentElement, String currentNamespace, Map attributeMap, List content) { + protected FormNode createReturnExtension(String currentElement, String currentNamespace, Map attributeMap, List content) { return new FormNode(FormNodeType.valueOfFromElementName(currentElement, currentNamespace), attributeMap.get("node"), (DataForm) content.iterator().next()); } } diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/pubsub/provider/ItemsProvider.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/pubsub/provider/ItemsProvider.java index dffdea7b2..b39c5f636 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/pubsub/provider/ItemsProvider.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/pubsub/provider/ItemsProvider.java @@ -19,7 +19,7 @@ package org.jivesoftware.smackx.pubsub.provider; import java.util.List; import java.util.Map; -import org.jivesoftware.smack.packet.ExtensionElement; +import org.jivesoftware.smack.packet.XmlElement; import org.jivesoftware.smack.provider.EmbeddedExtensionProvider; import org.jivesoftware.smackx.pubsub.ItemsExtension; @@ -33,7 +33,7 @@ import org.jivesoftware.smackx.pubsub.ItemsExtension; public class ItemsProvider extends EmbeddedExtensionProvider { @Override - protected ItemsExtension createReturnExtension(String currentElement, String currentNamespace, Map attributeMap, List content) { + protected ItemsExtension createReturnExtension(String currentElement, String currentNamespace, Map attributeMap, List content) { return new ItemsExtension(ItemsExtension.ItemsElementType.items, attributeMap.get("node"), content); } diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/pubsub/provider/RetractEventProvider.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/pubsub/provider/RetractEventProvider.java index 134036cba..4bd3dc380 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/pubsub/provider/RetractEventProvider.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/pubsub/provider/RetractEventProvider.java @@ -19,7 +19,7 @@ package org.jivesoftware.smackx.pubsub.provider; import java.util.List; import java.util.Map; -import org.jivesoftware.smack.packet.ExtensionElement; +import org.jivesoftware.smack.packet.XmlElement; import org.jivesoftware.smack.provider.EmbeddedExtensionProvider; import org.jivesoftware.smackx.pubsub.RetractItem; @@ -33,7 +33,7 @@ import org.jivesoftware.smackx.pubsub.RetractItem; */ public class RetractEventProvider extends EmbeddedExtensionProvider { @Override - protected RetractItem createReturnExtension(String currentElement, String currentNamespace, Map attributeMap, List content) { + protected RetractItem createReturnExtension(String currentElement, String currentNamespace, Map attributeMap, List content) { return new RetractItem(attributeMap.get("id")); } diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/pubsub/provider/SimpleNodeProvider.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/pubsub/provider/SimpleNodeProvider.java index 830b62bcc..fd0466e20 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/pubsub/provider/SimpleNodeProvider.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/pubsub/provider/SimpleNodeProvider.java @@ -19,7 +19,7 @@ package org.jivesoftware.smackx.pubsub.provider; import java.util.List; import java.util.Map; -import org.jivesoftware.smack.packet.ExtensionElement; +import org.jivesoftware.smack.packet.XmlElement; import org.jivesoftware.smack.provider.EmbeddedExtensionProvider; import org.jivesoftware.smackx.pubsub.NodeExtension; @@ -33,7 +33,7 @@ import org.jivesoftware.smackx.pubsub.PubSubElementType; */ public class SimpleNodeProvider extends EmbeddedExtensionProvider { @Override - protected NodeExtension createReturnExtension(String currentElement, String currentNamespace, Map attributeMap, List content) { + protected NodeExtension createReturnExtension(String currentElement, String currentNamespace, Map attributeMap, List content) { return new NodeExtension(PubSubElementType.valueOfFromElemName(currentElement, currentNamespace), attributeMap.get("node")); } } diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/pubsub/provider/SubscriptionsProvider.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/pubsub/provider/SubscriptionsProvider.java index 1d032a1e0..b7da25680 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/pubsub/provider/SubscriptionsProvider.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/pubsub/provider/SubscriptionsProvider.java @@ -19,7 +19,7 @@ package org.jivesoftware.smackx.pubsub.provider; import java.util.List; import java.util.Map; -import org.jivesoftware.smack.packet.ExtensionElement; +import org.jivesoftware.smack.packet.XmlElement; import org.jivesoftware.smack.provider.EmbeddedExtensionProvider; import org.jivesoftware.smackx.pubsub.Subscription; @@ -35,7 +35,7 @@ import org.jivesoftware.smackx.pubsub.SubscriptionsExtension.SubscriptionsNamesp public class SubscriptionsProvider extends EmbeddedExtensionProvider { @SuppressWarnings("unchecked") @Override - protected SubscriptionsExtension createReturnExtension(String currentElement, String currentNamespace, Map attributeMap, List content) { + protected SubscriptionsExtension createReturnExtension(String currentElement, String currentNamespace, Map attributeMap, List content) { SubscriptionsNamespace subscriptionsNamespace = SubscriptionsNamespace.fromXmlns(currentNamespace); String nodeId = attributeMap.get("node"); return new SubscriptionsExtension(subscriptionsNamespace, nodeId, (List) content); diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/receipts/DeliveryReceipt.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/receipts/DeliveryReceipt.java index 9df9575b7..33873861f 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/receipts/DeliveryReceipt.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/receipts/DeliveryReceipt.java @@ -23,6 +23,7 @@ import javax.xml.namespace.QName; import org.jivesoftware.smack.packet.ExtensionElement; import org.jivesoftware.smack.packet.Message; +import org.jivesoftware.smack.packet.XmlElement; import org.jivesoftware.smack.provider.EmbeddedExtensionProvider; import org.jivesoftware.smack.util.XmlStringBuilder; @@ -102,7 +103,7 @@ public class DeliveryReceipt implements ExtensionElement { @Override protected DeliveryReceipt createReturnExtension(String currentElement, String currentNamespace, - Map attributeMap, List content) { + Map attributeMap, List content) { return new DeliveryReceipt(attributeMap.get("id")); } diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/rsm/RSMManager.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/rsm/RSMManager.java index 91b66a510..ea6924fae 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/rsm/RSMManager.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/rsm/RSMManager.java @@ -1,6 +1,6 @@ /** * - * Copyright © 2014 Florian Schmaus + * Copyright © 2014-2021 Florian Schmaus * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -20,7 +20,7 @@ import java.util.Collection; import java.util.LinkedList; import java.util.List; -import org.jivesoftware.smack.packet.ExtensionElement; +import org.jivesoftware.smack.packet.XmlElement; import org.jivesoftware.smack.util.PacketUtil; import org.jivesoftware.smackx.rsm.packet.RSMSet; @@ -28,19 +28,19 @@ import org.jivesoftware.smackx.rsm.packet.RSMSet.PageDirection; public class RSMManager { - Collection page(int max) { - List packetExtensions = new LinkedList<>(); + Collection page(int max) { + List packetExtensions = new LinkedList<>(); packetExtensions.add(new RSMSet(max)); return packetExtensions; } - Collection continuePage(int max, Collection returnedExtensions) { + Collection continuePage(int max, Collection returnedExtensions) { return continuePage(max, returnedExtensions, null); } - Collection continuePage(int max, - Collection returnedExtensions, - Collection additionalExtensions) { + Collection continuePage(int max, + Collection returnedExtensions, + Collection additionalExtensions) { if (returnedExtensions == null) { throw new IllegalArgumentException("returnedExtensions must no be null"); } diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/shim/packet/Header.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/shim/packet/Header.java index 19f45213f..4d585dd0e 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/shim/packet/Header.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/shim/packet/Header.java @@ -16,6 +16,8 @@ */ package org.jivesoftware.smackx.shim.packet; +import javax.xml.namespace.QName; + import org.jivesoftware.smack.packet.ExtensionElement; import org.jivesoftware.smack.packet.NamedElement; import org.jivesoftware.smack.util.XmlStringBuilder; @@ -27,6 +29,7 @@ import org.jivesoftware.smack.util.XmlStringBuilder; */ public class Header implements ExtensionElement { public static final String ELEMENT = "header"; + public static final QName QNAME = new QName(HeadersExtension.NAMESPACE, ELEMENT); private final String name; private final String value; @@ -46,12 +49,12 @@ public class Header implements ExtensionElement { @Override public String getElementName() { - return ELEMENT; + return QNAME.getLocalPart(); } @Override public String getNamespace() { - return HeadersExtension.NAMESPACE; + return QNAME.getNamespaceURI(); } @Override diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/shim/provider/HeadersProvider.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/shim/provider/HeadersProvider.java index 7f140af14..b2899ed89 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/shim/provider/HeadersProvider.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/shim/provider/HeadersProvider.java @@ -19,7 +19,7 @@ package org.jivesoftware.smackx.shim.provider; import java.util.List; import java.util.Map; -import org.jivesoftware.smack.packet.ExtensionElement; +import org.jivesoftware.smack.packet.XmlElement; import org.jivesoftware.smack.provider.EmbeddedExtensionProvider; import org.jivesoftware.smackx.shim.packet.Header; @@ -36,7 +36,7 @@ public class HeadersProvider extends EmbeddedExtensionProvider @SuppressWarnings("unchecked") @Override protected HeadersExtension createReturnExtension(String currentElement, String currentNamespace, - Map attributeMap, List content) { + Map attributeMap, List content) { return new HeadersExtension((List
) content); } diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/si/packet/StreamInitiation.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/si/packet/StreamInitiation.java index cdd4d4639..743d23b88 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/si/packet/StreamInitiation.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/si/packet/StreamInitiation.java @@ -18,6 +18,8 @@ package org.jivesoftware.smackx.si.packet; import java.util.Date; +import javax.xml.namespace.QName; + import org.jivesoftware.smack.packet.ExtensionElement; import org.jivesoftware.smack.packet.IQ; import org.jivesoftware.smack.util.StringUtils; @@ -196,6 +198,10 @@ public class StreamInitiation extends IQ { */ public static class File implements ExtensionElement { + public static final String ELEMENT = "file"; + public static final String NAMESPACE = "http://jabber.org/protocol/si/profile/file-transfer"; + public static final QName QNAME = new QName(NAMESPACE, ELEMENT); + private final String name; private final long size; @@ -318,12 +324,12 @@ public class StreamInitiation extends IQ { @Override public String getElementName() { - return "file"; + return QNAME.getLocalPart(); } @Override public String getNamespace() { - return "http://jabber.org/protocol/si/profile/file-transfer"; + return QNAME.getNamespaceURI(); } @Override @@ -374,6 +380,8 @@ public class StreamInitiation extends IQ { */ public static class Feature implements ExtensionElement { + public static final QName QNAME = new QName("http://jabber.org/protocol/feature-neg", "feature"); + private final DataForm data; /** @@ -395,13 +403,13 @@ public class StreamInitiation extends IQ { } @Override - public String getNamespace() { - return "http://jabber.org/protocol/feature-neg"; + public String getElementName() { + return QNAME.getLocalPart(); } @Override - public String getElementName() { - return "feature"; + public String getNamespace() { + return QNAME.getNamespaceURI(); } @Override diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/softwareinfo/SoftwareInfoManager.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/softwareinfo/SoftwareInfoManager.java index b6c05922e..152e39292 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/softwareinfo/SoftwareInfoManager.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/softwareinfo/SoftwareInfoManager.java @@ -24,6 +24,7 @@ import org.jivesoftware.smack.SmackException.NoResponseException; import org.jivesoftware.smack.SmackException.NotConnectedException; import org.jivesoftware.smack.XMPPConnection; import org.jivesoftware.smack.XMPPException.XMPPErrorException; + import org.jivesoftware.smackx.disco.ServiceDiscoveryManager; import org.jivesoftware.smackx.disco.packet.DiscoverInfo; import org.jivesoftware.smackx.softwareinfo.form.SoftwareInfoForm; diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/softwareinfo/form/SoftwareInfoForm.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/softwareinfo/form/SoftwareInfoForm.java index b70745833..1d6a7af4a 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/softwareinfo/form/SoftwareInfoForm.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/softwareinfo/form/SoftwareInfoForm.java @@ -20,6 +20,7 @@ import java.util.List; import org.jivesoftware.smack.util.EqualsUtil; import org.jivesoftware.smack.util.HashCode; + import org.jivesoftware.smackx.mediaelement.element.MediaElement; import org.jivesoftware.smackx.xdata.FormField; import org.jivesoftware.smackx.xdata.FormFieldChildElement; diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/xdata/FormField.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/xdata/FormField.java index 4bc28a7ef..10a259acf 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/xdata/FormField.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/xdata/FormField.java @@ -27,7 +27,7 @@ import java.util.List; import javax.xml.namespace.QName; -import org.jivesoftware.smack.packet.FullyQualifiedElement; +import org.jivesoftware.smack.packet.XmlElement; import org.jivesoftware.smack.packet.XmlEnvironment; import org.jivesoftware.smack.util.CollectionUtil; import org.jivesoftware.smack.util.EqualsUtil; @@ -51,7 +51,7 @@ import org.jxmpp.util.XmppDateTime; * * @author Gaston Dombiak */ -public abstract class FormField implements FullyQualifiedElement { +public abstract class FormField implements XmlElement { public static final String ELEMENT = "field"; @@ -381,7 +381,7 @@ public abstract class FormField implements FullyQualifiedElement { return QNAME; } - protected transient List extraXmlChildElements; + protected transient List extraXmlChildElements; protected void populateExtraXmlChildElements() { List values = getValues(); @@ -709,7 +709,7 @@ public abstract class FormField implements FullyQualifiedElement { * * @author Gaston Dombiak */ - public static final class Option implements FullyQualifiedElement { + public static final class Option implements XmlElement { public static final String ELEMENT = "option"; @@ -892,7 +892,7 @@ public abstract class FormField implements FullyQualifiedElement { } } - public static class Value implements FullyQualifiedElement { + public static class Value implements XmlElement { public static final String ELEMENT = "value"; diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/xdata/FormFieldChildElement.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/xdata/FormFieldChildElement.java index d6e7feaa6..a9a162be4 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/xdata/FormFieldChildElement.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/xdata/FormFieldChildElement.java @@ -16,9 +16,9 @@ */ package org.jivesoftware.smackx.xdata; -import org.jivesoftware.smack.packet.FullyQualifiedElement; +import org.jivesoftware.smack.packet.XmlElement; -public interface FormFieldChildElement extends FullyQualifiedElement { +public interface FormFieldChildElement extends XmlElement { default boolean isExclusiveElement() { return false; diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/xdatalayout/packet/DataLayout.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/xdatalayout/packet/DataLayout.java index e13c405db..631dcc4c7 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/xdatalayout/packet/DataLayout.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/xdatalayout/packet/DataLayout.java @@ -1,6 +1,6 @@ /** * - * Copyright 2014 Anno van Vliet, 2019 Florian Schmaus + * Copyright 2014 Anno van Vliet, 2019-2021 Florian Schmaus * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -19,6 +19,8 @@ package org.jivesoftware.smackx.xdatalayout.packet; import java.util.ArrayList; import java.util.List; +import javax.xml.namespace.QName; + import org.jivesoftware.smack.packet.ExtensionElement; import org.jivesoftware.smack.util.XmlStringBuilder; @@ -105,6 +107,8 @@ public class DataLayout implements ExtensionElement { public static class Fieldref extends DataFormLayoutElement{ public static final String ELEMENT = "fieldref"; + public static final QName QNAME = new QName(NAMESPACE, ELEMENT); + private final String var; /** @@ -142,6 +146,7 @@ public class DataLayout implements ExtensionElement { public static class Section extends DataFormLayoutElement{ public static final String ELEMENT = "section"; + public static final QName QNAME = new QName(NAMESPACE, ELEMENT); private final List sectionLayout = new ArrayList<>(); private final String label; @@ -206,6 +211,7 @@ public class DataLayout implements ExtensionElement { public static class Reportedref extends DataFormLayoutElement{ public static final String ELEMENT = "reportedref"; + public static final QName QNAME = new QName(NAMESPACE, ELEMENT); @Override public XmlStringBuilder toXML(org.jivesoftware.smack.packet.XmlEnvironment enclosingNamespace) { @@ -223,6 +229,7 @@ public class DataLayout implements ExtensionElement { public static class Text extends DataFormLayoutElement{ public static final String ELEMENT = "text"; + public static final QName QNAME = new QName(NAMESPACE, ELEMENT); private final String text; /** diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/xdatavalidation/packet/ValidateElement.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/xdatavalidation/packet/ValidateElement.java index 220cf8027..aa4308644 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/xdatavalidation/packet/ValidateElement.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/xdatavalidation/packet/ValidateElement.java @@ -21,7 +21,7 @@ import java.math.BigInteger; import javax.xml.namespace.QName; import org.jivesoftware.smack.datatypes.UInt32; -import org.jivesoftware.smack.packet.FullyQualifiedElement; +import org.jivesoftware.smack.packet.XmlElement; import org.jivesoftware.smack.packet.XmlEnvironment; import org.jivesoftware.smack.util.StringUtils; import org.jivesoftware.smack.util.XmlStringBuilder; @@ -374,7 +374,7 @@ public abstract class ValidateElement implements FormFieldChildElement { * This element indicates for "list-multi", that a minimum and maximum number of options should be selected and/or * entered. */ - public static class ListRange implements FullyQualifiedElement { + public static class ListRange implements XmlElement { public static final String ELEMENT = "list-range"; private final UInt32 min; diff --git a/smack-extensions/src/test/java/org/jivesoftware/smackx/pubsub/ItemValidationTest.java b/smack-extensions/src/test/java/org/jivesoftware/smackx/pubsub/ItemValidationTest.java index 8ed23eed8..d2b935c38 100644 --- a/smack-extensions/src/test/java/org/jivesoftware/smackx/pubsub/ItemValidationTest.java +++ b/smack-extensions/src/test/java/org/jivesoftware/smackx/pubsub/ItemValidationTest.java @@ -21,9 +21,9 @@ import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertTrue; import org.jivesoftware.smack.ThreadedDummyConnection; -import org.jivesoftware.smack.packet.ExtensionElement; import org.jivesoftware.smack.packet.NamedElement; import org.jivesoftware.smack.packet.Stanza; +import org.jivesoftware.smack.packet.XmlElement; import org.jivesoftware.smack.test.util.SmackTestSuite; import org.jivesoftware.smack.util.PacketParserUtils; import org.jivesoftware.smack.xml.XmlPullParser; @@ -102,7 +102,7 @@ public class ItemValidationTest extends SmackTestSuite { ""); Stanza message = PacketParserUtils.parseMessage(parser); - ExtensionElement eventExt = message.getExtension(PubSubNamespace.event.getXmlns()); + XmlElement eventExt = message.getExtension(PubSubNamespace.event.getXmlns()); assertTrue(eventExt instanceof EventElement); EventElement event = (EventElement) eventExt; @@ -132,7 +132,7 @@ public class ItemValidationTest extends SmackTestSuite { ""); Stanza message = PacketParserUtils.parseMessage(parser); - ExtensionElement eventExt = message.getExtension(PubSubNamespace.event.getXmlns()); + XmlElement eventExt = message.getExtension(PubSubNamespace.event.getXmlns()); EventElement event = (EventElement) eventExt; NamedElement itemExt = ((ItemsExtension) event.getExtensions().get(0)).items.get(0); @@ -178,7 +178,7 @@ public class ItemValidationTest extends SmackTestSuite { ""); Stanza message = PacketParserUtils.parseMessage(parser); - ExtensionElement eventExt = message.getExtension(PubSubNamespace.event.getXmlns()); + XmlElement eventExt = message.getExtension(PubSubNamespace.event.getXmlns()); EventElement event = (EventElement) eventExt; NamedElement itemExt = ((ItemsExtension) event.getExtensions().get(0)).items.get(0); @@ -210,7 +210,7 @@ public class ItemValidationTest extends SmackTestSuite { ""); Stanza message = PacketParserUtils.parseMessage(parser); - ExtensionElement eventExt = message.getExtension(PubSubNamespace.event.getXmlns()); + XmlElement eventExt = message.getExtension(PubSubNamespace.event.getXmlns()); assertTrue(eventExt instanceof EventElement); EventElement event = (EventElement) eventExt; diff --git a/smack-extensions/src/test/java/org/jivesoftware/smackx/softwareinfo/SoftwareInfoFormTest.java b/smack-extensions/src/test/java/org/jivesoftware/smackx/softwareinfo/SoftwareInfoFormTest.java index f8deba67e..62f226c97 100644 --- a/smack-extensions/src/test/java/org/jivesoftware/smackx/softwareinfo/SoftwareInfoFormTest.java +++ b/smack-extensions/src/test/java/org/jivesoftware/smackx/softwareinfo/SoftwareInfoFormTest.java @@ -24,6 +24,7 @@ import java.net.URI; import java.net.URISyntaxException; import org.jivesoftware.smack.test.util.SmackTestSuite; + import org.jivesoftware.smackx.mediaelement.element.MediaElement; import org.jivesoftware.smackx.softwareinfo.form.SoftwareInfoForm; import org.jivesoftware.smackx.xdata.FormField; diff --git a/smack-extensions/src/test/java/org/jivesoftware/smackx/xdata/provider/DataFormProviderTest.java b/smack-extensions/src/test/java/org/jivesoftware/smackx/xdata/provider/DataFormProviderTest.java index f25eb67d3..90093023c 100644 --- a/smack-extensions/src/test/java/org/jivesoftware/smackx/xdata/provider/DataFormProviderTest.java +++ b/smack-extensions/src/test/java/org/jivesoftware/smackx/xdata/provider/DataFormProviderTest.java @@ -25,6 +25,7 @@ import org.jivesoftware.smack.parsing.SmackParsingException; import org.jivesoftware.smack.util.PacketParserUtils; import org.jivesoftware.smack.xml.XmlPullParser; import org.jivesoftware.smack.xml.XmlPullParserException; + import org.jivesoftware.smackx.xdata.FormField; import org.jivesoftware.smackx.xdata.packet.DataForm; diff --git a/smack-integration-test/build.gradle b/smack-integration-test/build.gradle index bf832c222..ea08655af 100644 --- a/smack-integration-test/build.gradle +++ b/smack-integration-test/build.gradle @@ -13,7 +13,7 @@ dependencies { implementation "com.google.guava:guava:${guavaVersion}" // Do not upgrade to a higher reflections version until // https://github.com/ronmamo/reflections/issues/273 is fixed. - implementation 'org.reflections:reflections:0.9.11' + implementation "org.reflections:reflections:${orgReflectionsVersion}" api 'eu.geekplace.javapinning:java-pinning-java7:1.1.0-alpha1' implementation group: 'commons-io', name: 'commons-io', version: "$commonsIoVersion" api "org.junit.jupiter:junit-jupiter-api:$junitVersion" diff --git a/smack-java8-full/build.gradle b/smack-java8-full/build.gradle index 362566afc..7607d3c02 100644 --- a/smack-java8-full/build.gradle +++ b/smack-java8-full/build.gradle @@ -18,6 +18,7 @@ dependencies { testImplementation(testFixtures(project(":smack-core"))) testImplementation 'org.jgrapht:jgrapht-io:1.3.1' + testImplementation "org.reflections:reflections:${orgReflectionsVersion}" } task printModularXmppClientToServerConnectionStateGraph(type: JavaExec) { diff --git a/smack-java8-full/src/test/java/org/jivesoftware/smack/full/ExtensionElementQNameDeclaredTest.java b/smack-java8-full/src/test/java/org/jivesoftware/smack/full/ExtensionElementQNameDeclaredTest.java new file mode 100644 index 000000000..3090a8b4b --- /dev/null +++ b/smack-java8-full/src/test/java/org/jivesoftware/smack/full/ExtensionElementQNameDeclaredTest.java @@ -0,0 +1,63 @@ +/** + * + * Copyright 2021 Florian Schmaus + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.jivesoftware.smack.full; + +import static org.assertj.core.api.Assertions.assertThat; + +import java.lang.reflect.Modifier; +import java.util.HashMap; +import java.util.Map; +import java.util.Set; + +import org.jivesoftware.smack.packet.ExtensionElement; +import org.jivesoftware.smack.util.XmppElementUtil; + +import org.junit.jupiter.api.Test; +import org.reflections.Reflections; +import org.reflections.scanners.SubTypesScanner; + +public class ExtensionElementQNameDeclaredTest { + + @Test + public void qnameOrElementNamespaceDeclaredTest() { + String[] smackPackages = new String[] { + "org.jivesoftware.smack", + "org.igniterealtime.smack", + }; + Reflections reflections = new Reflections(smackPackages, new SubTypesScanner()); + Set> extensionElementClasses = reflections.getSubTypesOf( + ExtensionElement.class); + + Map, IllegalArgumentException> exceptions = new HashMap<>(); + for (Class extensionElementClass : extensionElementClasses) { + if (Modifier.isAbstract(extensionElementClass.getModifiers())) { + continue; + } + + try { + XmppElementUtil.getQNameFor(extensionElementClass); + } catch (IllegalArgumentException e) { + exceptions.put(extensionElementClass, e); + } + } + + Set> failedClasses = exceptions.keySet(); + + assertThat(failedClasses).withFailMessage("The following " + failedClasses.size() + + " classes are missing QNAME declaration: " + failedClasses).isEmpty(); + } +} diff --git a/smack-legacy/src/main/java/org/jivesoftware/smackx/workgroup/MetaData.java b/smack-legacy/src/main/java/org/jivesoftware/smackx/workgroup/MetaData.java index 17332955a..d68d03b3a 100644 --- a/smack-legacy/src/main/java/org/jivesoftware/smackx/workgroup/MetaData.java +++ b/smack-legacy/src/main/java/org/jivesoftware/smackx/workgroup/MetaData.java @@ -20,6 +20,8 @@ package org.jivesoftware.smackx.workgroup; import java.util.List; import java.util.Map; +import javax.xml.namespace.QName; + import org.jivesoftware.smack.packet.ExtensionElement; import org.jivesoftware.smackx.workgroup.util.MetaDataUtils; @@ -39,6 +41,8 @@ public class MetaData implements ExtensionElement { */ public static final String NAMESPACE = "http://jivesoftware.com/protocol/workgroup"; + public static final QName QNAME = new QName(NAMESPACE, ELEMENT_NAME); + private final Map> metaData; public MetaData(Map> metaData) { diff --git a/smack-legacy/src/main/java/org/jivesoftware/smackx/workgroup/packet/AgentStatus.java b/smack-legacy/src/main/java/org/jivesoftware/smackx/workgroup/packet/AgentStatus.java index 4cd961bc4..039d39496 100644 --- a/smack-legacy/src/main/java/org/jivesoftware/smackx/workgroup/packet/AgentStatus.java +++ b/smack-legacy/src/main/java/org/jivesoftware/smackx/workgroup/packet/AgentStatus.java @@ -26,6 +26,8 @@ import java.util.Iterator; import java.util.List; import java.util.TimeZone; +import javax.xml.namespace.QName; + import org.jivesoftware.smack.packet.ExtensionElement; import org.jivesoftware.smack.packet.XmlEnvironment; import org.jivesoftware.smack.provider.ExtensionElementProvider; @@ -59,6 +61,8 @@ public class AgentStatus implements ExtensionElement { */ public static final String NAMESPACE = "http://jabber.org/protocol/workgroup"; + public static final QName QNAME = new QName(NAMESPACE, ELEMENT_NAME); + private EntityBareJid workgroupJID; private final List currentChats = new ArrayList<>(); private int maxChats = -1; diff --git a/smack-legacy/src/main/java/org/jivesoftware/smackx/workgroup/packet/QueueDetails.java b/smack-legacy/src/main/java/org/jivesoftware/smackx/workgroup/packet/QueueDetails.java index cbe108c06..19d7a0e3b 100644 --- a/smack-legacy/src/main/java/org/jivesoftware/smackx/workgroup/packet/QueueDetails.java +++ b/smack-legacy/src/main/java/org/jivesoftware/smackx/workgroup/packet/QueueDetails.java @@ -26,6 +26,8 @@ import java.util.Iterator; import java.util.Set; import java.util.logging.Logger; +import javax.xml.namespace.QName; + import org.jivesoftware.smack.packet.ExtensionElement; import org.jivesoftware.smack.packet.XmlEnvironment; import org.jivesoftware.smack.provider.ExtensionElementProvider; @@ -50,6 +52,7 @@ public final class QueueDetails implements ExtensionElement { * Namespace of the stanza extension. */ public static final String NAMESPACE = "http://jabber.org/protocol/workgroup"; + public static final QName QNAME = new QName(NAMESPACE, ELEMENT_NAME); private static final String DATE_FORMAT = "yyyyMMdd'T'HH:mm:ss"; diff --git a/smack-legacy/src/main/java/org/jivesoftware/smackx/workgroup/packet/QueueOverview.java b/smack-legacy/src/main/java/org/jivesoftware/smackx/workgroup/packet/QueueOverview.java index 27d995cc3..1b6ddc1d7 100644 --- a/smack-legacy/src/main/java/org/jivesoftware/smackx/workgroup/packet/QueueOverview.java +++ b/smack-legacy/src/main/java/org/jivesoftware/smackx/workgroup/packet/QueueOverview.java @@ -22,6 +22,8 @@ import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; +import javax.xml.namespace.QName; + import org.jivesoftware.smack.packet.ExtensionElement; import org.jivesoftware.smack.packet.XmlEnvironment; import org.jivesoftware.smack.provider.ExtensionElementProvider; @@ -41,6 +43,7 @@ public class QueueOverview implements ExtensionElement { * Namespace of the stanza extension. */ public static String NAMESPACE = "http://jabber.org/protocol/workgroup"; + public static final QName QNAME = new QName(NAMESPACE, ELEMENT_NAME); private static final String DATE_FORMAT = "yyyyMMdd'T'HH:mm:ss"; private final SimpleDateFormat dateFormat = new SimpleDateFormat(DATE_FORMAT); diff --git a/smack-legacy/src/main/java/org/jivesoftware/smackx/workgroup/packet/QueueUpdate.java b/smack-legacy/src/main/java/org/jivesoftware/smackx/workgroup/packet/QueueUpdate.java index a8c5bcd65..6c0231228 100644 --- a/smack-legacy/src/main/java/org/jivesoftware/smackx/workgroup/packet/QueueUpdate.java +++ b/smack-legacy/src/main/java/org/jivesoftware/smackx/workgroup/packet/QueueUpdate.java @@ -19,6 +19,8 @@ package org.jivesoftware.smackx.workgroup.packet; import java.io.IOException; +import javax.xml.namespace.QName; + import org.jivesoftware.smack.packet.ExtensionElement; import org.jivesoftware.smack.packet.XmlEnvironment; import org.jivesoftware.smack.provider.ExtensionElementProvider; @@ -42,6 +44,8 @@ public class QueueUpdate implements ExtensionElement { */ public static final String NAMESPACE = "http://jabber.org/protocol/workgroup"; + public static final QName QNAME = new QName(NAMESPACE, ELEMENT_NAME); + private final int position; private final int remainingTime; diff --git a/smack-legacy/src/main/java/org/jivesoftware/smackx/workgroup/packet/RoomInvitation.java b/smack-legacy/src/main/java/org/jivesoftware/smackx/workgroup/packet/RoomInvitation.java index e2786ca9b..4e2071cc5 100644 --- a/smack-legacy/src/main/java/org/jivesoftware/smackx/workgroup/packet/RoomInvitation.java +++ b/smack-legacy/src/main/java/org/jivesoftware/smackx/workgroup/packet/RoomInvitation.java @@ -19,6 +19,8 @@ package org.jivesoftware.smackx.workgroup.packet; import java.io.IOException; +import javax.xml.namespace.QName; + import org.jivesoftware.smack.packet.ExtensionElement; import org.jivesoftware.smack.packet.IQ; import org.jivesoftware.smack.packet.IQ.IQChildElementXmlStringBuilder; @@ -50,6 +52,8 @@ public class RoomInvitation implements ExtensionElement { */ public static final String NAMESPACE = "http://jabber.org/protocol/workgroup"; + public static final QName QNAME = new QName(NAMESPACE, ELEMENT_NAME); + /** * Type of entity being invited to a groupchat support session. */ diff --git a/smack-legacy/src/main/java/org/jivesoftware/smackx/workgroup/packet/RoomTransfer.java b/smack-legacy/src/main/java/org/jivesoftware/smackx/workgroup/packet/RoomTransfer.java index 7bfb1067f..e12b5d55d 100644 --- a/smack-legacy/src/main/java/org/jivesoftware/smackx/workgroup/packet/RoomTransfer.java +++ b/smack-legacy/src/main/java/org/jivesoftware/smackx/workgroup/packet/RoomTransfer.java @@ -19,6 +19,8 @@ package org.jivesoftware.smackx.workgroup.packet; import java.io.IOException; +import javax.xml.namespace.QName; + import org.jivesoftware.smack.packet.ExtensionElement; import org.jivesoftware.smack.packet.IQ; import org.jivesoftware.smack.packet.IQ.IQChildElementXmlStringBuilder; @@ -45,6 +47,8 @@ public class RoomTransfer implements ExtensionElement { */ public static final String NAMESPACE = "http://jabber.org/protocol/workgroup"; + public static final QName QNAME = new QName(NAMESPACE, ELEMENT_NAME); + /** * Type of entity being invited to a groupchat support session. */ diff --git a/smack-legacy/src/main/java/org/jivesoftware/smackx/workgroup/packet/SessionID.java b/smack-legacy/src/main/java/org/jivesoftware/smackx/workgroup/packet/SessionID.java index 4600573f1..c91e994e5 100644 --- a/smack-legacy/src/main/java/org/jivesoftware/smackx/workgroup/packet/SessionID.java +++ b/smack-legacy/src/main/java/org/jivesoftware/smackx/workgroup/packet/SessionID.java @@ -19,6 +19,8 @@ package org.jivesoftware.smackx.workgroup.packet; import java.io.IOException; +import javax.xml.namespace.QName; + import org.jivesoftware.smack.packet.ExtensionElement; import org.jivesoftware.smack.packet.XmlEnvironment; import org.jivesoftware.smack.provider.ExtensionElementProvider; @@ -37,6 +39,8 @@ public class SessionID implements ExtensionElement { */ public static final String NAMESPACE = "http://jivesoftware.com/protocol/workgroup"; + public static final QName QNAME = new QName(NAMESPACE, ELEMENT_NAME); + private final String sessionID; public SessionID(String sessionID) { diff --git a/smack-legacy/src/main/java/org/jivesoftware/smackx/workgroup/packet/UserID.java b/smack-legacy/src/main/java/org/jivesoftware/smackx/workgroup/packet/UserID.java index 806128c56..75143727b 100644 --- a/smack-legacy/src/main/java/org/jivesoftware/smackx/workgroup/packet/UserID.java +++ b/smack-legacy/src/main/java/org/jivesoftware/smackx/workgroup/packet/UserID.java @@ -19,6 +19,8 @@ package org.jivesoftware.smackx.workgroup.packet; import java.io.IOException; +import javax.xml.namespace.QName; + import org.jivesoftware.smack.packet.ExtensionElement; import org.jivesoftware.smack.packet.XmlEnvironment; import org.jivesoftware.smack.provider.ExtensionElementProvider; @@ -40,6 +42,8 @@ public class UserID implements ExtensionElement { */ public static final String NAMESPACE = "http://jivesoftware.com/protocol/workgroup"; + public static final QName QNAME = new QName(NAMESPACE, ELEMENT_NAME); + private final Jid userID; public UserID(Jid userID) { diff --git a/smack-legacy/src/main/java/org/jivesoftware/smackx/workgroup/packet/WorkgroupInformation.java b/smack-legacy/src/main/java/org/jivesoftware/smackx/workgroup/packet/WorkgroupInformation.java index 6df4ad29e..5afae0563 100644 --- a/smack-legacy/src/main/java/org/jivesoftware/smackx/workgroup/packet/WorkgroupInformation.java +++ b/smack-legacy/src/main/java/org/jivesoftware/smackx/workgroup/packet/WorkgroupInformation.java @@ -19,6 +19,8 @@ package org.jivesoftware.smackx.workgroup.packet; import java.io.IOException; +import javax.xml.namespace.QName; + import org.jivesoftware.smack.packet.ExtensionElement; import org.jivesoftware.smack.packet.XmlEnvironment; import org.jivesoftware.smack.provider.ExtensionElementProvider; @@ -44,6 +46,8 @@ public class WorkgroupInformation implements ExtensionElement { */ public static final String NAMESPACE = "http://jabber.org/protocol/workgroup"; + public static final QName QNAME = new QName(NAMESPACE, ELEMENT_NAME); + private final EntityBareJid workgroupJID; public WorkgroupInformation(EntityBareJid workgroupJID) { diff --git a/smack-legacy/src/main/java/org/jivesoftware/smackx/workgroup/user/Workgroup.java b/smack-legacy/src/main/java/org/jivesoftware/smackx/workgroup/user/Workgroup.java index 5d186bac2..6244a622c 100644 --- a/smack-legacy/src/main/java/org/jivesoftware/smackx/workgroup/user/Workgroup.java +++ b/smack-legacy/src/main/java/org/jivesoftware/smackx/workgroup/user/Workgroup.java @@ -33,11 +33,11 @@ import org.jivesoftware.smack.filter.AndFilter; import org.jivesoftware.smack.filter.FromMatchesFilter; import org.jivesoftware.smack.filter.StanzaFilter; import org.jivesoftware.smack.filter.StanzaTypeFilter; -import org.jivesoftware.smack.packet.ExtensionElement; import org.jivesoftware.smack.packet.IQ; import org.jivesoftware.smack.packet.Message; import org.jivesoftware.smack.packet.Presence; import org.jivesoftware.smack.packet.Stanza; +import org.jivesoftware.smack.packet.XmlElement; import org.jivesoftware.smackx.disco.ServiceDiscoveryManager; import org.jivesoftware.smackx.disco.packet.DiscoverInfo; @@ -516,8 +516,8 @@ public class Workgroup { if (packet instanceof Message) { Message msg = (Message) packet; // Check to see if the user left the queue. - ExtensionElement pe = msg.getExtensionElement("depart-queue", "http://jabber.org/protocol/workgroup"); - ExtensionElement queueStatus = msg.getExtensionElement("queue-status", "http://jabber.org/protocol/workgroup"); + XmlElement pe = msg.getExtensionElement("depart-queue", "http://jabber.org/protocol/workgroup"); + XmlElement queueStatus = msg.getExtensionElement("queue-status", "http://jabber.org/protocol/workgroup"); if (pe != null) { fireQueueDepartedEvent(); diff --git a/smack-legacy/src/main/java/org/jivesoftware/smackx/xroster/packet/RosterExchange.java b/smack-legacy/src/main/java/org/jivesoftware/smackx/xroster/packet/RosterExchange.java index 6c2c356a3..291393660 100644 --- a/smack-legacy/src/main/java/org/jivesoftware/smackx/xroster/packet/RosterExchange.java +++ b/smack-legacy/src/main/java/org/jivesoftware/smackx/xroster/packet/RosterExchange.java @@ -22,6 +22,8 @@ import java.util.Collections; import java.util.Iterator; import java.util.List; +import javax.xml.namespace.QName; + import org.jivesoftware.smack.packet.ExtensionElement; import org.jivesoftware.smack.roster.Roster; import org.jivesoftware.smack.roster.RosterEntry; @@ -51,6 +53,8 @@ import org.jivesoftware.smackx.xroster.RosterExchangeManager; */ public class RosterExchange implements ExtensionElement { + public static final QName QNAME = new QName(RosterExchangeManager.NAMESPACE, RosterExchangeManager.ELEMENT); + private final List remoteRosterEntries = new ArrayList<>(); /** @@ -113,7 +117,7 @@ public class RosterExchange implements ExtensionElement { */ @Override public String getElementName() { - return RosterExchangeManager.ELEMENT; + return QNAME.getLocalPart(); } /** @@ -125,7 +129,7 @@ public class RosterExchange implements ExtensionElement { */ @Override public String getNamespace() { - return RosterExchangeManager.NAMESPACE; + return QNAME.getNamespaceURI(); } /** diff --git a/smack-omemo/src/main/java/org/jivesoftware/smackx/omemo/element/OmemoHeaderElement.java b/smack-omemo/src/main/java/org/jivesoftware/smackx/omemo/element/OmemoHeaderElement.java index a0fa6f5f8..4270d8ec5 100644 --- a/smack-omemo/src/main/java/org/jivesoftware/smackx/omemo/element/OmemoHeaderElement.java +++ b/smack-omemo/src/main/java/org/jivesoftware/smackx/omemo/element/OmemoHeaderElement.java @@ -19,7 +19,7 @@ package org.jivesoftware.smackx.omemo.element; import java.util.ArrayList; import java.util.List; -import org.jivesoftware.smack.packet.FullyQualifiedElement; +import org.jivesoftware.smack.packet.XmlElement; import org.jivesoftware.smack.packet.XmlEnvironment; import org.jivesoftware.smack.util.XmlStringBuilder; import org.jivesoftware.smack.util.stringencoder.Base64; @@ -30,7 +30,7 @@ import org.jivesoftware.smackx.omemo.util.OmemoConstants; * Header element of the message. The header contains information about the sender and the encrypted keys for * the recipients, as well as the iv element for AES. */ -public abstract class OmemoHeaderElement implements FullyQualifiedElement { +public abstract class OmemoHeaderElement implements XmlElement { public static final String ELEMENT = "header"; public static final String NAMESPACE = OmemoConstants.OMEMO_NAMESPACE_V_AXOLOTL; diff --git a/smack-omemo/src/main/java/org/jivesoftware/smackx/omemo/element/OmemoKeyElement.java b/smack-omemo/src/main/java/org/jivesoftware/smackx/omemo/element/OmemoKeyElement.java index fc55c3300..1ec7a3dd6 100644 --- a/smack-omemo/src/main/java/org/jivesoftware/smackx/omemo/element/OmemoKeyElement.java +++ b/smack-omemo/src/main/java/org/jivesoftware/smackx/omemo/element/OmemoKeyElement.java @@ -16,7 +16,7 @@ */ package org.jivesoftware.smackx.omemo.element; -import org.jivesoftware.smack.packet.FullyQualifiedElement; +import org.jivesoftware.smack.packet.XmlElement; import org.jivesoftware.smack.packet.XmlEnvironment; import org.jivesoftware.smack.util.XmlStringBuilder; import org.jivesoftware.smack.util.stringencoder.Base64; @@ -26,7 +26,7 @@ import org.jivesoftware.smackx.omemo.util.OmemoConstants; /** * Small class to collect key (byte[]), its id and whether its a preKey or not. */ -public class OmemoKeyElement implements FullyQualifiedElement { +public class OmemoKeyElement implements XmlElement { public static final String ELEMENT = "key"; public static final String NAMESPACE = OmemoConstants.OMEMO_NAMESPACE_V_AXOLOTL; diff --git a/smack-openpgp/src/main/java/org/jivesoftware/smackx/ox/element/OpenPgpContentElement.java b/smack-openpgp/src/main/java/org/jivesoftware/smackx/ox/element/OpenPgpContentElement.java index bcb661271..974185573 100644 --- a/smack-openpgp/src/main/java/org/jivesoftware/smackx/ox/element/OpenPgpContentElement.java +++ b/smack-openpgp/src/main/java/org/jivesoftware/smackx/ox/element/OpenPgpContentElement.java @@ -1,6 +1,6 @@ /** * - * Copyright 2017-2019 Florian Schmaus, 2018 Paul Schaub. + * Copyright 2017-2021 Florian Schmaus, 2018 Paul Schaub. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -27,6 +27,7 @@ import java.util.Set; import javax.xml.namespace.QName; import org.jivesoftware.smack.packet.ExtensionElement; +import org.jivesoftware.smack.packet.XmlElement; import org.jivesoftware.smack.util.MultiMap; import org.jivesoftware.smack.util.Objects; import org.jivesoftware.smack.util.PacketUtil; @@ -49,7 +50,7 @@ public abstract class OpenPgpContentElement implements ExtensionElement { private final Set to; private final Date timestamp; - private final MultiMap payload; + private final MultiMap payload; private String timestampString; @@ -86,7 +87,7 @@ public abstract class OpenPgpContentElement implements ExtensionElement { * * @return payload. */ - public final List getExtensions() { + public final List getExtensions() { synchronized (payload) { return payload.values(); } @@ -102,7 +103,7 @@ public abstract class OpenPgpContentElement implements ExtensionElement { * @param namespace the namespace of the element(s), must not be null. * @return a set of all matching extensions. */ - public List getExtensions(String elementName, String namespace) { + public List getExtensions(String elementName, String namespace) { QName key = new QName(namespace, elementName); return payload.getAll(key); } @@ -137,7 +138,7 @@ public abstract class OpenPgpContentElement implements ExtensionElement { return null; } QName key = new QName(namespace, elementName); - ExtensionElement packetExtension; + XmlElement packetExtension; synchronized (payload) { packetExtension = payload.getFirst(key); } @@ -168,7 +169,7 @@ public abstract class OpenPgpContentElement implements ExtensionElement { xml.halfOpenElement(ELEM_TIME).attribute(ATTR_STAMP, timestampString).closeEmptyElement(); xml.openElement(ELEM_PAYLOAD); - for (ExtensionElement element : payload.values()) { + for (XmlElement element : payload.values()) { xml.append(element.toXML(getNamespace())); } xml.closeElement(ELEM_PAYLOAD); diff --git a/smack-streammanagement/src/main/java/org/jivesoftware/smack/sm/packet/StreamManagement.java b/smack-streammanagement/src/main/java/org/jivesoftware/smack/sm/packet/StreamManagement.java index aa3840c42..6ccfefd5e 100644 --- a/smack-streammanagement/src/main/java/org/jivesoftware/smack/sm/packet/StreamManagement.java +++ b/smack-streammanagement/src/main/java/org/jivesoftware/smack/sm/packet/StreamManagement.java @@ -1,6 +1,6 @@ /** * - * Copyright © 2014-2018 Florian Schmaus + * Copyright © 2014-2021 Florian Schmaus * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -19,6 +19,8 @@ package org.jivesoftware.smack.sm.packet; import java.util.Collections; import java.util.List; +import javax.xml.namespace.QName; + import org.jivesoftware.smack.packet.ExtensionElement; import org.jivesoftware.smack.packet.Nonza; import org.jivesoftware.smack.packet.StanzaError; @@ -31,6 +33,8 @@ public class StreamManagement { public static final class StreamManagementFeature implements ExtensionElement { public static final String ELEMENT = "sm"; + public static final QName QNAME = new QName(NAMESPACE, ELEMENT); + public static final StreamManagementFeature INSTANCE = new StreamManagementFeature(); private StreamManagementFeature() { @@ -38,12 +42,12 @@ public class StreamManagement { @Override public String getElementName() { - return ELEMENT; + return QNAME.getLocalPart(); } @Override public String getNamespace() { - return NAMESPACE; + return QNAME.getNamespaceURI(); } @Override