summaryrefslogtreecommitdiff
path: root/ucb/source/ucp/webdav/webdavcontentcaps.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'ucb/source/ucp/webdav/webdavcontentcaps.cxx')
-rw-r--r--ucb/source/ucp/webdav/webdavcontentcaps.cxx331
1 files changed, 123 insertions, 208 deletions
diff --git a/ucb/source/ucp/webdav/webdavcontentcaps.cxx b/ucb/source/ucp/webdav/webdavcontentcaps.cxx
index 305d509b4e2c..7f3c20eb0840 100644
--- a/ucb/source/ucp/webdav/webdavcontentcaps.cxx
+++ b/ucb/source/ucp/webdav/webdavcontentcaps.cxx
@@ -31,7 +31,7 @@
// MARKER(update_precomp.py): autogen include statement, do not remove
#include "precompiled_ucb.hxx"
/**************************************************************************
- TODO
+ TODO
**************************************************************************
*************************************************************************/
@@ -41,24 +41,19 @@
#include <com/sun/star/beans/PropertyAttribute.hpp>
#include <com/sun/star/beans/PropertyValue.hpp>
#include <com/sun/star/ucb/CommandInfo.hpp>
+#include <com/sun/star/ucb/ContentInfo.hpp>
#include <com/sun/star/ucb/OpenCommandArgument2.hpp>
#include <com/sun/star/ucb/InsertCommandArgument.hpp>
#include <com/sun/star/ucb/PostCommandArgument2.hpp>
#include <com/sun/star/ucb/TransferInfo.hpp>
#include <com/sun/star/uno/Sequence.hxx>
-#ifndef _COM_SUN_STAR_UTIL_DATETIME_HXX_
#include <com/sun/star/util/DateTime.hpp>
-#endif
#include <com/sun/star/ucb/Link.hpp>
#include <com/sun/star/ucb/Lock.hpp>
#include <com/sun/star/ucb/LockEntry.hpp>
#include "webdavcontent.hxx"
-#ifndef _WEBDAV_UCP_PROVIDFER_HXX
#include "webdavprovider.hxx"
-#endif
-#ifndef _WEBDAV_SESSION_HXX
#include "DAVSession.hxx"
-#endif
#include "ContentProperties.hxx"
using namespace com::sun::star;
@@ -162,6 +157,16 @@ bool ContentProvider::getProperty(
beans::PropertyAttribute::BOUND
| beans::PropertyAttribute::READONLY ) );
+ m_pProps->insert(
+ beans::Property(
+ rtl::OUString( RTL_CONSTASCII_USTRINGPARAM(
+ "CreatableContentsInfo" ) ),
+ -1,
+ getCppuType( static_cast<
+ const uno::Sequence< ucb::ContentInfo > * >( 0 ) ),
+ beans::PropertyAttribute::BOUND
+ | beans::PropertyAttribute::READONLY ) );
+
// Standard DAV properties.
m_pProps->insert(
@@ -221,17 +226,16 @@ bool ContentProvider::getProperty(
m_pProps->insert(
beans::Property(
- DAVProperties::LOCKDISCOVERY,
+ DAVProperties::LOCKDISCOVERY,
-1,
getCppuType( static_cast<
- const uno::Sequence<
- com::sun::star::ucb::Lock > * >( 0 ) ),
+ const uno::Sequence< ucb::Lock > * >( 0 ) ),
beans::PropertyAttribute::BOUND
| beans::PropertyAttribute::READONLY ) );
m_pProps->insert(
beans::Property(
- DAVProperties::RESOURCETYPE,
+ DAVProperties::RESOURCETYPE,
-1,
getCppuType( static_cast< const rtl::OUString * >( 0 ) ),
beans::PropertyAttribute::BOUND
@@ -239,27 +243,25 @@ bool ContentProvider::getProperty(
m_pProps->insert(
beans::Property(
- DAVProperties::SOURCE,
+ DAVProperties::SOURCE,
-1,
getCppuType( static_cast<
- const uno::Sequence<
- com::sun::star::ucb::Link > * >( 0 ) ),
+ const uno::Sequence< ucb::Link > * >( 0 ) ),
beans::PropertyAttribute::BOUND ) );
m_pProps->insert(
beans::Property(
- DAVProperties::SUPPORTEDLOCK,
+ DAVProperties::SUPPORTEDLOCK,
-1,
getCppuType( static_cast<
const uno::Sequence<
- com::sun::star::ucb::LockEntry > * >(
- 0 ) ),
+ ucb::LockEntry > * >( 0 ) ),
beans::PropertyAttribute::BOUND
| beans::PropertyAttribute::READONLY ) );
m_pProps->insert(
beans::Property(
- DAVProperties::EXECUTABLE,
+ DAVProperties::EXECUTABLE,
-1,
getCppuType( static_cast< const rtl::OUString * >( 0 ) ),
beans::PropertyAttribute::BOUND ) );
@@ -301,7 +303,7 @@ bool ContentProvider::getProperty(
// virtual
uno::Sequence< beans::Property > Content::getProperties(
- const uno::Reference< com::sun::star::ucb::XCommandEnvironment > & xEnv )
+ const uno::Reference< ucb::XCommandEnvironment > & xEnv )
{
sal_Bool bTransient;
std::auto_ptr< DAVResourceAccess > xResAccess;
@@ -314,7 +316,8 @@ uno::Sequence< beans::Property > Content::getProperties(
bTransient = m_bTransient;
xResAccess.reset( new DAVResourceAccess( *m_xResAccess.get() ) );
if ( m_xCachedProps.get() )
- xCachedProps.reset( new ContentProperties( *m_xCachedProps.get() ) );
+ xCachedProps.reset(
+ new ContentProperties( *m_xCachedProps.get() ) );
xProvider.set( m_pProvider );
}
@@ -356,6 +359,7 @@ uno::Sequence< beans::Property > Content::getProperties(
sal_Bool bHasDateModified = sal_False;
sal_Bool bHasMediaType = sal_False;
sal_Bool bHasSize = sal_False;
+ sal_Bool bHasCreatableInfos = sal_False;
{
std::set< rtl::OUString >::const_iterator it = aPropSet.begin();
@@ -436,7 +440,13 @@ uno::Sequence< beans::Property > Content::getProperties(
{
bHasSize = sal_True;
}
-
+ else if ( !bHasCreatableInfos &&
+ (*it).equalsAsciiL(
+ RTL_CONSTASCII_STRINGPARAM(
+ "CreatableContentsInfo" ) ) )
+ {
+ bHasCreatableInfos = sal_True;
+ }
it++;
}
}
@@ -486,6 +496,11 @@ uno::Sequence< beans::Property > Content::getProperties(
aPropSet.insert(
rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Size" ) ) );
+ if ( !bHasCreatableInfos )
+ aPropSet.insert(
+ rtl::OUString( RTL_CONSTASCII_USTRINGPARAM(
+ "CreatableContentsInfo" ) ) );
+
// Add cached properties, if present and still missing.
if ( xCachedProps.get() )
{
@@ -525,236 +540,136 @@ uno::Sequence< beans::Property > Content::getProperties(
//=========================================================================
// virtual
-uno::Sequence< com::sun::star::ucb::CommandInfo > Content::getCommands(
- const uno::Reference< com::sun::star::ucb::XCommandEnvironment > & xEnv )
+uno::Sequence< ucb::CommandInfo > Content::getCommands(
+ const uno::Reference< ucb::XCommandEnvironment > & xEnv )
{
osl::Guard< osl::Mutex > aGuard( m_aMutex );
- sal_Bool bFolder = sal_False;
-
- try
- {
- bFolder = isFolder( xEnv );
- }
- catch ( uno::Exception const & )
- {
- static com::sun::star::ucb::CommandInfo aDefaultCommandInfoTable[] =
- {
- ///////////////////////////////////////////////////////////////
- // Just mandatory commands avail.
- ///////////////////////////////////////////////////////////////
-
- com::sun::star::ucb::CommandInfo(
- rtl::OUString(
- RTL_CONSTASCII_USTRINGPARAM( "getCommandInfo" ) ),
- -1,
- getCppuVoidType()
- ),
- com::sun::star::ucb::CommandInfo(
- rtl::OUString(
- RTL_CONSTASCII_USTRINGPARAM( "getPropertySetInfo" ) ),
- -1,
- getCppuVoidType()
- ),
- com::sun::star::ucb::CommandInfo(
- rtl::OUString(
- RTL_CONSTASCII_USTRINGPARAM( "getPropertyValues" ) ),
- -1,
- getCppuType( static_cast<
- uno::Sequence< beans::Property > * >( 0 ) )
- ),
- com::sun::star::ucb::CommandInfo(
- rtl::OUString(
- RTL_CONSTASCII_USTRINGPARAM( "setPropertyValues" ) ),
- -1,
- getCppuType( static_cast<
- uno::Sequence< beans::PropertyValue > * >( 0 ) )
- )
- };
- return uno::Sequence< com::sun::star::ucb::CommandInfo >(
- aDefaultCommandInfoTable, 4 );
- }
-
- if ( bFolder )
- {
- //=================================================================
- //
- // Folder: Supported commands
- //
- //=================================================================
+ uno::Sequence< ucb::CommandInfo > aCmdInfo( 8 );
- static com::sun::star::ucb::CommandInfo aFolderCommandInfoTable[] =
- {
- ///////////////////////////////////////////////////////////////
- // Required commands
- ///////////////////////////////////////////////////////////////
+ ///////////////////////////////////////////////////////////////
+ // Mandatory commands
+ ///////////////////////////////////////////////////////////////
- com::sun::star::ucb::CommandInfo(
+ aCmdInfo[ 0 ] =
+ ucb::CommandInfo(
rtl::OUString(
RTL_CONSTASCII_USTRINGPARAM( "getCommandInfo" ) ),
-1,
- getCppuVoidType()
- ),
- com::sun::star::ucb::CommandInfo(
+ getCppuVoidType() );
+ aCmdInfo[ 1 ] =
+ ucb::CommandInfo(
rtl::OUString(
RTL_CONSTASCII_USTRINGPARAM( "getPropertySetInfo" ) ),
-1,
- getCppuVoidType()
- ),
- com::sun::star::ucb::CommandInfo(
+ getCppuVoidType() );
+ aCmdInfo[ 2 ] =
+ ucb::CommandInfo(
rtl::OUString(
RTL_CONSTASCII_USTRINGPARAM( "getPropertyValues" ) ),
-1,
getCppuType( static_cast<
- uno::Sequence< beans::Property > * >( 0 ) )
- ),
- com::sun::star::ucb::CommandInfo(
+ uno::Sequence< beans::Property > * >( 0 ) ) );
+ aCmdInfo[ 3 ] =
+ ucb::CommandInfo(
rtl::OUString(
RTL_CONSTASCII_USTRINGPARAM( "setPropertyValues" ) ),
-1,
getCppuType( static_cast<
- uno::Sequence< beans::PropertyValue > * >( 0 ) )
- ),
+ uno::Sequence< beans::PropertyValue > * >( 0 ) ) );
- ///////////////////////////////////////////////////////////////
- // Optional standard commands
- ///////////////////////////////////////////////////////////////
+ ///////////////////////////////////////////////////////////////
+ // Optional standard commands
+ ///////////////////////////////////////////////////////////////
- com::sun::star::ucb::CommandInfo(
+ aCmdInfo[ 4 ] =
+ ucb::CommandInfo(
rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "delete" ) ),
-1,
- getCppuBooleanType()
- ),
- com::sun::star::ucb::CommandInfo(
+ getCppuBooleanType() );
+ aCmdInfo[ 5 ] =
+ ucb::CommandInfo(
rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "insert" ) ),
-1,
getCppuType( static_cast<
- com::sun::star::ucb::InsertCommandArgument * >( 0 ) )
- ),
- com::sun::star::ucb::CommandInfo(
+ ucb::InsertCommandArgument * >( 0 ) ) );
+ aCmdInfo[ 6 ] =
+ ucb::CommandInfo(
rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "open" ) ),
-1,
getCppuType( static_cast<
- com::sun::star::ucb::OpenCommandArgument2 * >( 0 ) )
- ),
- com::sun::star::ucb::CommandInfo(
- rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "transfer" ) ),
- -1,
- getCppuType( static_cast<
- com::sun::star::ucb::TransferInfo * >( 0 ) )
- )
+ ucb::OpenCommandArgument2 * >( 0 ) ) );
- ///////////////////////////////////////////////////////////////
- // New commands
- ///////////////////////////////////////////////////////////////
+ ///////////////////////////////////////////////////////////////
+ // New commands
+ ///////////////////////////////////////////////////////////////
- /*
- com::sun::star::ucb::CommandInfo(
- rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "COPY" ) ),
- -1,
- getCppuType( static_cast< const rtl::OUString * >( 0 ) ),
- ),
- com::sun::star::ucb::CommandInfo(
- rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "MOVE" ) ),
+ aCmdInfo[ 7 ] =
+ ucb::CommandInfo(
+ rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "post" ) ),
-1,
- getCppuType( static_cast< const rtl::OUString * >( 0 ) ),
- )
- */
- };
+ getCppuType( static_cast<
+ ucb::PostCommandArgument2 * >( 0 ) ) );
+
+ sal_Bool bFolder = sal_False;
- return uno::Sequence< com::sun::star::ucb::CommandInfo >(
- aFolderCommandInfoTable, 8 );
+ try
+ {
+ bFolder = isFolder( xEnv );
}
- else
+ catch ( uno::Exception const & )
{
- //=================================================================
- //
- // Document: Supported commands
- //
- //=================================================================
+ return aCmdInfo;
+ }
- static com::sun::star::ucb::CommandInfo aDocumentCommandInfoTable[] =
- {
- ///////////////////////////////////////////////////////////////
- // Required commands
- ///////////////////////////////////////////////////////////////
+ sal_Bool bSupportsLocking = supportsExclusiveWriteLock( xEnv );
- com::sun::star::ucb::CommandInfo(
- rtl::OUString(
- RTL_CONSTASCII_USTRINGPARAM( "getCommandInfo" ) ),
- -1,
- getCppuVoidType()
- ),
- com::sun::star::ucb::CommandInfo(
- rtl::OUString(
- RTL_CONSTASCII_USTRINGPARAM( "getPropertySetInfo" ) ),
- -1,
- getCppuVoidType()
- ),
- com::sun::star::ucb::CommandInfo(
- rtl::OUString(
- RTL_CONSTASCII_USTRINGPARAM( "getPropertyValues" ) ),
- -1,
- getCppuType( static_cast<
- uno::Sequence< beans::Property > * >( 0 ) )
- ),
- com::sun::star::ucb::CommandInfo(
- rtl::OUString(
- RTL_CONSTASCII_USTRINGPARAM( "setPropertyValues" ) ),
- -1,
- getCppuType( static_cast<
- uno::Sequence< beans::PropertyValue > * >( 0 ) )
- ),
+ sal_Int32 nPos = aCmdInfo.getLength();
+ sal_Int32 nMoreCmds = ( bFolder ? 2 : 0 ) + ( bSupportsLocking ? 2 : 0 );
+ if ( nMoreCmds )
+ aCmdInfo.realloc( nPos + nMoreCmds );
+ else
+ return aCmdInfo;
- ///////////////////////////////////////////////////////////////
- // Optional standard commands
- ///////////////////////////////////////////////////////////////
+ if ( bFolder )
+ {
+ ///////////////////////////////////////////////////////////////
+ // Optional standard commands
+ ///////////////////////////////////////////////////////////////
- com::sun::star::ucb::CommandInfo(
- rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "delete" ) ),
- -1,
- getCppuBooleanType()
- ),
- com::sun::star::ucb::CommandInfo(
- rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "insert" ) ),
+ aCmdInfo[ nPos ] =
+ ucb::CommandInfo(
+ rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "transfer" ) ),
-1,
- getCppuType( static_cast<
- com::sun::star::ucb::InsertCommandArgument * >( 0 ) )
- ),
- com::sun::star::ucb::CommandInfo(
- rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "open" ) ),
+ getCppuType( static_cast< ucb::TransferInfo * >( 0 ) ) );
+ nPos++;
+ aCmdInfo[ nPos ] =
+ ucb::CommandInfo(
+ rtl::OUString( RTL_CONSTASCII_USTRINGPARAM(
+ "createNewContent" ) ),
-1,
- getCppuType( static_cast<
- com::sun::star::ucb::OpenCommandArgument2 * >( 0 ) )
- ),
-
- ///////////////////////////////////////////////////////////////
- // New commands
- ///////////////////////////////////////////////////////////////
-
- com::sun::star::ucb::CommandInfo(
- rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "post" ) ),
- -1,
- getCppuType( static_cast<
- com::sun::star::ucb::PostCommandArgument2 * >( 0 ) )
- )
+ getCppuType( static_cast< ucb::ContentInfo * >( 0 ) ) );
+ nPos++;
+ }
+ else
+ {
+ // no document-only commands at the moment.
+ }
- /*
- com::sun::star::ucb::CommandInfo(
- rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "COPY" ) ),
+ if ( bSupportsLocking )
+ {
+ aCmdInfo[ nPos ] =
+ ucb::CommandInfo(
+ rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "lock" ) ),
-1,
- getCppuType( static_cast< const rtl::OUString * >( 0 ) ),
- ),
- com::sun::star::ucb::CommandInfo(
- rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "MOVE" ) ),
+ getCppuVoidType() );
+ nPos++;
+ aCmdInfo[ nPos ] =
+ ucb::CommandInfo(
+ rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "unlock" ) ),
-1,
- getCppuType( static_cast< const rtl::OUString * >( 0 ) ),
- )
- */
- };
-
- return uno::Sequence< com::sun::star::ucb::CommandInfo >(
- aDocumentCommandInfoTable, 8 );
+ getCppuVoidType() );
+ nPos++;
}
+ return aCmdInfo;
}
-