aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeremy Lainé <jeremy.laine@m4x.org>2010-08-09 16:11:44 +0000
committerJeremy Lainé <jeremy.laine@m4x.org>2010-08-09 16:11:44 +0000
commit9bd1835781d8dfa772feec19aec27613ebfc8a97 (patch)
tree52e4f58336d2f88dd403821e8675da5f2f9a8816
parent3b98c0f399f464653c18ad4a5a54fd73c8999d07 (diff)
downloadqxmpp-9bd1835781d8dfa772feec19aec27613ebfc8a97.tar.gz
add support for "nil" in XML-RPC
-rw-r--r--example/tests/tests.cpp6
-rw-r--r--example/tests/tests.h1
-rw-r--r--source/xmlrpc.cpp10
3 files changed, 15 insertions, 2 deletions
diff --git a/example/tests/tests.cpp b/example/tests/tests.cpp
index 86c6d4c9..de48ef62 100644
--- a/example/tests/tests.cpp
+++ b/example/tests/tests.cpp
@@ -377,6 +377,12 @@ void TestXmlRpc::testInt()
QByteArray("<value><i4>-12</i4></value>"));
}
+void TestXmlRpc::testNil()
+{
+ checkVariant(QVariant(),
+ QByteArray("<value><nil/></value>"));
+}
+
void TestXmlRpc::testString()
{
checkVariant(QString("hello world"),
diff --git a/example/tests/tests.h b/example/tests/tests.h
index d7367628..7e50cf1c 100644
--- a/example/tests/tests.h
+++ b/example/tests/tests.h
@@ -69,6 +69,7 @@ private slots:
void testDateTime();
void testDouble();
void testInt();
+ void testNil();
void testString();
void testArray();
diff --git a/source/xmlrpc.cpp b/source/xmlrpc.cpp
index e64a0620..59e61a79 100644
--- a/source/xmlrpc.cpp
+++ b/source/xmlrpc.cpp
@@ -66,9 +66,11 @@ void XMLRPC::marshall( QXmlStreamWriter *writer, const QVariant &value)
}
default:
{
- if( value.canConvert(QVariant::String) )
+ if (value.isNull())
+ writer->writeEmptyElement("nil");
+ else if( value.canConvert(QVariant::String) )
{
- writer->writeTextElement( "string", value.toString() );
+ writer->writeTextElement("string", value.toString() );
}
break;
}
@@ -92,6 +94,10 @@ QVariant XMLRPC::demarshall(const QDomElement &elem, QStringList &errors)
const QDomElement typeData = elem.firstChild().toElement();
const QString typeName = typeData.tagName().toLower();
+ if (typeName == "nil")
+ {
+ return QVariant();
+ }
if ( typeName == "string" )
{
return QVariant( typeData.text() );