diff --git a/src/common/davcollectiondeletejob.cpp b/src/common/davcollectiondeletejob.cpp --- a/src/common/davcollectiondeletejob.cpp +++ b/src/common/davcollectiondeletejob.cpp @@ -42,18 +42,19 @@ void DavCollectionDeleteJob::davJobFinished(KJob *job) { + Q_D(DavCollectionDeleteJob); KIO::DeleteJob *deleteJob = qobject_cast(job); if (deleteJob->error() && deleteJob->error() != KIO::ERR_NO_CONTENT) { const int responseCode = deleteJob->queryMetaData(QStringLiteral("responsecode")).isEmpty() ? 0 : deleteJob->queryMetaData(QStringLiteral("responsecode")).toInt(); - setLatestResponseCode(responseCode); + d->setLatestResponseCode(responseCode); setError(ERR_COLLECTIONDELETE); - setJobErrorText(deleteJob->errorText()); - setJobError(deleteJob->error()); - setErrorTextFromDavError(); + d->setJobErrorText(deleteJob->errorText()); + d->setJobError(deleteJob->error()); + d->setErrorTextFromDavError(); } emitResult(); diff --git a/src/common/davcollectionmodifyjob.cpp b/src/common/davcollectionmodifyjob.cpp --- a/src/common/davcollectionmodifyjob.cpp +++ b/src/common/davcollectionmodifyjob.cpp @@ -71,7 +71,7 @@ Q_D(DavCollectionModifyJob); if (d->mSetProperties.isEmpty() && d->mRemoveProperties.isEmpty()) { setError(ERR_COLLECTIONMODIFY_NO_PROPERITES); - setErrorTextFromDavError(); + d->setErrorTextFromDavError(); emitResult(); return; } @@ -111,19 +111,20 @@ void DavCollectionModifyJob::davJobFinished(KJob *job) { + Q_D(DavCollectionModifyJob); KIO::DavJob *davJob = qobject_cast(job); const QString responseCodeStr = davJob->queryMetaData(QStringLiteral("responsecode")); const int responseCode = responseCodeStr.isEmpty() ? 0 : responseCodeStr.toInt(); // KIO::DavJob does not set error() even if the HTTP status code is a 4xx or a 5xx if (davJob->error() || (responseCode >= 400 && responseCode < 600)) { - setLatestResponseCode(responseCode); + d->setLatestResponseCode(responseCode); setError(ERR_COLLECTIONMODIFY); - setJobErrorText(davJob->errorText()); - setJobError(davJob->error()); - setErrorTextFromDavError(); + d->setJobErrorText(davJob->errorText()); + d->setJobError(davJob->error()); + d->setErrorTextFromDavError(); emitResult(); return; } @@ -155,9 +156,9 @@ // Trying to get more information about the error const QDomElement responseDescriptionElement = Utils::firstChildElementNS(responseElement, QStringLiteral("DAV:"), QStringLiteral("responsedescription")); if (!responseDescriptionElement.isNull()) { - setJobErrorText(responseDescriptionElement.text()); + d->setJobErrorText(responseDescriptionElement.text()); } - setErrorTextFromDavError(); + d->setErrorTextFromDavError(); } emitResult(); diff --git a/src/common/davcollectionsfetchjob.cpp b/src/common/davcollectionsfetchjob.cpp --- a/src/common/davcollectionsfetchjob.cpp +++ b/src/common/davcollectionsfetchjob.cpp @@ -89,8 +89,8 @@ doCollectionsFetch(d->mUrl.url()); } else { // Just give up here. - setDavError(davJob->davError()); - setErrorTextFromDavError(); + d->setDavError(davJob->davError()); + d->setErrorTextFromDavError(); emitResult(); } @@ -145,11 +145,11 @@ return; } - setLatestResponseCode(responseCode); + d->setLatestResponseCode(responseCode); setError(ERR_PROBLEM_WITH_REQUEST); - setJobErrorText(davJob->errorText()); - setJobError(davJob->error()); - setErrorTextFromDavError(); + d->setJobErrorText(davJob->errorText()); + d->setJobError(davJob->error()); + d->setErrorTextFromDavError(); } else { // For use in the collectionDiscovered() signal QUrl _jobUrl = d->mUrl.url(); @@ -160,7 +160,7 @@ QDomElement rootElement = davJob->response().documentElement(); if (rootElement.tagName().compare(QLatin1String("multistatus"), Qt::CaseInsensitive) != 0) { setError(ERR_COLLECTIONFETCH); - setErrorTextFromDavError(); + d->setErrorTextFromDavError(); subjobFinished(); return; } @@ -172,15 +172,15 @@ QXmlQuery xquery; if (!xquery.setFocus(&buffer)) { setError(ERR_COLLECTIONFETCH_XQUERY_SETFOCUS); - setErrorTextFromDavError(); + d->setErrorTextFromDavError(); subjobFinished(); return; } xquery.setQuery(DavManager::davProtocol(d->mUrl.protocol())->collectionsXQuery()); if (!xquery.isValid()) { setError(ERR_COLLECTIONFETCH_XQUERY_INVALID); - setErrorTextFromDavError(); + d->setErrorTextFromDavError(); subjobFinished(); return; } @@ -193,7 +193,7 @@ QDomDocument document; if (!document.setContent(responsesStr, true)) { setError(ERR_COLLECTIONFETCH); - setErrorTextFromDavError(); + d->setErrorTextFromDavError(); subjobFinished(); return; } diff --git a/src/common/davitemcreatejob.cpp b/src/common/davitemcreatejob.cpp --- a/src/common/davitemcreatejob.cpp +++ b/src/common/davitemcreatejob.cpp @@ -73,11 +73,11 @@ ? 0 : responseCodeStr.toInt(); if (storedJob->error()) { - setLatestResponseCode(responseCode); + d->setLatestResponseCode(responseCode); setError(ERR_ITEMCREATE); - setJobErrorText(storedJob->errorText()); - setJobError(storedJob->error()); - setErrorTextFromDavError(); + d->setJobErrorText(storedJob->errorText()); + d->setJobError(storedJob->error()); + d->setErrorTextFromDavError(); emitResult(); return; @@ -104,7 +104,7 @@ if (responseCode == 301 || responseCode == 302 || responseCode == 307 || responseCode == 308) { if (d->mRedirectCount > 4) { - setLatestResponseCode(responseCode); + d->setLatestResponseCode(responseCode); setError(UserDefinedError + responseCode); emitResult(); } else { diff --git a/src/common/davitemdeletejob.cpp b/src/common/davitemdeletejob.cpp --- a/src/common/davitemdeletejob.cpp +++ b/src/common/davitemdeletejob.cpp @@ -68,11 +68,11 @@ : deleteJob->queryMetaData(QStringLiteral("responsecode")).toInt(); if (responseCode != 404 && responseCode != 410) { - setLatestResponseCode(responseCode); + d->setLatestResponseCode(responseCode); setError(ERR_ITEMDELETE); - setJobErrorText(deleteJob->errorText()); - setJobError(deleteJob->error()); - setErrorTextFromDavError(); + d->setJobErrorText(deleteJob->errorText()); + d->setJobError(deleteJob->error()); + d->setErrorTextFromDavError(); } if (hasConflict()) { diff --git a/src/common/davitemfetchjob.cpp b/src/common/davitemfetchjob.cpp --- a/src/common/davitemfetchjob.cpp +++ b/src/common/davitemfetchjob.cpp @@ -74,14 +74,14 @@ ? 0 : responseCodeStr.toInt(); - setLatestResponseCode(responseCode); + d->setLatestResponseCode(responseCode); if (storedJob->error()) { - setLatestResponseCode(responseCode); + d->setLatestResponseCode(responseCode); setError(ERR_PROBLEM_WITH_REQUEST); - setJobErrorText(storedJob->errorText()); - setJobError(storedJob->error()); - setErrorTextFromDavError(); + d->setJobErrorText(storedJob->errorText()); + d->setJobError(storedJob->error()); + d->setErrorTextFromDavError(); } else { d->mItem.setData(storedJob->data()); d->mItem.setContentType(storedJob->queryMetaData(QStringLiteral("content-type"))); diff --git a/src/common/davitemmodifyjob.cpp b/src/common/davitemmodifyjob.cpp --- a/src/common/davitemmodifyjob.cpp +++ b/src/common/davitemmodifyjob.cpp @@ -82,11 +82,11 @@ ? 0 : storedJob->queryMetaData(QStringLiteral("responsecode")).toInt(); - setLatestResponseCode(responseCode); + d->setLatestResponseCode(responseCode); setError(ERR_ITEMMODIFY); - setJobErrorText(storedJob->errorText()); - setJobError(storedJob->error()); - setErrorTextFromDavError(); + d->setJobErrorText(storedJob->errorText()); + d->setJobError(storedJob->error()); + d->setErrorTextFromDavError(); if (hasConflict()) { DavItemFetchJob *fetchJob = new DavItemFetchJob(d->mItem); diff --git a/src/common/davitemsfetchjob.cpp b/src/common/davitemsfetchjob.cpp --- a/src/common/davitemsfetchjob.cpp +++ b/src/common/davitemsfetchjob.cpp @@ -45,7 +45,7 @@ = dynamic_cast(DavManager::davProtocol(d->mCollectionUrl.protocol())); if (!protocol) { setError(ERR_NO_MULTIGET); - setErrorTextFromDavError(); + d->setErrorTextFromDavError(); emitResult(); return; } @@ -84,11 +84,11 @@ // KIO::DavJob does not set error() even if the HTTP status code is a 4xx or a 5xx if (davJob->error() || (responseCode >= 400 && responseCode < 600)) { - setLatestResponseCode(responseCode); + d->setLatestResponseCode(responseCode); setError(ERR_PROBLEM_WITH_REQUEST); - setJobErrorText(davJob->errorText()); - setJobError(davJob->error()); - setErrorTextFromDavError(); + d->setJobErrorText(davJob->errorText()); + d->setJobError(davJob->error()); + d->setErrorTextFromDavError(); emitResult(); return; diff --git a/src/common/davitemslistjob.cpp b/src/common/davitemslistjob.cpp --- a/src/common/davitemslistjob.cpp +++ b/src/common/davitemslistjob.cpp @@ -100,7 +100,7 @@ if (d->mSubJobCount == 0) { setError(ERR_ITEMLIST_NOMIMETYPE); - setErrorTextFromDavError(); + d->setErrorTextFromDavError(); emitResult(); } } @@ -133,11 +133,11 @@ // KIO::DavJob does not set error() even if the HTTP status code is a 4xx or a 5xx if (davJob->error() || (responseCode >= 400 && responseCode < 600)) { - setLatestResponseCode(responseCode); + d->setLatestResponseCode(responseCode); setError(ERR_PROBLEM_WITH_REQUEST); - setJobErrorText(davJob->errorText()); - setJobError(davJob->error()); - setErrorTextFromDavError(); + d->setJobErrorText(davJob->errorText()); + d->setJobError(davJob->error()); + d->setErrorTextFromDavError(); } else { /* * Extract data from a document like the following: diff --git a/src/common/davjobbase.h b/src/common/davjobbase.h --- a/src/common/davjobbase.h +++ b/src/common/davjobbase.h @@ -13,9 +13,9 @@ #include -class DavJobBasePrivate; - namespace KDAV { + +class DavJobBasePrivate; class Error; /** @@ -69,23 +69,9 @@ Q_REQUIRED_RESULT Error davError() const; protected: - /** - * Sets the latest response code received. - * - * Only really useful in case of error, though success codes can - * also be set. - * - * @param code The code to set, should be a valid HTTP response code or zero. - */ - Q_DECL_HIDDEN void setLatestResponseCode(int code); - - Q_DECL_HIDDEN void setJobErrorText(const QString &errorText); - Q_DECL_HIDDEN void setJobError(int jobErrorCode); - Q_DECL_HIDDEN void setErrorTextFromDavError(); - Q_DECL_HIDDEN void setDavError(const Error &error); - Q_DECL_HIDDEN explicit DavJobBase(DavJobBasePrivate *dd, QObject *parent = nullptr); std::unique_ptr d_ptr; + private: Q_DECLARE_PRIVATE(DavJobBase) }; diff --git a/src/common/davjobbase.cpp b/src/common/davjobbase.cpp --- a/src/common/davjobbase.cpp +++ b/src/common/davjobbase.cpp @@ -15,12 +15,14 @@ : KJob(parent) , d_ptr(new DavJobBasePrivate()) { + d_ptr->q = this; } DavJobBase::DavJobBase(DavJobBasePrivate *dd, QObject *parent) : KJob(parent) , d_ptr(dd) { + d_ptr->q = this; } DavJobBase::~DavJobBase() = default; @@ -76,34 +78,34 @@ return latestResponseCode() == 412; } -void DavJobBase::setLatestResponseCode(int code) +void DavJobBasePrivate::setLatestResponseCode(int code) { - d_ptr->mLatestResponseCode = code; + mLatestResponseCode = code; } Error DavJobBase::davError() const { return Error(static_cast(error()), d_ptr->mLatestResponseCode, d_ptr->mInternalErrorText, d_ptr->mJobErrorCode); } -void DavJobBase::setJobErrorText(const QString &errorText) +void DavJobBasePrivate::setJobErrorText(const QString &errorText) { - d_ptr->mInternalErrorText = errorText; + mInternalErrorText = errorText; } -void DavJobBase::setJobError(int jobErrorCode) +void DavJobBasePrivate::setJobError(int jobErrorCode) { - d_ptr->mJobErrorCode = jobErrorCode; + mJobErrorCode = jobErrorCode; } -void DavJobBase::setErrorTextFromDavError() +void DavJobBasePrivate::setErrorTextFromDavError() { - setErrorText(davError().errorText()); + q->setErrorText(q->davError().errorText()); } -void DavJobBase::setDavError(const Error &error) +void DavJobBasePrivate::setDavError(const Error &error) { - setError(error.errorNumber()); + q->setError(error.errorNumber()); setLatestResponseCode(error.responseCode()); setJobErrorText(error.internalErrorText()); setJobError(error.jobErrorCode()); diff --git a/src/common/davjobbase_p.h b/src/common/davjobbase_p.h --- a/src/common/davjobbase_p.h +++ b/src/common/davjobbase_p.h @@ -11,14 +11,35 @@ #include +namespace KDAV { +class DavJobBase; + class DavJobBasePrivate { public: virtual ~DavJobBasePrivate() = default; + /** + * Sets the latest response code received. + * + * Only really useful in case of error, though success codes can + * also be set. + * + * @param code The code to set, should be a valid HTTP response code or zero. + */ + void setLatestResponseCode(int code); + + void setJobErrorText(const QString &errorText); + void setJobError(int jobErrorCode); + void setErrorTextFromDavError(); + void setDavError(const Error &error); + + DavJobBase *q = nullptr; int mLatestResponseCode = 0; int mJobErrorCode = 0; QString mInternalErrorText; }; +} + #endif diff --git a/src/common/davprincipalhomesetsfetchjob.cpp b/src/common/davprincipalhomesetsfetchjob.cpp --- a/src/common/davprincipalhomesetsfetchjob.cpp +++ b/src/common/davprincipalhomesetsfetchjob.cpp @@ -88,11 +88,11 @@ err = davJob->errorText(); } - setLatestResponseCode(responseCode); + d->setLatestResponseCode(responseCode); setError(ERR_PROBLEM_WITH_REQUEST); - setJobErrorText(davJob->errorText()); - setJobError(davJob->error()); - setErrorTextFromDavError(); + d->setJobErrorText(davJob->errorText()); + d->setJobError(davJob->error()); + d->setErrorTextFromDavError(); emitResult(); return; diff --git a/src/common/davprincipalsearchjob.cpp b/src/common/davprincipalsearchjob.cpp --- a/src/common/davprincipalsearchjob.cpp +++ b/src/common/davprincipalsearchjob.cpp @@ -100,11 +100,11 @@ : responseCodeStr.toInt(); // KIO::DavJob does not set error() even if the HTTP status code is a 4xx or a 5xx if (davJob->error() || (responseCode >= 400 && responseCode < 600)) { - setLatestResponseCode(responseCode); + d->setLatestResponseCode(responseCode); setError(ERR_PROBLEM_WITH_REQUEST); - setJobErrorText(davJob->errorText()); - setJobError(davJob->error()); - setErrorTextFromDavError(); + d->setJobErrorText(davJob->errorText()); + d->setJobError(davJob->error()); + d->setErrorTextFromDavError(); emitResult(); return; @@ -223,21 +223,21 @@ if (responseCode > 499 && responseCode < 600 && !d->mPrincipalPropertySearchSubJobSuccessful) { // Server-side error, unrecoverable - setLatestResponseCode(responseCode); + d->setLatestResponseCode(responseCode); setError(ERR_SERVER_UNRECOVERABLE); - setJobErrorText(davJob->errorText()); - setJobError(davJob->error()); - setErrorTextFromDavError(); + d->setJobErrorText(davJob->errorText()); + d->setJobError(davJob->error()); + d->setErrorTextFromDavError(); if (d->mPrincipalPropertySearchSubJobCount == 0) { emitResult(); } return; } else if (responseCode > 399 && responseCode < 500 && !d->mPrincipalPropertySearchSubJobSuccessful) { - setLatestResponseCode(responseCode); + d->setLatestResponseCode(responseCode); setError(ERR_PROBLEM_WITH_REQUEST); - setJobErrorText(davJob->errorText()); - setJobError(davJob->error()); - setErrorTextFromDavError(); + d->setJobErrorText(davJob->errorText()); + d->setJobError(davJob->error()); + d->setErrorTextFromDavError(); if (d->mPrincipalPropertySearchSubJobCount == 0) { emitResult();