diff --git a/src/server/qgscapabilitiescache.cpp b/src/server/qgscapabilitiescache.cpp index 9fc08bf10da..bd49b0dec72 100644 --- a/src/server/qgscapabilitiescache.cpp +++ b/src/server/qgscapabilitiescache.cpp @@ -61,6 +61,12 @@ void QgsCapabilitiesCache::insertCapabilitiesDocument( const QString& configFile mCachedCapabilities[ configFilePath ].insert( key, doc->cloneNode().toDocument() ); } +void QgsCapabilitiesCache::removeCapabilitiesDocument( const QString& path ) +{ + mCachedCapabilities.remove( path ); + mFileSystemWatcher.removePath( path ); +} + void QgsCapabilitiesCache::removeChangedEntry( const QString& path ) { QgsDebugMsg( "Remove capabilities cache entry because file changed" ); diff --git a/src/server/qgscapabilitiescache.h b/src/server/qgscapabilitiescache.h index 30eb8b74a76..d228fafd84a 100644 --- a/src/server/qgscapabilitiescache.h +++ b/src/server/qgscapabilitiescache.h @@ -44,6 +44,11 @@ class SERVER_EXPORT QgsCapabilitiesCache : public QObject */ void insertCapabilitiesDocument( const QString& configFilePath, const QString& key, const QDomDocument* doc ); + /** Remove capabilities document + * @param configFilePath the project file path + */ + void removeCapabilitiesDocument( const QString& path ); + private: QHash< QString, QHash< QString, QDomDocument > > mCachedCapabilities; QFileSystemWatcher mFileSystemWatcher; diff --git a/src/server/qgsserverinterfaceimpl.cpp b/src/server/qgsserverinterfaceimpl.cpp index 399342e6dbb..47a04d76b41 100644 --- a/src/server/qgsserverinterfaceimpl.cpp +++ b/src/server/qgsserverinterfaceimpl.cpp @@ -77,6 +77,10 @@ void QgsServerInterfaceImpl::registerAccessControl( QgsAccessControlFilter* acce void QgsServerInterfaceImpl::removeConfigCacheEntry( const QString& path ) { + if( mCapabilitiesCache ) + { + mCapabilitiesCache->removeCapabilitiesDocument( path ); + } QgsConfigCache::instance()->removeEntry( path ); }