summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJuha Vuolle <[email protected]>2024-01-11 09:47:15 +0200
committerMarc Mutz <[email protected]>2024-01-30 03:39:46 +0000
commit26993046283605a806f34ba604e7dcef20f34ba5 (patch)
tree7226cb1b02196c29a18382ccec832b3993dba4b1
parentbd78ff024599d33cfcb411ff17727a0f4447bc7e (diff)
Take QJsonDocument as a parameter
Instead of separate QJsonObject and QJsonArray types. Resulted from API-review Pick-to: 6.7 Change-Id: I977d692d3709a8c3aa872683ddda54a143c25e67 Reviewed-by: Marc Mutz <[email protected]> Reviewed-by: MÃ¥rten Nordheim <[email protected]>
-rw-r--r--src/network/access/qrestaccessmanager.cpp98
-rw-r--r--src/network/access/qrestaccessmanager.h11
-rw-r--r--src/network/access/qrestaccessmanager_p.h7
-rw-r--r--src/network/doc/snippets/code/src_network_access_qrestaccessmanager.cpp2
-rw-r--r--tests/auto/network/access/qrestaccessmanager/tst_qrestaccessmanager.cpp14
5 files changed, 31 insertions, 101 deletions
diff --git a/src/network/access/qrestaccessmanager.cpp b/src/network/access/qrestaccessmanager.cpp
index aff6a048997..14ffaac6417 100644
--- a/src/network/access/qrestaccessmanager.cpp
+++ b/src/network/access/qrestaccessmanager.cpp
@@ -129,7 +129,7 @@ Q_LOGGING_CATEGORY(lcQrest, "qt.network.access.rest")
\li -
\li X
\row
- \li QJsonObject *)
+ \li QJsonDocument *)
\li X
\li X
\li X
@@ -138,15 +138,6 @@ Q_LOGGING_CATEGORY(lcQrest, "qt.network.access.rest")
\li -
\li -
\row
- \li QJsonArray *)
- \li -
- \li X
- \li X
- \li -
- \li X
- \li -
- \li -
- \row
\li QVariantMap **)
\li -
\li X
@@ -175,7 +166,7 @@ Q_LOGGING_CATEGORY(lcQrest, "qt.network.access.rest")
\li X
\endtable
- *) QJsonObject and QJsonArray are sent in \l QJsonDocument::Compact format,
+ *) QJsonDocument is sent in \l QJsonDocument::Compact format,
and the \c Content-Type header is set to \c {application/json} if the
\c Content-Type header was not set
@@ -226,7 +217,7 @@ Q_LOGGING_CATEGORY(lcQrest, "qt.network.access.rest")
/*!
\fn template<typename Functor, QRestAccessManager::if_compatible_callback<Functor>> QNetworkReply *QRestAccessManager::get(
- const QNetworkRequest &request, const QJsonObject &data,
+ const QNetworkRequest &request, const QJsonDocument &data,
const ContextTypeForFunctor<Functor> *context,
Functor &&callback)
@@ -244,7 +235,7 @@ Q_LOGGING_CATEGORY(lcQrest, "qt.network.access.rest")
/*!
\fn template<typename Functor, QRestAccessManager::if_compatible_callback<Functor>> QNetworkReply *QRestAccessManager::post(
- const QNetworkRequest &request, const QJsonObject &data,
+ const QNetworkRequest &request, const QJsonDocument &data,
const ContextTypeForFunctor<Functor> *context,
Functor &&callback)
@@ -263,8 +254,7 @@ Q_LOGGING_CATEGORY(lcQrest, "qt.network.access.rest")
data types are supported:
\list
\li QByteArray
- \li QJsonObject *)
- \li QJsonArray *)
+ \li QJsonDocument *)
\li QVariantMap **)
\li QHttpMultiPart*
\li QIODevice*
@@ -279,15 +269,7 @@ Q_LOGGING_CATEGORY(lcQrest, "qt.network.access.rest")
*/
/*!
- \fn template<typename Functor, QRestAccessManager::if_compatible_callback<Functor>> QNetworkReply *QRestAccessManager::post(
- const QNetworkRequest &request, const QJsonArray &data,
- const ContextTypeForFunctor<Functor> *context,
- Functor &&callback)
-
- \overload
-*/
-/*!
\fn template<typename Functor, QRestAccessManager::if_compatible_callback<Functor>> QNetworkReply *QRestAccessManager::post(
const QNetworkRequest &request, const QVariantMap &data,
const ContextTypeForFunctor<Functor> *context,
@@ -325,7 +307,7 @@ Q_LOGGING_CATEGORY(lcQrest, "qt.network.access.rest")
/*!
\fn template<typename Functor, QRestAccessManager::if_compatible_callback<Functor>> QNetworkReply *QRestAccessManager::put(
- const QNetworkRequest &request, const QJsonObject &data,
+ const QNetworkRequest &request, const QJsonDocument &data,
const ContextTypeForFunctor<Functor> *context,
Functor &&callback)
@@ -344,8 +326,7 @@ Q_LOGGING_CATEGORY(lcQrest, "qt.network.access.rest")
data types are supported:
\list
\li QByteArray
- \li QJsonObject *)
- \li QJsonArray *)
+ \li QJsonDocument *)
\li QVariantMap **)
\li QHttpMultiPart*
\li QIODevice*
@@ -361,15 +342,6 @@ Q_LOGGING_CATEGORY(lcQrest, "qt.network.access.rest")
/*!
\fn template<typename Functor, QRestAccessManager::if_compatible_callback<Functor>> QNetworkReply *QRestAccessManager::put(
- const QNetworkRequest &request, const QJsonArray &data,
- const ContextTypeForFunctor<Functor> *context,
- Functor &&callback)
-
- \overload
-*/
-
-/*!
- \fn template<typename Functor, QRestAccessManager::if_compatible_callback<Functor>> QNetworkReply *QRestAccessManager::put(
const QNetworkRequest &request, const QVariantMap &data,
const ContextTypeForFunctor<Functor> *context,
Functor &&callback)
@@ -406,7 +378,7 @@ Q_LOGGING_CATEGORY(lcQrest, "qt.network.access.rest")
/*!
\fn template<typename Functor, QRestAccessManager::if_compatible_callback<Functor>> QNetworkReply *QRestAccessManager::patch(
- const QNetworkRequest &request, const QJsonObject &data,
+ const QNetworkRequest &request, const QJsonDocument &data,
const ContextTypeForFunctor<Functor> *context,
Functor &&callback)
@@ -425,8 +397,7 @@ Q_LOGGING_CATEGORY(lcQrest, "qt.network.access.rest")
data types are supported:
\list
\li QByteArray
- \li QJsonObject *)
- \li QJsonArray *)
+ \li QJsonDocument *)
\li QVariantMap **)
\li QIODevice*
\endlist
@@ -441,15 +412,6 @@ Q_LOGGING_CATEGORY(lcQrest, "qt.network.access.rest")
/*!
\fn template<typename Functor, QRestAccessManager::if_compatible_callback<Functor>> QNetworkReply *QRestAccessManager::patch(
- const QNetworkRequest &request, const QJsonArray &data,
- const ContextTypeForFunctor<Functor> *context,
- Functor &&callback)
-
- \overload
-*/
-
-/*!
- \fn template<typename Functor, QRestAccessManager::if_compatible_callback<Functor>> QNetworkReply *QRestAccessManager::patch(
const QNetworkRequest &request, const QVariantMap &data,
const ContextTypeForFunctor<Functor> *context,
Functor &&callback)
@@ -595,16 +557,7 @@ QRestAccessManagerPrivate::~QRestAccessManagerPrivate()
}
QNetworkReply *QRestAccessManager::postWithDataImpl(const QNetworkRequest &request,
- const QJsonObject &data, const QObject *context,
- QtPrivate::QSlotObjectBase *slot)
-{
- Q_D(QRestAccessManager);
- return d->executeRequest([&](auto req, auto json) { return d->qnam->post(req, json); },
- data, request, context, slot);
-}
-
-QNetworkReply *QRestAccessManager::postWithDataImpl(const QNetworkRequest &request,
- const QJsonArray &data, const QObject *context,
+ const QJsonDocument &data, const QObject *context,
QtPrivate::QSlotObjectBase *slot)
{
Q_D(QRestAccessManager);
@@ -616,7 +569,7 @@ QNetworkReply *QRestAccessManager::postWithDataImpl(const QNetworkRequest &reque
const QVariantMap &data, const QObject *context,
QtPrivate::QSlotObjectBase *slot)
{
- return postWithDataImpl(request, QJsonObject::fromVariantMap(data), context, slot);
+ return postWithDataImpl(request, QJsonDocument::fromVariant(data), context, slot);
}
QNetworkReply *QRestAccessManager::postWithDataImpl(const QNetworkRequest &request,
@@ -659,7 +612,7 @@ QNetworkReply *QRestAccessManager::getWithDataImpl(const QNetworkRequest &reques
}
QNetworkReply *QRestAccessManager::getWithDataImpl(const QNetworkRequest &request,
- const QJsonObject &data, const QObject *context,
+ const QJsonDocument &data, const QObject *context,
QtPrivate::QSlotObjectBase *slot)
{
Q_D(QRestAccessManager);
@@ -690,16 +643,7 @@ QNetworkReply *QRestAccessManager::headNoDataImpl(const QNetworkRequest &request
}
QNetworkReply *QRestAccessManager::putWithDataImpl(const QNetworkRequest &request,
- const QJsonObject &data, const QObject *context,
- QtPrivate::QSlotObjectBase *slot)
-{
- Q_D(QRestAccessManager);
- return d->executeRequest([&](auto req, auto json) { return d->qnam->put(req, json); },
- data, request, context, slot);
-}
-
-QNetworkReply *QRestAccessManager::putWithDataImpl(const QNetworkRequest &request,
- const QJsonArray &data, const QObject *context,
+ const QJsonDocument &data, const QObject *context,
QtPrivate::QSlotObjectBase *slot)
{
Q_D(QRestAccessManager);
@@ -711,7 +655,7 @@ QNetworkReply *QRestAccessManager::putWithDataImpl(const QNetworkRequest &reques
const QVariantMap &data, const QObject *context,
QtPrivate::QSlotObjectBase *slot)
{
- return putWithDataImpl(request, QJsonObject::fromVariantMap(data), context, slot);
+ return putWithDataImpl(request, QJsonDocument::fromVariant(data), context, slot);
}
QNetworkReply *QRestAccessManager::putWithDataImpl(const QNetworkRequest &request,
@@ -740,17 +684,7 @@ QNetworkReply *QRestAccessManager::putWithDataImpl(const QNetworkRequest &reques
static const auto PATCH = "PATCH"_ba;
QNetworkReply *QRestAccessManager::patchWithDataImpl(const QNetworkRequest &request,
- const QJsonObject &data, const QObject *context,
- QtPrivate::QSlotObjectBase *slot)
-{
- Q_D(QRestAccessManager);
- return d->executeRequest(
- [&](auto req, auto json){ return d->qnam->sendCustomRequest(req, PATCH, json); },
- data, request, context, slot);
-}
-
-QNetworkReply *QRestAccessManager::patchWithDataImpl(const QNetworkRequest &request,
- const QJsonArray &data, const QObject *context,
+ const QJsonDocument &data, const QObject *context,
QtPrivate::QSlotObjectBase *slot)
{
Q_D(QRestAccessManager);
@@ -763,7 +697,7 @@ QNetworkReply *QRestAccessManager::patchWithDataImpl(const QNetworkRequest &requ
const QVariantMap &data, const QObject *context,
QtPrivate::QSlotObjectBase *slot)
{
- return patchWithDataImpl(request, QJsonObject::fromVariantMap(data), context, slot);
+ return patchWithDataImpl(request, QJsonDocument::fromVariant(data), context, slot);
}
QNetworkReply *QRestAccessManager::patchWithDataImpl(const QNetworkRequest &request,
diff --git a/src/network/access/qrestaccessmanager.h b/src/network/access/qrestaccessmanager.h
index bc92626d187..e65693e6a7b 100644
--- a/src/network/access/qrestaccessmanager.h
+++ b/src/network/access/qrestaccessmanager.h
@@ -89,22 +89,19 @@ public:
QREST_METHOD_NO_DATA(head)
QREST_METHOD_NO_DATA(get)
QREST_METHOD_WITH_DATA(get, const QByteArray &)
- QREST_METHOD_WITH_DATA(get, const QJsonObject &)
+ QREST_METHOD_WITH_DATA(get, const QJsonDocument &)
QREST_METHOD_WITH_DATA(get, QIODevice *)
- QREST_METHOD_WITH_DATA(post, const QJsonObject &)
- QREST_METHOD_WITH_DATA(post, const QJsonArray &)
+ QREST_METHOD_WITH_DATA(post, const QJsonDocument &)
QREST_METHOD_WITH_DATA(post, const QVariantMap &)
QREST_METHOD_WITH_DATA(post, const QByteArray &)
QREST_METHOD_WITH_DATA(post, QHttpMultiPart *)
QREST_METHOD_WITH_DATA(post, QIODevice *)
- QREST_METHOD_WITH_DATA(put, const QJsonObject &)
- QREST_METHOD_WITH_DATA(put, const QJsonArray &)
+ QREST_METHOD_WITH_DATA(put, const QJsonDocument &)
QREST_METHOD_WITH_DATA(put, const QVariantMap &)
QREST_METHOD_WITH_DATA(put, const QByteArray &)
QREST_METHOD_WITH_DATA(put, QHttpMultiPart *)
QREST_METHOD_WITH_DATA(put, QIODevice *)
- QREST_METHOD_WITH_DATA(patch, const QJsonObject &)
- QREST_METHOD_WITH_DATA(patch, const QJsonArray &)
+ QREST_METHOD_WITH_DATA(patch, const QJsonDocument &)
QREST_METHOD_WITH_DATA(patch, const QVariantMap &)
QREST_METHOD_WITH_DATA(patch, const QByteArray &)
QREST_METHOD_WITH_DATA(patch, QIODevice *)
diff --git a/src/network/access/qrestaccessmanager_p.h b/src/network/access/qrestaccessmanager_p.h
index 08f1341a092..5a232ceadd7 100644
--- a/src/network/access/qrestaccessmanager_p.h
+++ b/src/network/access/qrestaccessmanager_p.h
@@ -49,8 +49,8 @@ public:
return createActiveRequest(reply, context, slot);
}
- template<typename Functor, typename Json>
- QNetworkReply *executeRequest(Functor requestOperation, Json jsonData,
+ template<typename Functor>
+ QNetworkReply *executeRequest(Functor requestOperation, const QJsonDocument &jsonDoc,
const QNetworkRequest &request,
const QObject *context, QtPrivate::QSlotObjectBase *slot)
{
@@ -62,8 +62,7 @@ public:
req.setHeader(QNetworkRequest::ContentTypeHeader,
QLatin1StringView{"application/json"});
}
- QJsonDocument json(jsonData);
- QNetworkReply *reply = requestOperation(req, json.toJson(QJsonDocument::Compact));
+ QNetworkReply *reply = requestOperation(req, jsonDoc.toJson(QJsonDocument::Compact));
return createActiveRequest(reply, context, slot);
}
diff --git a/src/network/doc/snippets/code/src_network_access_qrestaccessmanager.cpp b/src/network/doc/snippets/code/src_network_access_qrestaccessmanager.cpp
index 56f18beff65..8f9e00f4b62 100644
--- a/src/network/doc/snippets/code/src_network_access_qrestaccessmanager.cpp
+++ b/src/network/doc/snippets/code/src_network_access_qrestaccessmanager.cpp
@@ -25,7 +25,7 @@ manager->get(request, this, &MyClass::handleFinished);
//! [2]
-QJsonObject myJson;
+QJsonDocument myJson;
// ...
manager->post(request, myJson, this, [this](QRestReply &reply) {
if (!reply.isSuccess()) {
diff --git a/tests/auto/network/access/qrestaccessmanager/tst_qrestaccessmanager.cpp b/tests/auto/network/access/qrestaccessmanager/tst_qrestaccessmanager.cpp
index a19f73163ed..2e3ceac15a0 100644
--- a/tests/auto/network/access/qrestaccessmanager/tst_qrestaccessmanager.cpp
+++ b/tests/auto/network/access/qrestaccessmanager/tst_qrestaccessmanager.cpp
@@ -146,7 +146,7 @@ void tst_QRestAccessManager::requests()
VERIFY_REPLY_OK(methodGET);
QCOMPARE(serverSideRequest.body, byteArrayData);
- manager.get(request, jsonObjectData, this, callback);
+ manager.get(request, QJsonDocument{jsonObjectData}, this, callback);
VERIFY_REPLY_OK(methodGET);
QCOMPARE(QJsonDocument::fromJson(serverSideRequest.body).object(), jsonObjectData);
@@ -175,11 +175,11 @@ void tst_QRestAccessManager::requests()
VERIFY_REPLY_OK(methodPOST);
QCOMPARE(serverSideRequest.body, byteArrayData);
- manager.post(request, jsonObjectData, this, callback);
+ manager.post(request, QJsonDocument{jsonObjectData}, this, callback);
VERIFY_REPLY_OK(methodPOST);
QCOMPARE(QJsonDocument::fromJson(serverSideRequest.body).object(), jsonObjectData);
- manager.post(request, jsonArrayData, this, callback);
+ manager.post(request, QJsonDocument{jsonArrayData}, this, callback);
VERIFY_REPLY_OK(methodPOST);
QCOMPARE(QJsonDocument::fromJson(serverSideRequest.body).array(), jsonArrayData);
@@ -203,11 +203,11 @@ void tst_QRestAccessManager::requests()
VERIFY_REPLY_OK(methodPUT);
QCOMPARE(serverSideRequest.body, byteArrayData);
- manager.put(request, jsonObjectData, this, callback);
+ manager.put(request, QJsonDocument{jsonObjectData}, this, callback);
VERIFY_REPLY_OK(methodPUT);
QCOMPARE(QJsonDocument::fromJson(serverSideRequest.body).object(), jsonObjectData);
- manager.put(request, jsonArrayData, this, callback);
+ manager.put(request, QJsonDocument{jsonArrayData}, this, callback);
VERIFY_REPLY_OK(methodPUT);
QCOMPARE(QJsonDocument::fromJson(serverSideRequest.body).array(), jsonArrayData);
@@ -231,11 +231,11 @@ void tst_QRestAccessManager::requests()
VERIFY_REPLY_OK(methodPATCH);
QCOMPARE(serverSideRequest.body, byteArrayData);
- manager.patch(request, jsonObjectData, this, callback);
+ manager.patch(request, QJsonDocument{jsonObjectData}, this, callback);
VERIFY_REPLY_OK(methodPATCH);
QCOMPARE(QJsonDocument::fromJson(serverSideRequest.body).object(), jsonObjectData);
- manager.patch(request, jsonArrayData, this, callback);
+ manager.patch(request, QJsonDocument{jsonArrayData}, this, callback);
VERIFY_REPLY_OK(methodPATCH);
QCOMPARE(QJsonDocument::fromJson(serverSideRequest.body).array(), jsonArrayData);