1
0
Fork 0
mirror of https://github.com/vanitasvitae/Smack.git synced 2025-09-09 17:19:39 +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

@ -16,6 +16,7 @@
*/
package org.jivesoftware.smackx.hoxt.packet;
import org.jivesoftware.smack.packet.ExtensionElement;
import org.jivesoftware.smack.packet.IQ;
import org.jivesoftware.smack.packet.NamedElement;
import org.jivesoftware.smack.util.Objects;
@ -145,12 +146,19 @@ public abstract class AbstractHttpOverXmpp extends IQ {
protected abstract B getThis();
}
private abstract static class HoxExtensionElement implements ExtensionElement {
@Override
public final String getNamespace() {
return NAMESPACE;
}
}
/**
* Representation of Data element.
* <p>
* This class is immutable.
*/
public static class Data implements NamedElement {
public static class Data extends HoxExtensionElement {
public static final String ELEMENT = "data";
@ -172,9 +180,9 @@ public abstract class AbstractHttpOverXmpp extends IQ {
*/
@Override
public XmlStringBuilder toXML(org.jivesoftware.smack.packet.XmlEnvironment enclosingNamespace) {
XmlStringBuilder xml = new XmlStringBuilder(this);
XmlStringBuilder xml = new XmlStringBuilder(this, enclosingNamespace);
xml.rightAngleBracket();
xml.element(child);
xml.append(child);
xml.closeElement(this);
return xml;
}
@ -199,7 +207,7 @@ public abstract class AbstractHttpOverXmpp extends IQ {
* <p>
* This class is immutable.
*/
public static class Text implements NamedElement {
public static class Text extends HoxExtensionElement {
public static final String ELEMENT = "text";
@ -216,7 +224,7 @@ public abstract class AbstractHttpOverXmpp extends IQ {
@Override
public XmlStringBuilder toXML(org.jivesoftware.smack.packet.XmlEnvironment enclosingNamespace) {
XmlStringBuilder xml = new XmlStringBuilder(this);
XmlStringBuilder xml = new XmlStringBuilder(this, enclosingNamespace);
xml.rightAngleBracket();
xml.optAppend(text);
xml.closeElement(this);
@ -243,7 +251,7 @@ public abstract class AbstractHttpOverXmpp extends IQ {
* <p>
* This class is immutable.
*/
public static class Base64 implements NamedElement {
public static class Base64 extends HoxExtensionElement {
public static final String ELEMENT = "base64";
@ -260,7 +268,7 @@ public abstract class AbstractHttpOverXmpp extends IQ {
@Override
public XmlStringBuilder toXML(org.jivesoftware.smack.packet.XmlEnvironment enclosingNamespace) {
XmlStringBuilder xml = new XmlStringBuilder(this);
XmlStringBuilder xml = new XmlStringBuilder(this, enclosingNamespace);
xml.rightAngleBracket();
xml.optAppend(text);
xml.closeElement(this);
@ -287,7 +295,7 @@ public abstract class AbstractHttpOverXmpp extends IQ {
* <p>
* This class is immutable.
*/
public static class Xml implements NamedElement {
public static class Xml extends HoxExtensionElement {
public static final String ELEMENT = "xml";
@ -304,7 +312,7 @@ public abstract class AbstractHttpOverXmpp extends IQ {
@Override
public XmlStringBuilder toXML(org.jivesoftware.smack.packet.XmlEnvironment enclosingNamespace) {
XmlStringBuilder xml = new XmlStringBuilder(this);
XmlStringBuilder xml = new XmlStringBuilder(this, enclosingNamespace);
xml.rightAngleBracket();
xml.optAppend(text);
xml.closeElement(this);
@ -331,7 +339,7 @@ public abstract class AbstractHttpOverXmpp extends IQ {
* <p>
* This class is immutable.
*/
public static class ChunkedBase64 implements NamedElement {
public static class ChunkedBase64 extends HoxExtensionElement {
public static final String ELEMENT = "chunkedBase64";
@ -348,7 +356,7 @@ public abstract class AbstractHttpOverXmpp extends IQ {
@Override
public XmlStringBuilder toXML(org.jivesoftware.smack.packet.XmlEnvironment enclosingNamespace) {
XmlStringBuilder xml = new XmlStringBuilder(this);
XmlStringBuilder xml = new XmlStringBuilder(this, enclosingNamespace);
xml.attribute("streamId", streamId);
xml.closeEmptyElement();
return xml;
@ -374,7 +382,7 @@ public abstract class AbstractHttpOverXmpp extends IQ {
* <p>
* This class is immutable.
*/
public static class Ibb implements NamedElement {
public static class Ibb extends HoxExtensionElement {
public static final String ELEMENT = "ibb";
@ -391,7 +399,7 @@ public abstract class AbstractHttpOverXmpp extends IQ {
@Override
public XmlStringBuilder toXML(org.jivesoftware.smack.packet.XmlEnvironment enclosingNamespace) {
XmlStringBuilder xml = new XmlStringBuilder(this);
XmlStringBuilder xml = new XmlStringBuilder(this, enclosingNamespace);
xml.attribute("sid", sid);
xml.closeEmptyElement();
return xml;

View file

@ -1,6 +1,6 @@
/**
*
* Copyright © 2016 Florian Schmaus
* Copyright © 2016-2019 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.NamedElement;
import org.jivesoftware.smack.packet.ExtensionElement;
import org.jivesoftware.smack.util.XmlStringBuilder;
public abstract class SetData implements NamedElement {
public abstract class SetData implements ExtensionElement {
public enum Type {
BOOL,
@ -76,6 +76,11 @@ public abstract class SetData implements NamedElement {
return getType().toString();
}
@Override
public final String getNamespace() {
return IoTSetRequest.NAMESPACE;
}
/**
* Returns the XML representation of this Element.
*
@ -83,7 +88,7 @@ public abstract class SetData implements NamedElement {
*/
@Override
public final XmlStringBuilder toXML(org.jivesoftware.smack.packet.XmlEnvironment enclosingNamespace) {
XmlStringBuilder xml = new XmlStringBuilder(this);
XmlStringBuilder xml = new XmlStringBuilder(this, enclosingNamespace);
xml.attribute("name", name);
xml.attribute("value", value);
xml.closeEmptyElement();

View file

@ -0,0 +1,28 @@
/**
*
* Copyright 2019 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.smackx.iot.data.element;
import org.jivesoftware.smack.packet.ExtensionElement;
public abstract class IoTDataExtensionElement implements ExtensionElement {
@Override
public final String getNamespace() {
return IoTFieldsExtension.NAMESPACE;
}
}

View file

@ -16,10 +16,9 @@
*/
package org.jivesoftware.smackx.iot.data.element;
import org.jivesoftware.smack.packet.NamedElement;
import org.jivesoftware.smack.util.XmlStringBuilder;
public abstract class IoTDataField implements NamedElement {
public abstract class IoTDataField extends IoTDataExtensionElement {
enum Type {
integer("int"),
@ -53,7 +52,7 @@ public abstract class IoTDataField implements NamedElement {
@Override
public final XmlStringBuilder toXML(org.jivesoftware.smack.packet.XmlEnvironment enclosingNamespace) {
XmlStringBuilder xml = new XmlStringBuilder(this);
XmlStringBuilder xml = new XmlStringBuilder(this, enclosingNamespace);
xml.attribute("name", name).attribute("value", getValueString());
// TODO handle 'unit' attribute as special case if <numeric/> is implemented.
xml.closeEmptyElement();

View file

@ -19,12 +19,10 @@ package org.jivesoftware.smackx.iot.data.element;
import java.util.Collections;
import java.util.List;
import org.jivesoftware.smack.packet.NamedElement;
import org.jivesoftware.smack.util.XmlStringBuilder;
import org.jivesoftware.smackx.iot.element.NodeInfo;
public class NodeElement implements NamedElement {
public class NodeElement extends IoTDataExtensionElement {
public static final String ELEMENT = "node";
@ -51,7 +49,7 @@ public class NodeElement implements NamedElement {
@Override
public XmlStringBuilder toXML(org.jivesoftware.smack.packet.XmlEnvironment enclosingNamespace) {
XmlStringBuilder xml = new XmlStringBuilder(this);
XmlStringBuilder xml = new XmlStringBuilder(this, enclosingNamespace);
nodeInfo.appendTo(xml);
xml.rightAngleBracket();

View file

@ -20,10 +20,9 @@ import java.util.Collections;
import java.util.Date;
import java.util.List;
import org.jivesoftware.smack.packet.NamedElement;
import org.jivesoftware.smack.util.XmlStringBuilder;
public class TimestampElement implements NamedElement {
public class TimestampElement extends IoTDataExtensionElement {
public static final String ELEMENT = "timestamp";
@ -46,7 +45,7 @@ public class TimestampElement implements NamedElement {
@Override
public XmlStringBuilder toXML(org.jivesoftware.smack.packet.XmlEnvironment enclosingNamespace) {
XmlStringBuilder xml = new XmlStringBuilder(this);
XmlStringBuilder xml = new XmlStringBuilder(this, enclosingNamespace);
xml.attribute("value", date);
xml.rightAngleBracket();

View file

@ -52,7 +52,7 @@ public class Checksum implements ExtensionElement {
sb.optAttribute(ATTR_CREATOR, creator);
sb.optAttribute(ATTR_NAME, name);
sb.rightAngleBracket();
sb.element(file);
sb.append(file);
sb.closeElement(this);
return sb;
}

View file

@ -1,6 +1,6 @@
/**
*
* Copyright 2017 Paul Schaub
* Copyright 2017 Paul Schaub, 2019 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,7 @@ package org.jivesoftware.smackx.jingle_filetransfer.element;
import java.io.File;
import java.util.Date;
import org.jivesoftware.smack.packet.XmlEnvironment;
import org.jivesoftware.smack.util.XmlStringBuilder;
import org.jivesoftware.smackx.hashes.element.HashElement;
@ -27,8 +28,10 @@ import org.jivesoftware.smackx.jingle.element.JingleContentDescriptionChildEleme
/**
* Content of type File.
*/
public class JingleFileTransferChild extends JingleContentDescriptionChildElement {
public class JingleFileTransferChild implements JingleContentDescriptionChildElement {
public static final String ELEMENT = "file";
public static final String NAMESPACE = JingleFileTransfer.NAMESPACE_V5;
public static final String ELEM_DATE = "date";
public static final String ELEM_DESC = "desc";
public static final String ELEM_MEDIA_TYPE = "media-type";
@ -87,8 +90,13 @@ public class JingleFileTransferChild extends JingleContentDescriptionChildElemen
}
@Override
public CharSequence toXML(org.jivesoftware.smack.packet.XmlEnvironment enclosingNamespace) {
XmlStringBuilder sb = new XmlStringBuilder(this);
public String getNamespace() {
return NAMESPACE;
}
@Override
public XmlStringBuilder toXML(XmlEnvironment enclosingNamespace) {
XmlStringBuilder sb = new XmlStringBuilder(this, enclosingNamespace);
sb.rightAngleBracket();
sb.optElement(ELEM_DATE, date);

View file

@ -16,7 +16,7 @@
*/
package org.jivesoftware.smackx.jingle_filetransfer.element;
import org.jivesoftware.smack.packet.NamedElement;
import org.jivesoftware.smack.packet.FullyQualifiedElement;
import org.jivesoftware.smack.util.XmlStringBuilder;
import org.jivesoftware.smackx.hashes.element.HashElement;
@ -24,9 +24,11 @@ import org.jivesoftware.smackx.hashes.element.HashElement;
/**
* RangeElement which specifies, which range of a file shall be transferred.
*/
public class Range implements NamedElement {
public class Range implements FullyQualifiedElement {
public static final String ELEMENT = "range";
public static final String NAMESPACE = JingleFileTransferChild.NAMESPACE;
public static final String ATTR_OFFSET = "offset";
public static final String ATTR_LENGTH = "length";
@ -99,6 +101,11 @@ public class Range implements NamedElement {
return ELEMENT;
}
@Override
public String getNamespace() {
return NAMESPACE;
}
@Override
public CharSequence toXML(org.jivesoftware.smack.packet.XmlEnvironment enclosingNamespace) {
XmlStringBuilder sb = new XmlStringBuilder(this);
@ -108,7 +115,7 @@ public class Range implements NamedElement {
if (hash != null) {
sb.rightAngleBracket();
sb.element(hash);
sb.append(hash);
sb.closeElement(this);
} else {
sb.closeEmptyElement();

View file

@ -126,15 +126,14 @@ public class MamElements {
}
@Override
public CharSequence toXML(org.jivesoftware.smack.packet.XmlEnvironment enclosingNamespace) {
XmlStringBuilder xml = new XmlStringBuilder();
xml.halfOpenElement(this);
xml.xmlnsAttribute(NAMESPACE);
public XmlStringBuilder toXML(org.jivesoftware.smack.packet.XmlEnvironment enclosingNamespace) {
XmlStringBuilder xml = new XmlStringBuilder(this, enclosingNamespace);
xml.optAttribute("queryid", getQueryId());
xml.optAttribute("id", getId());
xml.rightAngleBracket();
xml.element(getForwarded());
xml.append(getForwarded());
xml.closeElement(this);
return xml;

View file

@ -124,7 +124,7 @@ public class MamFinIQ extends IQ {
xml.setEmptyElement();
} else {
xml.rightAngleBracket();
xml.element(rsmSet);
xml.append(rsmSet);
}
return xml;
}

View file

@ -134,12 +134,12 @@ public class MamPrefsIQ extends IQ {
if (alwaysJids != null) {
MamElements.AlwaysJidListElement alwaysElement = new AlwaysJidListElement(alwaysJids);
xml.element(alwaysElement);
xml.append(alwaysElement);
}
if (neverJids != null) {
MamElements.NeverJidListElement neverElement = new NeverJidListElement(neverJids);
xml.element(neverElement);
xml.append(neverElement);
}
return xml;

View file

@ -16,14 +16,10 @@
*/
package org.jivesoftware.smackx.message_markup.element;
import org.jivesoftware.smack.util.XmlStringBuilder;
public class BlockQuoteElement implements MarkupElement.BlockLevelMarkupElement {
public class BlockQuoteElement extends MarkupElement.BlockLevelMarkupElement {
public static final String ELEMENT = "bquote";
private final int start, end;
/**
* Create a new Block Quote element.
*
@ -31,18 +27,7 @@ public class BlockQuoteElement implements MarkupElement.BlockLevelMarkupElement
* @param end end index
*/
public BlockQuoteElement(int start, int end) {
this.start = start;
this.end = end;
}
@Override
public int getStart() {
return start;
}
@Override
public int getEnd() {
return end;
super(start, end);
}
@Override
@ -50,13 +35,4 @@ public class BlockQuoteElement implements MarkupElement.BlockLevelMarkupElement
return ELEMENT;
}
@Override
public XmlStringBuilder toXML(org.jivesoftware.smack.packet.XmlEnvironment enclosingNamespace) {
XmlStringBuilder xml = new XmlStringBuilder();
xml.halfOpenElement(this);
xml.attribute(ATTR_START, getStart());
xml.attribute(ATTR_END, getEnd());
xml.closeEmptyElement();
return xml;
}
}

View file

@ -16,14 +16,10 @@
*/
package org.jivesoftware.smackx.message_markup.element;
import org.jivesoftware.smack.util.XmlStringBuilder;
public class CodeBlockElement implements MarkupElement.BlockLevelMarkupElement {
public class CodeBlockElement extends MarkupElement.BlockLevelMarkupElement {
public static final String ELEMENT = "bcode";
private final int start, end;
/**
* Create a new Code Block element.
*
@ -31,18 +27,7 @@ public class CodeBlockElement implements MarkupElement.BlockLevelMarkupElement {
* @param end end index
*/
public CodeBlockElement(int start, int end) {
this.start = start;
this.end = end;
}
@Override
public int getStart() {
return start;
}
@Override
public int getEnd() {
return end;
super(start, end);
}
@Override
@ -50,13 +35,4 @@ public class CodeBlockElement implements MarkupElement.BlockLevelMarkupElement {
return ELEMENT;
}
@Override
public XmlStringBuilder toXML(org.jivesoftware.smack.packet.XmlEnvironment enclosingNamespace) {
XmlStringBuilder xml = new XmlStringBuilder();
xml.halfOpenElement(this);
xml.attribute(ATTR_START, getStart());
xml.attribute(ATTR_END, getEnd());
xml.closeEmptyElement();
return xml;
}
}

View file

@ -19,15 +19,14 @@ package org.jivesoftware.smackx.message_markup.element;
import java.util.Collections;
import java.util.List;
import org.jivesoftware.smack.packet.NamedElement;
import org.jivesoftware.smack.packet.ExtensionElement;
import org.jivesoftware.smack.util.XmlStringBuilder;
public class ListElement implements MarkupElement.MarkupChildElement {
public class ListElement extends MarkupElement.NonEmptyChildElement {
public static final String ELEMENT = "list";
public static final String ELEM_LI = "li";
private final int start, end;
private final List<ListEntryElement> entries;
/**
@ -38,21 +37,10 @@ public class ListElement implements MarkupElement.MarkupChildElement {
* @param entries list entries
*/
public ListElement(int start, int end, List<ListEntryElement> entries) {
this.start = start;
this.end = end;
super(start, end);
this.entries = Collections.unmodifiableList(entries);
}
@Override
public int getStart() {
return start;
}
@Override
public int getEnd() {
return end;
}
/**
* Return a list of all list entries.
*
@ -68,22 +56,11 @@ public class ListElement implements MarkupElement.MarkupChildElement {
}
@Override
public CharSequence toXML(org.jivesoftware.smack.packet.XmlEnvironment enclosingNamespace) {
XmlStringBuilder xml = new XmlStringBuilder();
xml.halfOpenElement(this);
xml.attribute(ATTR_START, getStart());
xml.attribute(ATTR_END, getEnd());
xml.rightAngleBracket();
for (ListEntryElement li : getEntries()) {
xml.append(li.toXML());
}
xml.closeElement(this);
return xml;
public void appendInnerXml(XmlStringBuilder xml) {
xml.append(getEntries());
}
public static class ListEntryElement implements NamedElement {
public static class ListEntryElement implements ExtensionElement {
private final int start;
@ -109,11 +86,15 @@ public class ListElement implements MarkupElement.MarkupChildElement {
return ELEM_LI;
}
@Override
public String getNamespace() {
return MarkupElement.NAMESPACE;
}
@Override
public XmlStringBuilder toXML(org.jivesoftware.smack.packet.XmlEnvironment enclosingNamespace) {
XmlStringBuilder xml = new XmlStringBuilder();
xml.halfOpenElement(this);
xml.attribute(ATTR_START, getStart());
XmlStringBuilder xml = new XmlStringBuilder(this, enclosingNamespace);
xml.attribute(MarkupElement.MarkupChildElement.ATTR_START, getStart());
xml.closeEmptyElement();
return xml;
}

View file

@ -22,7 +22,6 @@ import java.util.List;
import java.util.Set;
import org.jivesoftware.smack.packet.ExtensionElement;
import org.jivesoftware.smack.packet.NamedElement;
import org.jivesoftware.smack.util.XmlStringBuilder;
public class MarkupElement implements ExtensionElement {
@ -267,46 +266,89 @@ public class MarkupElement implements ExtensionElement {
}
}
/**
* Interface for child elements.
*/
public interface MarkupChildElement extends NamedElement {
public abstract static class MarkupChildElement implements ExtensionElement {
String ATTR_START = "start";
String ATTR_END = "end";
public static final String ATTR_START = "start";
public static final String ATTR_END = "end";
private final int start, end;
protected MarkupChildElement(int start, int end) {
this.start = start;
this.end = end;
}
/**
* Return the start index of this element.
*
* @return start index
*/
int getStart();
public final int getStart() {
return start;
}
/**
* Return the end index of this element.
*
* @return end index
*/
int getEnd();
public final int getEnd() {
return end;
}
@Override
public final String getNamespace() {
return NAMESPACE;
}
@Override
public final XmlStringBuilder toXML(org.jivesoftware.smack.packet.XmlEnvironment enclosingNamespace) {
XmlStringBuilder xml = new XmlStringBuilder(this, enclosingNamespace);
xml.attribute(ATTR_START, getStart());
xml.attribute(ATTR_END, getEnd());
afterXmlPrelude(xml);
return xml;
}
protected abstract void afterXmlPrelude(XmlStringBuilder xml);
}
public abstract static class NonEmptyChildElement extends MarkupChildElement {
protected NonEmptyChildElement(int start, int end) {
super(start, end);
}
@Override
protected final void afterXmlPrelude(XmlStringBuilder xml) {
xml.rightAngleBracket();
appendInnerXml(xml);
xml.closeElement(this);
}
protected abstract void appendInnerXml(XmlStringBuilder xml);
}
/**
* Interface for block level child elements.
*/
public interface BlockLevelMarkupElement extends MarkupChildElement {
public abstract static class BlockLevelMarkupElement extends MarkupChildElement {
protected BlockLevelMarkupElement(int start, int end) {
super(start, end);
}
@Override
protected final void afterXmlPrelude(XmlStringBuilder xml) {
xml.closeEmptyElement();
}
}
}

View file

@ -21,11 +21,10 @@ import java.util.Set;
import org.jivesoftware.smack.util.XmlStringBuilder;
public class SpanElement implements MarkupElement.MarkupChildElement {
public class SpanElement extends MarkupElement.NonEmptyChildElement {
public static final String ELEMENT = "span";
private final int start, end;
private final Set<SpanStyle> styles;
/**
@ -36,21 +35,10 @@ public class SpanElement implements MarkupElement.MarkupChildElement {
* @param styles list of styles that apply to this span
*/
public SpanElement(int start, int end, Set<SpanStyle> styles) {
this.start = start;
this.end = end;
super(start, end);
this.styles = Collections.unmodifiableSet(styles);
}
@Override
public int getStart() {
return start;
}
@Override
public int getEnd() {
return end;
}
/**
* Return all styles of this span.
*
@ -76,18 +64,9 @@ public class SpanElement implements MarkupElement.MarkupChildElement {
}
@Override
public XmlStringBuilder toXML(org.jivesoftware.smack.packet.XmlEnvironment enclosingNamespace) {
XmlStringBuilder xml = new XmlStringBuilder();
xml.halfOpenElement(this);
xml.attribute(ATTR_START, getStart());
xml.attribute(ATTR_END, getEnd());
xml.rightAngleBracket();
protected void appendInnerXml(XmlStringBuilder xml) {
for (SpanStyle style : getStyles()) {
xml.halfOpenElement(style.toString()).closeEmptyElement();
xml.emptyElement(style);
}
xml.closeElement(this);
return xml;
}
}

View file

@ -62,7 +62,7 @@ public class MUCLightAffiliationsIQ extends IQ {
Iterator<Map.Entry<Jid, MUCLightAffiliation>> it = affiliations.entrySet().iterator();
while (it.hasNext()) {
Map.Entry<Jid, MUCLightAffiliation> pair = it.next();
xml.element(new UserWithAffiliationElement(pair.getKey(), pair.getValue()));
xml.append(new UserWithAffiliationElement(pair.getKey(), pair.getValue()));
}
return xml;

View file

@ -90,7 +90,7 @@ public class MUCLightBlockingIQ extends IQ {
Iterator<Map.Entry<Jid, Boolean>> it = map.entrySet().iterator();
while (it.hasNext()) {
Map.Entry<Jid, Boolean> pair = it.next();
xml.element(new BlockingElement(pair.getKey(), pair.getValue(), isRoom));
xml.append(new BlockingElement(pair.getKey(), pair.getValue(), isRoom));
}
}

View file

@ -71,7 +71,7 @@ public class MUCLightChangeAffiliationsIQ extends IQ {
Iterator<Map.Entry<Jid, MUCLightAffiliation>> it = affiliations.entrySet().iterator();
while (it.hasNext()) {
Map.Entry<Jid, MUCLightAffiliation> pair = it.next();
xml.element(new UserWithAffiliationElement(pair.getKey(), pair.getValue()));
xml.append(new UserWithAffiliationElement(pair.getKey(), pair.getValue()));
}
}

View file

@ -52,7 +52,7 @@ public class MUCLightConfigurationIQ extends IQ {
protected IQChildElementXmlStringBuilder getIQChildElementBuilder(IQChildElementXmlStringBuilder xml) {
xml.rightAngleBracket();
xml.optElement("version", version);
xml.element(new ConfigurationElement(configuration));
xml.append(new ConfigurationElement(configuration));
return xml;
}

View file

@ -99,10 +99,10 @@ public class MUCLightCreateIQ extends IQ {
@Override
protected IQChildElementXmlStringBuilder getIQChildElementBuilder(IQChildElementXmlStringBuilder xml) {
xml.rightAngleBracket();
xml.element(new ConfigurationElement(configuration));
xml.append(new ConfigurationElement(configuration));
if (!occupants.isEmpty()) {
xml.element(new OccupantsElement(occupants));
xml.append(new OccupantsElement(occupants));
}
return xml;

View file

@ -104,7 +104,7 @@ public abstract class MUCLightElements {
Iterator<Map.Entry<Jid, MUCLightAffiliation>> it = affiliations.entrySet().iterator();
while (it.hasNext()) {
Map.Entry<Jid, MUCLightAffiliation> pair = it.next();
xml.element(new UserWithAffiliationElement(pair.getKey(), pair.getValue()));
xml.append(new UserWithAffiliationElement(pair.getKey(), pair.getValue()));
}
xml.closeElement(this);
@ -303,7 +303,7 @@ public abstract class MUCLightElements {
Iterator<Map.Entry<Jid, MUCLightAffiliation>> it = occupants.entrySet().iterator();
while (it.hasNext()) {
Map.Entry<Jid, MUCLightAffiliation> pair = it.next();
xml.element(new UserWithAffiliationElement(pair.getKey(), pair.getValue()));
xml.append(new UserWithAffiliationElement(pair.getKey(), pair.getValue()));
}
xml.closeElement("occupants");

View file

@ -62,8 +62,8 @@ public class MUCLightInfoIQ extends IQ {
protected IQChildElementXmlStringBuilder getIQChildElementBuilder(IQChildElementXmlStringBuilder xml) {
xml.rightAngleBracket();
xml.optElement("version", version);
xml.element(new ConfigurationElement(configuration));
xml.element(new OccupantsElement(occupants));
xml.append(new ConfigurationElement(configuration));
xml.append(new OccupantsElement(occupants));
return xml;
}

View file

@ -115,7 +115,7 @@ public class EnablePushNotificationsIQ extends IQ {
dataForm.addField(field.build());
}
xml.element(dataForm);
xml.append(dataForm);
}
return xml;

View file

@ -131,12 +131,7 @@ public class SpoilerElement implements ExtensionElement {
return map;
}
/**
* Return the language of the hint.
* May be null.
*
* @return language of hint text
*/
@Override
public String getLanguage() {
return language;
}
@ -153,8 +148,7 @@ public class SpoilerElement implements ExtensionElement {
@Override
public CharSequence toXML(org.jivesoftware.smack.packet.XmlEnvironment enclosingNamespace) {
XmlStringBuilder xml = new XmlStringBuilder(this);
xml.optXmlLangAttribute(getLanguage());
XmlStringBuilder xml = new XmlStringBuilder(this, enclosingNamespace);
if (getHint() == null) {
xml.closeEmptyElement();
} else {