1
0
Fork 0
mirror of https://codeberg.org/Mercury-IM/Smack synced 2025-09-09 10:19:41 +02:00

Rework XML Element hierarchy and XmlStringBuilder

- Reduce the amount of types that are subtypes of NamedElement. See
javadoc of NamedElement for rationale.
- Work more with XmlEnvironment in XmlStringBuilder.
- Some minor changes to XmlStringBuilder API.
This commit is contained in:
Florian Schmaus 2019-09-07 18:17:08 +02:00
parent e9bcdf3e6d
commit 65576cf3c2
74 changed files with 653 additions and 523 deletions

View file

@ -20,7 +20,6 @@ import java.nio.charset.Charset;
import java.util.Date;
import org.jivesoftware.smack.packet.ExtensionElement;
import org.jivesoftware.smack.packet.NamedElement;
import org.jivesoftware.smack.util.Objects;
import org.jivesoftware.smack.util.XmlStringBuilder;
@ -77,7 +76,7 @@ public class PubkeyElement implements ExtensionElement {
XmlStringBuilder xml = new XmlStringBuilder(this)
.optAttribute(ATTR_DATE, date)
.rightAngleBracket()
.element(getDataElement())
.append(getDataElement())
.closeElement(this);
return xml;
}
@ -85,7 +84,7 @@ public class PubkeyElement implements ExtensionElement {
/**
* Element that contains the base64 encoded public key.
*/
public static class PubkeyDataElement implements NamedElement {
public static class PubkeyDataElement implements ExtensionElement {
public static final String ELEMENT = "data";
@ -109,9 +108,14 @@ public class PubkeyElement implements ExtensionElement {
return ELEMENT;
}
@Override
public String getNamespace() {
return NAMESPACE;
}
@Override
public XmlStringBuilder toXML(org.jivesoftware.smack.packet.XmlEnvironment enclosingNamespace) {
XmlStringBuilder xml = new XmlStringBuilder(this)
XmlStringBuilder xml = new XmlStringBuilder(this, enclosingNamespace)
.rightAngleBracket()
.append(new String(b64Data, Charset.forName("UTF-8")))
.closeElement(this);

View file

@ -22,7 +22,6 @@ import java.util.Map;
import java.util.TreeMap;
import org.jivesoftware.smack.packet.ExtensionElement;
import org.jivesoftware.smack.packet.NamedElement;
import org.jivesoftware.smack.util.Objects;
import org.jivesoftware.smack.util.XmlStringBuilder;
@ -66,9 +65,7 @@ public final class PublicKeysListElement implements ExtensionElement {
@Override
public XmlStringBuilder toXML(org.jivesoftware.smack.packet.XmlEnvironment enclosingNamespace) {
XmlStringBuilder xml = new XmlStringBuilder(this).rightAngleBracket();
for (PubkeyMetadataElement metadataElement : metadata.values()) {
xml.element(metadataElement);
}
xml.append(metadata.values());
xml.closeElement(this);
return xml;
}
@ -92,7 +89,7 @@ public final class PublicKeysListElement implements ExtensionElement {
}
}
public static class PubkeyMetadataElement implements NamedElement {
public static class PubkeyMetadataElement implements ExtensionElement {
public static final String ELEMENT = "pubkey-metadata";
public static final String ATTR_V4_FINGERPRINT = "v4-fingerprint";
@ -123,6 +120,11 @@ public final class PublicKeysListElement implements ExtensionElement {
return ELEMENT;
}
@Override
public String getNamespace() {
return NAMESPACE;
}
@Override
public XmlStringBuilder toXML(org.jivesoftware.smack.packet.XmlEnvironment enclosingNamespace) {
XmlStringBuilder xml = new XmlStringBuilder(this)