diff options
author | Tarun Gupta <tarun1995gupta@gmail.com> | 2015-06-15 22:20:01 (GMT) |
---|---|---|
committer | Tarun Gupta <tarun1995gupta@gmail.com> | 2015-06-16 19:16:43 (GMT) |
commit | 4addb6419080db814094ab501d69111adffeb5be (patch) | |
tree | d6259ab03817dd9fc0840a32a73aea9457ac4224 /src/com/isode/stroke/serializer | |
parent | 88392c931a8987f21caa5fa2e0717b8ce2514948 (diff) | |
download | stroke-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.java | 1 | ||||
-rw-r--r-- | src/com/isode/stroke/serializer/payloadserializers/IBBSerializer.java | 58 |
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 |