summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTarun Gupta <tarun1995gupta@gmail.com>2015-06-17 20:29:48 (GMT)
committerTarun Gupta <tarun1995gupta@gmail.com>2015-06-23 14:50:06 (GMT)
commit45e302d354d663eed61de58325ac162182497046 (patch)
treeb5115b957fc2d0d7ffecc43d6cf3c3cf64c94493 /src/com/isode/stroke/serializer
parentbb52f4e377fac262fe5b4f0ca2e1f6ed3669ee7d (diff)
downloadstroke-45e302d354d663eed61de58325ac162182497046.zip
stroke-45e302d354d663eed61de58325ac162182497046.tar.bz2
Add Roster Elements.
Adds RosterItemExchangePayload Element, its Parser and Serializer. Updates RosterItemPayload, its Parser and Serializer. License: This patch is BSD-licensed, see Documentation/Licenses/BSD-simplified.txt for details. Test-Information: Tests added for: RosterItemPayload Parser and Serializer. RosterItemExchangePayload Parser and Serializer. All tests passes. Change-Id: I8d16a18290d9820cea6839af1f075da00a25db09
Diffstat (limited to 'src/com/isode/stroke/serializer')
-rw-r--r--src/com/isode/stroke/serializer/payloadserializers/FullPayloadSerializerCollection.java1
-rw-r--r--src/com/isode/stroke/serializer/payloadserializers/RosterItemExchangeSerializer.java50
-rw-r--r--src/com/isode/stroke/serializer/payloadserializers/RosterSerializer.java9
3 files changed, 60 insertions, 0 deletions
diff --git a/src/com/isode/stroke/serializer/payloadserializers/FullPayloadSerializerCollection.java b/src/com/isode/stroke/serializer/payloadserializers/FullPayloadSerializerCollection.java
index 9b88d0c..9ad402c 100644
--- a/src/com/isode/stroke/serializer/payloadserializers/FullPayloadSerializerCollection.java
+++ b/src/com/isode/stroke/serializer/payloadserializers/FullPayloadSerializerCollection.java
@@ -31,6 +31,7 @@ public class FullPayloadSerializerCollection extends PayloadSerializerCollection
addSerializer(new JingleFileTransferHashSerializer());
addSerializer(new JingleContentPayloadSerializer());
addSerializer(new RosterSerializer());
+ addSerializer(new RosterItemExchangeSerializer());
addSerializer(new MUCPayloadSerializer());
addSerializer(new MUCDestroyPayloadSerializer());
addSerializer(new MUCAdminPayloadSerializer());
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
diff --git a/src/com/isode/stroke/serializer/payloadserializers/RosterSerializer.java b/src/com/isode/stroke/serializer/payloadserializers/RosterSerializer.java
index b75d217..6ec1e58 100644
--- a/src/com/isode/stroke/serializer/payloadserializers/RosterSerializer.java
+++ b/src/com/isode/stroke/serializer/payloadserializers/RosterSerializer.java
@@ -13,6 +13,7 @@ import com.isode.stroke.elements.RosterPayload;
import com.isode.stroke.serializer.GenericPayloadSerializer;
import com.isode.stroke.serializer.xml.XMLElement;
import com.isode.stroke.serializer.xml.XMLTextNode;
+import com.isode.stroke.serializer.xml.XMLRawTextNode;
/**
* Roster to string.
@@ -26,6 +27,9 @@ public class RosterSerializer extends GenericPayloadSerializer<RosterPayload> {
@Override
protected String serializePayload(RosterPayload roster) {
XMLElement queryElement = new XMLElement("query", "jabber:iq:roster");
+ if (roster.getVersion() != null) {
+ queryElement.setAttribute("ver", roster.getVersion());
+ }
for (RosterItemPayload item : roster.getItems()) {
XMLElement itemElement = new XMLElement("item");
itemElement.setAttribute("jid", item.getJID().toString());
@@ -53,6 +57,11 @@ public class RosterSerializer extends GenericPayloadSerializer<RosterPayload> {
itemElement.addNode(groupElement);
}
+
+ if (item.getUnknownContent().length() != 0) {
+ itemElement.addNode(new XMLRawTextNode(item.getUnknownContent()));
+ }
+
queryElement.addNode(itemElement);
}