mirror of
https://github.com/vanitasvitae/Smack.git
synced 2025-09-09 00:59:39 +02:00
Make ExtensionElement marker interface wrt. QNAME field
ExtensionElement is now a marker interface that requires all implementation non-abstract classes to carry a static final QNAME field (of type QName). This is verified by a new unit test. Also FullyQualifiedElement is renamed to simply XmlElement. XmlElement is used over ExtensionElement when implementing classes do not statically know the qualified name of the XML elements they represent. In general, XmlElement should be used sparingly, and every XML element should be modeled by its own Java class (implementing ExtensionElement).
This commit is contained in:
parent
5493a22e44
commit
3d4e7938a7
146 changed files with 600 additions and 344 deletions
|
@ -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() {
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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<FallbackIndicationElement> {
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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() {
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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<JingleContentDescriptionChildElement> payloads) {
|
||||
super(payloads);
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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<ExternalElement> externalPayloads = new ArrayList<>();
|
||||
private final List<ExtensionElement> wrappedPayloads = new ArrayList<>();
|
||||
private final List<XmlElement> wrappedPayloads = new ArrayList<>();
|
||||
private final boolean clear;
|
||||
private final boolean shell;
|
||||
|
||||
private FasteningElement(OriginIdElement originId,
|
||||
List<ExtensionElement> wrappedPayloads,
|
||||
List<XmlElement> wrappedPayloads,
|
||||
List<ExternalElement> externalPayloads,
|
||||
boolean clear,
|
||||
boolean shell) {
|
||||
|
@ -76,7 +78,7 @@ public final class FasteningElement implements ExtensionElement {
|
|||
*
|
||||
* @return wrapped payloads.
|
||||
*/
|
||||
public List<ExtensionElement> getWrappedPayloads() {
|
||||
public List<XmlElement> 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<ExtensionElement> wrappedPayloads = new ArrayList<>();
|
||||
private final List<XmlElement> wrappedPayloads = new ArrayList<>();
|
||||
private final List<ExternalElement> 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<ExtensionElement> wrappedPayloads) {
|
||||
public Builder addWrappedPayloads(List<XmlElement> wrappedPayloads) {
|
||||
this.wrappedPayloads.addAll(wrappedPayloads);
|
||||
return this;
|
||||
}
|
||||
|
|
|
@ -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<Fastening
|
|||
}
|
||||
|
||||
// Parse wrapped payload
|
||||
ExtensionElement wrappedPayload = PacketParserUtils.parseExtensionElement(name, namespace, parser, xmlEnvironment);
|
||||
XmlElement wrappedPayload = PacketParserUtils.parseExtensionElement(name, namespace, parser, xmlEnvironment);
|
||||
builder.addWrappedPayload(wrappedPayload);
|
||||
break;
|
||||
|
||||
|
|
|
@ -21,7 +21,7 @@ import javax.xml.namespace.QName;
|
|||
public class BlockQuoteElement extends MarkupElement.BlockLevelMarkupElement {
|
||||
|
||||
public static final String ELEMENT = "bquote";
|
||||
public static final QName QNAME = new QName(MarkupElement.NAMESPACE, ELEMENT);
|
||||
public static final QName QNAME = new QName(NAMESPACE, ELEMENT);
|
||||
|
||||
/**
|
||||
* Create a new Block Quote element.
|
||||
|
|
|
@ -16,9 +16,12 @@
|
|||
*/
|
||||
package org.jivesoftware.smackx.message_markup.element;
|
||||
|
||||
import javax.xml.namespace.QName;
|
||||
|
||||
public class CodeBlockElement extends MarkupElement.BlockLevelMarkupElement {
|
||||
|
||||
public static final String ELEMENT = "bcode";
|
||||
public static final QName QNAME = new QName(NAMESPACE, ELEMENT);
|
||||
|
||||
/**
|
||||
* Create a new Code Block element.
|
||||
|
|
|
@ -19,13 +19,15 @@ package org.jivesoftware.smackx.message_markup.element;
|
|||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import javax.xml.namespace.QName;
|
||||
|
||||
import org.jivesoftware.smack.packet.ExtensionElement;
|
||||
import org.jivesoftware.smack.util.XmlStringBuilder;
|
||||
|
||||
public class ListElement extends MarkupElement.NonEmptyChildElement {
|
||||
|
||||
public static final String ELEMENT = "list";
|
||||
public static final String ELEM_LI = "li";
|
||||
public static final QName QNAME = new QName(NAMESPACE, ELEMENT);
|
||||
|
||||
private final List<ListEntryElement> 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
|
||||
|
|
|
@ -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";
|
||||
|
||||
|
|
|
@ -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<SpanStyle> styles;
|
||||
|
||||
|
@ -60,7 +63,7 @@ public class SpanElement extends MarkupElement.NonEmptyChildElement {
|
|||
|
||||
@Override
|
||||
public String getElementName() {
|
||||
return ELEMENT;
|
||||
return QNAME.getLocalPart();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -99,7 +99,7 @@ public class MarkupElementProvider extends ExtensionElementProvider<MarkupElemen
|
|||
"Message Markup ListElement MUST contain a 'end' attribute.");
|
||||
break;
|
||||
|
||||
case ListElement.ELEM_LI:
|
||||
case ListElement.ListEntryElement.ELEMENT:
|
||||
start = ParserUtils.getIntegerAttributeOrThrow(parser, MarkupChildElement.ATTR_START,
|
||||
"Message Markup ListElement 'li' MUST contain a 'start' attribute.");
|
||||
lis.add(new ListElement.ListEntryElement(start));
|
||||
|
|
|
@ -25,6 +25,7 @@ import org.jivesoftware.smack.SmackException;
|
|||
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;
|
||||
import org.jivesoftware.smackx.message_retraction.element.RetractElement;
|
||||
|
|
|
@ -18,14 +18,18 @@ package org.jivesoftware.smackx.message_retraction.element;
|
|||
|
||||
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.util.XmlStringBuilder;
|
||||
|
||||
import org.jivesoftware.smackx.sid.element.OriginIdElement;
|
||||
|
||||
public class RetractedElement implements ExtensionElement {
|
||||
|
||||
public static final String ELEMENT = "retracted";
|
||||
public static final QName QNAME = new QName(RetractElement.NAMESPACE, ELEMENT);
|
||||
public static final String ATTR_STAMP = "stamp";
|
||||
|
||||
private final Date stamp;
|
||||
|
@ -46,12 +50,12 @@ public class RetractedElement implements ExtensionElement {
|
|||
|
||||
@Override
|
||||
public String getNamespace() {
|
||||
return RetractElement.NAMESPACE;
|
||||
return QNAME.getNamespaceURI();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getElementName() {
|
||||
return ELEMENT;
|
||||
return QNAME.getLocalPart();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -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.message_retraction.element.RetractElement;
|
||||
|
||||
public class RetractElementProvider extends ExtensionElementProvider<RetractElement> {
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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<ReferenceElement> getReferencesFromStanza(Stanza stanza) {
|
||||
List<ReferenceElement> references = new ArrayList<>();
|
||||
List<ExtensionElement> extensions = stanza.getExtensions(ReferenceElement.ELEMENT, ReferenceManager.NAMESPACE);
|
||||
for (ExtensionElement e : extensions) {
|
||||
references.add((ReferenceElement) e);
|
||||
List<ReferenceElement> 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
|
||||
|
|
|
@ -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<ReferenceElement
|
|||
// TODO: Should be SmackParseException and probably be factored into ParserUtils.
|
||||
throw new IOException(e);
|
||||
}
|
||||
ExtensionElement child = null;
|
||||
XmlElement child = null;
|
||||
outerloop: while (true) {
|
||||
XmlPullParser.Event eventType = parser.next();
|
||||
if (eventType == XmlPullParser.Event.START_ELEMENT) {
|
||||
|
|
|
@ -21,6 +21,8 @@ import java.util.HashMap;
|
|||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import javax.xml.namespace.QName;
|
||||
|
||||
import org.jivesoftware.smack.packet.ExtensionElement;
|
||||
import org.jivesoftware.smack.packet.Message;
|
||||
import org.jivesoftware.smack.util.StringUtils;
|
||||
|
@ -32,6 +34,7 @@ public class SpoilerElement implements ExtensionElement {
|
|||
|
||||
public static final String ELEMENT = "spoiler";
|
||||
public static final String NAMESPACE = SpoilerManager.NAMESPACE_0;
|
||||
public static final QName QNAME = new QName(NAMESPACE, ELEMENT);
|
||||
|
||||
public static final SpoilerElement EMPTY = new SpoilerElement(null, null);
|
||||
|
||||
|
@ -116,11 +119,10 @@ public class SpoilerElement implements ExtensionElement {
|
|||
return Collections.emptyMap();
|
||||
}
|
||||
|
||||
List<ExtensionElement> spoilers = message.getExtensions(SpoilerElement.ELEMENT, NAMESPACE);
|
||||
List<SpoilerElement> spoilers = message.getExtensions(SpoilerElement.class);
|
||||
Map<String, String> 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 {
|
||||
|
|
|
@ -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<AffixElement> otherAffixElements = new ArrayList<>();
|
||||
private final List<ExtensionElement> payloadItems = new ArrayList<>();
|
||||
private final List<XmlElement> 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 +
|
||||
|
|
|
@ -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<ExtensionElement> payloadElements;
|
||||
private final List<XmlElement> payloadElements;
|
||||
|
||||
public PayloadElement(List<ExtensionElement> payloadElements) {
|
||||
public PayloadElement(List<XmlElement> payloadElements) {
|
||||
this.payloadElements = Collections.unmodifiableList(payloadElements);
|
||||
}
|
||||
|
||||
public List<ExtensionElement> getItems() {
|
||||
public List<XmlElement> getItems() {
|
||||
return payloadElements;
|
||||
}
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
||||
/**
|
||||
|
|
|
@ -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<ContentElem
|
|||
if (tag == XmlPullParser.Event.START_ELEMENT) {
|
||||
String name = parser.getName();
|
||||
String namespace = parser.getNamespace();
|
||||
ExtensionElement element = PacketParserUtils.parseExtensionElement(name, namespace, parser, outerXmlEnvironment);
|
||||
XmlElement element = PacketParserUtils.parseExtensionElement(name, namespace, parser, outerXmlEnvironment);
|
||||
builder.addPayloadItem(element);
|
||||
}
|
||||
|
||||
|
|
|
@ -23,10 +23,10 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
|
|||
|
||||
import java.util.List;
|
||||
|
||||
import org.jivesoftware.smack.packet.ExtensionElement;
|
||||
import org.jivesoftware.smack.packet.Message;
|
||||
import org.jivesoftware.smack.packet.MessageBuilder;
|
||||
import org.jivesoftware.smack.packet.StanzaBuilder;
|
||||
import org.jivesoftware.smack.packet.XmlElement;
|
||||
import org.jivesoftware.smack.test.util.SmackTestSuite;
|
||||
|
||||
import org.jivesoftware.smackx.eme.element.ExplicitMessageEncryptionElement;
|
||||
|
@ -44,7 +44,7 @@ public class ExplicitMessageEncryptionElementTest extends SmackTestSuite {
|
|||
assertFalse(ExplicitMessageEncryptionElement.hasProtocol(message,
|
||||
ExplicitMessageEncryptionElement.ExplicitMessageEncryptionProtocol.omemoVAxolotl));
|
||||
|
||||
List<ExtensionElement> extensions = message.getExtensions();
|
||||
List<XmlElement> extensions = message.getExtensions();
|
||||
assertEquals(0, extensions.size());
|
||||
|
||||
MessageBuilder messageBuilder = StanzaBuilder.buildMessage();
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue