diff options
Diffstat (limited to 'src/com/isode/stroke/serializer')
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()); |