summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Swiften/Serializer/GenericStanzaSerializer.h2
-rw-r--r--Swiften/Serializer/IQSerializer.h9
-rw-r--r--Swiften/Serializer/MessageSerializer.cpp6
-rw-r--r--Swiften/Serializer/MessageSerializer.h6
-rw-r--r--Swiften/Serializer/PresenceSerializer.cpp9
-rw-r--r--Swiften/Serializer/PresenceSerializer.h7
-rw-r--r--Swiften/Serializer/StanzaSerializer.cpp11
-rw-r--r--Swiften/Serializer/StanzaSerializer.h5
-rw-r--r--Swiften/Serializer/UnitTest/XMPPSerializerTest.cpp4
-rw-r--r--Swiften/Serializer/XMPPSerializer.cpp8
-rw-r--r--Swiften/Serializer/XMPPSerializer.h2
-rw-r--r--Swiften/Session/BOSHSessionStream.cpp2
-rw-r--r--Swiften/StreamStack/XMPPLayer.cpp6
-rw-r--r--Swiften/StreamStack/XMPPLayer.h4
14 files changed, 51 insertions, 30 deletions
diff --git a/Swiften/Serializer/GenericStanzaSerializer.h b/Swiften/Serializer/GenericStanzaSerializer.h
index a85d3ba..e8f3787 100644
--- a/Swiften/Serializer/GenericStanzaSerializer.h
+++ b/Swiften/Serializer/GenericStanzaSerializer.h
@@ -14,3 +14,3 @@ namespace Swift {
public:
- GenericStanzaSerializer(const std::string& tag, PayloadSerializerCollection* payloadSerializers) : StanzaSerializer(tag, payloadSerializers) {}
+ GenericStanzaSerializer(const std::string& tag, PayloadSerializerCollection* payloadSerializers, const boost::optional<std::string>& explicitNS = boost::optional<std::string>()) : StanzaSerializer(tag, payloadSerializers, explicitNS) {}
diff --git a/Swiften/Serializer/IQSerializer.h b/Swiften/Serializer/IQSerializer.h
index 76a9cb7..7ebafa0 100644
--- a/Swiften/Serializer/IQSerializer.h
+++ b/Swiften/Serializer/IQSerializer.h
@@ -1,3 +1,3 @@
/*
- * Copyright (c) 2010 Remko Tronçon
+ * Copyright (c) 2010-2014 Remko Tronçon
* Licensed under the GNU General Public License v3.
@@ -12,2 +12,4 @@
+#include <boost/optional.hpp>
+
namespace Swift {
@@ -15,4 +17,5 @@ namespace Swift {
public:
- IQSerializer(PayloadSerializerCollection* payloadSerializers) :
- GenericStanzaSerializer<IQ>("iq", payloadSerializers) {}
+ IQSerializer(PayloadSerializerCollection* payloadSerializers, const boost::optional<std::string>& explicitNS = boost::optional<std::string>()) :
+ GenericStanzaSerializer<IQ>("iq", payloadSerializers, explicitNS) {
+ }
diff --git a/Swiften/Serializer/MessageSerializer.cpp b/Swiften/Serializer/MessageSerializer.cpp
index c221680..f944f9b 100644
--- a/Swiften/Serializer/MessageSerializer.cpp
+++ b/Swiften/Serializer/MessageSerializer.cpp
@@ -1,3 +1,3 @@
/*
- * Copyright (c) 2010 Remko Tronçon
+ * Copyright (c) 2010-2014 Remko Tronçon
* Licensed under the GNU General Public License v3.
@@ -11,4 +11,4 @@ namespace Swift {
-MessageSerializer::MessageSerializer(PayloadSerializerCollection* payloadSerializers) :
- GenericStanzaSerializer<Message>("message", payloadSerializers) {
+MessageSerializer::MessageSerializer(PayloadSerializerCollection* payloadSerializers, const boost::optional<std::string>& explicitNS) :
+ GenericStanzaSerializer<Message>("message", payloadSerializers, explicitNS) {
}
diff --git a/Swiften/Serializer/MessageSerializer.h b/Swiften/Serializer/MessageSerializer.h
index 8e9e941..dd8ca21 100644
--- a/Swiften/Serializer/MessageSerializer.h
+++ b/Swiften/Serializer/MessageSerializer.h
@@ -1,3 +1,3 @@
/*
- * Copyright (c) 2010 Remko Tronçon
+ * Copyright (c) 2010-2014 Remko Tronçon
* Licensed under the GNU General Public License v3.
@@ -11,2 +11,4 @@
+#include <boost/optional.hpp>
+
namespace Swift {
@@ -16,3 +18,3 @@ namespace Swift {
public:
- MessageSerializer(PayloadSerializerCollection* payloadSerializers);
+ MessageSerializer(PayloadSerializerCollection* payloadSerializers, const boost::optional<std::string>& explitNS = boost::optional<std::string>());
diff --git a/Swiften/Serializer/PresenceSerializer.cpp b/Swiften/Serializer/PresenceSerializer.cpp
index 20eda4b..a192bb5 100644
--- a/Swiften/Serializer/PresenceSerializer.cpp
+++ b/Swiften/Serializer/PresenceSerializer.cpp
@@ -1,3 +1,3 @@
/*
- * Copyright (c) 2010 Remko Tronçon
+ * Copyright (c) 2010-2014 Remko Tronçon
* Licensed under the GNU General Public License v3.
@@ -8,3 +8,3 @@
#include <Swiften/Serializer/XML/XMLElement.h>
-
+#include <Swiften/Base/Log.h>
#include <boost/shared_ptr.hpp>
@@ -13,4 +13,5 @@ namespace Swift {
-PresenceSerializer::PresenceSerializer(PayloadSerializerCollection* payloadSerializers) :
- GenericStanzaSerializer<Presence>("presence", payloadSerializers) {
+PresenceSerializer::PresenceSerializer(PayloadSerializerCollection* payloadSerializers, const boost::optional<std::string>& explicitNS) :
+ GenericStanzaSerializer<Presence>("presence", payloadSerializers, explicitNS) {
+
}
diff --git a/Swiften/Serializer/PresenceSerializer.h b/Swiften/Serializer/PresenceSerializer.h
index e5d9f30..b3ed721 100644
--- a/Swiften/Serializer/PresenceSerializer.h
+++ b/Swiften/Serializer/PresenceSerializer.h
@@ -1,3 +1,3 @@
/*
- * Copyright (c) 2010 Remko Tronçon
+ * Copyright (c) 2010-2014 Remko Tronçon
* Licensed under the GNU General Public License v3.
@@ -11,2 +11,4 @@
+#include <boost/optional.hpp>
+
namespace Swift {
@@ -14,3 +16,4 @@ namespace Swift {
public:
- PresenceSerializer(PayloadSerializerCollection* payloadSerializers);
+ PresenceSerializer(PayloadSerializerCollection* payloadSerializers, const boost::optional<std::string>& explicitNS = boost::optional<std::string>());
+ ~PresenceSerializer() {}
diff --git a/Swiften/Serializer/StanzaSerializer.cpp b/Swiften/Serializer/StanzaSerializer.cpp
index 358e4b8..d097bbf 100644
--- a/Swiften/Serializer/StanzaSerializer.cpp
+++ b/Swiften/Serializer/StanzaSerializer.cpp
@@ -21,3 +21,3 @@ namespace Swift {
-StanzaSerializer::StanzaSerializer(const std::string& tag, PayloadSerializerCollection* payloadSerializers) : tag_(tag), payloadSerializers_(payloadSerializers) {
+StanzaSerializer::StanzaSerializer(const std::string& tag, PayloadSerializerCollection* payloadSerializers, const boost::optional<std::string>& explicitNS) : tag_(tag), payloadSerializers_(payloadSerializers), explicitDefaultNS_(explicitNS) {
}
@@ -25,3 +25,8 @@ StanzaSerializer::StanzaSerializer(const std::string& tag, PayloadSerializerColl
SafeByteArray StanzaSerializer::serialize(boost::shared_ptr<ToplevelElement> element) const {
- return serialize(element, "");
+ if (explicitDefaultNS_) {
+ return serialize(element, explicitDefaultNS_.get());
+ }
+ else {
+ return serialize(element, "");
+ }
}
@@ -31,3 +36,3 @@ SafeByteArray StanzaSerializer::serialize(boost::shared_ptr<ToplevelElement> ele
- XMLElement stanzaElement(tag_, xmlns);
+ XMLElement stanzaElement(tag_, explicitDefaultNS_ ? explicitDefaultNS_.get() : xmlns);
if (stanza->getFrom().isValid()) {
diff --git a/Swiften/Serializer/StanzaSerializer.h b/Swiften/Serializer/StanzaSerializer.h
index 6b46670..766b58c 100644
--- a/Swiften/Serializer/StanzaSerializer.h
+++ b/Swiften/Serializer/StanzaSerializer.h
@@ -10,3 +10,5 @@
#include <Swiften/Serializer/ElementSerializer.h>
+
#include <string>
+#include <boost/optional.hpp>
@@ -18,3 +20,3 @@ namespace Swift {
public:
- StanzaSerializer(const std::string& tag, PayloadSerializerCollection* payloadSerializers);
+ StanzaSerializer(const std::string& tag, PayloadSerializerCollection* payloadSerializers, const boost::optional<std::string>& explicitNS = boost::optional<std::string>());
@@ -27,2 +29,3 @@ namespace Swift {
PayloadSerializerCollection* payloadSerializers_;
+ boost::optional<std::string> explicitDefaultNS_;
};
diff --git a/Swiften/Serializer/UnitTest/XMPPSerializerTest.cpp b/Swiften/Serializer/UnitTest/XMPPSerializerTest.cpp
index c0ab841..83daf36 100644
--- a/Swiften/Serializer/UnitTest/XMPPSerializerTest.cpp
+++ b/Swiften/Serializer/UnitTest/XMPPSerializerTest.cpp
@@ -1,3 +1,3 @@
/*
- * Copyright (c) 2010 Remko Tronçon
+ * Copyright (c) 2010-2014 Remko Tronçon
* Licensed under the GNU General Public License v3.
@@ -67,3 +67,3 @@ class XMPPSerializerTest : public CppUnit::TestFixture {
XMPPSerializer* createSerializer(StreamType type) {
- return new XMPPSerializer(payloadSerializerCollection, type);
+ return new XMPPSerializer(payloadSerializerCollection, type, false);
}
diff --git a/Swiften/Serializer/XMPPSerializer.cpp b/Swiften/Serializer/XMPPSerializer.cpp
index e3f43cd..1fb79e4 100644
--- a/Swiften/Serializer/XMPPSerializer.cpp
+++ b/Swiften/Serializer/XMPPSerializer.cpp
@@ -41,6 +41,6 @@ namespace Swift {
-XMPPSerializer::XMPPSerializer(PayloadSerializerCollection* payloadSerializers, StreamType type) : type_(type) {
- serializers_.push_back(boost::make_shared<PresenceSerializer>(payloadSerializers));
- serializers_.push_back(boost::make_shared<IQSerializer>(payloadSerializers));
- serializers_.push_back(boost::make_shared<MessageSerializer>(payloadSerializers));
+XMPPSerializer::XMPPSerializer(PayloadSerializerCollection* payloadSerializers, StreamType type, bool setExplictNSonTopLevelElements) : type_(type) {
+ serializers_.push_back(boost::make_shared<PresenceSerializer>(payloadSerializers, setExplictNSonTopLevelElements ? getDefaultNamespace() : boost::optional<std::string>()));
+ serializers_.push_back(boost::make_shared<IQSerializer>(payloadSerializers, setExplictNSonTopLevelElements ? getDefaultNamespace() : boost::optional<std::string>()));
+ serializers_.push_back(boost::make_shared<MessageSerializer>(payloadSerializers, setExplictNSonTopLevelElements ? getDefaultNamespace() : boost::optional<std::string>()));
serializers_.push_back(boost::make_shared<CompressRequestSerializer>());
diff --git a/Swiften/Serializer/XMPPSerializer.h b/Swiften/Serializer/XMPPSerializer.h
index cbcdccb..d1aa386 100644
--- a/Swiften/Serializer/XMPPSerializer.h
+++ b/Swiften/Serializer/XMPPSerializer.h
@@ -24,3 +24,3 @@ namespace Swift {
public:
- XMPPSerializer(PayloadSerializerCollection*, StreamType type);
+ XMPPSerializer(PayloadSerializerCollection*, StreamType type, bool setExplictNSonTopLevelElements);
diff --git a/Swiften/Session/BOSHSessionStream.cpp b/Swiften/Session/BOSHSessionStream.cpp
index 8cdbdb0..63e35b8 100644
--- a/Swiften/Session/BOSHSessionStream.cpp
+++ b/Swiften/Session/BOSHSessionStream.cpp
@@ -58,3 +58,3 @@ BOSHSessionStream::BOSHSessionStream(
- xmppLayer = new XMPPLayer(payloadParserFactories, payloadSerializers, xmlParserFactory, ClientStreamType);
+ xmppLayer = new XMPPLayer(payloadParserFactories, payloadSerializers, xmlParserFactory, ClientStreamType, true);
xmppLayer->onStreamStart.connect(boost::bind(&BOSHSessionStream::handleStreamStartReceived, this, _1));
diff --git a/Swiften/StreamStack/XMPPLayer.cpp b/Swiften/StreamStack/XMPPLayer.cpp
index 59418a2..1f06b06 100644
--- a/Swiften/StreamStack/XMPPLayer.cpp
+++ b/Swiften/StreamStack/XMPPLayer.cpp
@@ -17,3 +17,4 @@ XMPPLayer::XMPPLayer(
XMLParserFactory* xmlParserFactory,
- StreamType streamType) :
+ StreamType streamType,
+ bool setExplictNSonTopLevelElements) :
payloadParserFactories_(payloadParserFactories),
@@ -21,2 +22,3 @@ XMPPLayer::XMPPLayer(
xmlParserFactory_(xmlParserFactory),
+ setExplictNSonTopLevelElements_(setExplictNSonTopLevelElements),
resetParserAfterParse_(false),
@@ -24,3 +26,3 @@ XMPPLayer::XMPPLayer(
xmppParser_ = new XMPPParser(this, payloadParserFactories_, xmlParserFactory);
- xmppSerializer_ = new XMPPSerializer(payloadSerializers_, streamType);
+ xmppSerializer_ = new XMPPSerializer(payloadSerializers_, streamType, setExplictNSonTopLevelElements);
}
diff --git a/Swiften/StreamStack/XMPPLayer.h b/Swiften/StreamStack/XMPPLayer.h
index bb0e498..13266e4 100644
--- a/Swiften/StreamStack/XMPPLayer.h
+++ b/Swiften/StreamStack/XMPPLayer.h
@@ -35,3 +35,4 @@ namespace Swift {
XMLParserFactory* xmlParserFactory,
- StreamType streamType);
+ StreamType streamType,
+ bool setExplictNSonTopLevelElements = false);
~XMPPLayer();
@@ -69,2 +70,3 @@ namespace Swift {
XMPPSerializer* xmppSerializer_;
+ bool setExplictNSonTopLevelElements_;
bool resetParserAfterParse_;