/* * Copyright (c) 2010-2011, Isode Limited, London, England. * All rights reserved. */ /* * Copyright (c) 2010, Remko Tronçon. * All rights reserved. */ package com.isode.stroke.serializer; 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 serializers_ = new Vector(); private final StreamType type_; public XMPPSerializer(PayloadSerializerCollection payloadSerializers, StreamType type, boolean setExplictNSonTopLevelElements) { type_ = type; 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()); serializers_.add(new AuthFailureSerializer()); serializers_.add(new AuthSuccessSerializer()); serializers_.add(new AuthChallengeSerializer()); serializers_.add(new AuthResponseSerializer()); serializers_.add(new StartTLSRequestSerializer()); serializers_.add(new StartTLSFailureSerializer()); serializers_.add(new TLSProceedSerializer()); serializers_.add(new StreamFeaturesSerializer()); serializers_.add(new StreamErrorSerializer()); serializers_.add(new EnableStreamManagementSerializer()); serializers_.add(new StreamManagementEnabledSerializer()); serializers_.add(new StreamManagementFailedSerializer()); serializers_.add(new StreamResumeSerializer()); serializers_.add(new StreamResumedSerializer()); serializers_.add(new StanzaAckSerializer()); serializers_.add(new StanzaAckRequestSerializer()); serializers_.add(new ComponentHandshakeSerializer()); } public String serializeHeader(ProtocolHeader header) { String result = ""; } public String getDefaultNamespace() { switch (type_) { case ClientStreamType: return "jabber:client"; case ServerStreamType: return "jabber:server"; case ComponentStreamType: return "jabber:component:accept"; } assert false; return ""; } public SafeByteArray serializeElement(Element element) { for (ElementSerializer serializer : serializers_) { if (serializer.canSerialize(element)) { return serializer.serialize(element); } } throw new IllegalStateException("Trying to send an unknown element"); //assert false; /* UNKNOWN ELEMENT */ //return ""; } }