summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlex Clayton <alex.clayton@isode.com>2016-02-02 11:26:01 (GMT)
committerAlex Clayton <alex.clayton@isode.com>2016-02-04 10:09:21 (GMT)
commitbe72c822d3cffd840e753e01fe28857b081cf6f3 (patch)
treeae3fe8fe22175f9bfee89f0688b71ca377f7f1e9 /src/com/isode/stroke/serializer
parent2c9305a872e4ca958bfd86472c4540cc10d11a2f (diff)
downloadstroke-be72c822d3cffd840e753e01fe28857b081cf6f3.zip
stroke-be72c822d3cffd840e753e01fe28857b081cf6f3.tar.bz2
Add Block Parser and Serializer
Add BlockParser and BlockSerializer for the block payload classes. This required slightly different approach to the Swiften code as C++ templates are different to Java generics. In short needed to add a type hierachy to the Block payload classes and to the Parsers and Serilaizers associated with them. Test-information: Ran unit tests everything passed ok. Change-Id: I3ea2d66afd7cb3b5c4c3515be3a1ef99d7dbb566
Diffstat (limited to 'src/com/isode/stroke/serializer')
-rw-r--r--src/com/isode/stroke/serializer/payloadserializers/BlockBlockListPayloadSerializer.java27
-rw-r--r--src/com/isode/stroke/serializer/payloadserializers/BlockBlockPayloadSerializer.java27
-rw-r--r--src/com/isode/stroke/serializer/payloadserializers/BlockSerializer.java55
-rw-r--r--src/com/isode/stroke/serializer/payloadserializers/BlockUnblockPayloadSerializer.java26
4 files changed, 135 insertions, 0 deletions
diff --git a/src/com/isode/stroke/serializer/payloadserializers/BlockBlockListPayloadSerializer.java b/src/com/isode/stroke/serializer/payloadserializers/BlockBlockListPayloadSerializer.java
new file mode 100644
index 0000000..8556f6d
--- /dev/null
+++ b/src/com/isode/stroke/serializer/payloadserializers/BlockBlockListPayloadSerializer.java
@@ -0,0 +1,27 @@
+/* Copyright (c) 2016, Isode Limited, London, England.
+ * All rights reserved.
+ *
+ * Acquisition and use of this software and related materials for any
+ * purpose requires a written license agreement from Isode Limited,
+ * or a written license from an organisation licensed by Isode Limited
+ * to grant such a license.
+ *
+ */
+package com.isode.stroke.serializer.payloadserializers;
+
+import com.isode.stroke.elements.BlockListPayload;
+
+/**
+ * {@link BlockSerializer} for {@link BlockListPayload}
+ */
+public class BlockBlockListPayloadSerializer extends BlockSerializer<BlockListPayload> {
+
+ /**
+ * Constructor
+ * @param tag Tag
+ */
+ protected BlockBlockListPayloadSerializer(String tag) {
+ super(BlockListPayload.class, tag);
+ }
+
+}
diff --git a/src/com/isode/stroke/serializer/payloadserializers/BlockBlockPayloadSerializer.java b/src/com/isode/stroke/serializer/payloadserializers/BlockBlockPayloadSerializer.java
new file mode 100644
index 0000000..4800681
--- /dev/null
+++ b/src/com/isode/stroke/serializer/payloadserializers/BlockBlockPayloadSerializer.java
@@ -0,0 +1,27 @@
+/* Copyright (c) 2016, Isode Limited, London, England.
+ * All rights reserved.
+ *
+ * Acquisition and use of this software and related materials for any
+ * purpose requires a written license agreement from Isode Limited,
+ * or a written license from an organisation licensed by Isode Limited
+ * to grant such a license.
+ *
+ */
+package com.isode.stroke.serializer.payloadserializers;
+
+import com.isode.stroke.elements.BlockPayload;
+
+/**
+ * {@link BlockSerializer} for {@link BlockPayload}
+ */
+public class BlockBlockPayloadSerializer extends BlockSerializer<BlockPayload> {
+
+ /**
+ * Constructor
+ * @param tag Tag
+ */
+ public BlockBlockPayloadSerializer(String tag) {
+ super(BlockPayload.class, tag);
+ }
+
+}
diff --git a/src/com/isode/stroke/serializer/payloadserializers/BlockSerializer.java b/src/com/isode/stroke/serializer/payloadserializers/BlockSerializer.java
new file mode 100644
index 0000000..2bdfea9
--- /dev/null
+++ b/src/com/isode/stroke/serializer/payloadserializers/BlockSerializer.java
@@ -0,0 +1,55 @@
+/* Copyright (c) 2016, Isode Limited, London, England.
+ * All rights reserved.
+ *
+ * Acquisition and use of this software and related materials for any
+ * purpose requires a written license agreement from Isode Limited,
+ * or a written license from an organisation licensed by Isode Limited
+ * to grant such a license.
+ *
+ */
+package com.isode.stroke.serializer.payloadserializers;
+
+import com.isode.stroke.elements.AbstractBlockPayload;
+import com.isode.stroke.jid.JID;
+import com.isode.stroke.serializer.GenericPayloadSerializer;
+import com.isode.stroke.serializer.xml.XMLElement;
+
+/**
+ * Abstract class for serializing pay loads of type {@link AbstractBlockPayload}
+ *
+ * @param <T> Type of {@link AbstractBlockPayload} to serialize
+ */
+public abstract class BlockSerializer<T extends AbstractBlockPayload> extends GenericPayloadSerializer<T> {
+ /*
+ * Note this is slightly different to Swiften code as templates in C++ work
+ * different to Java Generics. In Swiften there exits a BlockSerialize template
+ * for which instances can be created of type <BlockPayload>, <BlockListPayload> and
+ * <UnblockPayload>. In Java as we need to pass an instance of the class to the constructor
+ * (which we can't do with generics) we need to create specific sub types for each of
+ * the different Block payloads.
+ */
+
+ private final String tag;
+
+ /**
+ * Constructor
+ * @param c Class of the {@link AbstractBlockPayload} that this will serialize
+ * @param tag Tag for the XML element to serialize
+ */
+ protected BlockSerializer(Class<T> c,String tag) {
+ super(c);
+ this.tag = tag;
+ }
+
+ @Override
+ protected String serializePayload(T payload) {
+ XMLElement element = new XMLElement(tag,"urn:xmpp:blocking");
+ for (JID jid : payload.getItems()) {
+ XMLElement item = new XMLElement("item");
+ item.setAttribute("jid", jid.toString());
+ element.addNode(item);
+ }
+ return element.serialize();
+ }
+
+}
diff --git a/src/com/isode/stroke/serializer/payloadserializers/BlockUnblockPayloadSerializer.java b/src/com/isode/stroke/serializer/payloadserializers/BlockUnblockPayloadSerializer.java
new file mode 100644
index 0000000..598b708
--- /dev/null
+++ b/src/com/isode/stroke/serializer/payloadserializers/BlockUnblockPayloadSerializer.java
@@ -0,0 +1,26 @@
+/* Copyright (c) 2016, Isode Limited, London, England.
+ * All rights reserved.
+ *
+ * Acquisition and use of this software and related materials for any
+ * purpose requires a written license agreement from Isode Limited,
+ * or a written license from an organisation licensed by Isode Limited
+ * to grant such a license.
+ *
+ */
+package com.isode.stroke.serializer.payloadserializers;
+
+import com.isode.stroke.elements.UnblockPayload;
+
+/**
+ * {@link BlockSerializer} for {@link UnblockPayload}
+ */
+public class BlockUnblockPayloadSerializer extends BlockSerializer<UnblockPayload> {
+
+ /**
+ * @param tag Tag
+ */
+ public BlockUnblockPayloadSerializer(String tag) {
+ super(UnblockPayload.class, tag);
+ }
+
+}