Flush capabilities cache when flushing project layers

Made by @dmarteau
This commit is contained in:
rldhont 2016-06-28 18:15:26 +02:00
parent bf53e4ca0b
commit 7dcb9ccc6e
3 changed files with 15 additions and 0 deletions

View File

@ -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" );

View File

@ -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;

View File

@ -77,6 +77,10 @@ void QgsServerInterfaceImpl::registerAccessControl( QgsAccessControlFilter* acce
void QgsServerInterfaceImpl::removeConfigCacheEntry( const QString& path )
{
if( mCapabilitiesCache )
{
mCapabilitiesCache->removeCapabilitiesDocument( path );
}
QgsConfigCache::instance()->removeEntry( path );
}