summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/isode/stroke/serializer/payloadserializers/RosterItemExchangeSerializer.java')
-rw-r--r--src/com/isode/stroke/serializer/payloadserializers/RosterItemExchangeSerializer.java50
1 files changed, 50 insertions, 0 deletions
diff --git a/src/com/isode/stroke/serializer/payloadserializers/RosterItemExchangeSerializer.java b/src/com/isode/stroke/serializer/payloadserializers/RosterItemExchangeSerializer.java
new file mode 100644
index 0000000..3aaab00
--- /dev/null
+++ b/src/com/isode/stroke/serializer/payloadserializers/RosterItemExchangeSerializer.java
@@ -0,0 +1,50 @@
+/*
+ * Copyright (c) 2011 Jan Kaluza
+ * Licensed under the Simplified BSD license.
+ * See Documentation/Licenses/BSD-simplified.txt for more information.
+ */
+/*
+ * Copyright (c) 2015 Tarun Gupta.
+ * Licensed under the simplified BSD license.
+ * See Documentation/Licenses/BSD-simplified.txt for more information.
+ */
+
+package com.isode.stroke.serializer.payloadserializers;
+
+import com.isode.stroke.serializer.GenericPayloadSerializer;
+import com.isode.stroke.serializer.xml.XMLTextNode;
+import com.isode.stroke.serializer.xml.XMLElement;
+import com.isode.stroke.elements.RosterItemExchangePayload;
+import com.isode.stroke.base.NotNull;
+
+public class RosterItemExchangeSerializer extends GenericPayloadSerializer<RosterItemExchangePayload> {
+
+ public RosterItemExchangeSerializer() {
+ super(RosterItemExchangePayload.class);
+ }
+
+ public String serializePayload(RosterItemExchangePayload roster) {
+ XMLElement queryElement = new XMLElement("x", "http://jabber.org/protocol/rosterx");
+ for(RosterItemExchangePayload.Item item : roster.getItems()) {
+ XMLElement itemElement = new XMLElement("item");
+ itemElement.setAttribute("jid", item.getJID().toString());
+ itemElement.setAttribute("name", item.getName());
+
+ switch (item.getAction()) {
+ case Add: itemElement.setAttribute("action", "add"); break;
+ case Modify: itemElement.setAttribute("action", "modify"); break;
+ case Delete: itemElement.setAttribute("action", "delete"); break;
+ }
+
+ for(String group : item.getGroups()) {
+ XMLElement groupElement = new XMLElement("group");
+ groupElement.addNode(new XMLTextNode(group));
+ itemElement.addNode(groupElement);
+ }
+
+ queryElement.addNode(itemElement);
+ }
+
+ return queryElement.serialize();
+ }
+} \ No newline at end of file