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