From 3a37b71e193729a9714a9793fb444be513b774fc Mon Sep 17 00:00:00 2001 From: Florian Schmaus Date: Fri, 12 Sep 2014 11:03:26 +0200 Subject: [PATCH] Use XmlStringBuilder in AdHocCommandData also remove 'lang' attribute, since it belongs into IQ, see XEP-50 3.7: "The requester SHOULD provide its locale information using the "xml:lang" attribute on either the (RECOMMENDED) or element." --- .../smackx/commands/AdHocCommand.java | 2 +- .../commands/packet/AdHocCommandData.java | 67 ++++++++----------- 2 files changed, 29 insertions(+), 40 deletions(-) diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/commands/AdHocCommand.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/commands/AdHocCommand.java index cf44cb4c9..461f7a6ba 100755 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/commands/AdHocCommand.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/commands/AdHocCommand.java @@ -170,7 +170,7 @@ public abstract class AdHocCommand { } public String getRaw() { - return data.getChildElementXML(); + return data.getChildElementXML().toString(); } /** 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 354c80edc..a359538ab 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 @@ -19,6 +19,8 @@ package org.jivesoftware.smackx.commands.packet; import org.jivesoftware.smack.packet.IQ; import org.jivesoftware.smack.packet.PacketExtension; +import org.jivesoftware.smack.util.StringUtils; +import org.jivesoftware.smack.util.XmlStringBuilder; import org.jivesoftware.smackx.commands.AdHocCommand; import org.jivesoftware.smackx.commands.AdHocCommand.Action; import org.jivesoftware.smackx.commands.AdHocCommand.SpecificErrorCondition; @@ -35,6 +37,9 @@ import java.util.List; */ public class AdHocCommandData extends IQ { + public static final String ELEMENT = "command"; + public static final String NAMESPACE = "http://jabber.org/protocol/commands"; + /* JID of the command host */ private String id; @@ -61,61 +66,42 @@ public class AdHocCommandData extends IQ { private AdHocCommand.Action executeAction; - private String lang; - public AdHocCommandData() { } @Override - public String getChildElementXML() { - StringBuilder buf = new StringBuilder(); - buf.append(""); + public XmlStringBuilder getChildElementXML() { + XmlStringBuilder xml = new XmlStringBuilder(); + xml.halfOpenElement(ELEMENT).xmlnsAttribute(NAMESPACE); + xml.attribute("node", node); + xml.optAttribute("sessionid", sessionID); + xml.optAttribute("status", status); + xml.optAttribute("action", action); + xml.rightAngleBracket(); if (getType() == Type.result) { - buf.append(""); + xml.closeEmptyElement(); } else { - buf.append(">"); + xml.rightAngleBracket(); for (AdHocCommand.Action action : actions) { - buf.append("<").append(action).append("/>"); + xml.emptyElement(action); } - buf.append(""); + xml.closeElement("actions"); } } if (form != null) { - buf.append(form.toXML()); + xml.append(form.toXML()); } for (AdHocCommandNote note : notes) { - buf.append(""); - buf.append(note.getValue()); - buf.append(""); + xml.halfOpenElement("note").attribute("type", note.getType().toString()).rightAngleBracket(); + xml.append(note.getValue()); + xml.closeElement("note"); } // TODO ERRORS @@ -123,8 +109,8 @@ public class AdHocCommandData extends IQ { // buf.append(getError().toXML()); // } - buf.append(""); - return buf.toString(); + xml.closeElement(ELEMENT); + return xml; } /** @@ -239,6 +225,9 @@ public class AdHocCommandData extends IQ { } public void setSessionID(String sessionID) { + if (StringUtils.isNullOrEmpty(sessionID)) { + throw new IllegalArgumentException("session id must not be null or empty"); + } this.sessionID = sessionID; }