summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTarun Gupta <tarun1995gupta@gmail.com>2015-06-15 22:20:01 (GMT)
committerTarun Gupta <tarun1995gupta@gmail.com>2015-06-16 19:16:43 (GMT)
commit4addb6419080db814094ab501d69111adffeb5be (patch)
treed6259ab03817dd9fc0840a32a73aea9457ac4224 /src/com/isode/stroke/serializer
parent88392c931a8987f21caa5fa2e0717b8ce2514948 (diff)
downloadstroke-4addb6419080db814094ab501d69111adffeb5be.zip
stroke-4addb6419080db814094ab501d69111adffeb5be.tar.bz2
Add IBB Element.
Adds IBB Element, its Parser and Serializer. License: This patch is BSD-licensed, see Documentation/Licenses/BSD-simplified.txt for details. Test-Information: Tests added for both IBB Parser and Serializer, which passes. Change-Id: I0f2657de89d5395652c62ee5d5a88fbe9acb25e9
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/IBBSerializer.java58
2 files changed, 59 insertions, 0 deletions
diff --git a/src/com/isode/stroke/serializer/payloadserializers/FullPayloadSerializerCollection.java b/src/com/isode/stroke/serializer/payloadserializers/FullPayloadSerializerCollection.java
index a273fa0..d8f90c3 100644
--- a/src/com/isode/stroke/serializer/payloadserializers/FullPayloadSerializerCollection.java
+++ b/src/com/isode/stroke/serializer/payloadserializers/FullPayloadSerializerCollection.java
@@ -23,6 +23,7 @@ public class FullPayloadSerializerCollection extends PayloadSerializerCollection
//addSerializer(new PrioritySerializer());
addSerializer(new ErrorSerializer());
addSerializer(new InBandRegistrationPayloadSerializer());
+ addSerializer(new IBBSerializer());
addSerializer(new RosterSerializer());
addSerializer(new MUCPayloadSerializer());
addSerializer(new MUCDestroyPayloadSerializer());
diff --git a/src/com/isode/stroke/serializer/payloadserializers/IBBSerializer.java b/src/com/isode/stroke/serializer/payloadserializers/IBBSerializer.java
new file mode 100644
index 0000000..cb2f88c
--- /dev/null
+++ b/src/com/isode/stroke/serializer/payloadserializers/IBBSerializer.java
@@ -0,0 +1,58 @@
+/*
+ * Copyright (c) 2010 Isode Limited.
+ * All rights reserved.
+ * See the COPYING file 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.IBB;
+import com.isode.stroke.stringcodecs.Base64;
+import com.isode.stroke.base.NotNull;
+
+public class IBBSerializer extends GenericPayloadSerializer<IBB> {
+
+ public IBBSerializer() {
+ super(IBB.class);
+ }
+
+ public String serializePayload(IBB ibb) {
+ switch(ibb.getAction()) {
+ case Data: {
+ XMLElement ibbElement = new XMLElement("data", "http://jabber.org/protocol/ibb");
+ ibbElement.setAttribute("sid", ibb.getStreamID());
+ if (ibb.getSequenceNumber() >= 0) {
+ ibbElement.setAttribute("seq", Integer.toString(ibb.getSequenceNumber()));
+ }
+ ibbElement.addNode(new XMLTextNode(Base64.encode(ibb.getData())));
+ return ibbElement.serialize();
+ }
+ case Open: {
+ XMLElement ibbElement = new XMLElement("open", "http://jabber.org/protocol/ibb");
+ ibbElement.setAttribute("sid", ibb.getStreamID());
+ switch (ibb.getStanzaType()) {
+ case IQStanza: ibbElement.setAttribute("stanza", "iq"); break;
+ case MessageStanza: ibbElement.setAttribute("stanza", "message"); break;
+ }
+ assert(ibb.getBlockSize() > 0);
+ ibbElement.setAttribute("block-size", Integer.toString(ibb.getBlockSize()));
+ return ibbElement.serialize();
+ }
+ case Close: {
+ XMLElement ibbElement = new XMLElement("close", "http://jabber.org/protocol/ibb");
+ ibbElement.setAttribute("sid", ibb.getStreamID());
+ return ibbElement.serialize();
+ }
+ }
+ assert(false);
+ return "";
+ }
+} \ No newline at end of file