mirror of
https://codeberg.org/Mercury-IM/Smack
synced 2024-11-22 22:32:06 +01:00
Add XmlStringBuilder API for Date
Fixes XEP-0080 GeoLoc timestamp element formating
This commit is contained in:
parent
64d134052d
commit
5272680d47
1 changed files with 61 additions and 0 deletions
|
@ -17,10 +17,12 @@
|
||||||
package org.jivesoftware.smack.util;
|
package org.jivesoftware.smack.util;
|
||||||
|
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
import org.jivesoftware.smack.packet.Element;
|
import org.jivesoftware.smack.packet.Element;
|
||||||
import org.jivesoftware.smack.packet.NamedElement;
|
import org.jivesoftware.smack.packet.NamedElement;
|
||||||
import org.jivesoftware.smack.packet.ExtensionElement;
|
import org.jivesoftware.smack.packet.ExtensionElement;
|
||||||
|
import org.jxmpp.util.XmppDateTime;
|
||||||
|
|
||||||
public class XmlStringBuilder implements Appendable, CharSequence {
|
public class XmlStringBuilder implements Appendable, CharSequence {
|
||||||
public static final String RIGHT_ANGLE_BRACKET = Character.toString('>');
|
public static final String RIGHT_ANGLE_BRACKET = Character.toString('>');
|
||||||
|
@ -65,6 +67,19 @@ public class XmlStringBuilder implements Appendable, CharSequence {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* Add a new element to this builder, with the {@link java.util.Date} instance as its content,
|
||||||
|
* which will get formated with {@link XmppDateTime#formatXEP0082Date(Date)}.
|
||||||
|
*
|
||||||
|
* @param name element name
|
||||||
|
* @param content content of element
|
||||||
|
* @return this XmlStringBuilder
|
||||||
|
*/
|
||||||
|
public XmlStringBuilder element(String name, Date content) {
|
||||||
|
assert content != null;
|
||||||
|
return element(name, XmppDateTime.formatXEP0082Date(content));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
* Add a new element to this builder.
|
* Add a new element to this builder.
|
||||||
*
|
*
|
||||||
* @param name
|
* @param name
|
||||||
|
@ -93,6 +108,22 @@ public class XmlStringBuilder implements Appendable, CharSequence {
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add a new element to this builder, with the {@link java.util.Date} instance as its content,
|
||||||
|
* which will get formated with {@link XmppDateTime#formatXEP0082Date(Date)}
|
||||||
|
* if {@link java.util.Date} instance is not <code>null</code>.
|
||||||
|
*
|
||||||
|
* @param name element name
|
||||||
|
* @param content content of element
|
||||||
|
* @return this XmlStringBuilder
|
||||||
|
*/
|
||||||
|
public XmlStringBuilder optElement(String name, Date content) {
|
||||||
|
if (content != null) {
|
||||||
|
element(name, content);
|
||||||
|
}
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
public XmlStringBuilder optElement(String name, CharSequence content) {
|
public XmlStringBuilder optElement(String name, CharSequence content) {
|
||||||
if (content != null) {
|
if (content != null) {
|
||||||
element(name, content.toString());
|
element(name, content.toString());
|
||||||
|
@ -171,6 +202,7 @@ public class XmlStringBuilder implements Appendable, CharSequence {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Add a right angle bracket '>'.
|
* Add a right angle bracket '>'.
|
||||||
|
*
|
||||||
* @return a reference to this object
|
* @return a reference to this object
|
||||||
* @deprecated use {@link #rightAngleBracket()} instead
|
* @deprecated use {@link #rightAngleBracket()} instead
|
||||||
*/
|
*/
|
||||||
|
@ -194,6 +226,19 @@ public class XmlStringBuilder implements Appendable, CharSequence {
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add a new attribute to this builder, with the {@link java.util.Date} instance as its value,
|
||||||
|
* which will get formated with {@link XmppDateTime#formatXEP0082Date(Date)}.
|
||||||
|
*
|
||||||
|
* @param name name of attribute
|
||||||
|
* @param value value of attribute
|
||||||
|
* @return this XmlStringBuilder
|
||||||
|
*/
|
||||||
|
public XmlStringBuilder attribute(String name, Date value) {
|
||||||
|
assert value != null;
|
||||||
|
return attribute(name, XmppDateTime.formatXEP0082Date(value));
|
||||||
|
}
|
||||||
|
|
||||||
public XmlStringBuilder attribute(String name, CharSequence value) {
|
public XmlStringBuilder attribute(String name, CharSequence value) {
|
||||||
return attribute(name, value.toString());
|
return attribute(name, value.toString());
|
||||||
}
|
}
|
||||||
|
@ -216,6 +261,22 @@ public class XmlStringBuilder implements Appendable, CharSequence {
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add a new attribute to this builder, with the {@link java.util.Date} instance as its value,
|
||||||
|
* which will get formated with {@link XmppDateTime#formatXEP0082Date(Date)}
|
||||||
|
* if {@link java.util.Date} instance is not <code>null</code>.
|
||||||
|
*
|
||||||
|
* @param name attribute name
|
||||||
|
* @param value value of this attribute
|
||||||
|
* @return this XmlStringBuilder
|
||||||
|
*/
|
||||||
|
public XmlStringBuilder optAttribute(String name, Date value) {
|
||||||
|
if (value != null) {
|
||||||
|
attribute(name, value);
|
||||||
|
}
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
public XmlStringBuilder optAttribute(String name, CharSequence value) {
|
public XmlStringBuilder optAttribute(String name, CharSequence value) {
|
||||||
if (value != null) {
|
if (value != null) {
|
||||||
attribute(name, value.toString());
|
attribute(name, value.toString());
|
||||||
|
|
Loading…
Reference in a new issue