ucb: webdav-curl: tdf#101094 (21): Simplify cache removal: LOCK, UNLOCK
[ port of commit 508f78298833f45fd9e2e789aa26cca125719baf ]
Change-Id: I81185c11ed3ad216b13fcbafee45ea3a48cf0a12
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/123474
Tested-by: Michael Stahl <michael.stahl@allotropia.de>
Reviewed-by: Michael Stahl <michael.stahl@allotropia.de>
diff --git a/ucb/source/ucp/webdav-curl/webdavcontent.cxx b/ucb/source/ucp/webdav-curl/webdavcontent.cxx
index 4644207..212c873 100644
--- a/ucb/source/ucp/webdav-curl/webdavcontent.cxx
+++ b/ucb/source/ucp/webdav-curl/webdavcontent.cxx
@@ -3116,8 +3116,6 @@ void Content::lock(
aURL = m_xIdentifier->getContentIdentifier();
}
OUString aTargetUrl = aURL;
try
{
std::unique_ptr< DAVResourceAccess > xResAccess;
@@ -3139,12 +3137,9 @@ void Content::lock(
//-1, // infinite lock
uno::Sequence< OUString >() );
// update the URL
aTargetUrl = xResAccess->getURL();
// OPTIONS may change as a consequence of the lock operation
aStaticDAVOptionsCache.removeDAVOptions( xResAccess->getURL() );
xResAccess->LOCK( aLock, Environment );
// OPTIONS may have changed as a consequence of the lock operation
aStaticDAVOptionsCache.removeDAVOptions( aTargetUrl );
{
osl::Guard< osl::Mutex > aGuard( m_aMutex );
@@ -3153,7 +3148,6 @@ void Content::lock(
}
catch ( DAVException const & e )
{
aStaticDAVOptionsCache.removeDAVOptions( aTargetUrl );
// check if the exception thrown is 'already locked'
// this exception is mapped directly to the ucb correct one, without
// going into the cancelCommandExecution() user interaction
@@ -3253,8 +3247,6 @@ void Content::lock(
void Content::unlock(
const uno::Reference< ucb::XCommandEnvironment >& Environment )
{
// save the URL to clean cache
OUString aTargetUrl = m_xIdentifier->getContentIdentifier();
try
{
@@ -3264,8 +3256,6 @@ void Content::unlock(
xResAccess.reset( new DAVResourceAccess( *m_xResAccess ) );
}
// update the URL
aTargetUrl = xResAccess->getURL();
// check if the target URL is a Class1 DAV
DAVOptions aDAVOptions;
getResourceOptions( Environment, aDAVOptions, xResAccess );
@@ -3273,10 +3263,10 @@ void Content::unlock(
// at least class one is needed
if( aDAVOptions.isClass1() )
{
xResAccess->UNLOCK( Environment );
// remove options from cache, unlock may change it
// it will be refreshed when needed
aStaticDAVOptionsCache.removeDAVOptions( aTargetUrl );
aStaticDAVOptionsCache.removeDAVOptions( xResAccess->getURL() );
xResAccess->UNLOCK( Environment );
}
{
@@ -3316,9 +3306,6 @@ void Content::unlock(
}
break;
default:
// remove options from cache,
// it will be refreshed when needed
aStaticDAVOptionsCache.removeDAVOptions( aTargetUrl );
//fallthrough
;
}