summaryrefslogtreecommitdiff
path: root/ucb/source/ucp/webdav-neon/webdavcontentcaps.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'ucb/source/ucp/webdav-neon/webdavcontentcaps.cxx')
-rw-r--r--ucb/source/ucp/webdav-neon/webdavcontentcaps.cxx18
1 files changed, 17 insertions, 1 deletions
diff --git a/ucb/source/ucp/webdav-neon/webdavcontentcaps.cxx b/ucb/source/ucp/webdav-neon/webdavcontentcaps.cxx
index fec4b627192f..4e0ce71e9151 100644
--- a/ucb/source/ucp/webdav-neon/webdavcontentcaps.cxx
+++ b/ucb/source/ucp/webdav-neon/webdavcontentcaps.cxx
@@ -282,6 +282,8 @@ bool ContentProvider::getProperty(
}
+static PropertyNamesCache aStaticPropertyNamesCache;
+
// Content implementation.
@@ -321,7 +323,21 @@ uno::Sequence< beans::Property > Content::getProperties(
try
{
std::vector< DAVResourceInfo > props;
- xResAccess->PROPFIND( DAVZERO, props, xEnv );
+ OUString aTheURL( xResAccess->getURL() );
+ PropertyNames aPropsNames( aTheURL );
+
+ if( !aStaticPropertyNamesCache.getCachedPropertyNames( aTheURL, aPropsNames ) )
+ {
+
+ xResAccess->PROPFIND( DAVZERO, props, xEnv );
+ aPropsNames.setPropertiesNames( props );
+
+ aStaticPropertyNamesCache.addCachePropertyNames( aPropsNames, 10 );
+ }
+ else
+ {
+ props = aPropsNames.getPropertiesNames();
+ }
// Note: vector always contains exactly one resource info, because
// we used a depth of DAVZERO for PROPFIND.