From 85e9389c0e97cba8648994f96509349f1d37aa31 Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Thu, 6 Oct 2016 18:44:35 +0200 Subject: [PATCH] [WFS provider] Force refresh of GetCapabilities when pressing Connect The cached response to GetCapabilities was always used, even when pressing Connect. Now a new request is sent over the network. Fixes #15647 --- src/providers/wfs/qgswfscapabilities.cpp | 4 ++-- src/providers/wfs/qgswfscapabilities.h | 2 +- src/providers/wfs/qgswfsdataitems.cpp | 4 +++- src/providers/wfs/qgswfsprovider.cpp | 4 +++- src/providers/wfs/qgswfssourceselect.cpp | 4 +++- 5 files changed, 12 insertions(+), 6 deletions(-) diff --git a/src/providers/wfs/qgswfscapabilities.cpp b/src/providers/wfs/qgswfscapabilities.cpp index ec83cd22237b..4934226013d4 100644 --- a/src/providers/wfs/qgswfscapabilities.cpp +++ b/src/providers/wfs/qgswfscapabilities.cpp @@ -36,7 +36,7 @@ QgsWFSCapabilities::~QgsWFSCapabilities() { } -bool QgsWFSCapabilities::requestCapabilities( bool synchronous ) +bool QgsWFSCapabilities::requestCapabilities( bool synchronous, bool forceRefresh ) { QUrl url( baseURL() ); url.addQueryItem( "REQUEST", "GetCapabilities" ); @@ -48,7 +48,7 @@ bool QgsWFSCapabilities::requestCapabilities( bool synchronous ) else url.addQueryItem( "VERSION", version ); - if ( !sendGET( url, synchronous, false ) ) + if ( !sendGET( url, synchronous, forceRefresh ) ) { emit gotCapabilities(); return false; diff --git a/src/providers/wfs/qgswfscapabilities.h b/src/providers/wfs/qgswfscapabilities.h index 4b51a1cc2e58..9b67e5646d53 100644 --- a/src/providers/wfs/qgswfscapabilities.h +++ b/src/providers/wfs/qgswfscapabilities.h @@ -30,7 +30,7 @@ class QgsWFSCapabilities : public QgsWFSRequest virtual ~QgsWFSCapabilities(); //! start network connection to get capabilities - bool requestCapabilities( bool synchronous ); + bool requestCapabilities( bool synchronous, bool forceRefresh ); //! description of a vector layer struct FeatureType diff --git a/src/providers/wfs/qgswfsdataitems.cpp b/src/providers/wfs/qgswfsdataitems.cpp index a2acbd13111c..e8b53a6ab772 100644 --- a/src/providers/wfs/qgswfsdataitems.cpp +++ b/src/providers/wfs/qgswfsdataitems.cpp @@ -62,7 +62,9 @@ QVector QgsWFSConnectionItem::createChildren() QgsWFSCapabilities capabilities( mUri ); - capabilities.requestCapabilities( true ); + const bool synchronous = true; + const bool forceRefresh = false; + capabilities.requestCapabilities( synchronous, forceRefresh ); QVector layers; if ( capabilities.errorCode() == QgsWFSCapabilities::NoError ) diff --git a/src/providers/wfs/qgswfsprovider.cpp b/src/providers/wfs/qgswfsprovider.cpp index 17617ace66a2..9c1960c84e7b 100644 --- a/src/providers/wfs/qgswfsprovider.cpp +++ b/src/providers/wfs/qgswfsprovider.cpp @@ -1434,7 +1434,9 @@ bool QgsWFSProvider::getCapabilities() if ( mShared->mCaps.version.isEmpty() ) { QgsWFSCapabilities getCapabilities( mShared->mURI.uri( false ) ); - if ( !getCapabilities.requestCapabilities( true ) ) + const bool synchronous = true; + const bool forceRefresh = false; + if ( !getCapabilities.requestCapabilities( synchronous, forceRefresh ) ) { QgsMessageLog::logMessage( tr( "GetCapabilities failed for url %1: %2" ). arg( dataSourceUri() ).arg( getCapabilities.errorMessage() ), tr( "WFS" ) ); diff --git a/src/providers/wfs/qgswfssourceselect.cpp b/src/providers/wfs/qgswfssourceselect.cpp index e269e12cce5e..6c00cd2eb0bd 100644 --- a/src/providers/wfs/qgswfssourceselect.cpp +++ b/src/providers/wfs/qgswfssourceselect.cpp @@ -354,7 +354,9 @@ void QgsWFSSourceSelect::connectToServer() } if ( mCapabilities ) { - mCapabilities->requestCapabilities( false ); + const bool synchronous = false; + const bool forceRefresh = true; + mCapabilities->requestCapabilities( synchronous, forceRefresh ); } }