summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTarun Gupta <tarun1995gupta@gmail.com>2015-07-16 21:51:13 (GMT)
committerNick Hudson <nick.hudson@isode.com>2015-07-28 10:41:23 (GMT)
commit6f84f6a65b8b80e2f599dff76da0cd13fbead611 (patch)
tree9a4b503a82d58cfc4884817945fcd26a0c0f9ba4 /src/com/isode/stroke/serializer
parent9a419f5fff0701e672e241a515ce3e91438b3e1b (diff)
downloadstroke-6f84f6a65b8b80e2f599dff76da0cd13fbead611.zip
stroke-6f84f6a65b8b80e2f599dff76da0cd13fbead611.tar.bz2
Update Serializers and Parsers.
Updates Serializers and Parsers along with one minor change in XMPPlayer. Update Non Payload Serializers to return SafeByteArray. Updates SafeByteArray to return SafeByteArray on append and plus method. License: This patch is BSD-licensed, see Documentation/Licenses/BSD-simplified.txt for details. Test-Information: None. Change-Id: I6fe665a26b10cac37b3e3acd9ec15c211ac9b8ab
Diffstat (limited to 'src/com/isode/stroke/serializer')
-rw-r--r--src/com/isode/stroke/serializer/AuthChallengeSerializer.java7
-rw-r--r--src/com/isode/stroke/serializer/AuthFailureSerializer.java5
-rw-r--r--src/com/isode/stroke/serializer/AuthRequestSerializer.java14
-rw-r--r--src/com/isode/stroke/serializer/AuthResponseSerializer.java13
-rw-r--r--src/com/isode/stroke/serializer/AuthSuccessSerializer.java7
-rw-r--r--src/com/isode/stroke/serializer/ComponentHandshakeSerializer.java5
-rw-r--r--src/com/isode/stroke/serializer/CompressFailureSerializer.java7
-rw-r--r--src/com/isode/stroke/serializer/CompressRequestSerializer.java7
-rw-r--r--src/com/isode/stroke/serializer/ElementSerializer.java3
-rw-r--r--src/com/isode/stroke/serializer/EnableStreamManagementSerializer.java7
-rw-r--r--src/com/isode/stroke/serializer/GenericStanzaSerializer.java8
-rw-r--r--src/com/isode/stroke/serializer/IQSerializer.java6
-rw-r--r--src/com/isode/stroke/serializer/MessageSerializer.java6
-rw-r--r--src/com/isode/stroke/serializer/PayloadSerializerCollection.java6
-rw-r--r--src/com/isode/stroke/serializer/PresenceSerializer.java7
-rw-r--r--src/com/isode/stroke/serializer/StanzaAckRequestSerializer.java7
-rw-r--r--src/com/isode/stroke/serializer/StanzaAckSerializer.java7
-rw-r--r--src/com/isode/stroke/serializer/StanzaSerializer.java22
-rw-r--r--src/com/isode/stroke/serializer/StartTLSFailureSerializer.java7
-rw-r--r--src/com/isode/stroke/serializer/StartTLSRequestSerializer.java7
-rw-r--r--src/com/isode/stroke/serializer/StreamErrorSerializer.java5
-rw-r--r--src/com/isode/stroke/serializer/StreamFeaturesSerializer.java5
-rw-r--r--src/com/isode/stroke/serializer/StreamManagementEnabledSerializer.java7
-rw-r--r--src/com/isode/stroke/serializer/StreamManagementFailedSerializer.java7
-rw-r--r--src/com/isode/stroke/serializer/StreamResumeSerializer.java7
-rw-r--r--src/com/isode/stroke/serializer/StreamResumedSerializer.java7
-rw-r--r--src/com/isode/stroke/serializer/TLSProceedSerializer.java5
-rw-r--r--src/com/isode/stroke/serializer/XMPPSerializer.java17
-rw-r--r--src/com/isode/stroke/serializer/payloadserializers/ForwardedSerializer.java6
-rw-r--r--src/com/isode/stroke/serializer/payloadserializers/FullPayloadSerializerCollection.java2
30 files changed, 142 insertions, 84 deletions
diff --git a/src/com/isode/stroke/serializer/AuthChallengeSerializer.java b/src/com/isode/stroke/serializer/AuthChallengeSerializer.java
index def242b..a27e16a 100644
--- a/src/com/isode/stroke/serializer/AuthChallengeSerializer.java
+++ b/src/com/isode/stroke/serializer/AuthChallengeSerializer.java
@@ -13,14 +13,15 @@ import com.isode.stroke.base.ByteArray;
import com.isode.stroke.elements.AuthChallenge;
import com.isode.stroke.elements.Element;
import com.isode.stroke.stringcodecs.Base64;
+import com.isode.stroke.base.SafeByteArray;
-class AuthChallengeSerializer extends GenericElementSerializer<AuthChallenge> {
+public class AuthChallengeSerializer extends GenericElementSerializer<AuthChallenge> {
public AuthChallengeSerializer() {
super(AuthChallenge.class);
}
- public String serialize(Element element) {
+ public SafeByteArray serialize(Element element) {
AuthChallenge authChallenge = (AuthChallenge)element;
String value = "";
ByteArray message = authChallenge.getValue();
@@ -32,7 +33,7 @@ class AuthChallengeSerializer extends GenericElementSerializer<AuthChallenge> {
value = Base64.encode(message);
}
}
- return "<challenge xmlns=\"urn:ietf:params:xml:ns:xmpp-sasl\">" + value + "</challenge>";
+ return new SafeByteArray("<challenge xmlns=\"urn:ietf:params:xml:ns:xmpp-sasl\">" + value + "</challenge>");
}
}
diff --git a/src/com/isode/stroke/serializer/AuthFailureSerializer.java b/src/com/isode/stroke/serializer/AuthFailureSerializer.java
index 339c11e..cec8806 100644
--- a/src/com/isode/stroke/serializer/AuthFailureSerializer.java
+++ b/src/com/isode/stroke/serializer/AuthFailureSerializer.java
@@ -12,6 +12,7 @@ package com.isode.stroke.serializer;
import com.isode.stroke.elements.AuthFailure;
import com.isode.stroke.elements.Element;
import com.isode.stroke.serializer.xml.XMLElement;
+import com.isode.stroke.base.SafeByteArray;
class AuthFailureSerializer extends GenericElementSerializer<AuthFailure>{
@@ -19,8 +20,8 @@ class AuthFailureSerializer extends GenericElementSerializer<AuthFailure>{
super(AuthFailure.class);
}
- public String serialize(Element element) {
- return new XMLElement("failure", "urn:ietf:params:xml:ns:xmpp-sasl").serialize();
+ public SafeByteArray serialize(Element element) {
+ return new SafeByteArray(new XMLElement("failure", "urn:ietf:params:xml:ns:xmpp-sasl").serialize());
}
}
diff --git a/src/com/isode/stroke/serializer/AuthRequestSerializer.java b/src/com/isode/stroke/serializer/AuthRequestSerializer.java
index 318eab8..cfb2878 100644
--- a/src/com/isode/stroke/serializer/AuthRequestSerializer.java
+++ b/src/com/isode/stroke/serializer/AuthRequestSerializer.java
@@ -9,30 +9,30 @@
package com.isode.stroke.serializer;
-import com.isode.stroke.base.ByteArray;
+import com.isode.stroke.base.SafeByteArray;
import com.isode.stroke.elements.AuthRequest;
import com.isode.stroke.elements.Element;
import com.isode.stroke.stringcodecs.Base64;
-class AuthRequestSerializer extends GenericElementSerializer<AuthRequest> {
+public class AuthRequestSerializer extends GenericElementSerializer<AuthRequest> {
public AuthRequestSerializer() {
super(AuthRequest.class);
}
- public String serialize(Element element) {
+ public SafeByteArray serialize(Element element) {
AuthRequest authRequest = (AuthRequest)element;
- String value = "";
- ByteArray message = authRequest.getMessage();
+ SafeByteArray value = new SafeByteArray();
+ SafeByteArray message = authRequest.getMessage();
if (message != null) {
if (message.isEmpty()) {
- value = "=";
+ value = new SafeByteArray("=");
}
else {
value = Base64.encode(message);
}
}
- return "<auth xmlns=\"urn:ietf:params:xml:ns:xmpp-sasl\" mechanism=\"" + authRequest.getMechanism() + "\">" + value + "</auth>";
+ return new SafeByteArray("<auth xmlns=\"urn:ietf:params:xml:ns:xmpp-sasl\" mechanism=\"" + authRequest.getMechanism() + "\">").append(value).append("</auth>");
}
} \ No newline at end of file
diff --git a/src/com/isode/stroke/serializer/AuthResponseSerializer.java b/src/com/isode/stroke/serializer/AuthResponseSerializer.java
index 97bf91a..c0c72c4 100644
--- a/src/com/isode/stroke/serializer/AuthResponseSerializer.java
+++ b/src/com/isode/stroke/serializer/AuthResponseSerializer.java
@@ -9,27 +9,28 @@
package com.isode.stroke.serializer;
import com.isode.stroke.base.ByteArray;
+import com.isode.stroke.base.SafeByteArray;
import com.isode.stroke.elements.AuthResponse;
import com.isode.stroke.elements.Element;
import com.isode.stroke.stringcodecs.Base64;
-class AuthResponseSerializer extends GenericElementSerializer<AuthResponse> {
+public class AuthResponseSerializer extends GenericElementSerializer<AuthResponse> {
public AuthResponseSerializer() {
super(AuthResponse.class);
}
- public String serialize(Element element) {
+ public SafeByteArray serialize(Element element) {
AuthResponse authResponse = (AuthResponse) element;
- String value = "";
- ByteArray message = authResponse.getValue();
+ SafeByteArray value = new SafeByteArray();
+ SafeByteArray message = authResponse.getValue();
if (message != null) {
if (message.isEmpty()) {
- value = "";
+ value = new SafeByteArray("");
} else {
value = Base64.encode(message);
}
}
- return "<response xmlns=\"urn:ietf:params:xml:ns:xmpp-sasl\">" + value + "</response>";
+ return new SafeByteArray("<response xmlns=\"urn:ietf:params:xml:ns:xmpp-sasl\">").append(value).append("</response>");
}
}
diff --git a/src/com/isode/stroke/serializer/AuthSuccessSerializer.java b/src/com/isode/stroke/serializer/AuthSuccessSerializer.java
index 1a303bc..2f0901e 100644
--- a/src/com/isode/stroke/serializer/AuthSuccessSerializer.java
+++ b/src/com/isode/stroke/serializer/AuthSuccessSerializer.java
@@ -9,18 +9,19 @@
package com.isode.stroke.serializer;
import com.isode.stroke.base.ByteArray;
+import com.isode.stroke.base.SafeByteArray;
import com.isode.stroke.elements.AuthSuccess;
import com.isode.stroke.elements.Element;
import com.isode.stroke.stringcodecs.Base64;
-class AuthSuccessSerializer extends GenericElementSerializer<AuthSuccess> {
+public class AuthSuccessSerializer extends GenericElementSerializer<AuthSuccess> {
public AuthSuccessSerializer() {
super(AuthSuccess.class);
}
- public String serialize(Element element) {
+ public SafeByteArray serialize(Element element) {
AuthSuccess authSuccess = (AuthSuccess)element;
String value = "";
ByteArray message = authSuccess.getValue();
@@ -32,7 +33,7 @@ class AuthSuccessSerializer extends GenericElementSerializer<AuthSuccess> {
value = Base64.encode(message);
}
}
- return "<success xmlns=\"urn:ietf:params:xml:ns:xmpp-sasl\">" + value + "</success>";
+ return new SafeByteArray("<success xmlns=\"urn:ietf:params:xml:ns:xmpp-sasl\">" + value + "</success>");
}
}
diff --git a/src/com/isode/stroke/serializer/ComponentHandshakeSerializer.java b/src/com/isode/stroke/serializer/ComponentHandshakeSerializer.java
index a320941..54fa578 100644
--- a/src/com/isode/stroke/serializer/ComponentHandshakeSerializer.java
+++ b/src/com/isode/stroke/serializer/ComponentHandshakeSerializer.java
@@ -14,6 +14,7 @@ package com.isode.stroke.serializer;
import com.isode.stroke.serializer.GenericElementSerializer;
import com.isode.stroke.elements.ComponentHandshake;
import com.isode.stroke.elements.Element;
+import com.isode.stroke.base.SafeByteArray;
public class ComponentHandshakeSerializer extends GenericElementSerializer<ComponentHandshake> {
@@ -21,8 +22,8 @@ public class ComponentHandshakeSerializer extends GenericElementSerializer<Compo
super(ComponentHandshake.class);
}
- public String serialize(Element element) {
+ public SafeByteArray serialize(Element element) {
ComponentHandshake handshake = (ComponentHandshake)(element);
- return ("<handshake>" + handshake.getData() + "</handshake>");
+ return new SafeByteArray("<handshake>" + handshake.getData() + "</handshake>");
}
} \ No newline at end of file
diff --git a/src/com/isode/stroke/serializer/CompressFailureSerializer.java b/src/com/isode/stroke/serializer/CompressFailureSerializer.java
index 9bfa7e6..63dbf76 100644
--- a/src/com/isode/stroke/serializer/CompressFailureSerializer.java
+++ b/src/com/isode/stroke/serializer/CompressFailureSerializer.java
@@ -12,15 +12,16 @@ package com.isode.stroke.serializer;
import com.isode.stroke.elements.CompressFailure;
import com.isode.stroke.elements.Element;
import com.isode.stroke.serializer.xml.XMLElement;
+import com.isode.stroke.base.SafeByteArray;
-class CompressFailureSerializer extends GenericElementSerializer<CompressFailure> {
+public class CompressFailureSerializer extends GenericElementSerializer<CompressFailure> {
public CompressFailureSerializer() {
super(CompressFailure.class);
}
- public String serialize(Element element) {
- return new XMLElement("failure", "http://jabber.org/protocol/compress").serialize();
+ public SafeByteArray serialize(Element element) {
+ return new SafeByteArray(new XMLElement("failure", "http://jabber.org/protocol/compress").serialize());
}
}
diff --git a/src/com/isode/stroke/serializer/CompressRequestSerializer.java b/src/com/isode/stroke/serializer/CompressRequestSerializer.java
index bb2328b..1377b7b 100644
--- a/src/com/isode/stroke/serializer/CompressRequestSerializer.java
+++ b/src/com/isode/stroke/serializer/CompressRequestSerializer.java
@@ -10,15 +10,16 @@ package com.isode.stroke.serializer;
import com.isode.stroke.elements.CompressRequest;
import com.isode.stroke.elements.Element;
+import com.isode.stroke.base.SafeByteArray;
-class CompressRequestSerializer implements ElementSerializer {
+public class CompressRequestSerializer implements ElementSerializer {
public CompressRequestSerializer() {
}
- public String serialize(Element element) {
+ public SafeByteArray serialize(Element element) {
CompressRequest compressRequest = (CompressRequest) element;
- return "<compress xmlns='http://jabber.org/protocol/compress'><method>" + compressRequest.getMethod() + "</method></compress>";
+ return new SafeByteArray("<compress xmlns='http://jabber.org/protocol/compress'><method>" + compressRequest.getMethod() + "</method></compress>");
}
public boolean canSerialize(Element element) {
diff --git a/src/com/isode/stroke/serializer/ElementSerializer.java b/src/com/isode/stroke/serializer/ElementSerializer.java
index 2c8c800..a08c531 100644
--- a/src/com/isode/stroke/serializer/ElementSerializer.java
+++ b/src/com/isode/stroke/serializer/ElementSerializer.java
@@ -10,8 +10,9 @@
package com.isode.stroke.serializer;
import com.isode.stroke.elements.Element;
+import com.isode.stroke.base.SafeByteArray;
public interface ElementSerializer {
- String serialize(Element element);
+ SafeByteArray serialize(Element element);
boolean canSerialize(Element element);
}
diff --git a/src/com/isode/stroke/serializer/EnableStreamManagementSerializer.java b/src/com/isode/stroke/serializer/EnableStreamManagementSerializer.java
index 7d984a6..f1cb90d 100644
--- a/src/com/isode/stroke/serializer/EnableStreamManagementSerializer.java
+++ b/src/com/isode/stroke/serializer/EnableStreamManagementSerializer.java
@@ -12,15 +12,16 @@ package com.isode.stroke.serializer;
import com.isode.stroke.elements.Element;
import com.isode.stroke.elements.EnableStreamManagement;
import com.isode.stroke.serializer.xml.XMLElement;
+import com.isode.stroke.base.SafeByteArray;
-class EnableStreamManagementSerializer extends GenericElementSerializer<EnableStreamManagement> {
+public class EnableStreamManagementSerializer extends GenericElementSerializer<EnableStreamManagement> {
public EnableStreamManagementSerializer() {
super(EnableStreamManagement.class);
}
- public String serialize(Element element) {
- return new XMLElement("enable", "urn:xmpp:sm:2").serialize();
+ public SafeByteArray serialize(Element element) {
+ return new SafeByteArray(new XMLElement("enable", "urn:xmpp:sm:2").serialize());
}
}
diff --git a/src/com/isode/stroke/serializer/GenericStanzaSerializer.java b/src/com/isode/stroke/serializer/GenericStanzaSerializer.java
index 9bcd7e2..309a7c9 100644
--- a/src/com/isode/stroke/serializer/GenericStanzaSerializer.java
+++ b/src/com/isode/stroke/serializer/GenericStanzaSerializer.java
@@ -16,8 +16,12 @@ public abstract class GenericStanzaSerializer<T extends Stanza> extends StanzaSe
private final Class stanzaClass_;
- GenericStanzaSerializer(Class stanzaClass, String tag, PayloadSerializerCollection payloadSerializers) {
- super(tag, payloadSerializers);
+ public GenericStanzaSerializer(Class stanzaClass, String tag, PayloadSerializerCollection payloadSerializers) {
+ this(stanzaClass, tag, payloadSerializers, null);
+ }
+
+ public GenericStanzaSerializer(Class stanzaClass, String tag, PayloadSerializerCollection payloadSerializers, String explicitNS) {
+ super(tag, payloadSerializers, explicitNS);
stanzaClass_ = stanzaClass;
}
diff --git a/src/com/isode/stroke/serializer/IQSerializer.java b/src/com/isode/stroke/serializer/IQSerializer.java
index 8e4e340..b97197c 100644
--- a/src/com/isode/stroke/serializer/IQSerializer.java
+++ b/src/com/isode/stroke/serializer/IQSerializer.java
@@ -14,7 +14,11 @@ import com.isode.stroke.serializer.xml.XMLElement;
public class IQSerializer extends GenericStanzaSerializer<IQ> {
public IQSerializer(PayloadSerializerCollection payloadSerializers) {
- super(IQ.class, "iq", payloadSerializers);
+ this(payloadSerializers, null);
+ }
+
+ public IQSerializer(PayloadSerializerCollection payloadSerializers, String explicitNS) {
+ super(IQ.class, "iq", payloadSerializers, explicitNS);
}
@Override
diff --git a/src/com/isode/stroke/serializer/MessageSerializer.java b/src/com/isode/stroke/serializer/MessageSerializer.java
index e293f1e..f827194 100644
--- a/src/com/isode/stroke/serializer/MessageSerializer.java
+++ b/src/com/isode/stroke/serializer/MessageSerializer.java
@@ -11,7 +11,11 @@ import com.isode.stroke.serializer.xml.XMLElement;
public class MessageSerializer extends GenericStanzaSerializer<Message>{
public MessageSerializer(PayloadSerializerCollection payloadSerializers) {
- super(Message.class, "message", payloadSerializers);
+ this(payloadSerializers, null);
+ }
+
+ public MessageSerializer(PayloadSerializerCollection payloadSerializers, String explicitNS) {
+ super(Message.class, "message", payloadSerializers, explicitNS);
}
@Override
diff --git a/src/com/isode/stroke/serializer/PayloadSerializerCollection.java b/src/com/isode/stroke/serializer/PayloadSerializerCollection.java
index b89ae87..9a5d604 100644
--- a/src/com/isode/stroke/serializer/PayloadSerializerCollection.java
+++ b/src/com/isode/stroke/serializer/PayloadSerializerCollection.java
@@ -21,6 +21,12 @@ public class PayloadSerializerCollection {
}
}
+ public void removeSerializer(PayloadSerializer serializer) {
+ while(serializers_.contains(serializer)) {
+ serializers_.remove(serializer);
+ }
+ }
+
public PayloadSerializer getPayloadSerializer(Payload payload) {
synchronized (serializers_) {
for (PayloadSerializer serializer : serializers_) {
diff --git a/src/com/isode/stroke/serializer/PresenceSerializer.java b/src/com/isode/stroke/serializer/PresenceSerializer.java
index 6611c8c..49d6db9 100644
--- a/src/com/isode/stroke/serializer/PresenceSerializer.java
+++ b/src/com/isode/stroke/serializer/PresenceSerializer.java
@@ -9,8 +9,13 @@ import com.isode.stroke.elements.Presence;
import com.isode.stroke.serializer.xml.XMLElement;
public class PresenceSerializer extends GenericStanzaSerializer<Presence> {
+
public PresenceSerializer(PayloadSerializerCollection payloadSerializers) {
- super(Presence.class, "presence", payloadSerializers);
+ this(payloadSerializers, null);
+}
+
+public PresenceSerializer(PayloadSerializerCollection payloadSerializers, String explicitNS) {
+ super(Presence.class, "presence", payloadSerializers, explicitNS);
}
@Override
diff --git a/src/com/isode/stroke/serializer/StanzaAckRequestSerializer.java b/src/com/isode/stroke/serializer/StanzaAckRequestSerializer.java
index 0d6aed7..98314d8 100644
--- a/src/com/isode/stroke/serializer/StanzaAckRequestSerializer.java
+++ b/src/com/isode/stroke/serializer/StanzaAckRequestSerializer.java
@@ -12,15 +12,16 @@ package com.isode.stroke.serializer;
import com.isode.stroke.elements.Element;
import com.isode.stroke.elements.StanzaAckRequest;
import com.isode.stroke.serializer.xml.XMLElement;
+import com.isode.stroke.base.SafeByteArray;
-class StanzaAckRequestSerializer extends GenericElementSerializer<StanzaAckRequest> {
+public class StanzaAckRequestSerializer extends GenericElementSerializer<StanzaAckRequest> {
public StanzaAckRequestSerializer() {
super(StanzaAckRequest.class);
}
- public String serialize(Element element) {
- return new XMLElement("r", "urn:xmpp:sm:2").serialize();
+ public SafeByteArray serialize(Element element) {
+ return new SafeByteArray(new XMLElement("r", "urn:xmpp:sm:2").serialize());
}
}
diff --git a/src/com/isode/stroke/serializer/StanzaAckSerializer.java b/src/com/isode/stroke/serializer/StanzaAckSerializer.java
index a909164..675a657 100644
--- a/src/com/isode/stroke/serializer/StanzaAckSerializer.java
+++ b/src/com/isode/stroke/serializer/StanzaAckSerializer.java
@@ -11,18 +11,19 @@ package com.isode.stroke.serializer;
import com.isode.stroke.elements.Element;
import com.isode.stroke.elements.StanzaAck;
import com.isode.stroke.serializer.xml.XMLElement;
+import com.isode.stroke.base.SafeByteArray;
-class StanzaAckSerializer extends GenericElementSerializer<StanzaAck> {
+public class StanzaAckSerializer extends GenericElementSerializer<StanzaAck> {
public StanzaAckSerializer() {
super(StanzaAck.class);
}
- public String serialize(Element element) {
+ public SafeByteArray serialize(Element element) {
StanzaAck stanzaAck = (StanzaAck) element;
assert stanzaAck.isValid();
XMLElement result = new XMLElement("a", "urn:xmpp:sm:2");
result.setAttribute("h", Long.toString(stanzaAck.getHandledStanzasCount()));
- return result.serialize();
+ return new SafeByteArray(result.serialize());
}
}
diff --git a/src/com/isode/stroke/serializer/StanzaSerializer.java b/src/com/isode/stroke/serializer/StanzaSerializer.java
index 589d2e8..0837ff8 100644
--- a/src/com/isode/stroke/serializer/StanzaSerializer.java
+++ b/src/com/isode/stroke/serializer/StanzaSerializer.java
@@ -10,23 +10,39 @@ import com.isode.stroke.elements.Stanza;
import com.isode.stroke.serializer.xml.XMLElement;
import com.isode.stroke.serializer.xml.XMLRawTextNode;
import java.util.logging.Logger;
+import com.isode.stroke.base.SafeByteArray;
public abstract class StanzaSerializer implements ElementSerializer {
private final String tag_;
private final PayloadSerializerCollection payloadSerializers_;
+ private String explicitDefaultNS_;
private final Logger logger_ = Logger.getLogger(this.getClass().getName());
public StanzaSerializer(String tag, PayloadSerializerCollection payloadSerializers) {
+ this(tag, payloadSerializers, null);
+ }
+
+ public StanzaSerializer(String tag, PayloadSerializerCollection payloadSerializers, String explicitNS) {
payloadSerializers_ = payloadSerializers;
tag_ = tag;
+ explicitDefaultNS_ = explicitNS;
+ }
+
+ public SafeByteArray serialize(Element element) {
+ if (explicitDefaultNS_ != null) {
+ return serialize(element, explicitDefaultNS_);
+ }
+ else {
+ return serialize(element, "");
+ }
}
- public String serialize(Element element) {
+ public SafeByteArray serialize(Element element, String xmlns) {
assert element != null;
assert payloadSerializers_ != null;
Stanza stanza = (Stanza) element;
- XMLElement stanzaElement = new XMLElement(tag_);
+ XMLElement stanzaElement = new XMLElement(tag_, (explicitDefaultNS_ != null) ? explicitDefaultNS_ : xmlns);
if (stanza.getFrom() != null && stanza.getFrom().isValid()) {
stanzaElement.setAttribute("from", stanza.getFrom().toString());
}
@@ -53,7 +69,7 @@ public abstract class StanzaSerializer implements ElementSerializer {
if (serializedPayloads.toString().length()!=0) {
stanzaElement.addNode(new XMLRawTextNode(serializedPayloads.toString()));
}
- return stanzaElement.serialize();
+ return new SafeByteArray(stanzaElement.serialize());
}
public abstract void setStanzaSpecificAttributes(Element element, XMLElement xmlElement);
diff --git a/src/com/isode/stroke/serializer/StartTLSFailureSerializer.java b/src/com/isode/stroke/serializer/StartTLSFailureSerializer.java
index 276785a..7596e10 100644
--- a/src/com/isode/stroke/serializer/StartTLSFailureSerializer.java
+++ b/src/com/isode/stroke/serializer/StartTLSFailureSerializer.java
@@ -12,15 +12,16 @@ package com.isode.stroke.serializer;
import com.isode.stroke.elements.Element;
import com.isode.stroke.elements.StartTLSFailure;
import com.isode.stroke.serializer.xml.XMLElement;
+import com.isode.stroke.base.SafeByteArray;
-class StartTLSFailureSerializer extends GenericElementSerializer<StartTLSFailure> {
+public class StartTLSFailureSerializer extends GenericElementSerializer<StartTLSFailure> {
public StartTLSFailureSerializer() {
super(StartTLSFailure.class);
}
- public String serialize(Element element) {
- return new XMLElement("failure", "urn:ietf:params:xml:ns:xmpp-tls").serialize();
+ public SafeByteArray serialize(Element element) {
+ return new SafeByteArray(new XMLElement("failure", "urn:ietf:params:xml:ns:xmpp-tls").serialize());
}
}
diff --git a/src/com/isode/stroke/serializer/StartTLSRequestSerializer.java b/src/com/isode/stroke/serializer/StartTLSRequestSerializer.java
index 0a7a782..cbdcb08 100644
--- a/src/com/isode/stroke/serializer/StartTLSRequestSerializer.java
+++ b/src/com/isode/stroke/serializer/StartTLSRequestSerializer.java
@@ -12,15 +12,16 @@ package com.isode.stroke.serializer;
import com.isode.stroke.elements.Element;
import com.isode.stroke.elements.StartTLSRequest;
import com.isode.stroke.serializer.xml.XMLElement;
+import com.isode.stroke.base.SafeByteArray;
-class StartTLSRequestSerializer extends GenericElementSerializer<StartTLSRequest> {
+public class StartTLSRequestSerializer extends GenericElementSerializer<StartTLSRequest> {
public StartTLSRequestSerializer() {
super(StartTLSRequest.class);
}
- public String serialize(Element element) {
- return new XMLElement("starttls", "urn:ietf:params:xml:ns:xmpp-tls").serialize();
+ public SafeByteArray serialize(Element element) {
+ return new SafeByteArray(new XMLElement("starttls", "urn:ietf:params:xml:ns:xmpp-tls").serialize());
}
}
diff --git a/src/com/isode/stroke/serializer/StreamErrorSerializer.java b/src/com/isode/stroke/serializer/StreamErrorSerializer.java
index 2455efe..70fcd83 100644
--- a/src/com/isode/stroke/serializer/StreamErrorSerializer.java
+++ b/src/com/isode/stroke/serializer/StreamErrorSerializer.java
@@ -15,6 +15,7 @@ import com.isode.stroke.serializer.GenericElementSerializer;
import com.isode.stroke.serializer.xml.XMLElement;
import com.isode.stroke.elements.StreamError;
import com.isode.stroke.elements.Element;
+import com.isode.stroke.base.SafeByteArray;
public class StreamErrorSerializer extends GenericElementSerializer<StreamError> {
@@ -22,7 +23,7 @@ public class StreamErrorSerializer extends GenericElementSerializer<StreamError>
super(StreamError.class);
}
- public String serialize(Element element) {
+ public SafeByteArray serialize(Element element) {
StreamError error = (StreamError)element;
XMLElement errorElement = new XMLElement("error", "http://etherx.jabber.org/streams");
@@ -60,6 +61,6 @@ public class StreamErrorSerializer extends GenericElementSerializer<StreamError>
errorElement.addNode(new XMLElement("text", "urn:ietf:params:xml:ns:xmpp-streams", error.getText()));
}
- return errorElement.serialize();
+ return new SafeByteArray(errorElement.serialize());
}
} \ No newline at end of file
diff --git a/src/com/isode/stroke/serializer/StreamFeaturesSerializer.java b/src/com/isode/stroke/serializer/StreamFeaturesSerializer.java
index b5eb598..e1226f8 100644
--- a/src/com/isode/stroke/serializer/StreamFeaturesSerializer.java
+++ b/src/com/isode/stroke/serializer/StreamFeaturesSerializer.java
@@ -16,6 +16,7 @@ import com.isode.stroke.serializer.xml.XMLElement;
import com.isode.stroke.serializer.xml.XMLTextNode;
import com.isode.stroke.elements.StreamFeatures;
import com.isode.stroke.elements.Element;
+import com.isode.stroke.base.SafeByteArray;
public class StreamFeaturesSerializer extends GenericElementSerializer<StreamFeatures> {
@@ -23,7 +24,7 @@ public class StreamFeaturesSerializer extends GenericElementSerializer<StreamFea
super(StreamFeatures.class);
}
- public String serialize(Element element) {
+ public SafeByteArray serialize(Element element) {
StreamFeatures streamFeatures = (StreamFeatures)(element);
XMLElement streamFeaturesElement = new XMLElement("stream:features");
@@ -60,6 +61,6 @@ public class StreamFeaturesSerializer extends GenericElementSerializer<StreamFea
if (streamFeatures.hasRosterVersioning()) {
streamFeaturesElement.addNode(new XMLElement("ver", "urn:xmpp:features:rosterver"));
}
- return streamFeaturesElement.serialize();
+ return new SafeByteArray(streamFeaturesElement.serialize());
}
} \ No newline at end of file
diff --git a/src/com/isode/stroke/serializer/StreamManagementEnabledSerializer.java b/src/com/isode/stroke/serializer/StreamManagementEnabledSerializer.java
index 789eb7d..42c7087 100644
--- a/src/com/isode/stroke/serializer/StreamManagementEnabledSerializer.java
+++ b/src/com/isode/stroke/serializer/StreamManagementEnabledSerializer.java
@@ -11,14 +11,15 @@ package com.isode.stroke.serializer;
import com.isode.stroke.elements.Element;
import com.isode.stroke.elements.StreamManagementEnabled;
import com.isode.stroke.serializer.xml.XMLElement;
+import com.isode.stroke.base.SafeByteArray;
-class StreamManagementEnabledSerializer extends GenericElementSerializer<StreamManagementEnabled> {
+public class StreamManagementEnabledSerializer extends GenericElementSerializer<StreamManagementEnabled> {
public StreamManagementEnabledSerializer() {
super(StreamManagementEnabled.class);
}
- public String serialize(Element el) {
+ public SafeByteArray serialize(Element el) {
StreamManagementEnabled e = (StreamManagementEnabled) el;
XMLElement element = new XMLElement("enabled", "urn:xmpp:sm:2");
if (!e.getResumeID().isEmpty()) {
@@ -27,6 +28,6 @@ class StreamManagementEnabledSerializer extends GenericElementSerializer<StreamM
if (e.getResumeSupported()) {
element.setAttribute("resume", "true");
}
- return element.serialize();
+ return new SafeByteArray(element.serialize());
}
}
diff --git a/src/com/isode/stroke/serializer/StreamManagementFailedSerializer.java b/src/com/isode/stroke/serializer/StreamManagementFailedSerializer.java
index a22c4ee..c7ee761 100644
--- a/src/com/isode/stroke/serializer/StreamManagementFailedSerializer.java
+++ b/src/com/isode/stroke/serializer/StreamManagementFailedSerializer.java
@@ -12,15 +12,16 @@ package com.isode.stroke.serializer;
import com.isode.stroke.elements.Element;
import com.isode.stroke.elements.StreamManagementFailed;
import com.isode.stroke.serializer.xml.XMLElement;
+import com.isode.stroke.base.SafeByteArray;
-class StreamManagementFailedSerializer extends GenericElementSerializer<StreamManagementFailed> {
+public class StreamManagementFailedSerializer extends GenericElementSerializer<StreamManagementFailed> {
public StreamManagementFailedSerializer() {
super(StreamManagementFailed.class);
}
- public String serialize(Element element) {
- return new XMLElement("failed", "urn:xmpp:sm:2").serialize();
+ public SafeByteArray serialize(Element element) {
+ return new SafeByteArray(new XMLElement("failed", "urn:xmpp:sm:2").serialize());
}
}
diff --git a/src/com/isode/stroke/serializer/StreamResumeSerializer.java b/src/com/isode/stroke/serializer/StreamResumeSerializer.java
index 5900ec0..bdfe980 100644
--- a/src/com/isode/stroke/serializer/StreamResumeSerializer.java
+++ b/src/com/isode/stroke/serializer/StreamResumeSerializer.java
@@ -12,21 +12,22 @@ package com.isode.stroke.serializer;
import com.isode.stroke.elements.Element;
import com.isode.stroke.elements.StreamResume;
import com.isode.stroke.serializer.xml.XMLElement;
+import com.isode.stroke.base.SafeByteArray;
-class StreamResumeSerializer extends GenericElementSerializer<StreamResume> {
+public class StreamResumeSerializer extends GenericElementSerializer<StreamResume> {
public StreamResumeSerializer() {
super(StreamResume.class);
}
- public String serialize(Element el) {
+ public SafeByteArray serialize(Element el) {
StreamResume e = (StreamResume)el;
XMLElement element = new XMLElement("resume", "urn:xmpp:sm:2");
element.setAttribute("previd", e.getResumeID());
if (e.getHandledStanzasCount() != null) {
element.setAttribute("h", Long.toString(e.getHandledStanzasCount()));
}
- return element.serialize();
+ return new SafeByteArray(element.serialize());
}
}
diff --git a/src/com/isode/stroke/serializer/StreamResumedSerializer.java b/src/com/isode/stroke/serializer/StreamResumedSerializer.java
index d44d722..5f0a841 100644
--- a/src/com/isode/stroke/serializer/StreamResumedSerializer.java
+++ b/src/com/isode/stroke/serializer/StreamResumedSerializer.java
@@ -12,21 +12,22 @@ package com.isode.stroke.serializer;
import com.isode.stroke.elements.Element;
import com.isode.stroke.elements.StreamResumed;
import com.isode.stroke.serializer.xml.XMLElement;
+import com.isode.stroke.base.SafeByteArray;
-class StreamResumedSerializer extends GenericElementSerializer<StreamResumed> {
+public class StreamResumedSerializer extends GenericElementSerializer<StreamResumed> {
public StreamResumedSerializer() {
super(StreamResumed.class);
}
- public String serialize(Element el) {
+ public SafeByteArray serialize(Element el) {
StreamResumed e = (StreamResumed)el;
XMLElement element = new XMLElement("resumed", "urn:xmpp:sm:2");
element.setAttribute("previd", e.getResumeID());
if (e.getHandledStanzasCount() != null) {
element.setAttribute("h", Long.toString(e.getHandledStanzasCount()));
}
- return element.serialize();
+ return new SafeByteArray(element.serialize());
}
}
diff --git a/src/com/isode/stroke/serializer/TLSProceedSerializer.java b/src/com/isode/stroke/serializer/TLSProceedSerializer.java
index 7f3d75a..640c3db 100644
--- a/src/com/isode/stroke/serializer/TLSProceedSerializer.java
+++ b/src/com/isode/stroke/serializer/TLSProceedSerializer.java
@@ -12,6 +12,7 @@ package com.isode.stroke.serializer;
import com.isode.stroke.elements.Element;
import com.isode.stroke.elements.TLSProceed;
import com.isode.stroke.serializer.xml.XMLElement;
+import com.isode.stroke.base.SafeByteArray;
class TLSProceedSerializer extends GenericElementSerializer<TLSProceed>{
@@ -19,8 +20,8 @@ class TLSProceedSerializer extends GenericElementSerializer<TLSProceed>{
super(TLSProceed.class);
}
- public String serialize(Element element) {
- return new XMLElement("proceed", "urn:ietf:params:xml:ns:xmpp-tls").serialize();
+ public SafeByteArray serialize(Element element) {
+ return new SafeByteArray(new XMLElement("proceed", "urn:ietf:params:xml:ns:xmpp-tls").serialize());
}
}
diff --git a/src/com/isode/stroke/serializer/XMPPSerializer.java b/src/com/isode/stroke/serializer/XMPPSerializer.java
index 2bf996b..cd7a4cd 100644
--- a/src/com/isode/stroke/serializer/XMPPSerializer.java
+++ b/src/com/isode/stroke/serializer/XMPPSerializer.java
@@ -12,17 +12,18 @@ import com.isode.stroke.elements.Element;
import com.isode.stroke.elements.ProtocolHeader;
import com.isode.stroke.elements.StreamType;
import java.util.Vector;
+import com.isode.stroke.base.SafeByteArray;
public class XMPPSerializer {
private final Vector<ElementSerializer> serializers_ = new Vector<ElementSerializer>();
private final StreamType type_;
- public XMPPSerializer(PayloadSerializerCollection payloadSerializers, StreamType type) {
+ public XMPPSerializer(PayloadSerializerCollection payloadSerializers, StreamType type, boolean setExplictNSonTopLevelElements) {
type_ = type;
- serializers_.add(new PresenceSerializer(payloadSerializers));
- serializers_.add(new IQSerializer(payloadSerializers));
- serializers_.add(new MessageSerializer(payloadSerializers));
+ serializers_.add(new PresenceSerializer(payloadSerializers, setExplictNSonTopLevelElements ? getDefaultNamespace() : null));
+ serializers_.add(new IQSerializer(payloadSerializers, setExplictNSonTopLevelElements ? getDefaultNamespace() : null));
+ serializers_.add(new MessageSerializer(payloadSerializers, setExplictNSonTopLevelElements ? getDefaultNamespace() : null));
serializers_.add(new CompressRequestSerializer());
serializers_.add(new CompressFailureSerializer());
serializers_.add(new AuthRequestSerializer());
@@ -33,8 +34,8 @@ public class XMPPSerializer {
serializers_.add(new StartTLSRequestSerializer());
serializers_.add(new StartTLSFailureSerializer());
serializers_.add(new TLSProceedSerializer());
- //serializers_.add(new StreamFeaturesSerializer()); //TODO: Port
- //serializers_.add(new StreamErrorSerializer()); //FIXME!!!: Port
+ serializers_.add(new StreamFeaturesSerializer());
+ serializers_.add(new StreamErrorSerializer());
serializers_.add(new EnableStreamManagementSerializer());
serializers_.add(new StreamManagementEnabledSerializer());
serializers_.add(new StreamManagementFailedSerializer());
@@ -42,7 +43,7 @@ public class XMPPSerializer {
serializers_.add(new StreamResumedSerializer());
serializers_.add(new StanzaAckSerializer());
serializers_.add(new StanzaAckRequestSerializer());
- //serializers_.add(new ComponentHandshakeSerializer());
+ serializers_.add(new ComponentHandshakeSerializer());
}
public String serializeHeader(ProtocolHeader header) {
@@ -80,7 +81,7 @@ public class XMPPSerializer {
return "";
}
- public String serializeElement(Element element) {
+ public SafeByteArray serializeElement(Element element) {
for (ElementSerializer serializer : serializers_) {
if (serializer.canSerialize(element)) {
return serializer.serialize(element);
diff --git a/src/com/isode/stroke/serializer/payloadserializers/ForwardedSerializer.java b/src/com/isode/stroke/serializer/payloadserializers/ForwardedSerializer.java
index 625205e..77ac5f1 100644
--- a/src/com/isode/stroke/serializer/payloadserializers/ForwardedSerializer.java
+++ b/src/com/isode/stroke/serializer/payloadserializers/ForwardedSerializer.java
@@ -41,11 +41,11 @@ public class ForwardedSerializer extends GenericPayloadSerializer<Forwarded> {
if (payload.getStanza() != null) { /* find out what type of stanza we are dealing with and branch into the correct serializer */
if (payload.getStanza() instanceof IQ) {
- element.addNode(new XMLRawTextNode((new IQSerializer(serializers_)).serialize((IQ)payload.getStanza())));
+ element.addNode(new XMLRawTextNode((new IQSerializer(serializers_)).serialize((IQ)payload.getStanza()).toString()));
} else if (payload.getStanza() instanceof Message) {
- element.addNode(new XMLRawTextNode((new MessageSerializer(serializers_)).serialize((Message)payload.getStanza())));
+ element.addNode(new XMLRawTextNode((new MessageSerializer(serializers_)).serialize((Message)payload.getStanza()).toString()));
} else if (payload.getStanza() instanceof Presence) {
- element.addNode(new XMLRawTextNode((new PresenceSerializer(serializers_)).serialize((Presence)payload.getStanza())));
+ element.addNode(new XMLRawTextNode((new PresenceSerializer(serializers_)).serialize((Presence)payload.getStanza()).toString()));
}
}
diff --git a/src/com/isode/stroke/serializer/payloadserializers/FullPayloadSerializerCollection.java b/src/com/isode/stroke/serializer/payloadserializers/FullPayloadSerializerCollection.java
index ac093c0..dff8f6b 100644
--- a/src/com/isode/stroke/serializer/payloadserializers/FullPayloadSerializerCollection.java
+++ b/src/com/isode/stroke/serializer/payloadserializers/FullPayloadSerializerCollection.java
@@ -15,8 +15,6 @@ import com.isode.stroke.serializer.PayloadSerializerCollection;
public class FullPayloadSerializerCollection extends PayloadSerializerCollection {
public FullPayloadSerializerCollection() {
- /*FIXME: Implement what's needed. */
- //addSerializer(new IBBSerializer());
addSerializer(new BodySerializer());
addSerializer(new SubjectSerializer());
addSerializer(new ChatStateSerializer());