summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
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());