summaryrefslogtreecommitdiff
path: root/ucb/source
diff options
context:
space:
mode:
authorsb <sb@openoffice.org>2010-03-10 16:47:22 +0100
committersb <sb@openoffice.org>2010-03-10 16:47:22 +0100
commit368495f6de687541cd845311d6f5a94b2ba3668b (patch)
tree0ad9ca966590de803d3e69a3d1dfedec74e85c85 /ucb/source
parent3fa33bb8c9b28a06be2850fd2dfa7bd9f88b8844 (diff)
parent8b9ebf6f31f42f8d48c87c6a2ef8fca2d2f9b5fe (diff)
tkr33: merged in DEV300_m74
Diffstat (limited to 'ucb/source')
-rw-r--r--ucb/source/cacher/cachedcontentresultset.cxx5
-rw-r--r--ucb/source/cacher/cachedcontentresultset.hxx5
-rw-r--r--ucb/source/cacher/cachedcontentresultsetstub.cxx5
-rw-r--r--ucb/source/cacher/cachedcontentresultsetstub.hxx5
-rw-r--r--ucb/source/cacher/cacheddynamicresultset.cxx5
-rw-r--r--ucb/source/cacher/cacheddynamicresultset.hxx5
-rw-r--r--ucb/source/cacher/cacheddynamicresultsetstub.cxx5
-rw-r--r--ucb/source/cacher/cacheddynamicresultsetstub.hxx5
-rw-r--r--ucb/source/cacher/cacheserv.cxx5
-rw-r--r--ucb/source/cacher/contentresultsetwrapper.cxx5
-rw-r--r--ucb/source/cacher/contentresultsetwrapper.hxx5
-rw-r--r--ucb/source/cacher/dynamicresultsetwrapper.cxx5
-rw-r--r--ucb/source/cacher/dynamicresultsetwrapper.hxx5
-rw-r--r--ucb/source/cacher/makefile.mk6
-rw-r--r--ucb/source/core/cmdenv.cxx191
-rw-r--r--ucb/source/core/cmdenv.hxx102
-rw-r--r--ucb/source/core/identify.cxx5
-rw-r--r--ucb/source/core/identify.hxx5
-rw-r--r--ucb/source/core/makefile.mk11
-rw-r--r--ucb/source/core/providermap.hxx5
-rw-r--r--ucb/source/core/provprox.cxx5
-rw-r--r--ucb/source/core/provprox.hxx5
-rw-r--r--ucb/source/core/ucb.cxx5
-rw-r--r--ucb/source/core/ucb.hxx5
-rw-r--r--ucb/source/core/ucbcmds.cxx260
-rw-r--r--ucb/source/core/ucbcmds.hxx5
-rw-r--r--ucb/source/core/ucbprops.cxx5
-rw-r--r--ucb/source/core/ucbprops.hxx5
-rw-r--r--ucb/source/core/ucbserv.cxx29
-rw-r--r--ucb/source/core/ucbstore.cxx17
-rw-r--r--ucb/source/core/ucbstore.hxx5
-rw-r--r--ucb/source/inc/regexp.hxx5
-rw-r--r--ucb/source/inc/regexpmap.hxx5
-rw-r--r--ucb/source/inc/regexpmap.tpt5
-rw-r--r--ucb/source/regexp/makefile.mk6
-rw-r--r--ucb/source/regexp/regexp.cxx5
-rw-r--r--ucb/source/sorter/makefile.mk6
-rw-r--r--ucb/source/sorter/sortdynres.cxx5
-rw-r--r--ucb/source/sorter/sortdynres.hxx5
-rw-r--r--ucb/source/sorter/sortmain.cxx5
-rw-r--r--ucb/source/sorter/sortresult.cxx5
-rw-r--r--ucb/source/sorter/sortresult.hxx5
-rw-r--r--ucb/source/ucp/expand/makefile.mk6
-rw-r--r--ucb/source/ucp/expand/ucpexpand.cxx5
-rw-r--r--ucb/source/ucp/file/bc.cxx71
-rw-r--r--ucb/source/ucp/file/bc.hxx5
-rw-r--r--ucb/source/ucp/file/filcmd.cxx5
-rw-r--r--ucb/source/ucp/file/filcmd.hxx5
-rw-r--r--ucb/source/ucp/file/filerror.hxx35
-rw-r--r--ucb/source/ucp/file/filglob.cxx70
-rw-r--r--ucb/source/ucp/file/filglob.hxx5
-rw-r--r--ucb/source/ucp/file/filid.cxx5
-rw-r--r--ucb/source/ucp/file/filid.hxx5
-rw-r--r--ucb/source/ucp/file/filinl.hxx5
-rw-r--r--ucb/source/ucp/file/filinpstr.cxx5
-rw-r--r--ucb/source/ucp/file/filinpstr.hxx5
-rw-r--r--ucb/source/ucp/file/filinsreq.cxx5
-rw-r--r--ucb/source/ucp/file/filinsreq.hxx5
-rw-r--r--ucb/source/ucp/file/filnot.cxx5
-rw-r--r--ucb/source/ucp/file/filnot.hxx5
-rw-r--r--ucb/source/ucp/file/filprp.cxx5
-rw-r--r--ucb/source/ucp/file/filprp.hxx5
-rw-r--r--ucb/source/ucp/file/filrec.cxx5
-rw-r--r--ucb/source/ucp/file/filrec.hxx5
-rw-r--r--ucb/source/ucp/file/filrow.cxx5
-rw-r--r--ucb/source/ucp/file/filrow.hxx5
-rw-r--r--ucb/source/ucp/file/filrset.cxx5
-rw-r--r--ucb/source/ucp/file/filrset.hxx5
-rw-r--r--ucb/source/ucp/file/filstr.cxx5
-rw-r--r--ucb/source/ucp/file/filstr.hxx5
-rw-r--r--ucb/source/ucp/file/filtask.cxx90
-rw-r--r--ucb/source/ucp/file/filtask.hxx112
-rw-r--r--ucb/source/ucp/file/makefile.mk6
-rw-r--r--ucb/source/ucp/file/prov.cxx5
-rw-r--r--ucb/source/ucp/file/prov.hxx5
-rw-r--r--ucb/source/ucp/file/shell.cxx152
-rw-r--r--ucb/source/ucp/file/shell.hxx21
-rw-r--r--ucb/source/ucp/ftp/curl.hxx5
-rw-r--r--ucb/source/ucp/ftp/ftpcfunc.cxx5
-rw-r--r--ucb/source/ucp/ftp/ftpcfunc.hxx5
-rw-r--r--ucb/source/ucp/ftp/ftpcontainer.hxx5
-rw-r--r--ucb/source/ucp/ftp/ftpcontent.cxx370
-rw-r--r--ucb/source/ucp/ftp/ftpcontent.hxx83
-rw-r--r--ucb/source/ucp/ftp/ftpcontentcaps.cxx77
-rw-r--r--ucb/source/ucp/ftp/ftpcontentidentifier.cxx5
-rw-r--r--ucb/source/ucp/ftp/ftpcontentidentifier.hxx5
-rw-r--r--ucb/source/ucp/ftp/ftpcontentprovider.cxx5
-rw-r--r--ucb/source/ucp/ftp/ftpcontentprovider.hxx5
-rw-r--r--ucb/source/ucp/ftp/ftpdirp.cxx33
-rw-r--r--ucb/source/ucp/ftp/ftpdirp.hxx44
-rw-r--r--ucb/source/ucp/ftp/ftpdynresultset.cxx5
-rw-r--r--ucb/source/ucp/ftp/ftpdynresultset.hxx5
-rw-r--r--ucb/source/ucp/ftp/ftpinpstr.cxx58
-rw-r--r--ucb/source/ucp/ftp/ftpinpstr.hxx5
-rw-r--r--ucb/source/ucp/ftp/ftpintreq.cxx43
-rw-r--r--ucb/source/ucp/ftp/ftpintreq.hxx73
-rw-r--r--ucb/source/ucp/ftp/ftploaderthread.cxx5
-rw-r--r--ucb/source/ucp/ftp/ftploaderthread.hxx5
-rw-r--r--ucb/source/ucp/ftp/ftpresultsetI.cxx19
-rw-r--r--ucb/source/ucp/ftp/ftpresultsetI.hxx5
-rw-r--r--ucb/source/ucp/ftp/ftpresultsetbase.cxx5
-rw-r--r--ucb/source/ucp/ftp/ftpresultsetbase.hxx5
-rw-r--r--ucb/source/ucp/ftp/ftpresultsetfactory.hxx5
-rw-r--r--ucb/source/ucp/ftp/ftpservices.cxx5
-rw-r--r--ucb/source/ucp/ftp/ftpstrcont.hxx5
-rw-r--r--ucb/source/ucp/ftp/ftpurl.cxx32
-rw-r--r--ucb/source/ucp/ftp/ftpurl.hxx71
-rw-r--r--ucb/source/ucp/ftp/makefile.mk6
-rw-r--r--ucb/source/ucp/ftp/test.cxx5
-rw-r--r--ucb/source/ucp/ftp/test_activedatasink.cxx5
-rw-r--r--ucb/source/ucp/ftp/test_activedatasink.hxx5
-rwxr-xr-xucb/source/ucp/ftp/test_ftpurl.cxx5
-rw-r--r--ucb/source/ucp/ftp/test_interactionhandler.hxx5
-rw-r--r--ucb/source/ucp/ftp/test_multiservicefac.cxx5
-rw-r--r--ucb/source/ucp/ftp/test_multiservicefac.hxx5
-rw-r--r--ucb/source/ucp/gio/gio_content.cxx199
-rw-r--r--ucb/source/ucp/gio/gio_content.hxx27
-rw-r--r--ucb/source/ucp/gio/gio_datasupplier.cxx15
-rw-r--r--ucb/source/ucp/gio/gio_datasupplier.hxx5
-rw-r--r--ucb/source/ucp/gio/gio_inputstream.cxx5
-rw-r--r--ucb/source/ucp/gio/gio_inputstream.hxx5
-rw-r--r--ucb/source/ucp/gio/gio_mount.cxx5
-rw-r--r--ucb/source/ucp/gio/gio_mount.hxx5
-rw-r--r--ucb/source/ucp/gio/gio_outputstream.cxx5
-rw-r--r--ucb/source/ucp/gio/gio_outputstream.hxx5
-rw-r--r--ucb/source/ucp/gio/gio_provider.cxx5
-rw-r--r--ucb/source/ucp/gio/gio_provider.hxx5
-rw-r--r--ucb/source/ucp/gio/gio_resultset.cxx5
-rw-r--r--ucb/source/ucp/gio/gio_resultset.hxx5
-rw-r--r--ucb/source/ucp/gio/gio_seekable.cxx5
-rw-r--r--ucb/source/ucp/gio/gio_seekable.hxx5
-rw-r--r--ucb/source/ucp/gio/makefile.mk6
-rw-r--r--ucb/source/ucp/gvfs/gvfs_content.cxx (renamed from ucb/source/ucp/gvfs/content.cxx)272
-rw-r--r--ucb/source/ucp/gvfs/gvfs_content.hxx (renamed from ucb/source/ucp/gvfs/content.hxx)94
-rw-r--r--ucb/source/ucp/gvfs/gvfs_directory.cxx (renamed from ucb/source/ucp/gvfs/directory.cxx)45
-rw-r--r--ucb/source/ucp/gvfs/gvfs_directory.hxx (renamed from ucb/source/ucp/gvfs/directory.hxx)13
-rw-r--r--ucb/source/ucp/gvfs/gvfs_provider.cxx (renamed from ucb/source/ucp/gvfs/provider.cxx)15
-rw-r--r--ucb/source/ucp/gvfs/gvfs_provider.hxx (renamed from ucb/source/ucp/gvfs/provider.hxx)5
-rw-r--r--ucb/source/ucp/gvfs/gvfs_stream.cxx (renamed from ucb/source/ucp/gvfs/stream.cxx)25
-rw-r--r--ucb/source/ucp/gvfs/gvfs_stream.hxx (renamed from ucb/source/ucp/gvfs/stream.hxx)5
-rw-r--r--ucb/source/ucp/gvfs/makefile.mk14
-rw-r--r--ucb/source/ucp/hierarchy/dynamicresultset.cxx5
-rw-r--r--ucb/source/ucp/hierarchy/dynamicresultset.hxx5
-rw-r--r--ucb/source/ucp/hierarchy/hierarchycontent.cxx200
-rw-r--r--ucb/source/ucp/hierarchy/hierarchycontent.hxx24
-rw-r--r--ucb/source/ucp/hierarchy/hierarchycontentcaps.cxx142
-rw-r--r--ucb/source/ucp/hierarchy/hierarchydata.cxx5
-rw-r--r--ucb/source/ucp/hierarchy/hierarchydata.hxx5
-rw-r--r--ucb/source/ucp/hierarchy/hierarchydatasource.cxx5
-rw-r--r--ucb/source/ucp/hierarchy/hierarchydatasource.hxx5
-rw-r--r--ucb/source/ucp/hierarchy/hierarchydatasupplier.cxx5
-rw-r--r--ucb/source/ucp/hierarchy/hierarchydatasupplier.hxx5
-rw-r--r--ucb/source/ucp/hierarchy/hierarchyprovider.cxx5
-rw-r--r--ucb/source/ucp/hierarchy/hierarchyprovider.hxx5
-rw-r--r--ucb/source/ucp/hierarchy/hierarchyservices.cxx5
-rw-r--r--ucb/source/ucp/hierarchy/hierarchyuri.cxx5
-rw-r--r--ucb/source/ucp/hierarchy/hierarchyuri.hxx5
-rw-r--r--ucb/source/ucp/hierarchy/makefile.mk6
-rw-r--r--ucb/source/ucp/inc/urihelper.hxx5
-rw-r--r--ucb/source/ucp/odma/makefile.mk6
-rw-r--r--ucb/source/ucp/odma/odma_content.cxx5
-rw-r--r--ucb/source/ucp/odma/odma_content.hxx5
-rw-r--r--ucb/source/ucp/odma/odma_contentcaps.cxx5
-rw-r--r--ucb/source/ucp/odma/odma_contentprops.hxx5
-rw-r--r--ucb/source/ucp/odma/odma_datasupplier.cxx5
-rw-r--r--ucb/source/ucp/odma/odma_datasupplier.hxx5
-rw-r--r--ucb/source/ucp/odma/odma_inputstream.cxx5
-rw-r--r--ucb/source/ucp/odma/odma_inputstream.hxx5
-rw-r--r--ucb/source/ucp/odma/odma_lib.cxx5
-rw-r--r--ucb/source/ucp/odma/odma_lib.hxx5
-rw-r--r--ucb/source/ucp/odma/odma_main.cxx5
-rw-r--r--ucb/source/ucp/odma/odma_provider.cxx5
-rw-r--r--ucb/source/ucp/odma/odma_provider.hxx5
-rw-r--r--ucb/source/ucp/odma/odma_resultset.cxx5
-rw-r--r--ucb/source/ucp/odma/odma_resultset.hxx5
-rw-r--r--ucb/source/ucp/odma/odma_services.cxx5
-rw-r--r--ucb/source/ucp/package/makefile.mk6
-rw-r--r--ucb/source/ucp/package/pkgcontent.cxx229
-rw-r--r--ucb/source/ucp/package/pkgcontent.hxx49
-rw-r--r--ucb/source/ucp/package/pkgcontentcaps.cxx70
-rw-r--r--ucb/source/ucp/package/pkgdatasupplier.cxx5
-rw-r--r--ucb/source/ucp/package/pkgdatasupplier.hxx5
-rw-r--r--ucb/source/ucp/package/pkgprovider.cxx5
-rw-r--r--ucb/source/ucp/package/pkgprovider.hxx5
-rw-r--r--ucb/source/ucp/package/pkgresultset.cxx5
-rw-r--r--ucb/source/ucp/package/pkgresultset.hxx5
-rw-r--r--ucb/source/ucp/package/pkgservices.cxx5
-rw-r--r--ucb/source/ucp/package/pkguri.cxx5
-rw-r--r--ucb/source/ucp/package/pkguri.hxx5
-rw-r--r--ucb/source/ucp/tdoc/makefile.mk6
-rw-r--r--ucb/source/ucp/tdoc/tdoc_content.cxx236
-rw-r--r--ucb/source/ucp/tdoc/tdoc_content.hxx21
-rw-r--r--ucb/source/ucp/tdoc/tdoc_contentcaps.cxx88
-rw-r--r--ucb/source/ucp/tdoc/tdoc_datasupplier.cxx5
-rw-r--r--ucb/source/ucp/tdoc/tdoc_datasupplier.hxx5
-rw-r--r--ucb/source/ucp/tdoc/tdoc_docmgr.cxx5
-rw-r--r--ucb/source/ucp/tdoc/tdoc_docmgr.hxx5
-rw-r--r--ucb/source/ucp/tdoc/tdoc_documentcontentfactory.cxx5
-rw-r--r--ucb/source/ucp/tdoc/tdoc_documentcontentfactory.hxx5
-rw-r--r--ucb/source/ucp/tdoc/tdoc_passwordrequest.cxx5
-rw-r--r--ucb/source/ucp/tdoc/tdoc_passwordrequest.hxx5
-rw-r--r--ucb/source/ucp/tdoc/tdoc_provider.cxx5
-rw-r--r--ucb/source/ucp/tdoc/tdoc_provider.hxx5
-rw-r--r--ucb/source/ucp/tdoc/tdoc_resultset.cxx5
-rw-r--r--ucb/source/ucp/tdoc/tdoc_resultset.hxx5
-rw-r--r--ucb/source/ucp/tdoc/tdoc_services.cxx5
-rw-r--r--ucb/source/ucp/tdoc/tdoc_stgelems.cxx5
-rw-r--r--ucb/source/ucp/tdoc/tdoc_stgelems.hxx5
-rw-r--r--ucb/source/ucp/tdoc/tdoc_storage.cxx5
-rw-r--r--ucb/source/ucp/tdoc/tdoc_storage.hxx5
-rw-r--r--ucb/source/ucp/tdoc/tdoc_uri.cxx5
-rw-r--r--ucb/source/ucp/tdoc/tdoc_uri.hxx5
-rw-r--r--ucb/source/ucp/webdav/ContentProperties.cxx5
-rw-r--r--ucb/source/ucp/webdav/ContentProperties.hxx5
-rw-r--r--ucb/source/ucp/webdav/DAVAuthListener.hxx5
-rw-r--r--ucb/source/ucp/webdav/DAVAuthListenerImpl.hxx5
-rw-r--r--ucb/source/ucp/webdav/DAVException.hxx43
-rw-r--r--ucb/source/ucp/webdav/DAVProperties.cxx31
-rw-r--r--ucb/source/ucp/webdav/DAVProperties.hxx5
-rw-r--r--ucb/source/ucp/webdav/DAVRequestEnvironment.hxx5
-rw-r--r--ucb/source/ucp/webdav/DAVResource.hxx5
-rw-r--r--ucb/source/ucp/webdav/DAVResourceAccess.cxx370
-rw-r--r--ucb/source/ucp/webdav/DAVResourceAccess.hxx167
-rw-r--r--ucb/source/ucp/webdav/DAVSession.hxx132
-rw-r--r--ucb/source/ucp/webdav/DAVSessionFactory.cxx5
-rw-r--r--ucb/source/ucp/webdav/DAVSessionFactory.hxx5
-rw-r--r--ucb/source/ucp/webdav/DAVTypes.hxx5
-rw-r--r--ucb/source/ucp/webdav/DateTimeHelper.cxx5
-rw-r--r--ucb/source/ucp/webdav/DateTimeHelper.hxx5
-rw-r--r--ucb/source/ucp/webdav/LinkSequence.cxx22
-rw-r--r--ucb/source/ucp/webdav/LinkSequence.hxx5
-rw-r--r--ucb/source/ucp/webdav/LockEntrySequence.cxx43
-rw-r--r--ucb/source/ucp/webdav/LockEntrySequence.hxx5
-rw-r--r--ucb/source/ucp/webdav/LockSequence.cxx12
-rw-r--r--ucb/source/ucp/webdav/LockSequence.hxx5
-rw-r--r--ucb/source/ucp/webdav/NeonHeadRequest.cxx5
-rw-r--r--ucb/source/ucp/webdav/NeonHeadRequest.hxx5
-rw-r--r--ucb/source/ucp/webdav/NeonInputStream.cxx5
-rw-r--r--ucb/source/ucp/webdav/NeonInputStream.hxx5
-rw-r--r--ucb/source/ucp/webdav/NeonLockStore.cxx245
-rw-r--r--ucb/source/ucp/webdav/NeonLockStore.hxx102
-rw-r--r--ucb/source/ucp/webdav/NeonPropFindRequest.cxx92
-rw-r--r--ucb/source/ucp/webdav/NeonPropFindRequest.hxx5
-rw-r--r--ucb/source/ucp/webdav/NeonSession.cxx1086
-rw-r--r--ucb/source/ucp/webdav/NeonSession.hxx467
-rw-r--r--ucb/source/ucp/webdav/NeonTypes.hxx8
-rw-r--r--ucb/source/ucp/webdav/NeonUri.cxx62
-rw-r--r--ucb/source/ucp/webdav/NeonUri.hxx5
-rw-r--r--ucb/source/ucp/webdav/PropertyMap.hxx5
-rw-r--r--ucb/source/ucp/webdav/UCBDeadPropertyValue.cxx20
-rw-r--r--ucb/source/ucp/webdav/UCBDeadPropertyValue.hxx5
-rw-r--r--ucb/source/ucp/webdav/makefile.mk64
-rw-r--r--ucb/source/ucp/webdav/webdavcontent.cxx1034
-rw-r--r--ucb/source/ucp/webdav/webdavcontent.hxx194
-rw-r--r--ucb/source/ucp/webdav/webdavcontentcaps.cxx336
-rw-r--r--ucb/source/ucp/webdav/webdavdatasupplier.cxx5
-rw-r--r--ucb/source/ucp/webdav/webdavdatasupplier.hxx5
-rw-r--r--ucb/source/ucp/webdav/webdavprovider.cxx5
-rw-r--r--ucb/source/ucp/webdav/webdavprovider.hxx5
-rw-r--r--ucb/source/ucp/webdav/webdavresultset.cxx5
-rw-r--r--ucb/source/ucp/webdav/webdavresultset.hxx5
-rw-r--r--ucb/source/ucp/webdav/webdavservices.cxx5
262 files changed, 5085 insertions, 4293 deletions
diff --git a/ucb/source/cacher/cachedcontentresultset.cxx b/ucb/source/cacher/cachedcontentresultset.cxx
index a6c3f0aa8e..b5efa2b9e9 100644
--- a/ucb/source/cacher/cachedcontentresultset.cxx
+++ b/ucb/source/cacher/cachedcontentresultset.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: cachedcontentresultset.cxx,v $
- * $Revision: 1.14.22.1 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/cacher/cachedcontentresultset.hxx b/ucb/source/cacher/cachedcontentresultset.hxx
index 693c66320f..8cca1605b8 100644
--- a/ucb/source/cacher/cachedcontentresultset.hxx
+++ b/ucb/source/cacher/cachedcontentresultset.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: cachedcontentresultset.hxx,v $
- * $Revision: 1.5.22.1 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/cacher/cachedcontentresultsetstub.cxx b/ucb/source/cacher/cachedcontentresultsetstub.cxx
index 4581351420..98ac358c67 100644
--- a/ucb/source/cacher/cachedcontentresultsetstub.cxx
+++ b/ucb/source/cacher/cachedcontentresultsetstub.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: cachedcontentresultsetstub.cxx,v $
- * $Revision: 1.11 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/cacher/cachedcontentresultsetstub.hxx b/ucb/source/cacher/cachedcontentresultsetstub.hxx
index 230d60571e..063315869d 100644
--- a/ucb/source/cacher/cachedcontentresultsetstub.hxx
+++ b/ucb/source/cacher/cachedcontentresultsetstub.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: cachedcontentresultsetstub.hxx,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/cacher/cacheddynamicresultset.cxx b/ucb/source/cacher/cacheddynamicresultset.cxx
index 7415ceb6c3..c6badc9266 100644
--- a/ucb/source/cacher/cacheddynamicresultset.cxx
+++ b/ucb/source/cacher/cacheddynamicresultset.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: cacheddynamicresultset.cxx,v $
- * $Revision: 1.7 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/cacher/cacheddynamicresultset.hxx b/ucb/source/cacher/cacheddynamicresultset.hxx
index 3a99962e91..f1ce145b03 100644
--- a/ucb/source/cacher/cacheddynamicresultset.hxx
+++ b/ucb/source/cacher/cacheddynamicresultset.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: cacheddynamicresultset.hxx,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/cacher/cacheddynamicresultsetstub.cxx b/ucb/source/cacher/cacheddynamicresultsetstub.cxx
index f335210860..e719e037b9 100644
--- a/ucb/source/cacher/cacheddynamicresultsetstub.cxx
+++ b/ucb/source/cacher/cacheddynamicresultsetstub.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: cacheddynamicresultsetstub.cxx,v $
- * $Revision: 1.7 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/cacher/cacheddynamicresultsetstub.hxx b/ucb/source/cacher/cacheddynamicresultsetstub.hxx
index 4c2e3f554f..e5feb70e83 100644
--- a/ucb/source/cacher/cacheddynamicresultsetstub.hxx
+++ b/ucb/source/cacher/cacheddynamicresultsetstub.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: cacheddynamicresultsetstub.hxx,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/cacher/cacheserv.cxx b/ucb/source/cacher/cacheserv.cxx
index 8daa84f0f1..031276472b 100644
--- a/ucb/source/cacher/cacheserv.cxx
+++ b/ucb/source/cacher/cacheserv.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: cacheserv.cxx,v $
- * $Revision: 1.7 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/cacher/contentresultsetwrapper.cxx b/ucb/source/cacher/contentresultsetwrapper.cxx
index 7f1254393e..a0b5df0524 100644
--- a/ucb/source/cacher/contentresultsetwrapper.cxx
+++ b/ucb/source/cacher/contentresultsetwrapper.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: contentresultsetwrapper.cxx,v $
- * $Revision: 1.8 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/cacher/contentresultsetwrapper.hxx b/ucb/source/cacher/contentresultsetwrapper.hxx
index 02966e2b54..e9ff1b9a32 100644
--- a/ucb/source/cacher/contentresultsetwrapper.hxx
+++ b/ucb/source/cacher/contentresultsetwrapper.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: contentresultsetwrapper.hxx,v $
- * $Revision: 1.7 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/cacher/dynamicresultsetwrapper.cxx b/ucb/source/cacher/dynamicresultsetwrapper.cxx
index 7ff6e85f47..53ecdb17ca 100644
--- a/ucb/source/cacher/dynamicresultsetwrapper.cxx
+++ b/ucb/source/cacher/dynamicresultsetwrapper.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: dynamicresultsetwrapper.cxx,v $
- * $Revision: 1.7 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/cacher/dynamicresultsetwrapper.hxx b/ucb/source/cacher/dynamicresultsetwrapper.hxx
index 97eac446f3..f5f5b47c9f 100644
--- a/ucb/source/cacher/dynamicresultsetwrapper.hxx
+++ b/ucb/source/cacher/dynamicresultsetwrapper.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: dynamicresultsetwrapper.hxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/cacher/makefile.mk b/ucb/source/cacher/makefile.mk
index 09717b3f0f..20179f8ce7 100644
--- a/ucb/source/cacher/makefile.mk
+++ b/ucb/source/cacher/makefile.mk
@@ -2,14 +2,10 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.13 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/core/cmdenv.cxx b/ucb/source/core/cmdenv.cxx
new file mode 100644
index 0000000000..5f62cd62e0
--- /dev/null
+++ b/ucb/source/core/cmdenv.cxx
@@ -0,0 +1,191 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_ucb.hxx"
+
+#include "cppuhelper/factory.hxx"
+#include "com/sun/star/lang/IllegalArgumentException.hpp"
+
+#include "cmdenv.hxx"
+
+/**************************************************************************
+ TODO
+ **************************************************************************
+
+ *************************************************************************/
+using namespace com::sun::star;
+using namespace ucb_cmdenv;
+
+//=========================================================================
+//=========================================================================
+//
+// UcbCommandEnvironment Implementation.
+//
+//=========================================================================
+//=========================================================================
+
+UcbCommandEnvironment::UcbCommandEnvironment(
+ const uno::Reference< lang::XMultiServiceFactory >& /*xSMgr*/ )
+//: m_xSMgr( xSMgr )
+{
+}
+
+//=========================================================================
+// virtual
+UcbCommandEnvironment::~UcbCommandEnvironment()
+{
+}
+
+//=========================================================================
+//
+// XInitialization methods.
+//
+//=========================================================================
+
+// virtual
+void SAL_CALL UcbCommandEnvironment::initialize(
+ const uno::Sequence< uno::Any >& aArguments )
+ throw( uno::Exception,
+ uno::RuntimeException )
+{
+ if ( ( aArguments.getLength() < 2 ) ||
+ !( aArguments[ 0 ] >>= m_xIH ) ||
+ !( aArguments[ 1 ] >>= m_xPH ))
+ throw lang::IllegalArgumentException();
+}
+
+//=========================================================================
+//
+// XServiceInfo methods.
+//
+//=========================================================================
+
+// virtual
+::rtl::OUString SAL_CALL UcbCommandEnvironment::getImplementationName()
+ throw ( uno::RuntimeException )
+{
+ return getImplementationName_Static();
+}
+
+//=========================================================================
+// virtual
+sal_Bool SAL_CALL
+UcbCommandEnvironment::supportsService( const ::rtl::OUString& ServiceName )
+ throw ( uno::RuntimeException )
+{
+ uno::Sequence< rtl::OUString > aSNL = getSupportedServiceNames();
+ const rtl::OUString * pArray = aSNL.getConstArray();
+ for ( sal_Int32 i = 0; i < aSNL.getLength(); i++ )
+ {
+ if ( pArray[ i ] == ServiceName )
+ return sal_True;
+ }
+ return sal_False;
+}
+
+//=========================================================================
+// virtual
+uno::Sequence< ::rtl::OUString > SAL_CALL
+UcbCommandEnvironment::getSupportedServiceNames()
+ throw ( uno::RuntimeException )
+{
+ return getSupportedServiceNames_Static();
+}
+
+//=========================================================================
+// static
+rtl::OUString UcbCommandEnvironment::getImplementationName_Static()
+{
+ return rtl::OUString( RTL_CONSTASCII_USTRINGPARAM(
+ "com.sun.star.comp.ucb.CommandEnvironment" ) );
+}
+
+//=========================================================================
+// static
+uno::Sequence< rtl::OUString >
+UcbCommandEnvironment::getSupportedServiceNames_Static()
+{
+ uno::Sequence< rtl::OUString > aSNS( 1 );
+ aSNS.getArray()[ 0 ]
+ = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM(
+ "com.sun.star.ucb.CommandEnvironment" ) );
+ return aSNS;
+}
+
+//=========================================================================
+//
+// XCommandInfo methods.
+//
+//=========================================================================
+
+// virtual
+uno::Reference< task::XInteractionHandler > SAL_CALL
+UcbCommandEnvironment::getInteractionHandler()
+ throw ( uno::RuntimeException )
+{
+ return m_xIH;
+}
+
+//=========================================================================
+// virtual
+uno::Reference< ucb::XProgressHandler > SAL_CALL
+UcbCommandEnvironment::getProgressHandler()
+ throw ( uno::RuntimeException )
+{
+ return m_xPH;
+}
+
+//=========================================================================
+//
+// Service factory implementation.
+//
+//=========================================================================
+
+static uno::Reference< uno::XInterface > SAL_CALL
+UcbCommandEnvironment_CreateInstance(
+ const uno::Reference< lang::XMultiServiceFactory> & rSMgr )
+ throw( uno::Exception )
+{
+ lang::XServiceInfo * pX = static_cast< lang::XServiceInfo * >(
+ new UcbCommandEnvironment( rSMgr ) );
+ return uno::Reference< uno::XInterface >::query( pX );
+}
+
+//=========================================================================
+// static
+uno::Reference< lang::XSingleServiceFactory >
+UcbCommandEnvironment::createServiceFactory(
+ const uno::Reference< lang::XMultiServiceFactory >& rxServiceMgr )
+{
+ return uno::Reference< lang::XSingleServiceFactory >(
+ cppu::createOneInstanceFactory(
+ rxServiceMgr,
+ UcbCommandEnvironment::getImplementationName_Static(),
+ UcbCommandEnvironment_CreateInstance,
+ UcbCommandEnvironment::getSupportedServiceNames_Static() ) );
+}
diff --git a/ucb/source/core/cmdenv.hxx b/ucb/source/core/cmdenv.hxx
new file mode 100644
index 0000000000..ee43eb0c78
--- /dev/null
+++ b/ucb/source/core/cmdenv.hxx
@@ -0,0 +1,102 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef INCLUDED_CMDENV_HXX
+#define INCLUDED_CMDENV_HXX
+
+#include "cppuhelper/implbase3.hxx"
+
+#include "com/sun/star/lang/XInitialization.hpp"
+#include "com/sun/star/lang/XServiceInfo.hpp"
+#include "com/sun/star/lang/XSingleServiceFactory.hpp"
+#include "com/sun/star/ucb/XCommandEnvironment.hpp"
+
+namespace ucb_cmdenv {
+
+class UcbCommandEnvironment :
+ public cppu::WeakImplHelper3< com::sun::star::lang::XInitialization,
+ com::sun::star::lang::XServiceInfo,
+ com::sun::star::ucb::XCommandEnvironment >
+{
+ com::sun::star::uno::Reference<
+ com::sun::star::task::XInteractionHandler > m_xIH;
+ com::sun::star::uno::Reference<
+ com::sun::star::ucb::XProgressHandler > m_xPH;
+
+public:
+ UcbCommandEnvironment(
+ const com::sun::star::uno::Reference<
+ com::sun::star::lang::XMultiServiceFactory >& rXSMgr );
+ virtual ~UcbCommandEnvironment();
+
+ // XInitialization
+ virtual void SAL_CALL
+ initialize( const com::sun::star::uno::Sequence<
+ com::sun::star::uno::Any >& aArguments )
+ throw( com::sun::star::uno::Exception,
+ com::sun::star::uno::RuntimeException );
+
+ // XServiceInfo
+ virtual ::rtl::OUString SAL_CALL getImplementationName()
+ throw ( com::sun::star::uno::RuntimeException );
+
+ virtual sal_Bool SAL_CALL
+ supportsService( const ::rtl::OUString& ServiceName )
+ throw ( com::sun::star::uno::RuntimeException );
+
+ virtual com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL
+ getSupportedServiceNames()
+ throw ( com::sun::star::uno::RuntimeException );
+
+ // XCommandEnvironment
+ virtual com::sun::star::uno::Reference<
+ com::sun::star::task::XInteractionHandler > SAL_CALL
+ getInteractionHandler()
+ throw ( com::sun::star::uno::RuntimeException );
+ virtual com::sun::star::uno::Reference<
+ com::sun::star::ucb::XProgressHandler > SAL_CALL
+ getProgressHandler()
+ throw ( com::sun::star::uno::RuntimeException );
+
+ // Non-UNO interfaces
+ static rtl::OUString
+ getImplementationName_Static();
+ static com::sun::star::uno::Sequence< rtl::OUString >
+ getSupportedServiceNames_Static();
+
+ static com::sun::star::uno::Reference<
+ com::sun::star::lang::XSingleServiceFactory >
+ createServiceFactory( const com::sun::star::uno::Reference<
+ com::sun::star::lang::XMultiServiceFactory > & rxServiceMgr );
+private:
+ //com::sun::star::uno::Reference<
+ // com::sun::star::lang::XMultiServiceFactory > m_xSMgr;
+};
+
+} // namespace ucb_cmdenv
+
+#endif // INCLUDED_CMDENV_HXX
diff --git a/ucb/source/core/identify.cxx b/ucb/source/core/identify.cxx
index 3410f69f97..2a59aa5c4f 100644
--- a/ucb/source/core/identify.cxx
+++ b/ucb/source/core/identify.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: identify.cxx,v $
- * $Revision: 1.6 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/core/identify.hxx b/ucb/source/core/identify.hxx
index 08e1b8aa10..28241cd302 100644
--- a/ucb/source/core/identify.hxx
+++ b/ucb/source/core/identify.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: identify.hxx,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/core/makefile.mk b/ucb/source/core/makefile.mk
index e70b5ca879..5095dbef94 100644
--- a/ucb/source/core/makefile.mk
+++ b/ucb/source/core/makefile.mk
@@ -2,14 +2,10 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.22 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
@@ -48,7 +44,8 @@ SLOFILES=\
$(SLO)$/ucbstore.obj \
$(SLO)$/ucbprops.obj \
$(SLO)$/provprox.obj \
- $(SLO)$/ucbcmds.obj
+ $(SLO)$/ucbcmds.obj \
+ $(SLO)$/cmdenv.obj
LIB1TARGET=$(SLB)$/_$(TARGET).lib
LIB1OBJFILES=$(SLOFILES)
@@ -59,7 +56,7 @@ SHL1STDLIBS=\
$(CPPUHELPERLIB) \
$(CPPULIB) \
$(SALLIB) \
- $(UCBHELPERLIB)
+ $(UCBHELPERLIB)
SHL1LIBS=\
$(LIB1TARGET) \
$(SLB)$/regexp.lib
diff --git a/ucb/source/core/providermap.hxx b/ucb/source/core/providermap.hxx
index 5da2142d75..c27c3f092e 100644
--- a/ucb/source/core/providermap.hxx
+++ b/ucb/source/core/providermap.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: providermap.hxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/core/provprox.cxx b/ucb/source/core/provprox.cxx
index b3fc75376c..e37157bb10 100644
--- a/ucb/source/core/provprox.cxx
+++ b/ucb/source/core/provprox.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: provprox.cxx,v $
- * $Revision: 1.10 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/core/provprox.hxx b/ucb/source/core/provprox.hxx
index 97d0fc7ea8..403ee6db8a 100644
--- a/ucb/source/core/provprox.hxx
+++ b/ucb/source/core/provprox.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: provprox.hxx,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/core/ucb.cxx b/ucb/source/core/ucb.cxx
index ce21b4ae1f..83163d50ad 100644
--- a/ucb/source/core/ucb.cxx
+++ b/ucb/source/core/ucb.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: ucb.cxx,v $
- * $Revision: 1.12 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/core/ucb.hxx b/ucb/source/core/ucb.hxx
index 7848ebf978..db54af4688 100644
--- a/ucb/source/core/ucb.hxx
+++ b/ucb/source/core/ucb.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: ucb.hxx,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/core/ucbcmds.cxx b/ucb/source/core/ucbcmds.cxx
index 0db14ca73f..d762b7fd67 100644
--- a/ucb/source/core/ucbcmds.cxx
+++ b/ucb/source/core/ucbcmds.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: ucbcmds.cxx,v $
- * $Revision: 1.20 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -41,11 +38,10 @@
#include <cppuhelper/exc_hlp.hxx>
#include <rtl/ustring.h>
#include <rtl/ustring.hxx>
-#ifndef __COM_SUN_STAR_LANG_XINTERFACE_HPP_
#include <com/sun/star/uno/XInterface.hpp>
-#endif
#include <com/sun/star/beans/PropertyState.hpp>
#include <com/sun/star/beans/PropertyValue.hpp>
+#include <com/sun/star/beans/XPropertySet.hpp>
#include <com/sun/star/container/XChild.hpp>
#include <com/sun/star/beans/XPropertySetInfo.hpp>
#include <com/sun/star/io/XActiveDataSink.hpp>
@@ -53,13 +49,12 @@
#include <com/sun/star/io/XSeekable.hpp>
#include <com/sun/star/sdbc/XRow.hpp>
#include <com/sun/star/task/XInteractionHandler.hpp>
+#include <com/sun/star/ucb/CommandEnvironment.hpp>
#include <com/sun/star/ucb/CommandFailedException.hpp>
#include <com/sun/star/ucb/ContentInfoAttribute.hpp>
#include <com/sun/star/ucb/GlobalTransferCommandArgument.hpp>
#include <com/sun/star/ucb/InsertCommandArgument.hpp>
-#ifndef _COM_SUN_STAR_UCB_INTERACTIVEBADTRANSFRERURLEXCEPTION_HPP_
#include <com/sun/star/ucb/InteractiveBadTransferURLException.hpp>
-#endif
#include <com/sun/star/ucb/NameClash.hpp>
#include <com/sun/star/ucb/NameClashException.hpp>
#include <com/sun/star/ucb/OpenCommandArgument2.hpp>
@@ -79,7 +74,7 @@
using namespace com::sun::star;
-namespace ucb_commands
+namespace
{
//=========================================================================
@@ -182,51 +177,6 @@ void SAL_CALL InteractionHandlerProxy::handle(
//=========================================================================
//
-// class CommandEnvironment.
-//
-//=========================================================================
-
-class CommandEnvironment :
- public cppu::WeakImplHelper1< ucb::XCommandEnvironment >
-{
- uno::Reference< task::XInteractionHandler > m_xIH;
- uno::Reference< ucb::XProgressHandler > m_xPH;
-
-public:
- CommandEnvironment(
- const uno::Reference< task::XInteractionHandler > & xIH,
- const uno::Reference< ucb::XProgressHandler > & xPH )
- : m_xIH( xIH ), m_xPH( xPH ) {}
-
- // XCommandEnvironment methods.
- virtual uno::Reference< task::XInteractionHandler > SAL_CALL
- getInteractionHandler()
- throw ( uno::RuntimeException );
- virtual uno::Reference< ucb::XProgressHandler > SAL_CALL
- getProgressHandler()
- throw ( uno::RuntimeException );
-};
-
-//=========================================================================
-// virtual
-uno::Reference< task::XInteractionHandler > SAL_CALL
-CommandEnvironment::getInteractionHandler()
- throw ( uno::RuntimeException )
-{
- return m_xIH;
-}
-
-//=========================================================================
-// virtual
-uno::Reference< ucb::XProgressHandler > SAL_CALL
-CommandEnvironment::getProgressHandler()
- throw ( uno::RuntimeException )
-{
- return m_xPH;
-}
-
-//=========================================================================
-//
// class ActiveDataSink.
//
//=========================================================================
@@ -389,7 +339,7 @@ sal_Bool SAL_CALL CommandProcessorInfo::hasCommandByHandle( sal_Int32 Handle )
//=========================================================================
//=========================================================================
-static rtl::OUString createDesiredName(
+rtl::OUString createDesiredName(
const rtl::OUString & rSourceURL, const rtl::OUString & rNewTitle )
{
rtl::OUString aName( rNewTitle );
@@ -438,13 +388,13 @@ static rtl::OUString createDesiredName(
return rtl::OUString( aName );
}
-static rtl::OUString createDesiredName(
+rtl::OUString createDesiredName(
const ucb::GlobalTransferCommandArgument & rArg )
{
return createDesiredName( rArg.SourceURL, rArg.NewTitle );
}
-static rtl::OUString createDesiredName(
+rtl::OUString createDesiredName(
const ucb::TransferInfo & rArg )
{
return createDesiredName( rArg.SourceURL, rArg.NewTitle );
@@ -453,7 +403,7 @@ static rtl::OUString createDesiredName(
//=========================================================================
enum NameClashContinuation { NOT_HANDLED, ABORT, OVERWRITE, NEW_NAME, UNKNOWN };
-static NameClashContinuation interactiveNameClashResolve(
+NameClashContinuation interactiveNameClashResolve(
const uno::Reference< ucb::XCommandEnvironment > & xEnv,
const rtl::OUString & rTargetURL,
const rtl::OUString & rClashingName,
@@ -528,7 +478,7 @@ static NameClashContinuation interactiveNameClashResolve(
}
//=========================================================================
-static bool setTitle(
+bool setTitle(
const uno::Reference< ucb::XCommandProcessor > & xCommandProcessor,
const uno::Reference< ucb::XCommandEnvironment > & xEnv,
const rtl::OUString & rNewTitle )
@@ -576,7 +526,7 @@ static bool setTitle(
}
//=========================================================================
-static uno::Reference< ucb::XContent > createNew(
+uno::Reference< ucb::XContent > createNew(
const TransferCommandContext & rContext,
const uno::Reference< ucb::XContent > & xTarget,
sal_Bool bSourceIsFolder,
@@ -590,10 +540,12 @@ static uno::Reference< ucb::XContent > createNew(
//
//////////////////////////////////////////////////////////////////////
- uno::Reference< ucb::XContentCreator > xCreator(
- xTarget, uno::UNO_QUERY );
+ // First, try it using "CreatabeleContentsInfo" property and
+ // "createNewContent" command -> the "new" way.
- if ( !xCreator.is() )
+ uno::Reference< ucb::XCommandProcessor > xCommandProcessorT(
+ xTarget, uno::UNO_QUERY );
+ if ( !xCommandProcessorT.is() )
{
uno::Any aProps
= uno::makeAny(beans::PropertyValue(
@@ -606,24 +558,77 @@ static uno::Reference< ucb::XContent > createNew(
ucb::IOErrorCode_CANT_CREATE,
uno::Sequence< uno::Any >(&aProps, 1),
rContext.xOrigEnv,
- rtl::OUString::createFromAscii( "Target is no XContentCreator!" ),
+ rtl::OUString::createFromAscii( "Target is no XCommandProcessor!" ),
rContext.xProcessor );
// Unreachable
}
- uno::Sequence< ucb::ContentInfo > aTypesInfo
- = xCreator->queryCreatableContentsInfo();
+ uno::Sequence< beans::Property > aPropsToObtain( 1 );
+ aPropsToObtain[ 0 ].Name
+ = rtl::OUString::createFromAscii( "CreatableContentsInfo" );
+ aPropsToObtain[ 0 ].Handle
+ = -1;
- sal_Int32 nCount = aTypesInfo.getLength();
- if ( !nCount )
+ ucb::Command aGetPropsCommand(
+ rtl::OUString::createFromAscii( "getPropertyValues" ),
+ -1,
+ uno::makeAny( aPropsToObtain ) );
+
+ uno::Reference< sdbc::XRow > xRow;
+ xCommandProcessorT->execute( aGetPropsCommand, 0, rContext.xEnv ) >>= xRow;
+
+ uno::Sequence< ucb::ContentInfo > aTypesInfo;
+ bool bGotTypesInfo = false;
+
+ if ( xRow.is() )
{
- uno::Any aProps
- = uno::makeAny(beans::PropertyValue(
+ uno::Any aValue = xRow->getObject(
+ 1, uno::Reference< container::XNameAccess >() );
+ if ( aValue.hasValue() && ( aValue >>= aTypesInfo ) )
+ {
+ bGotTypesInfo = true;
+ }
+ }
+
+ uno::Reference< ucb::XContentCreator > xCreator;
+
+ if ( !bGotTypesInfo )
+ {
+ // Second, try it using XContentCreator interface -> the "old" way (not
+ // providing the chance to supply an XCommandEnvironment.
+
+ xCreator.set( xTarget, uno::UNO_QUERY );
+
+ if ( !xCreator.is() )
+ {
+ uno::Any aProps
+ = uno::makeAny(beans::PropertyValue(
rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(
"Folder")),
-1,
uno::makeAny(rContext.aArg.TargetURL),
beans::PropertyState_DIRECT_VALUE));
+ ucbhelper::cancelCommandExecution(
+ ucb::IOErrorCode_CANT_CREATE,
+ uno::Sequence< uno::Any >(&aProps, 1),
+ rContext.xOrigEnv,
+ rtl::OUString::createFromAscii( "Target is no XContentCreator!" ),
+ rContext.xProcessor );
+ // Unreachable
+ }
+
+ aTypesInfo = xCreator->queryCreatableContentsInfo();
+ }
+
+ sal_Int32 nCount = aTypesInfo.getLength();
+ if ( !nCount )
+ {
+ uno::Any aProps
+ = uno::makeAny(beans::PropertyValue(
+ rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Folder")),
+ -1,
+ uno::makeAny(rContext.aArg.TargetURL),
+ beans::PropertyState_DIRECT_VALUE));
ucbhelper::cancelCommandExecution(
ucb::IOErrorCode_CANT_CREATE,
uno::Sequence< uno::Any >(&aProps, 1),
@@ -673,14 +678,14 @@ static uno::Reference< ucb::XContent > createNew(
}
else
{
- // (not a and not b) or (a and b)
+ // (not a and not b) or (a and b)
// not( a or b) or (a and b)
- //
+ //
if ( ( !!bSourceIsFolder ==
!!( nAttribs
& ucb::ContentInfoAttribute::KIND_FOLDER ) )
&&
- ( !!bSourceIsDocument ==
+ ( !!bSourceIsDocument ==
!!( nAttribs
& ucb::ContentInfoAttribute::KIND_DOCUMENT ) )
)
@@ -710,7 +715,25 @@ static uno::Reference< ucb::XContent > createNew(
//
//////////////////////////////////////////////////////////////
- xNew = xCreator->createNewContent( aTypesInfo[ n ] );
+ if ( !xCreator.is() )
+ {
+ // First, try it using "CreatabeleContentsInfo" property and
+ // "createNewContent" command -> the "new" way.
+ ucb::Command aCreateNewCommand(
+ rtl::OUString::createFromAscii( "createNewContent" ),
+ -1,
+ uno::makeAny( aTypesInfo[ n ] ) );
+
+ xCommandProcessorT->execute( aCreateNewCommand, 0, rContext.xEnv )
+ >>= xNew;
+ }
+ else
+ {
+ // Second, try it using XContentCreator interface -> the "old"
+ // way (not providing the chance to supply an XCommandEnvironment.
+
+ xNew = xCreator->createNewContent( aTypesInfo[ n ] );
+ }
if ( !xNew.is() )
{
@@ -739,7 +762,7 @@ static uno::Reference< ucb::XContent > createNew(
}
//=========================================================================
-static void transferProperties(
+void transferProperties(
const TransferCommandContext & rContext,
const uno::Reference< ucb::XCommandProcessor > & xCommandProcessorS,
const uno::Reference< ucb::XCommandProcessor > & xCommandProcessorN )
@@ -859,7 +882,7 @@ static void transferProperties(
rCurrValue.Name = rCurrProp.Name;
rCurrValue.Handle = rCurrProp.Handle;
rCurrValue.Value = aValue;
-// rCurrValue.State =
+// rCurrValue.State =
nWritePos++;
}
@@ -904,7 +927,7 @@ static void transferProperties(
}
//=========================================================================
-static uno::Reference< io::XInputStream > getInputStream(
+uno::Reference< io::XInputStream > getInputStream(
const TransferCommandContext & rContext,
const uno::Reference< ucb::XCommandProcessor > & xCommandProcessorS )
throw( uno::Exception )
@@ -923,7 +946,7 @@ static uno::Reference< io::XInputStream > getInputStream(
ucb::OpenCommandArgument2 aArg;
aArg.Mode = ucb::OpenMode::DOCUMENT;
- aArg.Priority = 0; // unused
+ aArg.Priority = 0; // unused
aArg.Sink = xSink;
aArg.Properties = uno::Sequence< beans::Property >( 0 ); // unused
@@ -963,7 +986,7 @@ static uno::Reference< io::XInputStream > getInputStream(
{
ucb::OpenCommandArgument2 aArg;
aArg.Mode = ucb::OpenMode::DOCUMENT;
- aArg.Priority = 0; // unused
+ aArg.Priority = 0; // unused
aArg.Sink = xOutputStream;
aArg.Properties = uno::Sequence< beans::Property >( 0 );
@@ -992,7 +1015,7 @@ static uno::Reference< io::XInputStream > getInputStream(
}
//=========================================================================
-static uno::Reference< sdbc::XResultSet > getResultSet(
+uno::Reference< sdbc::XResultSet > getResultSet(
const TransferCommandContext & rContext,
const uno::Reference< ucb::XCommandProcessor > & xCommandProcessorS )
throw( uno::Exception )
@@ -1010,7 +1033,7 @@ static uno::Reference< sdbc::XResultSet > getResultSet(
ucb::OpenCommandArgument2 aArg;
aArg.Mode = ucb::OpenMode::ALL;
- aArg.Priority = 0; // unused
+ aArg.Priority = 0; // unused
aArg.Sink = 0;
aArg.Properties = aProps;
@@ -1038,7 +1061,7 @@ static uno::Reference< sdbc::XResultSet > getResultSet(
}
//=========================================================================
-static void handleNameClashRename(
+void handleNameClashRename(
const TransferCommandContext & rContext,
const uno::Reference< ucb::XContent > & xNew,
const uno::Reference<
@@ -1217,7 +1240,7 @@ static void handleNameClashRename(
}
//=========================================================================
-static void globalTransfer(
+void globalTransfer_(
const TransferCommandContext & rContext,
const uno::Reference< ucb::XContent > & xSource,
const uno::Reference< ucb::XContent > & xTarget,
@@ -1632,7 +1655,7 @@ static void globalTransfer(
rtl::OUString(), // NewTitle;
rContext.aArg.NameClash ); // NameClash
- ucb_commands::TransferCommandContext aSubCtx(
+ TransferCommandContext aSubCtx(
rContext.xSMgr,
rContext.xProcessor,
rContext.xEnv,
@@ -1649,10 +1672,10 @@ static void globalTransfer(
aSubCtx.aArg.SourceURL
= xChild->getIdentifier()->getContentIdentifier();
- ucb_commands::globalTransfer( aSubCtx,
- xChild,
- xNew,
- xChildRow );
+ globalTransfer_( aSubCtx,
+ xChild,
+ xNew,
+ xChildRow );
}
}
while ( xResultSet->next() );
@@ -1662,11 +1685,11 @@ static void globalTransfer(
{
}
}
-
+
try {
uno::Reference< ucb::XCommandProcessor > xcp(
xTarget, uno::UNO_QUERY );
-
+
uno::Any aAny;
uno::Reference< ucb::XCommandInfo > xci;
if(xcp.is())
@@ -1678,7 +1701,7 @@ static void globalTransfer(
uno::Any()),
0,
rContext.xEnv );
-
+
const rtl::OUString cmdName =
rtl::OUString::createFromAscii("flush");
if((aAny >>= xci) && xci->hasCommandByName(cmdName))
@@ -1695,7 +1718,7 @@ static void globalTransfer(
}
}
-} /* namescpace ucb_commands */
+} /* namescpace */
//=========================================================================
//
@@ -1706,8 +1729,7 @@ static void globalTransfer(
uno::Reference< ucb::XCommandInfo >
UniversalContentBroker::getCommandInfo()
{
- return uno::Reference< ucb::XCommandInfo >(
- new ucb_commands::CommandProcessorInfo() );
+ return uno::Reference< ucb::XCommandInfo >( new CommandProcessorInfo() );
}
//=========================================================================
@@ -1717,14 +1739,24 @@ void UniversalContentBroker::globalTransfer(
throw( uno::Exception )
{
// Use own command environment with own interaction handler intercepting
- // some interaction requests that shell not be handled by the user-supplied
+ // some interaction requests that shall not be handled by the user-supplied
// interaction handler.
uno::Reference< ucb::XCommandEnvironment > xLocalEnv;
if (xEnv.is())
- xLocalEnv.set( new ucb_commands::CommandEnvironment(
- new ucb_commands::InteractionHandlerProxy(
- xEnv->getInteractionHandler() ),
- xEnv->getProgressHandler() ) );
+ {
+ uno::Reference< beans::XPropertySet > const xProps(
+ m_xSMgr, uno::UNO_QUERY_THROW );
+ uno::Reference< uno::XComponentContext > xCtx;
+ xCtx.set( xProps->getPropertyValue(
+ rtl::OUString(
+ RTL_CONSTASCII_USTRINGPARAM( "DefaultContext" ) ) ),
+ uno::UNO_QUERY_THROW );
+
+ xLocalEnv.set( ucb::CommandEnvironment::create(
+ xCtx,
+ new InteractionHandlerProxy( xEnv->getInteractionHandler() ),
+ xEnv->getProgressHandler() ) );
+ }
//////////////////////////////////////////////////////////////////////
//
@@ -1862,27 +1894,27 @@ void UniversalContentBroker::globalTransfer(
uno::Any aExc;
rtl::OUString aNewTitle;
- ucb_commands::NameClashContinuation eCont
- = ucb_commands::interactiveNameClashResolve(
+ NameClashContinuation eCont
+ = interactiveNameClashResolve(
xEnv, // always use original environment!
rArg.TargetURL, // target folder URL
- ucb_commands::createDesiredName(
- aTransferArg ), // clashing name
+ createDesiredName(
+ aTransferArg ), // clashing name
aExc,
aNewTitle );
switch ( eCont )
{
- case ucb_commands::NOT_HANDLED:
+ case NOT_HANDLED:
// Not handled.
cppu::throwException( aExc );
// break;
- case ucb_commands::UNKNOWN:
+ case UNKNOWN:
// Handled, but not clear, how...
// fall-thru intended.
- case ucb_commands::ABORT:
+ case ABORT:
throw ucb::CommandFailedException(
rtl::OUString(
RTL_CONSTASCII_USTRINGPARAM(
@@ -1892,13 +1924,13 @@ void UniversalContentBroker::globalTransfer(
aExc );
// break;
- case ucb_commands::OVERWRITE:
+ case OVERWRITE:
aTransferArg.NameClash
= ucb::NameClash::OVERWRITE;
bRetry = true;
break;
- case ucb_commands::NEW_NAME:
+ case NEW_NAME:
aTransferArg.NewTitle = aNewTitle;
bRetry = true;
break;
@@ -2015,7 +2047,7 @@ void UniversalContentBroker::globalTransfer(
// Unreachable
}
- ucb_commands::TransferCommandContext aTransferCtx(
+ TransferCommandContext aTransferCtx(
m_xSMgr, this, xLocalEnv, xEnv, rArg );
if ( rArg.NewTitle.getLength() == 0 )
@@ -2024,13 +2056,13 @@ void UniversalContentBroker::globalTransfer(
rtl::OUString aBaseURI( xRow->getString( 4 ) );
if ( aBaseURI.getLength() )
{
- aTransferCtx.aArg.NewTitle
- = ucb_commands::createDesiredName( aBaseURI, rtl::OUString() );
+ aTransferCtx.aArg.NewTitle
+ = createDesiredName( aBaseURI, rtl::OUString() );
}
}
// Do it!
- ucb_commands::globalTransfer( aTransferCtx, xSource, xTarget, xRow );
+ globalTransfer_( aTransferCtx, xSource, xTarget, xRow );
//////////////////////////////////////////////////////////////////////
//
@@ -2044,8 +2076,8 @@ void UniversalContentBroker::globalTransfer(
{
ucb::Command aCommand(
rtl::OUString::createFromAscii( "delete" ), // Name
- -1, // Handle
- uno::makeAny( sal_Bool( sal_True ) ) ); // Argument
+ -1, // Handle
+ uno::makeAny( sal_Bool( sal_True ) ) ); // Argument
xCommandProcessor->execute( aCommand, 0, xLocalEnv );
}
diff --git a/ucb/source/core/ucbcmds.hxx b/ucb/source/core/ucbcmds.hxx
index 623603ab5a..9e608216fb 100644
--- a/ucb/source/core/ucbcmds.hxx
+++ b/ucb/source/core/ucbcmds.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: ucbcmds.hxx,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/core/ucbprops.cxx b/ucb/source/core/ucbprops.cxx
index ade855e628..2a66df86ad 100644
--- a/ucb/source/core/ucbprops.cxx
+++ b/ucb/source/core/ucbprops.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: ucbprops.cxx,v $
- * $Revision: 1.6 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/core/ucbprops.hxx b/ucb/source/core/ucbprops.hxx
index 6ff4ea0ecd..4b5793b928 100644
--- a/ucb/source/core/ucbprops.hxx
+++ b/ucb/source/core/ucbprops.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: ucbprops.hxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/core/ucbserv.cxx b/ucb/source/core/ucbserv.cxx
index 747571d042..9c22dabe18 100644
--- a/ucb/source/core/ucbserv.cxx
+++ b/ucb/source/core/ucbserv.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: ucbserv.cxx,v $
- * $Revision: 1.11 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -37,6 +34,7 @@
#include "ucbstore.hxx"
#include "ucbprops.hxx"
#include "provprox.hxx"
+#include "cmdenv.hxx"
using namespace rtl;
using namespace com::sun::star::uno;
@@ -46,7 +44,7 @@ using namespace com::sun::star::registry;
//=========================================================================
static sal_Bool writeInfo( void * pRegistryKey,
const OUString & rImplementationName,
- Sequence< OUString > const & rServiceNames )
+ Sequence< OUString > const & rServiceNames )
{
OUString aKeyName( OUString::createFromAscii( "/" ) );
aKeyName += rImplementationName;
@@ -124,7 +122,15 @@ extern "C" sal_Bool SAL_CALL component_writeInfo( void *, void * pRegistryKey )
writeInfo( pRegistryKey,
UcbContentProviderProxyFactory::getImplementationName_Static(),
- UcbContentProviderProxyFactory::getSupportedServiceNames_Static() );
+ UcbContentProviderProxyFactory::getSupportedServiceNames_Static() ) &&
+
+ //////////////////////////////////////////////////////////////////////
+ // Command Environment.
+ //////////////////////////////////////////////////////////////////////
+
+ writeInfo( pRegistryKey,
+ ucb_cmdenv::UcbCommandEnvironment::getImplementationName_Static(),
+ ucb_cmdenv::UcbCommandEnvironment::getSupportedServiceNames_Static() );
}
//=========================================================================
@@ -179,6 +185,17 @@ extern "C" void * SAL_CALL component_getFactory(
}
//////////////////////////////////////////////////////////////////////
+ // Command Environment.
+ //////////////////////////////////////////////////////////////////////
+
+ else if ( ucb_cmdenv::UcbCommandEnvironment::getImplementationName_Static().
+ compareToAscii( pImplName ) == 0 )
+ {
+ xFactory
+ = ucb_cmdenv::UcbCommandEnvironment::createServiceFactory( xSMgr );
+ }
+
+ //////////////////////////////////////////////////////////////////////
if ( xFactory.is() )
{
diff --git a/ucb/source/core/ucbstore.cxx b/ucb/source/core/ucbstore.cxx
index e0abbba396..7bf58a2001 100644
--- a/ucb/source/core/ucbstore.cxx
+++ b/ucb/source/core/ucbstore.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: ucbstore.cxx,v $
- * $Revision: 1.17 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -1570,7 +1567,9 @@ void SAL_CALL PersistentPropertySet::setPropertyValue(
// Write state ( Now it is a directly set value )
xNameReplace->replaceByName(
OUString::createFromAscii( "State" ),
- makeAny( PropertyState_DIRECT_VALUE ) );
+ makeAny(
+ sal_Int32(
+ PropertyState_DIRECT_VALUE ) ) );
// Commit changes.
xBatch->commitChanges();
@@ -1854,7 +1853,9 @@ void SAL_CALL PersistentPropertySet::addProperty(
// Set state ( always "default" )
xNameReplace->replaceByName(
OUString::createFromAscii( "State" ),
- makeAny( PropertyState_DEFAULT_VALUE ) );
+ makeAny(
+ sal_Int32(
+ PropertyState_DEFAULT_VALUE ) ) );
// Set attributes
xNameReplace->replaceByName(
@@ -2330,7 +2331,9 @@ void SAL_CALL PersistentPropertySet::setPropertyValues(
// Write state ( Now it is a directly set value )
xNameReplace->replaceByName(
OUString::createFromAscii( "State" ),
- makeAny( PropertyState_DIRECT_VALUE ) );
+ makeAny(
+ sal_Int32(
+ PropertyState_DIRECT_VALUE ) ) );
// Commit changes.
xBatch->commitChanges();
diff --git a/ucb/source/core/ucbstore.hxx b/ucb/source/core/ucbstore.hxx
index 3d9d0978d9..a28a016724 100644
--- a/ucb/source/core/ucbstore.hxx
+++ b/ucb/source/core/ucbstore.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: ucbstore.hxx,v $
- * $Revision: 1.7 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/inc/regexp.hxx b/ucb/source/inc/regexp.hxx
index c1f985d149..7126b3cbe7 100644
--- a/ucb/source/inc/regexp.hxx
+++ b/ucb/source/inc/regexp.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: regexp.hxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/inc/regexpmap.hxx b/ucb/source/inc/regexpmap.hxx
index ed76c55929..1027424b08 100644
--- a/ucb/source/inc/regexpmap.hxx
+++ b/ucb/source/inc/regexpmap.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: regexpmap.hxx,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/inc/regexpmap.tpt b/ucb/source/inc/regexpmap.tpt
index 084867e07f..9d4a7fb69c 100644
--- a/ucb/source/inc/regexpmap.tpt
+++ b/ucb/source/inc/regexpmap.tpt
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: regexpmap.tpt,v $
- * $Revision: 1.8 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/regexp/makefile.mk b/ucb/source/regexp/makefile.mk
index 8d0b938402..e748f054ea 100644
--- a/ucb/source/regexp/makefile.mk
+++ b/ucb/source/regexp/makefile.mk
@@ -2,14 +2,10 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.4 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/regexp/regexp.cxx b/ucb/source/regexp/regexp.cxx
index 0e38b25e3a..cb5d972217 100644
--- a/ucb/source/regexp/regexp.cxx
+++ b/ucb/source/regexp/regexp.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: regexp.cxx,v $
- * $Revision: 1.8 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/sorter/makefile.mk b/ucb/source/sorter/makefile.mk
index bcd3b64447..5077be80b4 100644
--- a/ucb/source/sorter/makefile.mk
+++ b/ucb/source/sorter/makefile.mk
@@ -2,14 +2,10 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.14 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/sorter/sortdynres.cxx b/ucb/source/sorter/sortdynres.cxx
index ca498689bd..39d273bc18 100644
--- a/ucb/source/sorter/sortdynres.cxx
+++ b/ucb/source/sorter/sortdynres.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: sortdynres.cxx,v $
- * $Revision: 1.13 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/sorter/sortdynres.hxx b/ucb/source/sorter/sortdynres.hxx
index 6f46e545b5..27b9fc4326 100644
--- a/ucb/source/sorter/sortdynres.hxx
+++ b/ucb/source/sorter/sortdynres.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: sortdynres.hxx,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/sorter/sortmain.cxx b/ucb/source/sorter/sortmain.cxx
index 883b4544bf..a1c781c4d4 100644
--- a/ucb/source/sorter/sortmain.cxx
+++ b/ucb/source/sorter/sortmain.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: sortmain.cxx,v $
- * $Revision: 1.7 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/sorter/sortresult.cxx b/ucb/source/sorter/sortresult.cxx
index 9fc3ffe764..e49de7a394 100644
--- a/ucb/source/sorter/sortresult.cxx
+++ b/ucb/source/sorter/sortresult.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: sortresult.cxx,v $
- * $Revision: 1.18.22.1 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/sorter/sortresult.hxx b/ucb/source/sorter/sortresult.hxx
index 0d25283b74..95d59f0b52 100644
--- a/ucb/source/sorter/sortresult.hxx
+++ b/ucb/source/sorter/sortresult.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: sortresult.hxx,v $
- * $Revision: 1.7 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/expand/makefile.mk b/ucb/source/ucp/expand/makefile.mk
index 6b4ffc8581..aaa7b85edb 100644
--- a/ucb/source/ucp/expand/makefile.mk
+++ b/ucb/source/ucp/expand/makefile.mk
@@ -2,14 +2,10 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.4 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/expand/ucpexpand.cxx b/ucb/source/ucp/expand/ucpexpand.cxx
index 611531ff36..ea72dedbc9 100644
--- a/ucb/source/ucp/expand/ucpexpand.cxx
+++ b/ucb/source/ucp/expand/ucpexpand.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: ucpexpand.cxx,v $
- * $Revision: 1.7 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/file/bc.cxx b/ucb/source/ucp/file/bc.cxx
index ab279417b8..5b9adebe18 100644
--- a/ucb/source/ucp/file/bc.cxx
+++ b/ucb/source/ucp/file/bc.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: bc.cxx,v $
- * $Revision: 1.40 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -49,7 +46,6 @@
#include <com/sun/star/beans/PropertySetInfoChange.hpp>
#include <com/sun/star/ucb/ContentAction.hpp>
#include <com/sun/star/ucb/NameClash.hpp>
-#include <com/sun/star/ucb/ContentInfoAttribute.hpp>
#include "filglob.hxx"
#include "filid.hxx"
#include "filrow.hxx"
@@ -437,6 +433,15 @@ BaseContent::execute( const Command& aCommand,
if(!xRow->wasNull())
aAny <<= CasePreservingURL;
}
+ else if( ! aCommand.Name.compareToAscii( "createNewContent" ) )
+ {
+ ucb::ContentInfo aArg;
+ if ( !( aCommand.Argument >>= aArg ) )
+ m_pMyShell->installError( CommandId,
+ TASKHANDLING_WRONG_CREATENEWCONTENT_ARGUMENT );
+ else
+ aAny <<= createNewContent( aArg );
+ }
else
m_pMyShell->installError( CommandId,
TASKHANDLER_UNSUPPORTED_COMMAND );
@@ -529,9 +534,9 @@ BaseContent::getContentType()
// Who am I ?
Sequence< beans::Property > seq(1);
seq[0] = beans::Property( rtl::OUString::createFromAscii("IsDocument"),
- -1,
- getCppuType( static_cast< sal_Bool* >(0) ),
- 0 );
+ -1,
+ getCppuType( static_cast< sal_Bool* >(0) ),
+ 0 );
Reference< sdbc::XRow > xRow = getPropertyValues( -1,seq );
sal_Bool IsDocument = xRow->getBoolean( 1 );
@@ -637,27 +642,7 @@ BaseContent::queryCreatableContentsInfo(
void )
throw( RuntimeException )
{
- Sequence< ContentInfo > seq(2);
-
- // file
- seq[0].Type = m_pMyShell->FileContentType;
- seq[0].Attributes = ContentInfoAttribute::INSERT_WITH_INPUTSTREAM
- | ContentInfoAttribute::KIND_DOCUMENT;
-
- Sequence< beans::Property > props( 1 );
- props[0] = beans::Property(
- rtl::OUString::createFromAscii( "Title" ),
- -1,
- getCppuType( static_cast< rtl::OUString* >( 0 ) ),
- beans::PropertyAttribute::MAYBEVOID
- | beans::PropertyAttribute::BOUND );
- seq[0].Properties = props;
-
- // folder
- seq[1].Type = m_pMyShell->FolderContentType;
- seq[1].Attributes = ContentInfoAttribute::KIND_FOLDER;
- seq[1].Properties = props;
- return seq;
+ return m_pMyShell->queryCreatableContentsInfo();
}
@@ -688,18 +673,18 @@ BaseContent::createNewContent(
{
Sequence< beans::Property > seq(1);
seq[0] = beans::Property( rtl::OUString::createFromAscii("IsDocument"),
- -1,
- getCppuType( static_cast< sal_Bool* >(0) ),
- 0 );
+ -1,
+ getCppuType( static_cast< sal_Bool* >(0) ),
+ 0 );
Reference< sdbc::XRow > xRow = getPropertyValues( -1,seq );
IsDocument = xRow->getBoolean( 1 );
-
+
if ( xRow->wasNull() )
{
IsDocument = false;
-// OSL_ENSURE( false,
-// "BaseContent::createNewContent - Property value was null!" );
-// return Reference< XContent >();
+// OSL_ENSURE( false,
+// "BaseContent::createNewContent - Property value was null!" );
+// return Reference< XContent >();
}
}
catch ( sdbc::SQLException const & )
@@ -1076,13 +1061,13 @@ BaseContent::open(
aCommandArgument.Properties,
aCommandArgument.SortingInfo );
}
-// else if( aCommandArgument.Mode ==
-// OpenMode::DOCUMENT_SHARE_DENY_NONE ||
-// aCommandArgument.Mode ==
-// OpenMode::DOCUMENT_SHARE_DENY_WRITE )
-// m_pMyShell->installError( nMyCommandIdentifier,
-// TASKHANDLING_UNSUPPORTED_OPEN_MODE,
-// aCommandArgument.Mode);
+// else if( aCommandArgument.Mode ==
+// OpenMode::DOCUMENT_SHARE_DENY_NONE ||
+// aCommandArgument.Mode ==
+// OpenMode::DOCUMENT_SHARE_DENY_WRITE )
+// m_pMyShell->installError( nMyCommandIdentifier,
+// TASKHANDLING_UNSUPPORTED_OPEN_MODE,
+// aCommandArgument.Mode);
else
m_pMyShell->installError( nMyCommandIdentifier,
TASKHANDLING_UNSUPPORTED_OPEN_MODE,
diff --git a/ucb/source/ucp/file/bc.hxx b/ucb/source/ucp/file/bc.hxx
index 8a99cba1d0..f62b262808 100644
--- a/ucb/source/ucp/file/bc.hxx
+++ b/ucb/source/ucp/file/bc.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: bc.hxx,v $
- * $Revision: 1.14 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/file/filcmd.cxx b/ucb/source/ucp/file/filcmd.cxx
index c84cc69439..23bc660a45 100644
--- a/ucb/source/ucp/file/filcmd.cxx
+++ b/ucb/source/ucp/file/filcmd.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: filcmd.cxx,v $
- * $Revision: 1.7 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/file/filcmd.hxx b/ucb/source/ucp/file/filcmd.hxx
index 32fbc74d01..ddd8fa5487 100644
--- a/ucb/source/ucp/file/filcmd.hxx
+++ b/ucb/source/ucp/file/filcmd.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: filcmd.hxx,v $
- * $Revision: 1.6 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/file/filerror.hxx b/ucb/source/ucp/file/filerror.hxx
index 3214ffd69b..c605f826ac 100644
--- a/ucb/source/ucp/file/filerror.hxx
+++ b/ucb/source/ucp/file/filerror.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: filerror.hxx,v $
- * $Revision: 1.10 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -30,34 +27,34 @@
#ifndef _FILERROR_HXX_
namespace fileaccess {
-
+
// Error codes used to deliver the resulting exceptions
#define LOWEST_FREE_ERROR 72
#define TASKHANDLER_NO_ERROR 0
#define TASKHANDLER_UNSUPPORTED_COMMAND 1
-#define TASKHANDLING_WRONG_SETPROPERTYVALUES_ARGUMENT 2
+#define TASKHANDLING_WRONG_SETPROPERTYVALUES_ARGUMENT 2
#define TASKHANDLING_WRONG_GETPROPERTYVALUES_ARGUMENT 3
#define TASKHANDLING_WRONG_OPEN_ARGUMENT 4
#define TASKHANDLING_WRONG_DELETE_ARGUMENT 5
#define TASKHANDLING_WRONG_TRANSFER_ARGUMENT 6
#define TASKHANDLING_WRONG_INSERT_ARGUMENT 7
+#define TASKHANDLING_WRONG_CREATENEWCONTENT_ARGUMENT 8
+#define TASKHANDLING_UNSUPPORTED_OPEN_MODE 9
-#define TASKHANDLING_UNSUPPORTED_OPEN_MODE 8
+#define TASKHANDLING_DELETED_STATE_IN_OPEN_COMMAND 10
+#define TASKHANDLING_INSERTED_STATE_IN_OPEN_COMMAND 11
-#define TASKHANDLING_DELETED_STATE_IN_OPEN_COMMAND 9
-#define TASKHANDLING_INSERTED_STATE_IN_OPEN_COMMAND 10
+#define TASKHANDLING_OPEN_FILE_FOR_PAGING 12
+#define TASKHANDLING_NOTCONNECTED_FOR_PAGING 13
+#define TASKHANDLING_BUFFERSIZEEXCEEDED_FOR_PAGING 14
+#define TASKHANDLING_IOEXCEPTION_FOR_PAGING 15
+#define TASKHANDLING_READING_FILE_FOR_PAGING 16
-#define TASKHANDLING_OPEN_FILE_FOR_PAGING 11
-#define TASKHANDLING_NOTCONNECTED_FOR_PAGING 12
-#define TASKHANDLING_BUFFERSIZEEXCEEDED_FOR_PAGING 13
-#define TASKHANDLING_IOEXCEPTION_FOR_PAGING 14
-#define TASKHANDLING_READING_FILE_FOR_PAGING 15
+#define TASKHANDLING_OPEN_FOR_INPUTSTREAM 17
+#define TASKHANDLING_OPEN_FOR_STREAM 18
+#define TASKHANDLING_OPEN_FOR_DIRECTORYLISTING 19
-#define TASKHANDLING_OPEN_FOR_INPUTSTREAM 16
-#define TASKHANDLING_OPEN_FOR_STREAM 17
-#define TASKHANDLING_OPEN_FOR_DIRECTORYLISTING 18
-
#define TASKHANDLING_NOFRESHINSERT_IN_INSERT_COMMAND 22
#define TASKHANDLING_NONAMESET_INSERT_COMMAND 23
#define TASKHANDLING_NOCONTENTTYPE_INSERT_COMMAND 24
@@ -104,7 +101,7 @@ namespace fileaccess {
#define TASKHANDLING_TRANSFER_BY_COPY_SOURCE 60
#define TASKHANDLING_TRANSFER_BY_COPY_SOURCESTAT 61
-#define TASKHANDLING_KEEPERROR_FOR_COPY 62
+#define TASKHANDLING_KEEPERROR_FOR_COPY 62
#define TASKHANDLING_OVERWRITE_FOR_COPY 63
#define TASKHANDLING_RENAME_FOR_COPY 64
#define TASKHANDLING_RENAMEMOVE_FOR_COPY 65
diff --git a/ucb/source/ucp/file/filglob.cxx b/ucb/source/ucp/file/filglob.cxx
index 26392425cf..2a3df432fb 100644
--- a/ucb/source/ucp/file/filglob.cxx
+++ b/ucb/source/ucp/file/filglob.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: filglob.cxx,v $
- * $Revision: 1.26.4.1 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -286,7 +283,8 @@ namespace fileaccess {
errorCode == TASKHANDLING_WRONG_OPEN_ARGUMENT ||
errorCode == TASKHANDLING_WRONG_DELETE_ARGUMENT ||
errorCode == TASKHANDLING_WRONG_TRANSFER_ARGUMENT ||
- errorCode == TASKHANDLING_WRONG_INSERT_ARGUMENT )
+ errorCode == TASKHANDLING_WRONG_INSERT_ARGUMENT ||
+ errorCode == TASKHANDLING_WRONG_CREATENEWCONTENT_ARGUMENT )
{
IllegalArgumentException excep;
excep.ArgumentPosition = 0;
@@ -359,7 +357,7 @@ namespace fileaccess {
ioErrorCode = IOErrorCode_INVALID_PARAMETER;
break;
case FileBase::E_NOMEM:
- // not enough memory for allocating structures
+ // not enough memory for allocating structures
ioErrorCode = IOErrorCode_OUT_OF_MEMORY;
break;
case FileBase::E_BUSY:
@@ -409,11 +407,11 @@ namespace fileaccess {
ioErrorCode = IOErrorCode_NOT_EXISTING;
break;
case FileBase::E_NOTDIR:
- // the specified path is not an directory
+ // the specified path is not an directory
ioErrorCode = IOErrorCode_NO_DIRECTORY;
break;
case FileBase::E_NOMEM:
- // not enough memory for allocating structures
+ // not enough memory for allocating structures
ioErrorCode = IOErrorCode_OUT_OF_MEMORY;
break;
case FileBase::E_ROFS:
@@ -629,15 +627,15 @@ namespace fileaccess {
aAny <<= excep;
cancelCommandExecution( aAny,xEnv );
}
-// ioErrorCode = IOErrorCode_INVALID_CHARACTER;
-// cancelCommandExecution(
-// ioErrorCode,
-// generateErrorArguments(aUncPath),
-// xEnv,
-// rtl::OUString(
-// RTL_CONSTASCII_USTRINGPARAM(
-// "the name contained invalid characters")),
-// xComProc );
+// ioErrorCode = IOErrorCode_INVALID_CHARACTER;
+// cancelCommandExecution(
+// ioErrorCode,
+// generateErrorArguments(aUncPath),
+// xEnv,
+// rtl::OUString(
+// RTL_CONSTASCII_USTRINGPARAM(
+// "the name contained invalid characters")),
+// xComProc );
}
else if( errorCode == TASKHANDLING_FOLDER_EXISTS_MKDIR )
{
@@ -655,15 +653,15 @@ namespace fileaccess {
aAny <<= excep;
cancelCommandExecution( aAny,xEnv );
}
-// ioErrorCode = IOErrorCode_ALREADY_EXISTING;
-// cancelCommandExecution(
-// ioErrorCode,
-// generateErrorArguments(aUncPath),
-// xEnv,
-// rtl::OUString(
-// RTL_CONSTASCII_USTRINGPARAM(
-// "the folder exists")),
-// xComProc );
+// ioErrorCode = IOErrorCode_ALREADY_EXISTING;
+// cancelCommandExecution(
+// ioErrorCode,
+// generateErrorArguments(aUncPath),
+// xEnv,
+// rtl::OUString(
+// RTL_CONSTASCII_USTRINGPARAM(
+// "the folder exists")),
+// xComProc );
}
else if( errorCode == TASKHANDLING_ENSUREDIR_FOR_WRITE ||
errorCode == TASKHANDLING_CREATEDIRECTORY_MKDIR )
@@ -702,7 +700,7 @@ namespace fileaccess {
case FileBase::E_INVAL: // the format of the parameters was not valid
ioErrorCode = IOErrorCode_INVALID_PARAMETER;
break;
- case FileBase::E_NOMEM: // not enough memory for allocating structures
+ case FileBase::E_NOMEM: // not enough memory for allocating structures
ioErrorCode = IOErrorCode_OUT_OF_MEMORY;
break;
case FileBase::E_ROFS: // #i4735# handle ROFS transparently as ACCESS_DENIED
@@ -728,7 +726,7 @@ namespace fileaccess {
case FileBase::E_MULTIHOP: // Multihop attempted
case FileBase::E_FAULT: // Bad address
case FileBase::E_INTR: // function call was interrupted
- case FileBase::E_NOSYS: // Function not implemented
+ case FileBase::E_NOSYS: // Function not implemented
case FileBase::E_NOSPC: // No space left on device
case FileBase::E_NXIO: // No such device or address
case FileBase::E_OVERFLOW: // Value too large for defined data type
@@ -754,7 +752,7 @@ namespace fileaccess {
case FileBase::E_INVAL: // the format of the parameters was not valid
ioErrorCode = IOErrorCode_INVALID_PARAMETER;
break;
- case FileBase::E_NOMEM: // not enough memory for allocating structures
+ case FileBase::E_NOMEM: // not enough memory for allocating structures
ioErrorCode = IOErrorCode_OUT_OF_MEMORY;
break;
case FileBase::E_ACCES: // Permission denied
@@ -767,7 +765,7 @@ namespace fileaccess {
ioErrorCode = IOErrorCode_NAME_TOO_LONG;
break;
case FileBase::E_NOLINK: // Link has been severed
- case FileBase::E_NOENT: // No such file or directory
+ case FileBase::E_NOENT: // No such file or directory
ioErrorCode = IOErrorCode_NOT_EXISTING;
break;
case FileBase::E_ISDIR: // Is a directory
@@ -804,30 +802,30 @@ namespace fileaccess {
errorCode == TASKHANDLING_DIRECTORYEXHAUSTED_FOR_REMOVE ||
errorCode == TASKHANDLING_TRANSFER_INVALIDURL )
{
- rtl::OUString aMsg;
+ rtl::OUString aMsg;
switch( minorCode )
{
- case FileBase::E_NOENT: // No such file or directory
+ case FileBase::E_NOENT: // No such file or directory
if ( errorCode == TASKHANDLING_TRANSFER_BY_COPY_SOURCE ||
errorCode == TASKHANDLING_TRANSFER_BY_COPY_SOURCESTAT ||
errorCode == TASKHANDLING_TRANSFER_BY_MOVE_SOURCE ||
errorCode == TASKHANDLING_TRANSFER_BY_MOVE_SOURCESTAT )
{
ioErrorCode = IOErrorCode_NOT_EXISTING;
- aMsg = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM(
+ aMsg = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM(
"source file/folder does not exist"));
break;
}
else
{
ioErrorCode = IOErrorCode_GENERAL;
- aMsg = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM(
+ aMsg = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM(
"a general error during transfer command"));
break;
}
default:
ioErrorCode = IOErrorCode_GENERAL;
- aMsg = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM(
+ aMsg = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM(
"a general error during transfer command"));
break;
}
@@ -896,7 +894,7 @@ namespace fileaccess {
case FileBase::E_NAMETOOLONG: // File name too long
ioErrorCode = IOErrorCode_NAME_TOO_LONG;
break;
- case FileBase::E_NOENT: // No such file or directory
+ case FileBase::E_NOENT: // No such file or directory
ioErrorCode = IOErrorCode_NOT_EXISTING;
aMsg = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(
"file/folder does not exist"));
diff --git a/ucb/source/ucp/file/filglob.hxx b/ucb/source/ucp/file/filglob.hxx
index d9ee20f32a..e3464ba7a3 100644
--- a/ucb/source/ucp/file/filglob.hxx
+++ b/ucb/source/ucp/file/filglob.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: filglob.hxx,v $
- * $Revision: 1.11.22.1 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/file/filid.cxx b/ucb/source/ucp/file/filid.cxx
index 6def154d33..88abcc1fb4 100644
--- a/ucb/source/ucp/file/filid.cxx
+++ b/ucb/source/ucp/file/filid.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: filid.cxx,v $
- * $Revision: 1.8 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/file/filid.hxx b/ucb/source/ucp/file/filid.hxx
index fecf17b8c8..12d1a44fd9 100644
--- a/ucb/source/ucp/file/filid.hxx
+++ b/ucb/source/ucp/file/filid.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: filid.hxx,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/file/filinl.hxx b/ucb/source/ucp/file/filinl.hxx
index a2bf11edeb..22205d9e84 100644
--- a/ucb/source/ucp/file/filinl.hxx
+++ b/ucb/source/ucp/file/filinl.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: filinl.hxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/file/filinpstr.cxx b/ucb/source/ucp/file/filinpstr.cxx
index a8cd3d8544..f9ff8d4da0 100644
--- a/ucb/source/ucp/file/filinpstr.cxx
+++ b/ucb/source/ucp/file/filinpstr.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: filinpstr.cxx,v $
- * $Revision: 1.13 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/file/filinpstr.hxx b/ucb/source/ucp/file/filinpstr.hxx
index 4271e651d9..05e5672751 100644
--- a/ucb/source/ucp/file/filinpstr.hxx
+++ b/ucb/source/ucp/file/filinpstr.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: filinpstr.hxx,v $
- * $Revision: 1.9 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/file/filinsreq.cxx b/ucb/source/ucp/file/filinsreq.cxx
index ad1a152cee..986db15430 100644
--- a/ucb/source/ucp/file/filinsreq.cxx
+++ b/ucb/source/ucp/file/filinsreq.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: filinsreq.cxx,v $
- * $Revision: 1.7 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/file/filinsreq.hxx b/ucb/source/ucp/file/filinsreq.hxx
index b90f3053c2..617809965d 100644
--- a/ucb/source/ucp/file/filinsreq.hxx
+++ b/ucb/source/ucp/file/filinsreq.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: filinsreq.hxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/file/filnot.cxx b/ucb/source/ucp/file/filnot.cxx
index 4039e442b7..3abb89adcd 100644
--- a/ucb/source/ucp/file/filnot.cxx
+++ b/ucb/source/ucp/file/filnot.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: filnot.cxx,v $
- * $Revision: 1.6 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/file/filnot.hxx b/ucb/source/ucp/file/filnot.hxx
index 3f2bc53386..46b808ab86 100644
--- a/ucb/source/ucp/file/filnot.hxx
+++ b/ucb/source/ucp/file/filnot.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: filnot.hxx,v $
- * $Revision: 1.6 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/file/filprp.cxx b/ucb/source/ucp/file/filprp.cxx
index 3e24118a50..9e45763d18 100644
--- a/ucb/source/ucp/file/filprp.cxx
+++ b/ucb/source/ucp/file/filprp.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: filprp.cxx,v $
- * $Revision: 1.8 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/file/filprp.hxx b/ucb/source/ucp/file/filprp.hxx
index 46acc7ee6e..6a62bc4567 100644
--- a/ucb/source/ucp/file/filprp.hxx
+++ b/ucb/source/ucp/file/filprp.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: filprp.hxx,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/file/filrec.cxx b/ucb/source/ucp/file/filrec.cxx
index 1580069175..424ece5df2 100644
--- a/ucb/source/ucp/file/filrec.cxx
+++ b/ucb/source/ucp/file/filrec.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: filrec.cxx,v $
- * $Revision: 1.3.22.1 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/file/filrec.hxx b/ucb/source/ucp/file/filrec.hxx
index 40d98aa437..de8def9077 100644
--- a/ucb/source/ucp/file/filrec.hxx
+++ b/ucb/source/ucp/file/filrec.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: filrec.hxx,v $
- * $Revision: 1.3.22.1 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/file/filrow.cxx b/ucb/source/ucp/file/filrow.cxx
index e4ccde0731..0b2ad97aea 100644
--- a/ucb/source/ucp/file/filrow.cxx
+++ b/ucb/source/ucp/file/filrow.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: filrow.cxx,v $
- * $Revision: 1.10 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/file/filrow.hxx b/ucb/source/ucp/file/filrow.hxx
index 296de98b6c..9d7b0bff09 100644
--- a/ucb/source/ucp/file/filrow.hxx
+++ b/ucb/source/ucp/file/filrow.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: filrow.hxx,v $
- * $Revision: 1.6 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/file/filrset.cxx b/ucb/source/ucp/file/filrset.cxx
index 134db87e19..e0bd6a0080 100644
--- a/ucb/source/ucp/file/filrset.cxx
+++ b/ucb/source/ucp/file/filrset.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: filrset.cxx,v $
- * $Revision: 1.21 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/file/filrset.hxx b/ucb/source/ucp/file/filrset.hxx
index 8815bc93e6..329889af6c 100644
--- a/ucb/source/ucp/file/filrset.hxx
+++ b/ucb/source/ucp/file/filrset.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: filrset.hxx,v $
- * $Revision: 1.12 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/file/filstr.cxx b/ucb/source/ucp/file/filstr.cxx
index d353f029b3..494413acc0 100644
--- a/ucb/source/ucp/file/filstr.cxx
+++ b/ucb/source/ucp/file/filstr.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: filstr.cxx,v $
- * $Revision: 1.24 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/file/filstr.hxx b/ucb/source/ucp/file/filstr.hxx
index 815bb52a10..393eda0c6c 100644
--- a/ucb/source/ucp/file/filstr.hxx
+++ b/ucb/source/ucp/file/filstr.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: filstr.hxx,v $
- * $Revision: 1.14 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/file/filtask.cxx b/ucb/source/ucp/file/filtask.cxx
index d706bf9ad0..df0b85e4fa 100644
--- a/ucb/source/ucp/file/filtask.cxx
+++ b/ucb/source/ucp/file/filtask.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: filtask.cxx,v $
- * $Revision: 1.15 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -33,11 +30,11 @@
#include "filtask.hxx"
#include "filglob.hxx"
-/*********************************************************************************/
-/* */
-/* TaskHandling */
-/* */
-/*********************************************************************************/
+/******************************************************************************/
+/* */
+/* TaskHandling */
+/* */
+/******************************************************************************/
using namespace fileaccess;
@@ -70,7 +67,9 @@ TaskManager::startTask(
TaskMap::iterator it = m_aTaskMap.find( CommandId );
if( it != m_aTaskMap.end() )
{
- throw DuplicateCommandIdentifierException( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX ) ), uno::Reference< uno::XInterface >() );
+ throw DuplicateCommandIdentifierException(
+ ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX ) ),
+ uno::Reference< uno::XInterface >() );
}
m_aTaskMap[ CommandId ] = TaskHandling( xCommandEnv );
}
@@ -90,13 +89,14 @@ TaskManager::endTask( sal_Int32 CommandId,
sal_Int32 ErrorCode = it->second.getInstalledError();
sal_Int32 MinorCode = it->second.getMinorErrorCode();
bool isHandled = it->second.isHandled();
-
- Reference< XCommandEnvironment > xComEnv = it->second.getCommandEnvironment();
-
+
+ Reference< XCommandEnvironment > xComEnv
+ = it->second.getCommandEnvironment();
+
m_aTaskMap.erase( it );
-
+
if( ErrorCode != TASKHANDLER_NO_ERROR )
- throw_handler(
+ throw_handler(
ErrorCode,
MinorCode,
xComEnv,
@@ -122,17 +122,6 @@ TaskManager::abort( sal_Int32 CommandId )
}
-bool SAL_CALL TaskManager::isAborted( sal_Int32 CommandId )
-{
- osl::MutexGuard aGuard( m_aMutex );
- TaskMap::iterator it = m_aTaskMap.find( CommandId );
- if( it == m_aTaskMap.end() || it->second.isAborted() )
- return false;
- else
- return true;
-}
-
-
void SAL_CALL TaskManager::clearError( sal_Int32 CommandId )
{
osl::MutexGuard aGuard( m_aMutex );
@@ -178,59 +167,18 @@ TaskManager::getCommandId( void )
-uno::Reference< task::XInteractionHandler > SAL_CALL
-TaskManager::getInteractionHandler( sal_Int32 CommandId )
-{
- osl::MutexGuard aGuard( m_aMutex );
- TaskMap::iterator it = m_aTaskMap.find( CommandId );
- if( it == m_aTaskMap.end() )
- return uno::Reference< task::XInteractionHandler >( 0 );
- else
- return it->second.getInteractionHandler();
-}
-
-
-
-uno::Reference< XProgressHandler > SAL_CALL
-TaskManager::getProgressHandler( sal_Int32 CommandId )
-{
- osl::MutexGuard aGuard( m_aMutex );
- TaskMap::iterator it = m_aTaskMap.find( CommandId );
- if( it == m_aTaskMap.end() )
- return uno::Reference< XProgressHandler >( 0 );
- else
- return it->second.getProgressHandler();
-}
-
-
-uno::Reference< XCommandEnvironment > SAL_CALL
-TaskManager::getCommandEnvironment( sal_Int32 CommandId )
-{
- osl::MutexGuard aGuard( m_aMutex );
- TaskMap::iterator it = m_aTaskMap.find( CommandId );
- if( it == m_aTaskMap.end() )
- return uno::Reference< XCommandEnvironment >( 0 );
- else
- return it->second.getCommandEnvironment();
-}
-
-
-void SAL_CALL TaskManager::handleTask( sal_Int32 CommandId,
- const uno::Reference< task::XInteractionRequest >& request )
+void SAL_CALL TaskManager::handleTask(
+ sal_Int32 CommandId,
+ const uno::Reference< task::XInteractionRequest >& request )
{
osl::MutexGuard aGuard( m_aMutex );
TaskMap::iterator it = m_aTaskMap.find( CommandId );
uno::Reference< task::XInteractionHandler > xInt;
if( it != m_aTaskMap.end() )
{
- xInt = it->second.getInteractionHandler();
+ xInt = it->second.getInteractionHandler();
if( xInt.is() )
xInt->handle( request );
it->second.setHandled();
}
}
-
-
-
-
-
diff --git a/ucb/source/ucp/file/filtask.hxx b/ucb/source/ucp/file/filtask.hxx
index bcb57587a3..610e251ebb 100644
--- a/ucb/source/ucp/file/filtask.hxx
+++ b/ucb/source/ucp/file/filtask.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: filtask.hxx,v $
- * $Revision: 1.16 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -40,43 +37,38 @@
#include <com/sun/star/ucb/XProgressHandler.hpp>
#include <com/sun/star/task/XInteractionHandler.hpp>
#include <com/sun/star/task/XInteractionRequest.hpp>
-#ifndef _FILERROR_HXX_
#include "filerror.hxx"
-#endif
namespace fileaccess
{
class BaseContent;
-
+
/*
* This implementation is inherited by class fileaccess::shell.
* The relevant methods in this class all have as first argument the CommandId,
- * so if necessary, every method has acess to its relevant XInteractionHandler and
- * XProgressHandler, simply by calling directly the method
- * getInteractionHandler( CommandId )
- * and
- * getProgressHandler();
+ * so if necessary, every method has access to its relevant XInteractionHandler and
+ * XProgressHandler.
*/
class TaskManager
{
protected:
-
+
class TaskHandling
{
private:
-
+
bool m_bAbort,m_bHandled;
sal_Int32 m_nErrorCode,m_nMinorCode;
com::sun::star::uno::Reference< com::sun::star::task::XInteractionHandler > m_xInteractionHandler;
com::sun::star::uno::Reference< com::sun::star::ucb::XProgressHandler > m_xProgressHandler;
com::sun::star::uno::Reference< com::sun::star::ucb::XCommandEnvironment > m_xCommandEnvironment;
-
+
public:
-
+
TaskHandling(
const com::sun::star::uno::Reference< com::sun::star::ucb::XCommandEnvironment >& xCommandEnv
= com::sun::star::uno::Reference< com::sun::star::ucb::XCommandEnvironment >( 0 ) )
@@ -89,22 +81,17 @@ namespace fileaccess
m_xCommandEnvironment( xCommandEnv )
{
}
-
+
void SAL_CALL abort()
- {
+ {
m_bAbort = true;
}
- bool SAL_CALL isAborted()
- {
- return m_bAbort;
- }
-
void setHandled()
{
m_bHandled = true;
}
-
+
bool isHandled()
{
return true;
@@ -115,7 +102,7 @@ namespace fileaccess
m_nErrorCode = TASKHANDLER_NO_ERROR;
m_nMinorCode = TASKHANDLER_NO_ERROR;
}
-
+
void SAL_CALL installError( sal_Int32 nErrorCode,
sal_Int32 nMinorCode = TASKHANDLER_NO_ERROR )
{
@@ -132,7 +119,7 @@ namespace fileaccess
{
return m_nMinorCode;
}
-
+
com::sun::star::uno::Reference< com::sun::star::ucb::XProgressHandler > SAL_CALL
getProgressHandler()
{
@@ -147,43 +134,42 @@ namespace fileaccess
{
if( ! m_xInteractionHandler.is() && m_xCommandEnvironment.is() )
m_xInteractionHandler = m_xCommandEnvironment->getInteractionHandler();
-
+
return m_xInteractionHandler;
}
-
+
com::sun::star::uno::Reference< com::sun::star::ucb::XCommandEnvironment > SAL_CALL
getCommandEnvironment()
{
return m_xCommandEnvironment;
}
-
+
}; // end class TaskHandling
-
-
+
+
typedef std::hash_map< sal_Int32,TaskHandling,std::hash< sal_Int32 > > TaskMap;
-
-
+
+
private:
osl::Mutex m_aMutex;
- sal_Int32 m_nCommandId;
+ sal_Int32 m_nCommandId;
TaskMap m_aTaskMap;
-
+
public:
-
+
TaskManager();
virtual ~TaskManager();
-
- void SAL_CALL startTask(
+
+ void SAL_CALL startTask(
sal_Int32 CommandId,
const com::sun::star::uno::Reference< com::sun::star::ucb::XCommandEnvironment >& xCommandEnv )
throw( com::sun::star::ucb::DuplicateCommandIdentifierException );
-
+
sal_Int32 SAL_CALL getCommandId( void );
void SAL_CALL abort( sal_Int32 CommandId );
- bool SAL_CALL isAborted( sal_Int32 CommandId );
-
+
/**
* The error code may be one of the error codes defined in
@@ -192,20 +178,20 @@ namespace fileaccess
*/
void SAL_CALL clearError();
-
+
void SAL_CALL installError( sal_Int32 CommandId,
sal_Int32 ErrorCode,
sal_Int32 minorCode = TASKHANDLER_NO_ERROR );
-
-// void SAL_CALL installError( sal_Int32 CommandId,
-// sal_Int32 ErrorCode,
-// rtl::OUString message );
-
-// void SAL_CALL installError( sal_Int32 CommandId,
-// sal_Int32 ErrorCode,
-// rtl::OUString message );
-
+
+// void SAL_CALL installError( sal_Int32 CommandId,
+// sal_Int32 ErrorCode,
+// rtl::OUString message );
+
+// void SAL_CALL installError( sal_Int32 CommandId,
+// sal_Int32 ErrorCode,
+// rtl::OUString message );
+
void SAL_CALL retrieveError( sal_Int32 CommandId,
sal_Int32 &ErrorCode,
sal_Int32 &minorCode);
@@ -214,36 +200,26 @@ namespace fileaccess
* Deinstalls the task and evaluates a possibly set error code.
* "endTask" throws in case an error code is set the corresponding exception.
*/
-
+
void SAL_CALL endTask( sal_Int32 CommandId,
// the physical URL of the object
const rtl::OUString& aUnqPath,
BaseContent* pContent);
-
-
+
+
/**
* Handles an interactionrequest
*/
-
+
void SAL_CALL handleTask( sal_Int32 CommandId,
const com::sun::star::uno::Reference< com::sun::star::task::XInteractionRequest >& request );
-
+
/**
* Clears any error which are set on the commandid
*/
-
- void SAL_CALL clearError( sal_Int32 );
-
-
- com::sun::star::uno::Reference< com::sun::star::task::XInteractionHandler > SAL_CALL
- getInteractionHandler( sal_Int32 CommandId );
-
- com::sun::star::uno::Reference< com::sun::star::ucb::XProgressHandler > SAL_CALL
- getProgressHandler( sal_Int32 CommandId );
- com::sun::star::uno::Reference< com::sun::star::ucb::XCommandEnvironment > SAL_CALL
- getCommandEnvironment( sal_Int32 CommandId );
+ void SAL_CALL clearError( sal_Int32 );
};
-
+
} // end namespace TaskHandling
diff --git a/ucb/source/ucp/file/makefile.mk b/ucb/source/ucp/file/makefile.mk
index d03983bca0..b11fdd8081 100644
--- a/ucb/source/ucp/file/makefile.mk
+++ b/ucb/source/ucp/file/makefile.mk
@@ -2,14 +2,10 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.19 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/file/prov.cxx b/ucb/source/ucp/file/prov.cxx
index 17137c8028..1c4f268e93 100644
--- a/ucb/source/ucp/file/prov.cxx
+++ b/ucb/source/ucp/file/prov.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: prov.cxx,v $
- * $Revision: 1.47 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/file/prov.hxx b/ucb/source/ucp/file/prov.hxx
index 05956fda04..30fc55b9fc 100644
--- a/ucb/source/ucp/file/prov.hxx
+++ b/ucb/source/ucp/file/prov.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: prov.hxx,v $
- * $Revision: 1.16 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/file/shell.cxx b/ucb/source/ucp/file/shell.cxx
index 8e3ed6d46b..dff5db9616 100644
--- a/ucb/source/ucp/file/shell.cxx
+++ b/ucb/source/ucp/file/shell.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: shell.cxx,v $
- * $Revision: 1.98 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -46,23 +43,18 @@
#include <com/sun/star/ucb/NameClash.hpp>
#include <com/sun/star/ucb/XContentIdentifier.hpp>
#include <com/sun/star/lang/XComponent.hpp>
-#ifndef _COM_SUN_STAR_UCB_XCONTENTACCESS_
#include <com/sun/star/ucb/XContentAccess.hpp>
-#endif
-#ifndef _COM_SUN_STAR_BEANS_PROPERTYATTRIBBUTE_HPP_
#include <com/sun/star/beans/PropertyAttribute.hpp>
-#endif
#include <com/sun/star/io/XSeekable.hpp>
#include <com/sun/star/io/XTruncate.hpp>
#include <com/sun/star/ucb/OpenCommandArgument.hpp>
#include <com/sun/star/ucb/XPropertySetRegistryFactory.hpp>
#include <com/sun/star/ucb/TransferInfo.hpp>
+#include <com/sun/star/ucb/ContentInfoAttribute.hpp>
#include <com/sun/star/beans/PropertyChangeEvent.hpp>
#include <com/sun/star/beans/XPropertiesChangeListener.hpp>
#include <rtl/string.hxx>
-#ifndef _FILERROR_HXX_
#include "filerror.hxx"
-#endif
#include "filglob.hxx"
#include "filcmd.hxx"
#include "filinpstr.hxx"
@@ -188,9 +180,10 @@ shell::shell( const uno::Reference< lang::XMultiServiceFactory >& xMultiServiceF
IsHidden( rtl::OUString::createFromAscii( "IsHidden" ) ),
ContentType( rtl::OUString::createFromAscii( "ContentType" ) ),
IsReadOnly( rtl::OUString::createFromAscii( "IsReadOnly" ) ),
+ CreatableContentsInfo( rtl::OUString::createFromAscii( "CreatableContentsInfo" ) ),
FolderContentType( rtl::OUString::createFromAscii( "application/vnd.sun.staroffice.fsys-folder" ) ),
FileContentType( rtl::OUString::createFromAscii( "application/vnd.sun.staroffice.fsys-file" ) ),
- m_sCommandInfo( 8 )
+ m_sCommandInfo( 9 )
{
// Title
m_aDefaultProperties.insert( MyProperty( true,
@@ -294,7 +287,7 @@ shell::shell( const uno::Reference< lang::XMultiServiceFactory >& xMultiServiceF
| beans::PropertyAttribute::BOUND
| beans::PropertyAttribute::READONLY ) );
- // Remote
+ // Hidden
m_aDefaultProperties.insert(
MyProperty(
true,
@@ -312,7 +305,6 @@ shell::shell( const uno::Reference< lang::XMultiServiceFactory >& xMultiServiceF
#endif
-
// ContentType
uno::Any aAny;
aAny <<= rtl::OUString();
@@ -358,6 +350,17 @@ shell::shell( const uno::Reference< lang::XMultiServiceFactory >& xMultiServiceF
| beans::PropertyAttribute::BOUND ) );
+ // CreatableContentsInfo
+ m_aDefaultProperties.insert( MyProperty( true,
+ CreatableContentsInfo,
+ -1 ,
+ getCppuType( static_cast< const uno::Sequence< ucb::ContentInfo > * >( 0 ) ),
+ uno::Any(),
+ beans::PropertyState_DEFAULT_VALUE,
+ beans::PropertyAttribute::MAYBEVOID
+ | beans::PropertyAttribute::BOUND
+ | beans::PropertyAttribute::READONLY ) );
+
// Commands
m_sCommandInfo[0].Name = rtl::OUString::createFromAscii( "getCommandInfo" );
m_sCommandInfo[0].Handle = -1;
@@ -391,6 +394,9 @@ shell::shell( const uno::Reference< lang::XMultiServiceFactory >& xMultiServiceF
m_sCommandInfo[7].Handle = -1;
m_sCommandInfo[7].ArgType = getCppuType( static_cast< InsertCommandArgument* > ( 0 ) );
+ m_sCommandInfo[7].Name = rtl::OUString::createFromAscii( "createNewContent" );
+ m_sCommandInfo[7].Handle = -1;
+ m_sCommandInfo[7].ArgType = getCppuType( static_cast< ucb::ContentInfo * > ( 0 ) );
if(m_bWithConfig)
{
@@ -900,7 +906,7 @@ shell::setv( const rtl::OUString& aUnqPath,
aFile.open(OpenFlag_Write) != osl::FileBase::E_None ||
aFile.setSize(sal_uInt64(newSize)) != osl::FileBase::E_None ||
aFile.close() != osl::FileBase::E_None;
-
+
if( err )
{
--propChanged; // unsuccessful setting
@@ -1131,7 +1137,7 @@ shell::move( sal_Int32 CommandId,
if( srcUnqPath == dstUnqPathIn )
return;
// <--
- //
+ //
osl::FileBase::RC nError;
rtl::OUString dstUnqPath( dstUnqPathIn );
@@ -1597,7 +1603,7 @@ shell::remove( sal_Int32 CommandId,
nError = aDirectory.getNextItem( aItem );
while( nError == osl::FileBase::E_None )
{
- nError = aItem.getFileStatus( aStatus );
+ nError = aItem.getFileStatus( aStatus );
if( nError != osl::FileBase::E_None || ! aStatus.isValid( nMask ) )
{
installError( CommandId,
@@ -1623,7 +1629,7 @@ shell::remove( sal_Int32 CommandId,
nError = aDirectory.getNextItem( aItem );
}
- aDirectory.close();
+ aDirectory.close();
if( ! whileSuccess )
return sal_False; // error code is installed
@@ -1907,7 +1913,7 @@ shell::write( sal_Int32 CommandId,
err );
bSuccess = sal_False;
}
-
+
err = aFile.close();
if( err != osl::FileBase::E_None )
{
@@ -2297,9 +2303,9 @@ shell::commit( const shell::ContentMap::iterator& it,
sal_Bool isDirectory,isFile,isVolume,isRemoveable,isRemote,isFloppy,isCompactDisc;
- sal_Int64 dirSize = 0;
-
- if( aFileStatus.isValid( FileStatusMask_FileSize ) )
+ sal_Int64 dirSize = 0;
+
+ if( aFileStatus.isValid( FileStatusMask_FileSize ) )
dirSize = aFileStatus.getFileSize();
if( aFileStatus.isValid( FileStatusMask_Type ) )
@@ -2320,7 +2326,7 @@ shell::commit( const shell::ContentMap::iterator& it,
isFile =
osl::FileStatus::Regular == aFileStatus2.getFileType();
- if( aFileStatus2.isValid( FileStatusMask_FileSize ) )
+ if( aFileStatus2.isValid( FileStatusMask_FileSize ) )
dirSize = aFileStatus2.getFileSize();
}
else
@@ -2346,17 +2352,17 @@ shell::commit( const shell::ContentMap::iterator& it,
osl::FileStatus::Regular == aFileStatus.getFileType();
}
- aAny <<= isVolume;
it1 = properties.find( MyProperty( IsVolume ) );
- if( it1 != properties.end() ) it1->setValue( aAny );
+ if( it1 != properties.end() )
+ it1->setValue( uno::makeAny( isVolume ) );
- aAny <<= isDirectory;
it1 = properties.find( MyProperty( IsFolder ) );
- if( it1 != properties.end() ) it1->setValue( aAny );
+ if( it1 != properties.end() )
+ it1->setValue( uno::makeAny( isDirectory ) );
- aAny <<= isFile;
it1 = properties.find( MyProperty( IsDocument ) );
- if( it1 != properties.end() ) it1->setValue( aAny );
+ if( it1 != properties.end() )
+ it1->setValue( uno::makeAny( isFile ) );
osl::VolumeInfo aVolumeInfo( VolumeInfoMask_Attributes );
if( isVolume &&
@@ -2369,44 +2375,51 @@ shell::commit( const shell::ContentMap::iterator& it,
isCompactDisc = aVolumeInfo.getCompactDiscFlag();
isFloppy = aVolumeInfo.getFloppyDiskFlag();
- aAny <<= isRemote;
it1 = properties.find( MyProperty( IsRemote ) );
- if( it1 != properties.end() ) it1->setValue( aAny );
+ if( it1 != properties.end() )
+ it1->setValue( uno::makeAny( isRemote ) );
- aAny <<= isRemoveable;
it1 = properties.find( MyProperty( IsRemoveable ) );
- if( it1 != properties.end() ) it1->setValue( aAny );
+ if( it1 != properties.end() )
+ it1->setValue( uno::makeAny( isRemoveable ) );
- aAny <<= isCompactDisc;
it1 = properties.find( MyProperty( IsCompactDisc ) );
- if( it1 != properties.end() ) it1->setValue( aAny );
+ if( it1 != properties.end() )
+ it1->setValue( uno::makeAny( isCompactDisc ) );
- aAny <<= isFloppy;
it1 = properties.find( MyProperty( IsFloppy ) );
- if( it1 != properties.end() ) it1->setValue( aAny );
+ if( it1 != properties.end() )
+ it1->setValue( uno::makeAny( isFloppy ) );
}
else
{
sal_Bool dummy = false;
aAny <<= dummy;
it1 = properties.find( MyProperty( IsRemote ) );
- if( it1 != properties.end() ) it1->setValue( aAny );
+ if( it1 != properties.end() )
+ it1->setValue( aAny );
+
it1 = properties.find( MyProperty( IsRemoveable ) );
- if( it1 != properties.end() ) it1->setValue( aAny );
+ if( it1 != properties.end() )
+ it1->setValue( aAny );
+
it1 = properties.find( MyProperty( IsCompactDisc ) );
- if( it1 != properties.end() ) it1->setValue( aAny );
+ if( it1 != properties.end() )
+ it1->setValue( aAny );
+
it1 = properties.find( MyProperty( IsFloppy ) );
- if( it1 != properties.end() ) it1->setValue( aAny );
+ if( it1 != properties.end() )
+ it1->setValue( aAny );
}
}
-
- it1 = properties.find( MyProperty( Size ) );
- if( it1 != properties.end() )
+ else
{
- aAny <<= dirSize;
- it1->setValue( aAny );
+ isDirectory = sal_False;
}
+ it1 = properties.find( MyProperty( Size ) );
+ if( it1 != properties.end() )
+ it1->setValue( uno::makeAny( dirSize ) );
it1 = properties.find( MyProperty( IsReadOnly ) );
if( it1 != properties.end() )
@@ -2415,8 +2428,7 @@ shell::commit( const shell::ContentMap::iterator& it,
{
sal_uInt64 Attr = aFileStatus.getAttributes();
sal_Bool readonly = ( Attr & Attribute_ReadOnly ) != 0;
- aAny <<= readonly;
- it1->setValue( aAny );
+ it1->setValue( uno::makeAny( readonly ) );
}
}
@@ -2427,13 +2439,11 @@ shell::commit( const shell::ContentMap::iterator& it,
{
sal_uInt64 Attr = aFileStatus.getAttributes();
sal_Bool ishidden = ( Attr & Attribute_Hidden ) != 0;
- aAny <<= ishidden;
- it1->setValue( aAny );
+ it1->setValue( uno::makeAny( ishidden ) );
}
}
it1 = properties.find( MyProperty( DateModified ) );
-
if( it1 != properties.end() )
{
if( aFileStatus.isValid( FileStatusMask_ModifyTime ) )
@@ -2441,7 +2451,7 @@ shell::commit( const shell::ContentMap::iterator& it,
TimeValue temp = aFileStatus.getModifyTime();
// Convert system time to local time (for EA)
- TimeValue myLocalTime;
+ TimeValue myLocalTime;
osl_getLocalTimeFromSystemTime( &temp, &myLocalTime );
oslDateTime myDateTime;
@@ -2455,11 +2465,16 @@ shell::commit( const shell::ContentMap::iterator& it,
aDateTime.Day = myDateTime.Day;
aDateTime.Month = myDateTime.Month;
aDateTime.Year = myDateTime.Year;
- aAny <<= aDateTime;
- it1->setValue( aAny );
+ it1->setValue( uno::makeAny( aDateTime ) );
}
}
+ it1 = properties.find( MyProperty( CreatableContentsInfo ) );
+ if( it1 != properties.end() )
+ it1->setValue( uno::makeAny(
+ isDirectory || !aFileStatus.isValid( FileStatusMask_Type )
+ ? queryCreatableContentsInfo()
+ : uno::Sequence< ucb::ContentInfo >() ) );
}
@@ -2494,12 +2509,12 @@ shell::getv(
{
// Assume failure
aIsRegular = false;
- osl::FileBase::RC result = osl::FileBase::E_INVAL;
- osl::DirectoryItem aTargetItem;
+ osl::FileBase::RC result = osl::FileBase::E_INVAL;
+ osl::DirectoryItem aTargetItem;
osl::DirectoryItem::get( aFileStatus.getLinkTargetURL(), aTargetItem );
if ( aTargetItem.is() )
{
- osl::FileStatus aTargetStatus( FileStatusMask_Type );
+ osl::FileStatus aTargetStatus( FileStatusMask_Type );
if ( osl::FileBase::E_None ==
( result = aTargetItem.getFileStatus( aTargetStatus ) ) )
@@ -3000,6 +3015,31 @@ shell::copyPersistentSet( const rtl::OUString& srcUnqPath,
} // end for( sal_Int...
}
+uno::Sequence< ucb::ContentInfo > shell::queryCreatableContentsInfo()
+{
+ uno::Sequence< ucb::ContentInfo > seq(2);
+
+ // file
+ seq[0].Type = FileContentType;
+ seq[0].Attributes = ucb::ContentInfoAttribute::INSERT_WITH_INPUTSTREAM
+ | ucb::ContentInfoAttribute::KIND_DOCUMENT;
+
+ uno::Sequence< beans::Property > props( 1 );
+ props[0] = beans::Property(
+ rtl::OUString::createFromAscii( "Title" ),
+ -1,
+ getCppuType( static_cast< rtl::OUString* >( 0 ) ),
+ beans::PropertyAttribute::MAYBEVOID
+ | beans::PropertyAttribute::BOUND );
+ seq[0].Properties = props;
+
+ // folder
+ seq[1].Type = FolderContentType;
+ seq[1].Attributes = ucb::ContentInfoAttribute::KIND_FOLDER;
+ seq[1].Properties = props;
+ return seq;
+}
+
/*******************************************************************************/
/* */
/* some misceancellous static functions */
diff --git a/ucb/source/ucp/file/shell.hxx b/ucb/source/ucp/file/shell.hxx
index 89e2324d74..e7e67e36f3 100644
--- a/ucb/source/ucp/file/shell.hxx
+++ b/ucb/source/ucp/file/shell.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: shell.hxx,v $
- * $Revision: 1.26 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -54,21 +51,18 @@
#include <com/sun/star/ucb/XCommandProcessor.hpp>
#include <com/sun/star/io/XOutputStream.hpp>
#include <com/sun/star/io/XInputStream.hpp>
-#ifndef _COM_SUN_STAR_BEANS_XPROPERTYSETINFO_HPP_protected
#include <com/sun/star/beans/XPropertySetInfo.hpp>
-#endif
#include <com/sun/star/beans/XPropertiesChangeNotifier.hpp>
#include <com/sun/star/ucb/NumberedSortingInfo.hpp>
#include <com/sun/star/sdbc/XRow.hpp>
#include <com/sun/star/lang/XMultiServiceFactory.hpp>
#include <com/sun/star/ucb/XContentProvider.hpp>
-#ifndef _COM_SUN_STAR_UCB_XDYNAMICRESULTSET_HPP__
#include <com/sun/star/ucb/XDynamicResultSet.hpp>
-#endif
#include <com/sun/star/beans/XPropertyContainer.hpp>
#include <com/sun/star/beans/XPropertyAccess.hpp>
#include <com/sun/star/ucb/XPropertySetRegistryFactory.hpp>
#include <com/sun/star/ucb/TransferInfo.hpp>
+#include <com/sun/star/ucb/ContentInfo.hpp>
#include "filtask.hxx"
#include "filnot.hxx"
@@ -307,7 +301,7 @@ namespace fileaccess {
/********************************************************************************/
- /* transfer-commandos */
+ /* transfer-commands */
/********************************************************************************/
/**
@@ -398,6 +392,9 @@ namespace fileaccess {
void SAL_CALL insertDefaultProperties( const rtl::OUString& aUnqPath );
+ com::sun::star::uno::Sequence< com::sun::star::ucb::ContentInfo >
+ queryCreatableContentsInfo();
+
/******************************************************************************/
/* */
@@ -416,11 +413,10 @@ namespace fileaccess {
com::sun::star::uno::Reference< com::sun::star::lang::XMultiServiceFactory > m_xMultiServiceFactory;
com::sun::star::uno::Reference< com::sun::star::ucb::XPropertySetRegistry > m_xFileRegistry;
-
private:
/********************************************************************************/
- /* get eventListeners */
+ /* get eventListeners */
/********************************************************************************/
std::list< ContentEventNotifier* >* SAL_CALL
@@ -442,7 +438,7 @@ namespace fileaccess {
/********************************************************************************/
- /* notify eventListeners */
+ /* notify eventListeners */
/********************************************************************************/
void SAL_CALL notifyPropertyChanges(
@@ -580,6 +576,7 @@ namespace fileaccess {
const rtl::OUString IsHidden;
const rtl::OUString ContentType;
const rtl::OUString IsReadOnly;
+ const rtl::OUString CreatableContentsInfo;
public:
diff --git a/ucb/source/ucp/ftp/curl.hxx b/ucb/source/ucp/ftp/curl.hxx
index ed6fe22cd0..761a9466af 100644
--- a/ucb/source/ucp/ftp/curl.hxx
+++ b/ucb/source/ucp/ftp/curl.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: curl.hxx,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/ftp/ftpcfunc.cxx b/ucb/source/ucp/ftp/ftpcfunc.cxx
index 9ec3edf0c0..1f4be95862 100644
--- a/ucb/source/ucp/ftp/ftpcfunc.cxx
+++ b/ucb/source/ucp/ftp/ftpcfunc.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: ftpcfunc.cxx,v $
- * $Revision: 1.7.22.1 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/ftp/ftpcfunc.hxx b/ucb/source/ucp/ftp/ftpcfunc.hxx
index 95a6cd00cb..63e98df698 100644
--- a/ucb/source/ucp/ftp/ftpcfunc.hxx
+++ b/ucb/source/ucp/ftp/ftpcfunc.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: ftpcfunc.hxx,v $
- * $Revision: 1.6.22.1 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/ftp/ftpcontainer.hxx b/ucb/source/ucp/ftp/ftpcontainer.hxx
index e49a8f7166..8d8829bcbe 100644
--- a/ucb/source/ucp/ftp/ftpcontainer.hxx
+++ b/ucb/source/ucp/ftp/ftpcontainer.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: ftpcontainer.hxx,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/ftp/ftpcontent.cxx b/ucb/source/ucp/ftp/ftpcontent.cxx
index c3e6563d38..e01a209bcf 100644
--- a/ucb/source/ucp/ftp/ftpcontent.cxx
+++ b/ucb/source/ucp/ftp/ftpcontent.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: ftpcontent.cxx,v $
- * $Revision: 1.29 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -106,19 +103,6 @@ using namespace com::sun::star::sdbc;
FTPContent::FTPContent( const Reference< XMultiServiceFactory >& rxSMgr,
FTPContentProvider* pProvider,
- const Reference< XContentIdentifier >& Identifier)
- : ContentImplHelper(rxSMgr,pProvider,Identifier),
- m_pFCP(pProvider),
- m_aFTPURL(Identifier->getContentIdentifier(),
- pProvider),
- m_bInserted(false),
- m_bTitleSet(false)
-{
-}
-
-
-FTPContent::FTPContent( const Reference< XMultiServiceFactory >& rxSMgr,
- FTPContentProvider* pProvider,
const Reference< XContentIdentifier >& Identifier,
const FTPURL& aFTPURL)
: ContentImplHelper(rxSMgr,pProvider,Identifier),
@@ -175,9 +159,9 @@ XINTERFACE_IMPL_6( FTPContent,
//=========================================================================
XTYPEPROVIDER_IMPL_6( FTPContent,
- XTypeProvider,
- XServiceInfo,
- XContent,
+ XTypeProvider,
+ XServiceInfo,
+ XContent,
XCommandProcessor,
XContentCreator,
XChild);
@@ -231,7 +215,7 @@ void SAL_CALL FTPContent::abort( sal_Int32 /*CommandId*/ )
/***************************************************************************/
/* */
-/* Interne Implklasse */
+/* Internal implementation class. */
/* */
/***************************************************************************/
@@ -240,7 +224,7 @@ class ResultSetFactoryI
: public ResultSetFactory
{
public:
-
+
ResultSetFactoryI(const Reference<XMultiServiceFactory >& xSMgr,
const Reference<XContentProvider >& xProvider,
sal_Int32 nOpenMode,
@@ -255,7 +239,7 @@ public:
m_dirvec(dirvec)
{
}
-
+
virtual ResultSetBase* createResultSet()
{
return new ResultSetI(m_xSMgr,
@@ -265,9 +249,9 @@ public:
m_seqSort,
m_dirvec);
}
-
+
public:
-
+
Reference< XMultiServiceFactory > m_xSMgr;
Reference< XContentProvider > m_xProvider;
sal_Int32 m_nOpenMode;
@@ -306,10 +290,10 @@ Any SAL_CALL FTPContent::execute(
CommandAbortedException,
RuntimeException
)
-{
+{
ACTION action(NOACTION);
Any aRet;
-
+
while(true)
try {
if(action == THROWAUTHENTICATIONREQUEST) {
@@ -330,20 +314,20 @@ Any SAL_CALL FTPContent::execute(
::ENTITY_FIXED,
m_aFTPURL.username(),
ucbhelper::SimpleAuthenticationRequest
- ::ENTITY_MODIFY,
+ ::ENTITY_MODIFY,
aPassword));
-
+
Reference<XInteractionHandler> xInteractionHandler;
if(Environment.is())
xInteractionHandler =
Environment->getInteractionHandler();
-
+
if( xInteractionHandler.is()) {
xInteractionHandler->handle(p.get());
-
+
Reference<XInterface> xSelection(
p->getSelection().get());
-
+
if(Reference<XInteractionRetry>(
xSelection,UNO_QUERY).is())
action = NOACTION;
@@ -360,82 +344,101 @@ Any SAL_CALL FTPContent::execute(
}
aRet = p->getRequest();
}
-
-// if(aCommand.Name.compareToAscii(
-// "getPropertyValues") == 0 &&
-// action != NOACTION) {
-// // It is not allowed to throw if
-// // command is getPropertyValues
-// rtl::Reference<ucbhelper::PropertyValueSet> xRow =
-// new ucbhelper::PropertyValueSet(m_xSMgr);
-// Sequence<Property> Properties;
-// aCommand.Argument >>= Properties;
-// for(int i = 0; i < Properties.getLength(); ++i)
-// xRow->appendVoid(Properties[i]);
-// aRet <<= Reference<XRow>(xRow.get());
-// return aRet;
-// }
-
- if(action == THROWAUTHENTICATIONREQUEST) {
+
+// if(aCommand.Name.compareToAscii(
+// "getPropertyValues") == 0 &&
+// action != NOACTION) {
+// // It is not allowed to throw if
+// // command is getPropertyValues
+// rtl::Reference<ucbhelper::PropertyValueSet> xRow =
+// new ucbhelper::PropertyValueSet(m_xSMgr);
+// Sequence<Property> Properties;
+// aCommand.Argument >>= Properties;
+// for(int i = 0; i < Properties.getLength(); ++i)
+// xRow->appendVoid(Properties[i]);
+// aRet <<= Reference<XRow>(xRow.get());
+// return aRet;
+// }
+
+ switch (action)
+ {
+ case NOACTION:
+ break;
+
+ case THROWAUTHENTICATIONREQUEST:
ucbhelper::cancelCommandExecution(
aRet,
Reference<XCommandEnvironment>(0));
- } else if(action == THROWACCESSDENIED) {
- Sequence<Any> seq(1);
- PropertyValue value;
- value.Name =
- rtl::OUString::createFromAscii("Uri");
- value.Handle = -1;
- value.Value <<= m_aFTPURL.ident(false,false);
- value.State = PropertyState_DIRECT_VALUE;
- seq[0] <<= value;
- ucbhelper::cancelCommandExecution(
- IOErrorCode_ACCESS_DENIED,
- seq,
- Environment);
- } else if(action == THROWINTERACTIVECONNECT) {
- InteractiveNetworkConnectException
- excep;
- excep.Server = m_aFTPURL.host();
- aRet <<= excep;
- ucbhelper::cancelCommandExecution(
- aRet,
- Environment);
- } else if(action == THROWRESOLVENAME) {
- InteractiveNetworkResolveNameException
- excep;
- excep.Server = m_aFTPURL.host();
- aRet <<= excep;
- ucbhelper::cancelCommandExecution(
- aRet,
- Environment);
- } else if(action == THROWNOFILE) {
- Sequence<Any> seq(1);
- PropertyValue value;
- value.Name =
- rtl::OUString::createFromAscii("Uri");
- value.Handle = -1;
- value.Value <<= m_aFTPURL.ident(false,false);
- value.State = PropertyState_DIRECT_VALUE;
- seq[0] <<= value;
- ucbhelper::cancelCommandExecution(
- IOErrorCode_NO_FILE,
- seq,
- Environment);
- } else if(action == THROWQUOTE ||
- action == THROWGENERAL) {
+ break;
+
+ case THROWACCESSDENIED:
+ {
+ Sequence<Any> seq(1);
+ PropertyValue value;
+ value.Name = rtl::OUString::createFromAscii("Uri");
+ value.Handle = -1;
+ value.Value <<= m_aFTPURL.ident(false,false);
+ value.State = PropertyState_DIRECT_VALUE;
+ seq[0] <<= value;
+ ucbhelper::cancelCommandExecution(
+ IOErrorCode_ACCESS_DENIED,
+ seq,
+ Environment);
+ break;
+ }
+ case THROWINTERACTIVECONNECT:
+ {
+ InteractiveNetworkConnectException excep;
+ excep.Server = m_aFTPURL.host();
+ aRet <<= excep;
+ ucbhelper::cancelCommandExecution(
+ aRet,
+ Environment);
+ break;
+ }
+ case THROWRESOLVENAME:
+ {
+ InteractiveNetworkResolveNameException excep;
+ excep.Server = m_aFTPURL.host();
+ aRet <<= excep;
+ ucbhelper::cancelCommandExecution(
+ aRet,
+ Environment);
+ break;
+ }
+ case THROWNOFILE:
+ {
+ Sequence<Any> seq(1);
+ PropertyValue value;
+ value.Name = rtl::OUString::createFromAscii("Uri");
+ value.Handle = -1;
+ value.Value <<= m_aFTPURL.ident(false,false);
+ value.State = PropertyState_DIRECT_VALUE;
+ seq[0] <<= value;
+ ucbhelper::cancelCommandExecution(
+ IOErrorCode_NO_FILE,
+ seq,
+ Environment);
+ break;
+ }
+ case THROWQUOTE:
+ case THROWGENERAL:
ucbhelper::cancelCommandExecution(
IOErrorCode_GENERAL,
Sequence<Any>(0),
- Environment);
+ Environment);
+ break;
}
-
-
+
if(aCommand.Name.compareToAscii("getPropertyValues") == 0) {
Sequence<Property> Properties;
if(!(aCommand.Argument >>= Properties))
{
- aRet <<= IllegalArgumentException();
+ aRet <<= IllegalArgumentException(
+ rtl::OUString::createFromAscii(
+ "Wrong argument type!" ),
+ static_cast< cppu::OWeakObject * >(this),
+ -1);
ucbhelper::cancelCommandExecution(aRet,Environment);
}
@@ -444,12 +447,16 @@ Any SAL_CALL FTPContent::execute(
else if(aCommand.Name.compareToAscii("setPropertyValues") == 0)
{
Sequence<PropertyValue> propertyValues;
-
+
if( ! ( aCommand.Argument >>= propertyValues ) ) {
- aRet <<= IllegalArgumentException();
+ aRet <<= IllegalArgumentException(
+ rtl::OUString::createFromAscii(
+ "Wrong argument type!" ),
+ static_cast< cppu::OWeakObject * >(this),
+ -1);
ucbhelper::cancelCommandExecution(aRet,Environment);
}
-
+
aRet <<= setPropertyValues(propertyValues);
}
else if(aCommand.Name.compareToAscii("getCommandInfo") == 0) {
@@ -464,7 +471,11 @@ Any SAL_CALL FTPContent::execute(
{
InsertCommandArgument aInsertArgument;
if ( ! ( aCommand.Argument >>= aInsertArgument ) ) {
- aRet <<= IllegalArgumentException();
+ aRet <<= IllegalArgumentException(
+ rtl::OUString::createFromAscii(
+ "Wrong argument type!" ),
+ static_cast< cppu::OWeakObject * >(this),
+ -1);
ucbhelper::cancelCommandExecution(aRet,Environment);
}
insert(aInsertArgument,Environment);
@@ -476,17 +487,22 @@ Any SAL_CALL FTPContent::execute(
else if(aCommand.Name.compareToAscii( "open" ) == 0) {
OpenCommandArgument2 aOpenCommand;
if ( !( aCommand.Argument >>= aOpenCommand ) ) {
- aRet <<= IllegalArgumentException();
+ aRet <<= IllegalArgumentException(
+ rtl::OUString::createFromAscii(
+ "Wrong argument type!" ),
+ static_cast< cppu::OWeakObject * >(this),
+ -1);
+
ucbhelper::cancelCommandExecution(aRet,Environment);
}
-
+
if(aOpenCommand.Mode == OpenMode::DOCUMENT) {
// Open as a document
Reference<XActiveDataSink>
xActiveDataSink(aOpenCommand.Sink,UNO_QUERY);
Reference< XOutputStream >
xOutputStream(aOpenCommand.Sink,UNO_QUERY);
-
+
if(xActiveDataSink.is()) {
xActiveDataSink->setInputStream(
new FTPInputStream(m_aFTPURL.open()));
@@ -506,17 +522,17 @@ Any SAL_CALL FTPContent::execute(
byte_seq.realloc(n);
xOutputStream->writeBytes(byte_seq);
} catch(const NotConnectedException&) {
-
+
} catch(const BufferSizeExceededException&) {
-
+
} catch(const IOException&) {
-
+
}
}
if(n) {
Sequence<Any> seq(1);
PropertyValue value;
- value.Name =
+ value.Name =
rtl::OUString::createFromAscii("Uri");
value.Handle = -1;
value.Value <<= m_aFTPURL.ident(false,false);
@@ -529,7 +545,10 @@ Any SAL_CALL FTPContent::execute(
}
}
else {
- aRet <<= UnsupportedDataSinkException();
+ aRet <<= UnsupportedDataSinkException(
+ rtl::OUString(),
+ static_cast< cppu::OWeakObject * >(this),
+ aOpenCommand.Sink);
ucbhelper::cancelCommandExecution(aRet,Environment);
}
}
@@ -553,33 +572,56 @@ Any SAL_CALL FTPContent::execute(
aRet <<= xSet;
}
else if(aOpenCommand.Mode ==
- OpenMode::DOCUMENT_SHARE_DENY_NONE ||
+ OpenMode::DOCUMENT_SHARE_DENY_NONE ||
aOpenCommand.Mode ==
OpenMode::DOCUMENT_SHARE_DENY_WRITE) {
// Unsupported OpenMode
- aRet <<= UnsupportedOpenModeException();
+ aRet <<= UnsupportedOpenModeException(
+ rtl::OUString(),
+ static_cast< cppu::OWeakObject * >(this),
+ static_cast< sal_Int16 >(aOpenCommand.Mode));
ucbhelper::cancelCommandExecution(aRet,Environment);
}
else {
- // IllegalArgumentException:: No OpenMode
- aRet <<= IllegalArgumentException();
+ aRet <<= IllegalArgumentException(
+ rtl::OUString::createFromAscii(
+ "Unexpected OpenMode!" ),
+ static_cast< cppu::OWeakObject * >(this),
+ -1);
+
ucbhelper::cancelCommandExecution(aRet,Environment);
}
- }
- else {
- aRet <<= UnsupportedCommandException();
+ } else if(aCommand.Name.compareToAscii("createNewContent") == 0) {
+ ContentInfo aArg;
+ if (!(aCommand.Argument >>= aArg)) {
+ ucbhelper::cancelCommandExecution(
+ makeAny(
+ IllegalArgumentException(
+ rtl::OUString::createFromAscii(
+ "Wrong argument type!" ),
+ static_cast< cppu::OWeakObject * >(this),
+ -1)),
+ Environment);
+ // Unreachable
+ }
+ aRet <<= createNewContent(aArg);
+ } else {
+ aRet <<= UnsupportedCommandException(
+ aCommand.Name,
+ static_cast< cppu::OWeakObject * >(this));
ucbhelper::cancelCommandExecution(aRet,Environment);
}
-
- return aRet;
+
+ return aRet;
} catch(const curl_exception& e) {
if(e.code() == CURLE_COULDNT_CONNECT)
action = THROWINTERACTIVECONNECT;
else if(e.code() == CURLE_COULDNT_RESOLVE_HOST )
action = THROWRESOLVENAME;
else if(e.code() == CURLE_FTP_USER_PASSWORD_INCORRECT ||
- e.code() == CURLE_BAD_PASSWORD_ENTERED ||
- e.code() == CURLE_FTP_WEIRD_PASS_REPLY )
+ e.code() == CURLE_LOGIN_DENIED ||
+ e.code() == CURLE_BAD_PASSWORD_ENTERED ||
+ e.code() == CURLE_FTP_WEIRD_PASS_REPLY)
action = THROWAUTHENTICATIONREQUEST;
else if(e.code() == CURLE_FTP_ACCESS_DENIED)
action = THROWACCESSDENIED;
@@ -588,7 +630,7 @@ Any SAL_CALL FTPContent::execute(
else if(e.code() == CURLE_FTP_COULDNT_RETR_FILE)
action = THROWNOFILE;
else
- // nothing known about the course of the error
+ // nothing known about the cause of the error
action = THROWGENERAL;
}
}
@@ -602,14 +644,22 @@ Any SAL_CALL FTPContent::execute(
"vnd.sun.staroffice.ftp-folder")
Sequence<ContentInfo > SAL_CALL
-FTPContent::queryCreatableContentsInfo( )
+FTPContent::queryCreatableContentsInfo( )
+ throw (RuntimeException)
+{
+ return queryCreatableContentsInfo_Static();
+}
+
+// static
+Sequence<ContentInfo >
+FTPContent::queryCreatableContentsInfo_Static( )
throw (RuntimeException)
{
Sequence< ContentInfo > seq(2);
-
+
seq[0].Type = FTP_FILE;
seq[0].Attributes = ContentInfoAttribute::INSERT_WITH_INPUTSTREAM
- | ContentInfoAttribute::KIND_DOCUMENT;
+ | ContentInfoAttribute::KIND_DOCUMENT;
Sequence< Property > props( 1 );
props[0] = Property(
rtl::OUString::createFromAscii( "Title" ),
@@ -620,14 +670,13 @@ FTPContent::queryCreatableContentsInfo( )
seq[0].Properties = props;
// folder
- seq[1].Type = FTP_FOLDER;
+ seq[1].Type = FTP_FOLDER;
seq[1].Attributes = ContentInfoAttribute::KIND_FOLDER;
seq[1].Properties = props;
return seq;
}
-
Reference<XContent > SAL_CALL
FTPContent::createNewContent( const ContentInfo& Info )
throw (RuntimeException)
@@ -655,16 +704,16 @@ FTPContent::getParent( )
Reference<XContent> xContent(m_xProvider->queryContent(xIdent));
return Reference<XInterface>(xContent,UNO_QUERY);
}
-
+
void SAL_CALL
FTPContent::setParent(const Reference<XInterface >& /*Parent*/ )
- throw (NoSupportException,
+ throw (NoSupportException,
RuntimeException)
{
throw NoSupportException();
}
-
+
rtl::OUString FTPContent::getParentURL()
@@ -677,11 +726,11 @@ class InsertData
: public CurlInput {
public:
-
+
InsertData(const Reference<XInputStream>& xInputStream)
: m_xInputStream(xInputStream) { }
virtual ~InsertData() {}
-
+
// returns the number of bytes actually read
virtual sal_Int32 read(sal_Int8 *dest,sal_Int32 nBytesRequested);
@@ -695,9 +744,9 @@ private:
sal_Int32 InsertData::read(sal_Int8 *dest,sal_Int32 nBytesRequested)
{
sal_Int32 m = 0;
-
+
if(m_xInputStream.is()) {
- Sequence<sal_Int8> seq(nBytesRequested);
+ Sequence<sal_Int8> seq(nBytesRequested);
m = m_xInputStream->readBytes(seq,nBytesRequested);
rtl_copyMemory(dest,seq.getConstArray(),m);
}
@@ -720,15 +769,15 @@ void FTPContent::insert(const InsertCommandArgument& aInsertCommand,
if(m_bInserted &&
m_aInfo.Type == FTP_FILE &&
- !aInsertCommand.Data.is())
+ !aInsertCommand.Data.is())
{
MissingInputStreamException excep;
Any aAny; aAny <<= excep;
ucbhelper::cancelCommandExecution(aAny,Env);
}
-
+
bool bReplace(aInsertCommand.ReplaceExisting);
-
+
retry:
try {
if(m_aInfo.Type == FTP_FILE) {
@@ -751,17 +800,17 @@ void FTPContent::insert(const InsertCommandArgument& aInsertCommand,
Reference<XInteractionHandler> xInt;
if(Env.is())
xInt = Env->getInteractionHandler();
-
+
UnsupportedNameClashException excep;
excep.NameClash = 0; //NameClash::ERROR;
-
+
if(!xInt.is()) {
Any aAny;
aAny <<= excep;
ucbhelper::cancelCommandExecution(aAny,Env);
}
-
- XInteractionRequestImpl* p =
+
+ XInteractionRequestImpl* p =
new XInteractionRequestImpl(m_aFTPURL.child());
Reference<XInteractionRequest> req(p);
xInt->handle(req);
@@ -775,7 +824,7 @@ void FTPContent::insert(const InsertCommandArgument& aInsertCommand,
else
throw;
}
-
+
// May not be reached, because both mkdir and insert can throw curl-
// exceptions
m_bInserted = false;
@@ -784,20 +833,23 @@ void FTPContent::insert(const InsertCommandArgument& aInsertCommand,
-Reference< XRow > FTPContent::getPropertyValues(
+Reference< XRow > FTPContent::getPropertyValues(
const Sequence< Property >& seqProp,
const Reference<XCommandEnvironment>& /*environment*/
)
{
- rtl::Reference<ucbhelper::PropertyValueSet> xRow =
+ rtl::Reference<ucbhelper::PropertyValueSet> xRow =
new ucbhelper::PropertyValueSet(m_xSMgr);
-
+
FTPDirentry aDirEntry = m_aFTPURL.direntry();
-
+
for(sal_Int32 i = 0; i < seqProp.getLength(); ++i) {
const rtl::OUString& Name = seqProp[i].Name;
if(Name.compareToAscii("Title") == 0)
xRow->appendString(seqProp[i],aDirEntry.m_aName);
+ else if(Name.compareToAscii("CreatableContentsInfo") == 0)
+ xRow->appendObject(seqProp[i],
+ makeAny(queryCreatableContentsInfo()));
else if(aDirEntry.m_nMode != INETCOREFTP_FILEMODE_UNKNOWN) {
if(Name.compareToAscii("ContentType") == 0)
xRow->appendString(seqProp[i],
@@ -829,7 +881,7 @@ Reference< XRow > FTPContent::getPropertyValues(
} else
xRow->appendVoid(seqProp[i]);
}
-
+
return Reference<XRow>(xRow.get());
}
@@ -838,12 +890,9 @@ Reference< XRow > FTPContent::getPropertyValues(
Sequence<Any> FTPContent::setPropertyValues(
const Sequence<PropertyValue>& seqPropVal)
{
- Sequence<Property> props =
- getProperties(Reference<XCommandEnvironment>(0));
-
Sequence<Any> ret(seqPropVal.getLength());
Sequence<PropertyChangeEvent > evt;
-
+
osl::MutexGuard aGuard(m_aMutex);
for(sal_Int32 i = 0; i < ret.getLength(); ++i) {
if(seqPropVal[i].Name.equalsAscii("Title")) {
@@ -855,10 +904,10 @@ Sequence<Any> FTPContent::setPropertyValues(
ret[i] <<= IllegalArgumentException();
continue;
}
-
+
if(m_bInserted) {
m_aFTPURL.child(Title);
- m_xIdentifier =
+ m_xIdentifier =
new FTPContentIdentifier(m_aFTPURL.ident(false,false));
m_bTitleSet = true;
} else
@@ -879,21 +928,30 @@ Sequence<Any> FTPContent::setPropertyValues(
ret[i] <<= excep;
}
} else {
- // either not unknown or illegal
+ Sequence<Property> props =
+ getProperties(Reference<XCommandEnvironment>(0));
+
+ // either unknown or read-only
ret[i] <<= UnknownPropertyException();
for(sal_Int32 j = 0; j < props.getLength(); ++j)
if(props[j].Name == seqPropVal[i].Name) {
- ret[i] <<= IllegalAccessException();
+ ret[i] <<= IllegalAccessException(
+ rtl::OUString::createFromAscii(
+ "Property is read-only!"),
+ //props[j].Attributes & PropertyAttribute::READONLY
+ // ? "Property is read-only!"
+ // : "Access denied!"),
+ static_cast< cppu::OWeakObject * >( this ));
break;
}
}
}
-
+
if(evt.getLength()) {
// title has changed
notifyPropertiesChange(evt);
exchange(new FTPContentIdentifier(m_aFTPURL.ident(false,false)));
}
-
+
return ret;
}
diff --git a/ucb/source/ucp/ftp/ftpcontent.hxx b/ucb/source/ucp/ftp/ftpcontent.hxx
index 0d8cd8e425..9dcb8103a5 100644
--- a/ucb/source/ucp/ftp/ftpcontent.hxx
+++ b/ucb/source/ucp/ftp/ftpcontent.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: ftpcontent.hxx,v $
- * $Revision: 1.13 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -51,30 +48,17 @@ namespace ftp
{
//=========================================================================
-
+
// UNO service name for the content.
#define FTP_CONTENT_SERVICE_NAME "com.sun.star.ucb.FTPContent"
//=========================================================================
- struct ContentProperties
- {
- ::rtl::OUString aTitle; // Title
- ::rtl::OUString aContentType; // ContentType
- sal_Bool bIsDocument; // IsDocument
- sal_Bool bIsFolder; // IsFolder
-
- ContentProperties()
- : bIsDocument( sal_True ), bIsFolder( sal_False ) {}
- };
-
-//=========================================================================
-
class FTPContentProvider;
//=========================================================================
-
- class FTPContent
+
+ class FTPContent
: public ::ucbhelper::ContentImplHelper,
public com::sun::star::ucb::XContentCreator
{
@@ -84,23 +68,17 @@ namespace ftp
::com::sun::star::lang::XMultiServiceFactory >& rxSMgr,
FTPContentProvider* pProvider,
const ::com::sun::star::uno::Reference<
- ::com::sun::star::ucb::XContentIdentifier >& Identifier);
-
- FTPContent( const ::com::sun::star::uno::Reference<
- ::com::sun::star::lang::XMultiServiceFactory >& rxSMgr,
- FTPContentProvider* pProvider,
- const ::com::sun::star::uno::Reference<
::com::sun::star::ucb::XContentIdentifier >& Identifier,
const FTPURL& FtpUrl);
-
+
FTPContent( const ::com::sun::star::uno::Reference<
::com::sun::star::lang::XMultiServiceFactory >& rxSMgr,
FTPContentProvider* pProvider,
const ::com::sun::star::uno::Reference<
::com::sun::star::ucb::XContentIdentifier >& Identifier,
const com::sun::star::ucb::ContentInfo& aInfo);
-
-
+
+
virtual ~FTPContent();
// XInterface
@@ -126,7 +104,7 @@ namespace ftp
throw( com::sun::star::uno::Exception,
com::sun::star::ucb::CommandAbortedException,
com::sun::star::uno::RuntimeException );
-
+
virtual void SAL_CALL
abort(sal_Int32 CommandId)
throw( com::sun::star::uno::RuntimeException);
@@ -134,62 +112,67 @@ namespace ftp
// XContentCreator
virtual com::sun::star::uno::Sequence<
com::sun::star::ucb::ContentInfo > SAL_CALL
- queryCreatableContentsInfo( )
+ queryCreatableContentsInfo( )
throw (com::sun::star::uno::RuntimeException);
-
+
virtual com::sun::star::uno::Reference<
com::sun::star::ucb::XContent > SAL_CALL
createNewContent( const com::sun::star::ucb::ContentInfo& Info )
throw (com::sun::star::uno::RuntimeException);
-
+
// XChild
-
+
virtual ::com::sun::star::uno::Reference<
::com::sun::star::uno::XInterface > SAL_CALL
- getParent( )
+ getParent( )
throw (::com::sun::star::uno::RuntimeException);
-
+
virtual void SAL_CALL
setParent( const ::com::sun::star::uno::Reference<
- ::com::sun::star::uno::XInterface >& Parent )
- throw (::com::sun::star::lang::NoSupportException,
+ ::com::sun::star::uno::XInterface >& Parent )
+ throw (::com::sun::star::lang::NoSupportException,
::com::sun::star::uno::RuntimeException);
-
+
+
+ static com::sun::star::uno::Sequence<
+ com::sun::star::ucb::ContentInfo >
+ queryCreatableContentsInfo_Static( )
+ throw (com::sun::star::uno::RuntimeException);
private:
-
+
FTPContentProvider *m_pFCP;
FTPURL m_aFTPURL;
- bool m_bInserted;
+ bool m_bInserted;
bool m_bTitleSet;
com::sun::star::ucb::ContentInfo m_aInfo;
-
+
virtual com::sun::star::uno::Sequence< com::sun::star::beans::Property >
getProperties( const com::sun::star::uno::Reference<
com::sun::star::ucb::XCommandEnvironment > & xEnv );
-
-
- virtual com::sun::star::uno::Sequence<
+
+
+ virtual com::sun::star::uno::Sequence<
com::sun::star::ucb::CommandInfo>
getCommands(const com::sun::star::uno::Reference<
com::sun::star::ucb::XCommandEnvironment > & xEnv);
-
-
+
+
virtual ::rtl::OUString getParentURL();
- com::sun::star::uno::Reference<com::sun::star::sdbc::XRow>
+ com::sun::star::uno::Reference<com::sun::star::sdbc::XRow>
getPropertyValues(
const com::sun::star::uno::Sequence<
com::sun::star::beans::Property>& seqProp,
const com::sun::star::uno::Reference<
- com::sun::star::ucb::XCommandEnvironment >& Environment
+ com::sun::star::ucb::XCommandEnvironment >& Environment
);
com::sun::star::uno::Sequence<com::sun::star::uno::Any>
setPropertyValues(
const ::com::sun::star::uno::Sequence<
::com::sun::star::beans::PropertyValue>& seqPropVal);
-
+
void insert(const com::sun::star::ucb::InsertCommandArgument&,
const com::sun::star::uno::Reference<
com::sun::star::ucb::XCommandEnvironment>&);
diff --git a/ucb/source/ucp/ftp/ftpcontentcaps.cxx b/ucb/source/ucp/ftp/ftpcontentcaps.cxx
index 7fc47b4cac..607ecbc4b0 100644
--- a/ucb/source/ucp/ftp/ftpcontentcaps.cxx
+++ b/ucb/source/ucp/ftp/ftpcontentcaps.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: ftpcontentcaps.cxx,v $
- * $Revision: 1.11 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -49,7 +46,7 @@ using namespace ftp;
uno::Sequence< beans::Property > FTPContent::getProperties(
const uno::Reference< ucb::XCommandEnvironment > & /*xEnv*/)
{
- #define PROPS_COUNT 7
+ #define PROPS_COUNT 8
static const beans::Property aPropsInfoTable[] =
{
@@ -57,54 +54,63 @@ uno::Sequence< beans::Property > FTPContent::getProperties(
rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "ContentType" ) ),
-1,
getCppuType( static_cast< const rtl::OUString * >( 0 ) ),
- beans::PropertyAttribute::BOUND
- | beans::PropertyAttribute::READONLY
+ beans::PropertyAttribute::BOUND
+ | beans::PropertyAttribute::READONLY
),
beans::Property(
rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "IsDocument" ) ),
-1,
getCppuBooleanType(),
- beans::PropertyAttribute::BOUND
- | beans::PropertyAttribute::READONLY
+ beans::PropertyAttribute::BOUND
+ | beans::PropertyAttribute::READONLY
),
beans::Property(
rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "IsFolder" ) ),
-1,
getCppuBooleanType(),
- beans::PropertyAttribute::BOUND
- | beans::PropertyAttribute::READONLY
+ beans::PropertyAttribute::BOUND
+ | beans::PropertyAttribute::READONLY
),
beans::Property(
rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Title" ) ),
-1,
getCppuType( static_cast< const rtl::OUString * >( 0 ) ),
beans::PropertyAttribute::BOUND
- // | beans::PropertyAttribute::READONLY
+ // | beans::PropertyAttribute::READONLY
),
beans::Property(
rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Size" ) ),
-1,
getCppuType( static_cast< const sal_Int64 * >( 0 ) ),
- beans::PropertyAttribute::BOUND
- | beans::PropertyAttribute::READONLY
+ beans::PropertyAttribute::BOUND
+ | beans::PropertyAttribute::READONLY
),
beans::Property(
rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "DateCreated" ) ),
-1,
- getCppuType( static_cast< util::DateTime* >( 0 ) ),
- beans::PropertyAttribute::BOUND
- | beans::PropertyAttribute::READONLY
+ getCppuType( static_cast< util::DateTime * >( 0 ) ),
+ beans::PropertyAttribute::BOUND
+ | beans::PropertyAttribute::READONLY
),
beans::Property(
rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "IsReadOnly" ) ),
-1,
getCppuBooleanType(),
- beans::PropertyAttribute::BOUND
- | beans::PropertyAttribute::READONLY
+ beans::PropertyAttribute::BOUND
+ | beans::PropertyAttribute::READONLY
+ ),
+ beans::Property(
+ rtl::OUString( RTL_CONSTASCII_USTRINGPARAM(
+ "CreatableContentsInfo" ) ),
+ -1,
+ getCppuType(
+ static_cast< const uno::Sequence< ucb::ContentInfo > * >( 0 ) ),
+ beans::PropertyAttribute::BOUND
+ | beans::PropertyAttribute::READONLY
)
};
- return uno::Sequence< beans::Property >( aPropsInfoTable,PROPS_COUNT);
+ return uno::Sequence< beans::Property >( aPropsInfoTable, PROPS_COUNT );
}
//=========================================================================
@@ -112,15 +118,15 @@ uno::Sequence< beans::Property > FTPContent::getProperties(
uno::Sequence< ucb::CommandInfo > FTPContent::getCommands(
const uno::Reference< ucb::XCommandEnvironment > & /*xEnv*/ )
{
-// osl::MutexGuard aGuard( m_aMutex );
-
+// osl::MutexGuard aGuard( m_aMutex );
+
//=================================================================
//
// Supported commands
//
//=================================================================
- #define COMMAND_COUNT 7
+ #define COMMAND_COUNT 8
static const ucb::CommandInfo aCommandInfoTable[] =
{
@@ -133,44 +139,49 @@ uno::Sequence< ucb::CommandInfo > FTPContent::getCommands(
getCppuVoidType()
),
ucb::CommandInfo(
- rtl::OUString(
+ rtl::OUString(
RTL_CONSTASCII_USTRINGPARAM( "getPropertySetInfo" ) ),
-1,
getCppuVoidType()
),
ucb::CommandInfo(
- rtl::OUString(
+ rtl::OUString(
RTL_CONSTASCII_USTRINGPARAM( "getPropertyValues" ) ),
-1,
- getCppuType(
+ getCppuType(
static_cast< uno::Sequence< beans::Property > * >( 0 ) )
),
ucb::CommandInfo(
- rtl::OUString(
+ rtl::OUString(
RTL_CONSTASCII_USTRINGPARAM( "setPropertyValues" ) ),
-1,
- getCppuType(
+ getCppuType(
static_cast< uno::Sequence< beans::PropertyValue > * >( 0 ) )
),
ucb::CommandInfo(
rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "open" ) ),
-1,
- getCppuType(
+ getCppuType(
static_cast< ucb::OpenCommandArgument2 * >( 0 ) )
),
ucb::CommandInfo(
rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "insert" ) ),
-1,
- getCppuType(
+ getCppuType(
static_cast< ucb::InsertCommandArgument * >( 0 ) )
),
ucb::CommandInfo(
rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "delete" ) ),
-1,
- getCppuType( static_cast< sal_Bool * >( 0 ) )
+ getCppuBooleanType()
+ ),
+ ucb::CommandInfo(
+ rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "createNewContent" ) ),
+ -1,
+ getCppuType( static_cast< ucb::ContentInfo * >( 0 ) )
)
};
-
- return uno::Sequence<ucb::CommandInfo>(aCommandInfoTable,COMMAND_COUNT);
+
+ return uno::Sequence< ucb::CommandInfo >( aCommandInfoTable, COMMAND_COUNT );
}
diff --git a/ucb/source/ucp/ftp/ftpcontentidentifier.cxx b/ucb/source/ucp/ftp/ftpcontentidentifier.cxx
index dc6b550c4c..eaff30cce1 100644
--- a/ucb/source/ucp/ftp/ftpcontentidentifier.cxx
+++ b/ucb/source/ucp/ftp/ftpcontentidentifier.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: ftpcontentidentifier.cxx,v $
- * $Revision: 1.9 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/ftp/ftpcontentidentifier.hxx b/ucb/source/ucp/ftp/ftpcontentidentifier.hxx
index 27038ca3df..d4f423b059 100644
--- a/ucb/source/ucp/ftp/ftpcontentidentifier.hxx
+++ b/ucb/source/ucp/ftp/ftpcontentidentifier.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: ftpcontentidentifier.hxx,v $
- * $Revision: 1.8 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/ftp/ftpcontentprovider.cxx b/ucb/source/ucp/ftp/ftpcontentprovider.cxx
index 15fcf5378b..f0e1f09624 100644
--- a/ucb/source/ucp/ftp/ftpcontentprovider.cxx
+++ b/ucb/source/ucp/ftp/ftpcontentprovider.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: ftpcontentprovider.cxx,v $
- * $Revision: 1.14 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/ftp/ftpcontentprovider.hxx b/ucb/source/ucp/ftp/ftpcontentprovider.hxx
index 1ab2f8dd54..9e67a8c6fd 100644
--- a/ucb/source/ucp/ftp/ftpcontentprovider.hxx
+++ b/ucb/source/ucp/ftp/ftpcontentprovider.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: ftpcontentprovider.hxx,v $
- * $Revision: 1.11 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/ftp/ftpdirp.cxx b/ucb/source/ucp/ftp/ftpdirp.cxx
index f25474ef53..0a47535d59 100644
--- a/ucb/source/ucp/ftp/ftpdirp.cxx
+++ b/ucb/source/ucp/ftp/ftpdirp.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: ftpdirp.cxx,v $
- * $Revision: 1.7 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -874,17 +871,17 @@ sal_Bool FTPDirectoryParser::parseUNIX (
{
const sal_Char *p1, *p2;
p1 = p2 = pBuffer;
-
+
if (!((*p1 == '-') || (*p1 == 'd') || (*p1 == 'l')))
return sal_False;
// 1st column: FileMode.
if (*p1 == 'd')
rEntry.m_nMode |= INETCOREFTP_FILEMODE_ISDIR;
-
+
if (*p1 == 'l')
rEntry.m_nMode |= INETCOREFTP_FILEMODE_ISLINK;
-
+
// Skip to end of column and set rights by the way
while (*p1 && !ascii_isWhitespace(*p1)) {
if(*p1 == 'r')
@@ -893,7 +890,7 @@ sal_Bool FTPDirectoryParser::parseUNIX (
rEntry.m_nMode |= INETCOREFTP_FILEMODE_WRITE;
p1++;
}
-
+
/*
* Scan for the sequence of size and date fields:
* *LWS 1*DIGIT 1*LWS 3CHAR 1*LWS 1*2DIGIT 1*LWS
@@ -970,19 +967,7 @@ sal_Bool FTPDirectoryParser::parseUNIX (
// Done.
return sal_True;
}
- return sal_False;
-}
-
-/*
- * parseUNKNOWN.
- */
-sal_Bool FTPDirectoryParser::parseUNKNOWN (
- FTPDirentry &rEntry,
- const sal_Char *pBuffer,
- sal_uInt32 nLength)
-{
- setPath (rEntry.m_aName, pBuffer,sal_Int32 (nLength));
- return sal_True;
+ return sal_False;
}
/*
@@ -1204,7 +1189,7 @@ sal_Bool FTPDirectoryParser::parseUNIX_isYearTimeField (
nNumber = 10 * nNumber + (*pStart - '0');
if (pStart + 1 != pEnd || nNumber < 1970)
return sal_False;
-
+
rDateTime.SetYear(nNumber);
rDateTime.SetTime(0);
return sal_True;
@@ -1237,12 +1222,12 @@ sal_Bool FTPDirectoryParser::parseUNIX_isTime (
// else
// rDateTime.SetYear(aCurDate.GetYear());
// return sal_True;
-
+
TimeValue aTimeVal;
osl_getSystemTime(&aTimeVal);
oslDateTime aCurrDateTime;
osl_getDateTimeFromTimeValue(&aTimeVal,&aCurrDateTime);
-
+
if (rDateTime.GetMonth() > aCurrDateTime.Month)
rDateTime.SetYear(aCurrDateTime.Year - 1);
else
diff --git a/ucb/source/ucp/ftp/ftpdirp.hxx b/ucb/source/ucp/ftp/ftpdirp.hxx
index 2083a8beff..810d45f101 100644
--- a/ucb/source/ucp/ftp/ftpdirp.hxx
+++ b/ucb/source/ucp/ftp/ftpdirp.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: ftpdirp.hxx,v $
- * $Revision: 1.7 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -42,13 +39,13 @@
namespace ftp {
-
+
/*========================================================================
*
* the DateTime structure
*
*======================================================================*/
-
+
struct DateTime
: public com::sun::star::util::DateTime
{
@@ -66,7 +63,7 @@ namespace ftp {
day,
month,
year) { }
-
+
void SetYear(sal_uInt16 year) { Year = year; }
void SetMonth(sal_uInt16 month) { Month = month; }
void SetDay(sal_uInt16 day) { Day = day; }
@@ -101,12 +98,12 @@ namespace ftp {
DateTime m_aDate;
sal_uInt32 m_nMode;
sal_uInt32 m_nSize;
-
+
FTPDirentry(void)
: m_aDate(0,0,0,0,0,0,0),
m_nMode(INETCOREFTP_FILEMODE_UNKNOWN),
m_nSize((sal_uInt32)(-1)) { }
-
+
void clear() {
m_aURL = m_aName = rtl::OUString();
m_aDate = DateTime(0,0,0,0,0,0,0);
@@ -115,21 +112,21 @@ namespace ftp {
}
bool isDir() const {
- return bool(m_nMode && INETCOREFTP_FILEMODE_ISDIR);
+ return bool(m_nMode && INETCOREFTP_FILEMODE_ISDIR);
}
-
+
bool isFile() const {
- return ! bool(m_nMode && INETCOREFTP_FILEMODE_ISDIR);
+ return ! bool(m_nMode && INETCOREFTP_FILEMODE_ISDIR);
}
};
-
+
/*========================================================================
*
* the directory parser
*
*======================================================================*/
-
+
class FTPDirectoryParser
{
@@ -137,28 +134,23 @@ namespace ftp {
static sal_Bool parseDOS (
FTPDirentry &rEntry,
const sal_Char *pBuffer );
-
+
static sal_Bool parseVMS (
FTPDirentry &rEntry,
const sal_Char *pBuffer );
-
+
static sal_Bool parseUNIX (
FTPDirentry &rEntry,
const sal_Char *pBuffer );
-
- static sal_Bool parseUNKNOWN (
- FTPDirentry &rEntry,
- const sal_Char *pBuffer,
- sal_uInt32 nLength);
-
+
private:
-
+
static sal_Bool parseUNIX_isSizeField (
const sal_Char *pStart,
const sal_Char *pEnd,
sal_uInt32 &rSize);
-
+
static sal_Bool parseUNIX_isMonthField (
const sal_Char *pStart,
const sal_Char *pEnd,
@@ -168,7 +160,7 @@ namespace ftp {
const sal_Char *pStart,
const sal_Char *pEnd,
DateTime& rDateTime);
-
+
static sal_Bool parseUNIX_isYearTimeField (
const sal_Char *pStart,
const sal_Char *pEnd,
@@ -190,7 +182,7 @@ namespace ftp {
sal_Int32 length = -1);
};
-
+
}
diff --git a/ucb/source/ucp/ftp/ftpdynresultset.cxx b/ucb/source/ucp/ftp/ftpdynresultset.cxx
index 84b711cfdd..ac6b5b5546 100644
--- a/ucb/source/ucp/ftp/ftpdynresultset.cxx
+++ b/ucb/source/ucp/ftp/ftpdynresultset.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: ftpdynresultset.cxx,v $
- * $Revision: 1.6 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/ftp/ftpdynresultset.hxx b/ucb/source/ucp/ftp/ftpdynresultset.hxx
index 8139ccacf5..b1d9194f75 100644
--- a/ucb/source/ucp/ftp/ftpdynresultset.hxx
+++ b/ucb/source/ucp/ftp/ftpdynresultset.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: ftpdynresultset.hxx,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/ftp/ftpinpstr.cxx b/ucb/source/ucp/ftp/ftpinpstr.cxx
index 7600ddb6af..2faac1e932 100644
--- a/ucb/source/ucp/ftp/ftpinpstr.cxx
+++ b/ucb/source/ucp/ftp/ftpinpstr.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: ftpinpstr.cxx,v $
- * $Revision: 1.10 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -53,11 +50,11 @@ using namespace com::sun::star::io;
FTPInputStream::FTPInputStream(FILE* tmpfl)
- : m_tmpfl(tmpfl ? tmpfl : tmpfile())
+ : m_tmpfl(tmpfl ? tmpfl : tmpfile())
{
fseek(m_tmpfl,0,SEEK_END);
-// fpos_t pos;
-// fgetpos(m_tmpfl,&pos);
+// fpos_t pos;
+// fgetpos(m_tmpfl,&pos);
long pos = ftell(m_tmpfl);
rewind(m_tmpfl);
m_nLength = sal_Int64(pos);
@@ -65,24 +62,24 @@ FTPInputStream::FTPInputStream(FILE* tmpfl)
-FTPInputStream::~FTPInputStream()
+FTPInputStream::~FTPInputStream()
{
if ( 0 != m_tmpfl)
fclose(m_tmpfl);
}
-Any SAL_CALL FTPInputStream::queryInterface(
+Any SAL_CALL FTPInputStream::queryInterface(
const Type& rType
)
throw(
- RuntimeException
- )
+ RuntimeException
+ )
{
Any aRet = ::cppu::queryInterface(rType,
SAL_STATIC_CAST( XInputStream*,this ),
SAL_STATIC_CAST( XSeekable*,this ) );
-
+
return aRet.hasValue() ? aRet : OWeakObject::queryInterface( rType );
}
@@ -107,26 +104,29 @@ sal_Int32 SAL_CALL FTPInputStream::readBytes(Sequence< sal_Int8 >& aData,
RuntimeException)
{
osl::MutexGuard aGuard(m_aMutex);
-
+
if(0 <= nBytesToRead && aData.getLength() < nBytesToRead)
- aData.realloc(nBytesToRead);
-
+ aData.realloc(nBytesToRead);
+
// fpos_t bpos,epos;
-
+
// fgetpos(m_tmpfl,&bpos);
-// fread(aData.getArray(),nBytesToRead,1,m_tmpfl);
+// fread(aData.getArray(),nBytesToRead,1,m_tmpfl);
// fgetpos(m_tmpfl,&epos);
long bpos,epos;
-
+
bpos = ftell(m_tmpfl);
- fread(aData.getArray(),nBytesToRead,1,m_tmpfl);
+ if (fread(aData.getArray(),nBytesToRead,1,m_tmpfl) != 1)
+ throw IOException();
+
epos = ftell(m_tmpfl);
-
+
return sal_Int32(epos-bpos);
}
-sal_Int32 SAL_CALL FTPInputStream::readSomeBytes( Sequence< sal_Int8 >& aData,sal_Int32 nMaxBytesToRead )
+sal_Int32 SAL_CALL FTPInputStream::readSomeBytes( Sequence< sal_Int8 >& aData,
+ sal_Int32 nMaxBytesToRead )
throw( NotConnectedException,
BufferSizeExceededException,
IOException,
@@ -146,7 +146,7 @@ void SAL_CALL FTPInputStream::skipBytes(sal_Int32 nBytesToSkip)
osl::MutexGuard aGuard(m_aMutex);
if(!m_tmpfl)
throw IOException();
-
+
fseek(m_tmpfl,long(nBytesToSkip),SEEK_CUR);
}
@@ -155,7 +155,7 @@ void SAL_CALL FTPInputStream::skipBytes(sal_Int32 nBytesToSkip)
sal_Int32 SAL_CALL FTPInputStream::available(void)
throw(NotConnectedException,
IOException,
- RuntimeException)
+ RuntimeException)
{
return sal::static_int_cast<sal_Int32>(m_nLength - getPosition());
}
@@ -177,12 +177,12 @@ void SAL_CALL FTPInputStream::closeInput(void)
void SAL_CALL FTPInputStream::seek(sal_Int64 location)
throw( IllegalArgumentException,
IOException,
- RuntimeException )
+ RuntimeException )
{
osl::MutexGuard aGuard(m_aMutex);
if(!m_tmpfl)
throw IOException();
-
+
fseek(m_tmpfl,long(location),SEEK_SET);
}
@@ -197,7 +197,7 @@ FTPInputStream::getPosition(
osl::MutexGuard aGuard(m_aMutex);
if(!m_tmpfl)
throw IOException();
-
+
// fpos_t pos;
// fgetpos(m_tmpfl,&pos);
long pos;
@@ -207,11 +207,11 @@ FTPInputStream::getPosition(
-sal_Int64 SAL_CALL FTPInputStream::getLength(
- void
+sal_Int64 SAL_CALL FTPInputStream::getLength(
+ void
) throw(
IOException,RuntimeException
)
{
- return m_nLength;
+ return m_nLength;
}
diff --git a/ucb/source/ucp/ftp/ftpinpstr.hxx b/ucb/source/ucp/ftp/ftpinpstr.hxx
index 1ecf5e8bab..83431371ec 100644
--- a/ucb/source/ucp/ftp/ftpinpstr.hxx
+++ b/ucb/source/ucp/ftp/ftpinpstr.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: ftpinpstr.hxx,v $
- * $Revision: 1.6 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/ftp/ftpintreq.cxx b/ucb/source/ucp/ftp/ftpintreq.cxx
index 78d3db6ecd..9d9bf49b28 100644
--- a/ucb/source/ucp/ftp/ftpintreq.cxx
+++ b/ucb/source/ucp/ftp/ftpintreq.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: ftpintreq.cxx,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -71,7 +68,7 @@ Any SAL_CALL
XInteractionApproveImpl::queryInterface( const Type& rType )
throw( RuntimeException )
{
- Any aRet = cppu::queryInterface(
+ Any aRet = cppu::queryInterface(
rType,
SAL_STATIC_CAST( lang::XTypeProvider*, this ),
SAL_STATIC_CAST( XInteractionApprove*,this) );
@@ -83,13 +80,13 @@ XInteractionApproveImpl::queryInterface( const Type& rType )
// XTypeProvider
//////////////////////////////////////////////////////////////////////////////
-XTYPEPROVIDER_IMPL_2( XInteractionApproveImpl,
+XTYPEPROVIDER_IMPL_2( XInteractionApproveImpl,
XTypeProvider,
XInteractionApprove )
-
+
void SAL_CALL XInteractionApproveImpl::select()
- throw (RuntimeException)
+ throw (RuntimeException)
{
m_bSelected = true;
}
@@ -101,7 +98,6 @@ bool XInteractionApproveImpl::isSelected() const
}
-
// XInteractionDisapproveImpl
XInteractionDisapproveImpl::XInteractionDisapproveImpl()
@@ -131,7 +127,7 @@ Any SAL_CALL
XInteractionDisapproveImpl::queryInterface( const Type& rType )
throw( RuntimeException )
{
- Any aRet = cppu::queryInterface(
+ Any aRet = cppu::queryInterface(
rType,
SAL_STATIC_CAST( lang::XTypeProvider*, this ),
SAL_STATIC_CAST( XInteractionDisapprove*,this) );
@@ -143,26 +139,19 @@ XInteractionDisapproveImpl::queryInterface( const Type& rType )
// XTypeProvider
//////////////////////////////////////////////////////////////////////////////
-XTYPEPROVIDER_IMPL_2( XInteractionDisapproveImpl,
+XTYPEPROVIDER_IMPL_2( XInteractionDisapproveImpl,
XTypeProvider,
XInteractionDisapprove )
-
+
void SAL_CALL XInteractionDisapproveImpl::select()
throw (RuntimeException)
-
-{
- m_bSelected = true;
-}
-
-bool XInteractionDisapproveImpl::isSelected() const
{
- return m_bSelected;
+ m_bSelected = true;
}
-
// XInteractionRequestImpl
XInteractionRequestImpl::XInteractionRequestImpl(const rtl::OUString& aName)
@@ -170,12 +159,12 @@ XInteractionRequestImpl::XInteractionRequestImpl(const rtl::OUString& aName)
p2( new XInteractionDisapproveImpl ),
m_aName(aName),
m_aSeq( 2 )
-{
+{
m_aSeq[0] = Reference<XInteractionContinuation>(p1);
m_aSeq[1] = Reference<XInteractionContinuation>(p2);
}
-
+
void SAL_CALL
XInteractionRequestImpl::acquire( void )
throw()
@@ -198,7 +187,7 @@ Any SAL_CALL
XInteractionRequestImpl::queryInterface( const Type& rType )
throw( RuntimeException )
{
- Any aRet = cppu::queryInterface(
+ Any aRet = cppu::queryInterface(
rType,
SAL_STATIC_CAST( lang::XTypeProvider*, this ),
SAL_STATIC_CAST( XInteractionRequest*,this) );
@@ -210,7 +199,7 @@ XInteractionRequestImpl::queryInterface( const Type& rType )
// XTypeProvider
/////////////////////////////////////////////////////////////////////////////
-XTYPEPROVIDER_IMPL_2( XInteractionRequestImpl,
+XTYPEPROVIDER_IMPL_2( XInteractionRequestImpl,
XTypeProvider,
XInteractionRequest )
@@ -234,12 +223,6 @@ XInteractionRequestImpl::getContinuations( )
}
-bool XInteractionRequestImpl::aborted() const
-{
- return p2->isSelected();
-}
-
-
bool XInteractionRequestImpl::approved() const
{
return p1->isSelected();
diff --git a/ucb/source/ucp/ftp/ftpintreq.hxx b/ucb/source/ucp/ftp/ftpintreq.hxx
index 7b3fbca577..8ffb48232d 100644
--- a/ucb/source/ucp/ftp/ftpintreq.hxx
+++ b/ucb/source/ucp/ftp/ftpintreq.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: ftpintreq.hxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -43,26 +40,26 @@
namespace ftp {
-
+
class XInteractionApproveImpl
: public cppu::OWeakObject,
public com::sun::star::lang::XTypeProvider,
public com::sun::star::task::XInteractionApprove
{
public:
-
+
XInteractionApproveImpl();
-
+
virtual com::sun::star::uno::Any SAL_CALL
queryInterface(
const com::sun::star::uno::Type& rType )
throw( com::sun::star::uno::RuntimeException);
-
+
virtual void SAL_CALL
acquire(
void )
throw();
-
+
virtual void SAL_CALL
release(
void )
@@ -72,12 +69,12 @@ namespace ftp {
// XTypeProvider
XTYPEPROVIDER_DECL()
-
+
virtual void SAL_CALL select()
throw (com::sun::star::uno::RuntimeException);
-
+
bool isSelected() const;
-
+
private:
bool m_bSelected;
@@ -85,26 +82,26 @@ namespace ftp {
-
+
class XInteractionDisapproveImpl
: public cppu::OWeakObject,
public com::sun::star::lang::XTypeProvider,
public com::sun::star::task::XInteractionDisapprove
{
public:
-
+
XInteractionDisapproveImpl();
-
+
virtual com::sun::star::uno::Any SAL_CALL
queryInterface(
const com::sun::star::uno::Type& rType )
throw( com::sun::star::uno::RuntimeException);
-
+
virtual void SAL_CALL
acquire(
void )
throw();
-
+
virtual void SAL_CALL
release(
void )
@@ -114,38 +111,36 @@ namespace ftp {
// XTypeProvider
XTYPEPROVIDER_DECL()
-
+
virtual void SAL_CALL select()
throw (com::sun::star::uno::RuntimeException);
-
- bool isSelected() const;
-
+
private:
bool m_bSelected;
};
-
-
+
+
class XInteractionRequestImpl
: public cppu::OWeakObject,
public com::sun::star::lang::XTypeProvider,
public com::sun::star::task::XInteractionRequest
{
public:
-
+
XInteractionRequestImpl(const rtl::OUString& aName);
-
+
virtual com::sun::star::uno::Any SAL_CALL
queryInterface(
const com::sun::star::uno::Type& rType )
throw( com::sun::star::uno::RuntimeException);
-
+
virtual void SAL_CALL
acquire(
void )
throw();
-
+
virtual void SAL_CALL
release(
void )
@@ -153,35 +148,33 @@ namespace ftp {
// XTypeProvider
-
+
XTYPEPROVIDER_DECL()
- com::sun::star::uno::Any SAL_CALL
+ com::sun::star::uno::Any SAL_CALL
getRequest( )
throw (com::sun::star::uno::RuntimeException);
- com::sun::star::uno::Sequence<
- com::sun::star::uno::Reference<
+ com::sun::star::uno::Sequence<
+ com::sun::star::uno::Reference<
com::sun::star::task::XInteractionContinuation > > SAL_CALL
getContinuations( )
throw (com::sun::star::uno::RuntimeException);
-
- bool aborted() const;
-
- bool approved() const;
+
+ bool approved() const;
private:
XInteractionApproveImpl* p1;
XInteractionDisapproveImpl* p2;
-
+
rtl::OUString m_aName;
-
- com::sun::star::uno::Sequence<
- com::sun::star::uno::Reference<
+
+ com::sun::star::uno::Sequence<
+ com::sun::star::uno::Reference<
com::sun::star::task::XInteractionContinuation > > m_aSeq;
};
-
+
}
diff --git a/ucb/source/ucp/ftp/ftploaderthread.cxx b/ucb/source/ucp/ftp/ftploaderthread.cxx
index 930beaa873..0d81ee9a82 100644
--- a/ucb/source/ucp/ftp/ftploaderthread.cxx
+++ b/ucb/source/ucp/ftp/ftploaderthread.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: ftploaderthread.cxx,v $
- * $Revision: 1.10 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/ftp/ftploaderthread.hxx b/ucb/source/ucp/ftp/ftploaderthread.hxx
index a12d3ecca6..ac3048080e 100644
--- a/ucb/source/ucp/ftp/ftploaderthread.hxx
+++ b/ucb/source/ucp/ftp/ftploaderthread.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: ftploaderthread.hxx,v $
- * $Revision: 1.9 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/ftp/ftpresultsetI.cxx b/ucb/source/ucp/ftp/ftpresultsetI.cxx
index 40bd4569fd..f9944f363f 100644
--- a/ucb/source/ucp/ftp/ftpresultsetI.cxx
+++ b/ucb/source/ucp/ftp/ftpresultsetI.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: ftpresultsetI.cxx,v $
- * $Revision: 1.9 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -38,7 +35,7 @@
#include "com/sun/star/ucb/XCommandProcessor.hpp"
#include "com/sun/star/sdbc/XRow.hpp"
#include "ftpresultsetI.hxx"
-
+#include "ftpcontent.hxx"
using namespace std;
@@ -62,14 +59,14 @@ ResultSetI::ResultSetI(const Reference<XMultiServiceFactory>& xMSF,
m_aPath.push_back(dirvec[i].m_aURL);
// m_aIdents holds the contentidentifiers
-
+
m_aItems.resize( m_aPath.size() );
m_aIdents.resize( m_aPath.size() );
-
+
for(unsigned n = 0; n < m_aItems.size(); ++n) {
- rtl::Reference<ucbhelper::PropertyValueSet> xRow =
+ rtl::Reference<ucbhelper::PropertyValueSet> xRow =
new ucbhelper::PropertyValueSet(xMSF);
-
+
for( int i = 0; i < seqProp.getLength(); ++i) {
const rtl::OUString& Name = seqProp[i].Name;
if(Name.compareToAscii("ContentType") == 0 )
@@ -96,6 +93,10 @@ ResultSetI::ResultSetI(const Reference<XMultiServiceFactory>& xMSF,
else if(Name.compareToAscii("DateCreated") == 0)
xRow->appendTimestamp(seqProp[i],
dirvec[n].m_aDate);
+ else if(Name.compareToAscii("CreatableContentsInfo") == 0)
+ xRow->appendObject(
+ seqProp[i],
+ makeAny(FTPContent::queryCreatableContentsInfo_Static()));
else
xRow->appendVoid(seqProp[i]);
}
diff --git a/ucb/source/ucp/ftp/ftpresultsetI.hxx b/ucb/source/ucp/ftp/ftpresultsetI.hxx
index 433a64ad1b..f108063c06 100644
--- a/ucb/source/ucp/ftp/ftpresultsetI.hxx
+++ b/ucb/source/ucp/ftp/ftpresultsetI.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: ftpresultsetI.hxx,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/ftp/ftpresultsetbase.cxx b/ucb/source/ucp/ftp/ftpresultsetbase.cxx
index 12ef1cb180..ead162c99d 100644
--- a/ucb/source/ucp/ftp/ftpresultsetbase.cxx
+++ b/ucb/source/ucp/ftp/ftpresultsetbase.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: ftpresultsetbase.cxx,v $
- * $Revision: 1.6 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/ftp/ftpresultsetbase.hxx b/ucb/source/ucp/ftp/ftpresultsetbase.hxx
index 90d001743f..75198bea70 100644
--- a/ucb/source/ucp/ftp/ftpresultsetbase.hxx
+++ b/ucb/source/ucp/ftp/ftpresultsetbase.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: ftpresultsetbase.hxx,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/ftp/ftpresultsetfactory.hxx b/ucb/source/ucp/ftp/ftpresultsetfactory.hxx
index 7949017c38..b609ff30e4 100644
--- a/ucb/source/ucp/ftp/ftpresultsetfactory.hxx
+++ b/ucb/source/ucp/ftp/ftpresultsetfactory.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: ftpresultsetfactory.hxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/ftp/ftpservices.cxx b/ucb/source/ucp/ftp/ftpservices.cxx
index a8eb26069d..ca2cf3823d 100644
--- a/ucb/source/ucp/ftp/ftpservices.cxx
+++ b/ucb/source/ucp/ftp/ftpservices.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: ftpservices.cxx,v $
- * $Revision: 1.6 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/ftp/ftpstrcont.hxx b/ucb/source/ucp/ftp/ftpstrcont.hxx
index 17a8cd158c..c79c8e8a01 100644
--- a/ucb/source/ucp/ftp/ftpstrcont.hxx
+++ b/ucb/source/ucp/ftp/ftpstrcont.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: ftpstrcont.hxx,v $
- * $Revision: 1.6 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/ftp/ftpurl.cxx b/ucb/source/ucp/ftp/ftpurl.cxx
index 06ea07b855..c107d3b16d 100644
--- a/ucb/source/ucp/ftp/ftpurl.cxx
+++ b/ucb/source/ucp/ftp/ftpurl.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: ftpurl.cxx,v $
- * $Revision: 1.25 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -130,7 +127,7 @@ FTPURL::FTPURL(const FTPURL& r)
m_aHost(r.m_aHost),
m_aPort(r.m_aPort),
m_aPathSegmentVec(r.m_aPathSegmentVec)
-
+
{
}
@@ -163,19 +160,18 @@ void FTPURL::parse(const rtl::OUString& url)
rtl::OString aIdent(url.getStr(),
url.getLength(),
RTL_TEXTENCODING_UTF8);
- char *buffer = new char[1+aIdent.getLength()];
-
- const char* p2 = aIdent.getStr();
rtl::OString lower = aIdent.toAsciiLowerCase();
if(lower.getLength() < 6 ||
strncmp("ftp://",lower.getStr(),6))
throw malformed_exception();
+ char *buffer = new char[1+aIdent.getLength()];
+ const char* p2 = aIdent.getStr();
p2 += 6;
char ch;
- char *p1 = buffer; // determine "username:password@host:port"
+ char *p1 = buffer; // determine "username:password@host:port"
while((ch = *p2++) != '/' && ch)
*p1++ = ch;
*p1 = 0;
@@ -393,7 +389,7 @@ namespace ftp {
#define SET_DATA_CONTAINER \
- curl_easy_setopt(curl,CURLOPT_NOBODY,false); \
+ curl_easy_setopt(curl,CURLOPT_NOBODY,false); \
MemoryContainer data; \
curl_easy_setopt(curl,CURLOPT_WRITEFUNCTION,memory_write); \
curl_easy_setopt(curl,CURLOPT_WRITEDATA,&data)
@@ -567,7 +563,7 @@ rtl::OUString FTPURL::net_title() const
SET_URL(url);
err = curl_easy_perform(curl);
- if(err == CURLE_OK) { // get the title from the server
+ if(err == CURLE_OK) { // get the title from the server
char* fwd = (char*) control.m_pBuffer;
sal_uInt32 len = (sal_uInt32) control.m_nWritePos;
@@ -590,6 +586,12 @@ rtl::OUString FTPURL::net_title() const
// the client should retry after getting the correct
// username + password
throw curl_exception(err);
+#if LIBCURL_VERSION_NUM>=0x070d01 /* 7.13.1 */
+ else if(err == CURLE_LOGIN_DENIED)
+ // the client should retry after getting the correct
+ // username + password
+ throw curl_exception(err);
+#endif
else if(try_more && err == CURLE_FTP_ACCESS_DENIED) {
// We were either denied access when trying to login to
// an FTP server or when trying to change working directory
@@ -665,8 +667,8 @@ void FTPURL::insert(bool replaceExisting,void* stream) const
throw(curl_exception)
{
if(!replaceExisting) {
-// FTPDirentry aDirentry(direntry());
-// if(aDirentry.m_nMode == INETCOREFTP_FILEMODE_UNKNOWN)
+// FTPDirentry aDirentry(direntry());
+// if(aDirentry.m_nMode == INETCOREFTP_FILEMODE_UNKNOWN)
// throw curl_exception(FILE_EXIST_DURING_INSERT);
throw curl_exception(FILE_MIGHT_EXIST_DURING_INSERT);
} // else
@@ -716,8 +718,8 @@ void FTPURL::mkdir(bool ReplaceExisting) const
FTPDirentry aDirentry(direntry());
if(!ReplaceExisting) {
-// if(aDirentry.m_nMode != INETCOREFTP_FILEMODE_UNKNOWN)
-// throw curl_exception(FOLDER_EXIST_DURING_INSERT);
+// if(aDirentry.m_nMode != INETCOREFTP_FILEMODE_UNKNOWN)
+// throw curl_exception(FOLDER_EXIST_DURING_INSERT);
throw curl_exception(FOLDER_MIGHT_EXIST_DURING_INSERT);
} else if(aDirentry.m_nMode != INETCOREFTP_FILEMODE_UNKNOWN)
slist = curl_slist_append(slist,aDel.getStr());
diff --git a/ucb/source/ucp/ftp/ftpurl.hxx b/ucb/source/ucp/ftp/ftpurl.hxx
index 52103f7274..d595573a76 100644
--- a/ucb/source/ucp/ftp/ftpurl.hxx
+++ b/ucb/source/ucp/ftp/ftpurl.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: ftpurl.hxx,v $
- * $Revision: 1.15 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -56,7 +53,7 @@ namespace ftp {
class FTPHandleProvider;
-
+
enum FTPErrors { FILE_EXIST_DURING_INSERT = CURL_LAST +1,
FOLDER_EXIST_DURING_INSERT,
FOLDER_MIGHT_EXIST_DURING_INSERT,
@@ -64,36 +61,36 @@ namespace ftp {
class malformed_exception { };
-
-
- class curl_exception
+
+
+ class curl_exception
{
- public:
-
+ public:
+
curl_exception(sal_Int32 err)
: n_err(err) { }
-
+
sal_Int32 code() const { return n_err; }
-
-
+
+
private:
-
+
sal_Int32 n_err;
};
class CurlInput {
-
+
public:
-
+
// returns the number of bytes actually read
virtual sal_Int32 read(sal_Int8 *dest,sal_Int32 nBytesRequested) = 0;
};
-
-
+
+
class FTPURL
{
public:
-
+
FTPURL(
const rtl::OUString& aIdent,
FTPHandleProvider* pFCP = 0
@@ -103,11 +100,11 @@ namespace ftp {
);
FTPURL(const FTPURL& r);
-
+
~FTPURL();
-
+
rtl::OUString host() const { return m_aHost; }
-
+
rtl::OUString port() const { return m_aPort; }
rtl::OUString username() const { return m_aUsername; }
@@ -115,30 +112,30 @@ namespace ftp {
/** This returns the URL, but cleaned from
* unnessary ellipses.
*/
-
+
rtl::OUString ident(bool withslash,bool internal) const;
-
+
/** returns the parent url.
*/
-
+
rtl::OUString parent(bool internal = false) const;
-
+
/** sets the unencoded title */
void child(const rtl::OUString& title);
/** returns the unencoded title */
rtl::OUString child(void) const;
-
+
std::vector<FTPDirentry> list(sal_Int16 nMode) const
throw(curl_exception);
// returns a pointer to an open tempfile,
// seeked to the beginning of.
FILE* open() throw(curl_exception);
-
+
FTPDirentry direntry() const throw(curl_exception);
-
- void insert(bool ReplaceExisting,void* stream) const
+
+ void insert(bool ReplaceExisting,void* stream) const
throw(curl_exception);
void mkdir(bool ReplaceExisting) const
@@ -146,32 +143,32 @@ namespace ftp {
rtl::OUString ren(const rtl::OUString& NewTitle)
throw(curl_exception);
-
+
void del() const
throw(curl_exception);
-
+
private:
osl::Mutex m_mutex;
-
+
FTPHandleProvider *m_pFCP;
-
+
mutable rtl::OUString m_aUsername;
bool m_bShowPassword;
mutable rtl::OUString m_aHost;
mutable rtl::OUString m_aPort;
mutable rtl::OUString m_aType;
-
+
/** Contains the encoded pathsegments of the url.
*/
std::vector<rtl::OUString> m_aPathSegmentVec;
-
+
void parse(const rtl::OUString& url)
throw(
malformed_exception
);
-
+
rtl::OUString net_title() const throw(curl_exception);
};
diff --git a/ucb/source/ucp/ftp/makefile.mk b/ucb/source/ucp/ftp/makefile.mk
index 75f5512c72..d9b674b786 100644
--- a/ucb/source/ucp/ftp/makefile.mk
+++ b/ucb/source/ucp/ftp/makefile.mk
@@ -2,14 +2,10 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.19 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/ftp/test.cxx b/ucb/source/ucp/ftp/test.cxx
index 9fd7b0281a..d15cbf9279 100644
--- a/ucb/source/ucp/ftp/test.cxx
+++ b/ucb/source/ucp/ftp/test.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: test.cxx,v $
- * $Revision: 1.9 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/ftp/test_activedatasink.cxx b/ucb/source/ucp/ftp/test_activedatasink.cxx
index cd008735df..3d609e1a99 100644
--- a/ucb/source/ucp/ftp/test_activedatasink.cxx
+++ b/ucb/source/ucp/ftp/test_activedatasink.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: test_activedatasink.cxx,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/ftp/test_activedatasink.hxx b/ucb/source/ucp/ftp/test_activedatasink.hxx
index 75835ded99..096710aae9 100644
--- a/ucb/source/ucp/ftp/test_activedatasink.hxx
+++ b/ucb/source/ucp/ftp/test_activedatasink.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: test_activedatasink.hxx,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/ftp/test_ftpurl.cxx b/ucb/source/ucp/ftp/test_ftpurl.cxx
index 9d7167e078..5eaa165003 100755
--- a/ucb/source/ucp/ftp/test_ftpurl.cxx
+++ b/ucb/source/ucp/ftp/test_ftpurl.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: test_ftpurl.cxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/ftp/test_interactionhandler.hxx b/ucb/source/ucp/ftp/test_interactionhandler.hxx
index 51cb804cf3..edb27f5651 100644
--- a/ucb/source/ucp/ftp/test_interactionhandler.hxx
+++ b/ucb/source/ucp/ftp/test_interactionhandler.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: test_interactionhandler.hxx,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/ftp/test_multiservicefac.cxx b/ucb/source/ucp/ftp/test_multiservicefac.cxx
index 6dcf8b054f..5c7e2a31a8 100644
--- a/ucb/source/ucp/ftp/test_multiservicefac.cxx
+++ b/ucb/source/ucp/ftp/test_multiservicefac.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: test_multiservicefac.cxx,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/ftp/test_multiservicefac.hxx b/ucb/source/ucp/ftp/test_multiservicefac.hxx
index 8b55046535..6e99e953ed 100644
--- a/ucb/source/ucp/ftp/test_multiservicefac.hxx
+++ b/ucb/source/ucp/ftp/test_multiservicefac.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: test_multiservicefac.hxx,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/gio/gio_content.cxx b/ucb/source/ucp/gio/gio_content.cxx
index fa6d8f74c8..249eace0ea 100644
--- a/ucb/source/ucp/gio/gio_content.cxx
+++ b/ucb/source/ucp/gio/gio_content.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: gio_content.cxx,v $
- * $Revision: 1.2 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -151,8 +148,8 @@ void SAL_CALL Content::abort( sal_Int32 /*CommandId*/ )
rtl::OUString SAL_CALL Content::getContentType() throw( uno::RuntimeException )
{
- return isFolder(uno::Reference< ucb::XCommandEnvironment >())
- ? rtl::OUString::createFromAscii( GIO_FOLDER_TYPE )
+ return isFolder(uno::Reference< ucb::XCommandEnvironment >())
+ ? rtl::OUString::createFromAscii( GIO_FOLDER_TYPE )
: rtl::OUString::createFromAscii( GIO_FILE_TYPE );
}
@@ -183,17 +180,17 @@ uno::Any convertToException(GError *pError, const uno::Reference< uno::XInterfac
EXCEPT(aExcept); }
break;
case G_IO_ERROR_NOT_MOUNTED:
- { ucb::InteractiveAugmentedIOException aExcept(sMessage, rContext,
+ { ucb::InteractiveAugmentedIOException aExcept(sMessage, rContext,
task::InteractionClassification_ERROR, ucb::IOErrorCode_NOT_EXISTING_PATH, aArgs);
EXCEPT(aExcept); }
break;
case G_IO_ERROR_NOT_FOUND:
- { ucb::InteractiveAugmentedIOException aExcept(sMessage, rContext,
+ { ucb::InteractiveAugmentedIOException aExcept(sMessage, rContext,
task::InteractionClassification_ERROR, ucb::IOErrorCode_NOT_EXISTING, aArgs);
EXCEPT(aExcept); }
break;
case G_IO_ERROR_EXISTS:
- { ucb::NameClashException aExcept(sMessage, rContext,
+ { ucb::NameClashException aExcept(sMessage, rContext,
task::InteractionClassification_ERROR, sName);
EXCEPT(aExcept); }
break;
@@ -202,32 +199,32 @@ uno::Any convertToException(GError *pError, const uno::Reference< uno::XInterfac
EXCEPT(aExcept); }
break;
case G_IO_ERROR_PERMISSION_DENIED:
- { ucb::InteractiveAugmentedIOException aExcept(sMessage, rContext,
+ { ucb::InteractiveAugmentedIOException aExcept(sMessage, rContext,
task::InteractionClassification_ERROR, ucb::IOErrorCode_ACCESS_DENIED, aArgs);
EXCEPT(aExcept); }
break;
case G_IO_ERROR_IS_DIRECTORY:
- { ucb::InteractiveAugmentedIOException aExcept(sMessage, rContext,
+ { ucb::InteractiveAugmentedIOException aExcept(sMessage, rContext,
task::InteractionClassification_ERROR, ucb::IOErrorCode_NO_FILE, aArgs);
EXCEPT(aExcept); }
break;
case G_IO_ERROR_NOT_REGULAR_FILE:
- { ucb::InteractiveAugmentedIOException aExcept(sMessage, rContext,
+ { ucb::InteractiveAugmentedIOException aExcept(sMessage, rContext,
task::InteractionClassification_ERROR, ucb::IOErrorCode_NO_FILE, aArgs);
EXCEPT(aExcept); }
break;
case G_IO_ERROR_NOT_DIRECTORY:
- { ucb::InteractiveAugmentedIOException aExcept(sMessage, rContext,
+ { ucb::InteractiveAugmentedIOException aExcept(sMessage, rContext,
task::InteractionClassification_ERROR, ucb::IOErrorCode_NO_DIRECTORY, aArgs);
EXCEPT(aExcept); }
break;
case G_IO_ERROR_FILENAME_TOO_LONG:
- { ucb::InteractiveAugmentedIOException aExcept(sMessage, rContext,
+ { ucb::InteractiveAugmentedIOException aExcept(sMessage, rContext,
task::InteractionClassification_ERROR, ucb::IOErrorCode_NAME_TOO_LONG, aArgs);
EXCEPT(aExcept); }
break;
case G_IO_ERROR_PENDING:
- { ucb::InteractiveAugmentedIOException aExcept(sMessage, rContext,
+ { ucb::InteractiveAugmentedIOException aExcept(sMessage, rContext,
task::InteractionClassification_ERROR, ucb::IOErrorCode_PENDING, aArgs);
EXCEPT(aExcept); }
break;
@@ -235,50 +232,50 @@ uno::Any convertToException(GError *pError, const uno::Reference< uno::XInterfac
case G_IO_ERROR_CANCELLED:
case G_IO_ERROR_TOO_MANY_LINKS:
case G_IO_ERROR_WRONG_ETAG:
- { ucb::InteractiveAugmentedIOException aExcept(sMessage, rContext,
+ { ucb::InteractiveAugmentedIOException aExcept(sMessage, rContext,
task::InteractionClassification_ERROR, ucb::IOErrorCode_GENERAL, aArgs);
EXCEPT(aExcept); }
break;
case G_IO_ERROR_NOT_SUPPORTED:
case G_IO_ERROR_CANT_CREATE_BACKUP:
case G_IO_ERROR_WOULD_MERGE:
- { ucb::InteractiveAugmentedIOException aExcept(sMessage, rContext,
+ { ucb::InteractiveAugmentedIOException aExcept(sMessage, rContext,
task::InteractionClassification_ERROR, ucb::IOErrorCode_NOT_SUPPORTED, aArgs);
EXCEPT(aExcept); }
break;
case G_IO_ERROR_NO_SPACE:
- { ucb::InteractiveAugmentedIOException aExcept(sMessage, rContext,
+ { ucb::InteractiveAugmentedIOException aExcept(sMessage, rContext,
task::InteractionClassification_ERROR, ucb::IOErrorCode_OUT_OF_DISK_SPACE, aArgs);
EXCEPT(aExcept); }
break;
case G_IO_ERROR_INVALID_FILENAME:
- { ucb::InteractiveAugmentedIOException aExcept(sMessage, rContext,
+ { ucb::InteractiveAugmentedIOException aExcept(sMessage, rContext,
task::InteractionClassification_ERROR, ucb::IOErrorCode_INVALID_CHARACTER, aArgs);
EXCEPT(aExcept); }
break;
case G_IO_ERROR_READ_ONLY:
- { ucb::InteractiveAugmentedIOException aExcept(sMessage, rContext,
+ { ucb::InteractiveAugmentedIOException aExcept(sMessage, rContext,
task::InteractionClassification_ERROR, ucb::IOErrorCode_WRITE_PROTECTED, aArgs);
EXCEPT(aExcept); }
break;
case G_IO_ERROR_TIMED_OUT:
- { ucb::InteractiveAugmentedIOException aExcept(sMessage, rContext,
+ { ucb::InteractiveAugmentedIOException aExcept(sMessage, rContext,
task::InteractionClassification_ERROR, ucb::IOErrorCode_DEVICE_NOT_READY, aArgs);
EXCEPT(aExcept); }
break;
case G_IO_ERROR_WOULD_RECURSE:
- { ucb::InteractiveAugmentedIOException aExcept(sMessage, rContext,
+ { ucb::InteractiveAugmentedIOException aExcept(sMessage, rContext,
task::InteractionClassification_ERROR, ucb::IOErrorCode_RECURSIVE, aArgs);
EXCEPT(aExcept); }
break;
case G_IO_ERROR_BUSY:
case G_IO_ERROR_WOULD_BLOCK:
- { ucb::InteractiveAugmentedIOException aExcept(sMessage, rContext,
+ { ucb::InteractiveAugmentedIOException aExcept(sMessage, rContext,
task::InteractionClassification_ERROR, ucb::IOErrorCode_LOCKING_VIOLATION, aArgs);
EXCEPT(aExcept); }
break;
case G_IO_ERROR_HOST_NOT_FOUND:
- { ucb::InteractiveNetworkResolveNameException aExcept(sMessage, rContext,
+ { ucb::InteractiveNetworkResolveNameException aExcept(sMessage, rContext,
task::InteractionClassification_ERROR, sHost);
EXCEPT(aExcept);}
break;
@@ -288,7 +285,7 @@ uno::Any convertToException(GError *pError, const uno::Reference< uno::XInterfac
case G_IO_ERROR_NOT_SYMBOLIC_LINK:
case G_IO_ERROR_NOT_MOUNTABLE_FILE:
case G_IO_ERROR_FAILED_HANDLED:
- { ucb::InteractiveNetworkGeneralException aExcept(sMessage, rContext,
+ { ucb::InteractiveNetworkGeneralException aExcept(sMessage, rContext,
task::InteractionClassification_ERROR);
EXCEPT(aExcept);}
break;
@@ -306,7 +303,7 @@ uno::Any Content::mapGIOError( GError *pError )
uno::Any Content::getBadArgExcept()
{
- return uno::makeAny( lang::IllegalArgumentException(
+ return uno::makeAny( lang::IllegalArgumentException(
rtl::OUString::createFromAscii( "Wrong argument type!" ),
static_cast< cppu::OWeakObject * >( this ), -1) );
}
@@ -402,6 +399,7 @@ static util::DateTime getDateFromUnix (time_t t)
uno::Reference< sdbc::XRow > Content::getPropertyValuesFromGFileInfo(GFileInfo *pInfo,
const uno::Reference< lang::XMultiServiceFactory >& rSMgr,
+ const uno::Reference< ucb::XCommandEnvironment > & xEnv,
const uno::Sequence< beans::Property >& rProperties)
{
rtl::Reference< ::ucbhelper::PropertyValueSet > xRow = new ::ucbhelper::PropertyValueSet( rSMgr );
@@ -419,7 +417,7 @@ uno::Reference< sdbc::XRow > Content::getPropertyValuesFromGFileInfo(GFileInfo *
if (rProp.Name.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "IsDocument" ) ) )
{
if (g_file_info_has_attribute(pInfo, G_FILE_ATTRIBUTE_STANDARD_TYPE))
- xRow->appendBoolean( rProp, ( g_file_info_get_file_type( pInfo ) == G_FILE_TYPE_REGULAR ||
+ xRow->appendBoolean( rProp, ( g_file_info_get_file_type( pInfo ) == G_FILE_TYPE_REGULAR ||
g_file_info_get_file_type( pInfo ) == G_FILE_TYPE_UNKNOWN ) );
else
xRow->appendVoid( rProp );
@@ -457,7 +455,7 @@ uno::Reference< sdbc::XRow > Content::getPropertyValuesFromGFileInfo(GFileInfo *
}
else if (rProp.Name.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "DateModified" ) ) )
{
- if( g_file_info_has_attribute( pInfo, G_FILE_ATTRIBUTE_TIME_CHANGED ) )
+ if( g_file_info_has_attribute( pInfo, G_FILE_ATTRIBUTE_TIME_CHANGED ) )
xRow->appendTimestamp( rProp, getDateFromUnix(g_file_info_get_attribute_uint64(pInfo, G_FILE_ATTRIBUTE_TIME_CHANGED)) );
else
xRow->appendVoid( rProp );
@@ -499,10 +497,14 @@ uno::Reference< sdbc::XRow > Content::getPropertyValuesFromGFileInfo(GFileInfo *
else
xRow->appendVoid( rProp );
}
+ else if (rProp.Name.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "CreatableContentsInfo" ) ) )
+ {
+ xRow->appendObject( rProp, uno::makeAny( queryCreatableContentsInfo( xEnv ) ) );
+ }
#ifdef DEBUG
else
{
- fprintf(stderr, "Looking for unsupported property %s\n",
+ fprintf(stderr, "Looking for unsupported property %s\n",
rtl::OUStringToOString(rProp.Name, RTL_TEXTENCODING_UTF8).getStr());
}
#endif
@@ -520,10 +522,10 @@ uno::Reference< sdbc::XRow > Content::getPropertyValues(
if (!pInfo)
ucbhelper::cancelCommandExecution(mapGIOError(pError), xEnv);
- return getPropertyValuesFromGFileInfo(pInfo, m_xSMgr, rProperties);
+ return getPropertyValuesFromGFileInfo(pInfo, m_xSMgr, xEnv, rProperties);
}
-static lang::IllegalAccessException
+static lang::IllegalAccessException
getReadOnlyException( const uno::Reference< uno::XInterface >& rContext )
{
return lang::IllegalAccessException ( rtl::OUString::createFromAscii( "Property is read-only!" ), rContext );
@@ -607,10 +609,10 @@ sal_Bool Content::exchangeIdentity( const uno::Reference< ucb::XContentIdentifie
uno::Reference< ucb::XContentIdentifier > xNewChildId
= new ::ucbhelper::ContentIdentifier( m_xSMgr, aNewChildURL );
-
+
if ( !xChild->exchangeIdentity( xNewChildId ) )
return sal_False;
-
+
++it;
}
return sal_True;
@@ -650,7 +652,7 @@ uno::Sequence< uno::Any > Content::setPropertyValues(
sal_Int32 nChanged = 0, nTitlePos = -1;
const char *newName = NULL;
uno::Sequence< beans::PropertyChangeEvent > aChanges(nCount);
-
+
uno::Sequence< uno::Any > aRet( nCount );
const beans::PropertyValue* pValues = rValues.getConstArray();
for ( sal_Int32 n = 0; n < nCount; ++n )
@@ -663,7 +665,8 @@ uno::Sequence< uno::Any > Content::setPropertyValues(
rValue.Name.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "MediaType" ) ) ||
rValue.Name.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "IsDocument" ) ) ||
rValue.Name.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "IsFolder" ) ) ||
- rValue.Name.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "Size" ) ) )
+ rValue.Name.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "Size" ) ) ||
+ rValue.Name.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "CreatableContentsInfo" ) ) )
{
aRet[ n ] <<= getReadOnlyException( static_cast< cppu::OWeakObject * >(this) );
}
@@ -703,9 +706,9 @@ uno::Sequence< uno::Any > Content::setPropertyValues(
aEvent.NewValue = uno::makeAny(aNewTitle);
aChanges.getArray()[ nChanged ] = aEvent;
nTitlePos = nChanged++;
-
+
g_file_info_set_name(pNewInfo, newName);
- }
+ }
}
else
{
@@ -737,7 +740,7 @@ uno::Sequence< uno::Any > Content::setPropertyValues(
aNewURL += rtl::OUString( newName, strlen(newName), RTL_TEXTENCODING_UTF8 );
uno::Reference< ucb::XContentIdentifier > xNewId
= new ::ucbhelper::ContentIdentifier( m_xSMgr, aNewURL );
-
+
if (!exchangeIdentity( xNewId ) )
{
aRet[ nTitlePos ] <<= uno::Exception
@@ -808,7 +811,7 @@ sal_Bool Content::feedSink( uno::Reference< uno::XInterface > xSink,
uno::Reference< io::XOutputStream > xOut = uno::Reference< io::XOutputStream >(xSink, uno::UNO_QUERY );
uno::Reference< io::XActiveDataSink > xDataSink = uno::Reference< io::XActiveDataSink >(xSink, uno::UNO_QUERY );
-
+
if ( !xOut.is() && !xDataSink.is() )
return sal_False;
@@ -820,7 +823,7 @@ sal_Bool Content::feedSink( uno::Reference< uno::XInterface > xSink,
uno::Reference< io::XInputStream > xIn = new ::gio::InputStream(pStream);
if ( !xIn.is() )
return sal_False;
-
+
if ( xOut.is() )
copyData( xIn, xOut );
@@ -840,9 +843,9 @@ uno::Any Content::open(const ucb::OpenCommandArgument2 & rOpenCommand,
{
uno::Sequence< uno::Any > aArgs( 1 );
aArgs[ 0 ] <<= m_xIdentifier->getContentIdentifier();
- uno::Any aErr = uno::makeAny(
+ uno::Any aErr = uno::makeAny(
ucb::InteractiveAugmentedIOException(rtl::OUString(), static_cast< cppu::OWeakObject * >( this ),
- task::InteractionClassification_ERROR,
+ task::InteractionClassification_ERROR,
bIsFolder ? ucb::IOErrorCode_NOT_EXISTING_PATH : ucb::IOErrorCode_NOT_EXISTING, aArgs)
);
@@ -867,12 +870,12 @@ uno::Any Content::open(const ucb::OpenCommandArgument2 & rOpenCommand,
{
if (
( rOpenCommand.Mode == ucb::OpenMode::DOCUMENT_SHARE_DENY_NONE ) ||
- ( rOpenCommand.Mode == ucb::OpenMode::DOCUMENT_SHARE_DENY_WRITE )
+ ( rOpenCommand.Mode == ucb::OpenMode::DOCUMENT_SHARE_DENY_WRITE )
)
{
- ucbhelper::cancelCommandExecution(
- uno::makeAny ( ucb::UnsupportedOpenModeException
- ( rtl::OUString(), static_cast< cppu::OWeakObject * >( this ),
+ ucbhelper::cancelCommandExecution(
+ uno::makeAny ( ucb::UnsupportedOpenModeException
+ ( rtl::OUString(), static_cast< cppu::OWeakObject * >( this ),
sal_Int16( rOpenCommand.Mode ) ) ),
xEnv );
}
@@ -883,7 +886,7 @@ uno::Any Content::open(const ucb::OpenCommandArgument2 & rOpenCommand,
// implementation. Support for this type of
// sink is optional...
#ifdef DEBUG
- g_warning ("Failed to load data from '%s'",
+ g_warning ("Failed to load data from '%s'",
rtl::OUStringToOString(m_xIdentifier->getContentIdentifier(), RTL_TEXTENCODING_UTF8).getStr());
#endif
@@ -944,6 +947,14 @@ uno::Any SAL_CALL Content::execute(
ucbhelper::cancelCommandExecution ( getBadArgExcept (), xEnv );
aRet <<= setPropertyValues( aProperties, xEnv );
}
+ else if (aCommand.Name.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "createNewContent" ) )
+ && isFolder( xEnv ) )
+ {
+ ucb::ContentInfo arg;
+ if ( !( aCommand.Argument >>= arg ) )
+ ucbhelper::cancelCommandExecution ( getBadArgExcept (), xEnv );
+ aRet <<= createNewContent( arg );
+ }
else if (aCommand.Name.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "insert" ) ))
{
ucb::InsertCommandArgument arg;
@@ -956,8 +967,8 @@ uno::Any SAL_CALL Content::execute(
sal_Bool bDeletePhysical = sal_False;
aCommand.Argument >>= bDeletePhysical;
- //If no delete physical, try and trashcan it, if that doesn't work go
- //ahead and try and delete it anyway
+ //If no delete physical, try and trashcan it, if that doesn't work go
+ //ahead and try and delete it anyway
if (!bDeletePhysical && !g_file_trash(getGFile(), NULL, NULL))
bDeletePhysical = true;
@@ -996,10 +1007,10 @@ void Content::destroy( sal_Bool bDeletePhysical )
::gio::Content::ContentRefList aChildren;
queryChildren( aChildren );
-
+
ContentRefList::const_iterator it = aChildren.begin();
ContentRefList::const_iterator end = aChildren.end();
-
+
while ( it != end )
{
(*it)->destroy( bDeletePhysical );
@@ -1055,7 +1066,7 @@ void Content::insert(const uno::Reference< io::XInputStream > &xInputStream,
}
}
-void Content::transfer( const ucb::TransferInfo& aTransferInfo, const uno::Reference< ucb::XCommandEnvironment >& xEnv )
+void Content::transfer( const ucb::TransferInfo& aTransferInfo, const uno::Reference< ucb::XCommandEnvironment >& xEnv )
throw( uno::Exception )
{
rtl::OUString sDest = m_xIdentifier->getContentIdentifier();
@@ -1079,36 +1090,50 @@ void Content::transfer( const ucb::TransferInfo& aTransferInfo, const uno::Refer
ucbhelper::cancelCommandExecution(mapGIOError(pError), xEnv);
}
-com::sun::star::uno::Sequence< com::sun::star::ucb::ContentInfo > SAL_CALL Content::queryCreatableContentsInfo()
- throw( com::sun::star::uno::RuntimeException )
+uno::Sequence< ucb::ContentInfo > Content::queryCreatableContentsInfo(
+ const uno::Reference< ucb::XCommandEnvironment >& xEnv)
+ throw( uno::RuntimeException )
+{
+ if ( isFolder( xEnv ) )
+ {
+ uno::Sequence< ucb::ContentInfo > seq(2);
+
+ // Minimum set of props we really need
+ uno::Sequence< beans::Property > props( 1 );
+ props[0] = beans::Property(
+ rtl::OUString::createFromAscii( "Title" ),
+ -1,
+ getCppuType( static_cast< rtl::OUString* >( 0 ) ),
+ beans::PropertyAttribute::MAYBEVOID | beans::PropertyAttribute::BOUND );
+
+ // file
+ seq[0].Type = rtl::OUString::createFromAscii( GIO_FILE_TYPE );
+ seq[0].Attributes = ( ucb::ContentInfoAttribute::INSERT_WITH_INPUTSTREAM |
+ ucb::ContentInfoAttribute::KIND_DOCUMENT );
+ seq[0].Properties = props;
+
+ // folder
+ seq[1].Type = rtl::OUString::createFromAscii( GIO_FOLDER_TYPE );
+ seq[1].Attributes = ucb::ContentInfoAttribute::KIND_FOLDER;
+ seq[1].Properties = props;
+
+ return seq;
+ }
+ else
+ {
+ return uno::Sequence< ucb::ContentInfo >();
+ }
+}
+
+uno::Sequence< ucb::ContentInfo > SAL_CALL Content::queryCreatableContentsInfo()
+ throw( uno::RuntimeException )
{
- uno::Sequence< ucb::ContentInfo > seq(2);
-
- // Minimum set of props we really need
- uno::Sequence< beans::Property > props( 1 );
- props[0] = beans::Property(
- rtl::OUString::createFromAscii( "Title" ),
- -1,
- getCppuType( static_cast< rtl::OUString* >( 0 ) ),
- beans::PropertyAttribute::MAYBEVOID | beans::PropertyAttribute::BOUND );
-
- // file
- seq[0].Type = rtl::OUString::createFromAscii( GIO_FILE_TYPE );
- seq[0].Attributes = ( ucb::ContentInfoAttribute::INSERT_WITH_INPUTSTREAM |
- ucb::ContentInfoAttribute::KIND_DOCUMENT );
- seq[0].Properties = props;
-
- // folder
- seq[1].Type = rtl::OUString::createFromAscii( GIO_FOLDER_TYPE );
- seq[1].Attributes = ucb::ContentInfoAttribute::KIND_FOLDER;
- seq[1].Properties = props;
-
- return seq;
+ return queryCreatableContentsInfo( uno::Reference< ucb::XCommandEnvironment >() );
}
-com::sun::star::uno::Reference< com::sun::star::ucb::XContent >
- SAL_CALL Content::createNewContent( const com::sun::star::ucb::ContentInfo& Info )
- throw( com::sun::star::uno::RuntimeException )
+uno::Reference< ucb::XContent >
+ SAL_CALL Content::createNewContent( const ucb::ContentInfo& Info )
+ throw( uno::RuntimeException )
{
bool create_document;
const char *name;
@@ -1120,7 +1145,7 @@ com::sun::star::uno::Reference< com::sun::star::ucb::XContent >
else
{
#ifdef DEBUG
- g_warning( "Failed to create new content '%s'", rtl::OUStringToOString(Info.Type,
+ g_warning( "Failed to create new content '%s'", rtl::OUStringToOString(Info.Type,
RTL_TEXTENCODING_UTF8).getStr() );
#endif
return uno::Reference< ucb::XContent >();
@@ -1223,6 +1248,9 @@ uno::Sequence< beans::Property > Content::getProperties(
beans::PropertyAttribute::BOUND | beans::PropertyAttribute::READONLY ),
beans::Property( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "IsHidden" ) ),
-1, getCppuBooleanType(),
+ beans::PropertyAttribute::BOUND | beans::PropertyAttribute::READONLY ),
+ beans::Property( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "CreatableContentsInfo" ) ),
+ -1, getCppuType( static_cast< const uno::Sequence< ucb::ContentInfo > * >( 0 ) ),
beans::PropertyAttribute::BOUND | beans::PropertyAttribute::READONLY )
};
@@ -1232,7 +1260,7 @@ uno::Sequence< beans::Property > Content::getProperties(
uno::Sequence< ucb::CommandInfo > Content::getCommands( const uno::Reference< ucb::XCommandEnvironment > & xEnv)
{
- static ucb::CommandInfo aDocumentCommandInfoTable[] =
+ static ucb::CommandInfo aCommandInfoTable[] =
{
// Required commands
ucb::CommandInfo
@@ -1262,11 +1290,14 @@ uno::Sequence< ucb::CommandInfo > Content::getCommands( const uno::Reference< uc
// Folder Only, omitted if not a folder
ucb::CommandInfo
( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "transfer" ) ),
- -1, getCppuType( static_cast<ucb::TransferInfo * >( 0 ) ) )
+ -1, getCppuType( static_cast<ucb::TransferInfo * >( 0 ) ) ),
+ ucb::CommandInfo
+ ( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "createNewContent" ) ),
+ -1, getCppuType( static_cast<ucb::ContentInfo * >( 0 ) ) )
};
- const int nProps = sizeof (aDocumentCommandInfoTable) / sizeof (aDocumentCommandInfoTable[0]);
- return uno::Sequence< ucb::CommandInfo >(aDocumentCommandInfoTable, isFolder(xEnv) ? nProps : nProps - 1);
+ const int nProps = sizeof (aCommandInfoTable) / sizeof (aCommandInfoTable[0]);
+ return uno::Sequence< ucb::CommandInfo >(aCommandInfoTable, isFolder(xEnv) ? nProps : nProps - 2);
}
XTYPEPROVIDER_COMMON_IMPL( Content );
diff --git a/ucb/source/ucp/gio/gio_content.hxx b/ucb/source/ucp/gio/gio_content.hxx
index 9b63edf0ba..7d004d5242 100644
--- a/ucb/source/ucp/gio/gio_content.hxx
+++ b/ucb/source/ucp/gio/gio_content.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: gio_content.hxx,v $
- * $Revision: 1.2 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -42,11 +39,11 @@
#include <list>
-namespace com { namespace sun { namespace star {
+namespace com { namespace sun { namespace star {
namespace beans {
struct Property;
struct PropertyValue;
- }
+ }
namespace sdbc {
class XRow;
}
@@ -65,7 +62,7 @@ namespace gio
#define GIO_FILE_TYPE "application/vnd.sun.staroffice.gio-file"
#define GIO_FOLDER_TYPE "application/vnd.sun.staroffice.gio-folder"
-com::sun::star::uno::Any convertToException(GError *pError,
+com::sun::star::uno::Any convertToException(GError *pError,
const com::sun::star::uno::Reference< com::sun::star::uno::XInterface >& rContext, bool bThrow=true);
class ContentProvider;
@@ -98,7 +95,7 @@ private:
bool doSetFileInfo ( GFileInfo *pNewInfo );
com::sun::star::uno::Any open(const com::sun::star::ucb::OpenCommandArgument2 & rArg,
- const com::sun::star::uno::Reference< com::sun::star::ucb::XCommandEnvironment > & xEnv )
+ const com::sun::star::uno::Reference< com::sun::star::ucb::XCommandEnvironment > & xEnv )
throw( com::sun::star::uno::Exception );
void transfer( const com::sun::star::ucb::TransferInfo& rTransferInfo,
@@ -123,7 +120,7 @@ private:
sal_Bool feedSink( com::sun::star::uno::Reference< com::sun::star::uno::XInterface> aSink,
const com::sun::star::uno::Reference< com::sun::star::ucb::XCommandEnvironment >& xEnv );
- com::sun::star::uno::Reference< com::sun::star::io::XInputStream >
+ com::sun::star::uno::Reference< com::sun::star::io::XInputStream >
createInputStream(const com::sun::star::uno::Reference< com::sun::star::ucb::XCommandEnvironment >& xEnv )
throw( com::sun::star::uno::Exception );
@@ -144,7 +141,8 @@ public:
virtual ~Content();
static com::sun::star::uno::Reference< com::sun::star::sdbc::XRow > getPropertyValuesFromGFileInfo(
- GFileInfo *pInfo, const com::sun::star::uno::Reference< com::sun::star::lang::XMultiServiceFactory >& rSMgr,
+ GFileInfo *pInfo, const com::sun::star::uno::Reference< com::sun::star::lang::XMultiServiceFactory >& rSMgr,
+ const com::sun::star::uno::Reference< com::sun::star::ucb::XCommandEnvironment > & xEnv,
const com::sun::star::uno::Sequence< com::sun::star::beans::Property >& rProperties);
virtual com::sun::star::uno::Sequence< com::sun::star::beans::Property >
@@ -176,10 +174,10 @@ public:
virtual com::sun::star::uno::Any SAL_CALL
execute( const com::sun::star::ucb::Command& aCommand,
sal_Int32 CommandId,
- const com::sun::star::uno::Reference< com::sun::star::ucb::XCommandEnvironment >& Environment )
+ const com::sun::star::uno::Reference< com::sun::star::ucb::XCommandEnvironment >& Environment )
throw( com::sun::star::uno::Exception, com::sun::star::ucb::CommandAbortedException, com::sun::star::uno::RuntimeException );
- virtual void SAL_CALL abort( sal_Int32 CommandId )
+ virtual void SAL_CALL abort( sal_Int32 CommandId )
throw( com::sun::star::uno::RuntimeException );
virtual com::sun::star::uno::Sequence< com::sun::star::ucb::ContentInfo >
@@ -189,6 +187,11 @@ public:
SAL_CALL createNewContent( const com::sun::star::ucb::ContentInfo& Info )
throw( com::sun::star::uno::RuntimeException );
+ com::sun::star::uno::Sequence< com::sun::star::ucb::ContentInfo >
+ queryCreatableContentsInfo(
+ const com::sun::star::uno::Reference< com::sun::star::ucb::XCommandEnvironment >& xEnv)
+ throw( com::sun::star::uno::RuntimeException );
+
GFile* getGFile();
};
diff --git a/ucb/source/ucp/gio/gio_datasupplier.cxx b/ucb/source/ucp/gio/gio_datasupplier.cxx
index 384c5278ac..2bf26bbd6b 100644
--- a/ucb/source/ucp/gio/gio_datasupplier.cxx
+++ b/ucb/source/ucp/gio/gio_datasupplier.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: gio_datasupplier.cxx,v $
- * $Revision: 1.2 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -51,7 +48,7 @@ namespace gio
typedef std::vector< ResultListEntry* > ResultList;
DataSupplier::DataSupplier( const uno::Reference< lang::XMultiServiceFactory >& rxSMgr,
- const uno::Reference< ::gio::Content >& rContent, sal_Int32 nOpenMode )
+ const uno::Reference< ::gio::Content >& rContent, sal_Int32 nOpenMode )
: mxContent(rContent), m_xSMgr(rxSMgr), mnOpenMode(nOpenMode), mbCountFinal(false)
{
}
@@ -92,7 +89,7 @@ bool DataSupplier::getData()
}
mbCountFinal = sal_True;
-
+
g_file_enumerator_close(pEnumerator, NULL, NULL);
return true;
}
@@ -128,14 +125,14 @@ DataSupplier::~DataSupplier()
rtl::OUString aId = rtl::OUString::createFromAscii( parent );
g_free(parent);
- char *escaped_name =
+ char *escaped_name =
g_uri_escape_string( g_file_info_get_name(maResults[ nIndex ]->pInfo) , NULL, false);
if ( ( aId.lastIndexOf( '/' ) + 1 ) != aId.getLength() )
aId += rtl::OUString::createFromAscii( "/" );
aId += rtl::OUString::createFromAscii( escaped_name );
-
+
g_free( escaped_name );
maResults[ nIndex ]->aId = aId;
@@ -240,7 +237,7 @@ uno::Reference< sdbc::XRow > DataSupplier::queryPropertyValues( sal_uInt32 nInde
if ( getResult( nIndex ) )
{
uno::Reference< sdbc::XRow > xRow = Content::getPropertyValuesFromGFileInfo(
- maResults[ nIndex ]->pInfo, m_xSMgr, getResultSet()->getProperties());
+ maResults[ nIndex ]->pInfo, m_xSMgr, getResultSet()->getEnvironment(), getResultSet()->getProperties());
maResults[ nIndex ]->xRow = xRow;
return xRow;
diff --git a/ucb/source/ucp/gio/gio_datasupplier.hxx b/ucb/source/ucp/gio/gio_datasupplier.hxx
index c2f2ee1290..6b15ccf1ec 100644
--- a/ucb/source/ucp/gio/gio_datasupplier.hxx
+++ b/ucb/source/ucp/gio/gio_datasupplier.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: gio_datasupplier.hxx,v $
- * $Revision: 1.2 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/gio/gio_inputstream.cxx b/ucb/source/ucp/gio/gio_inputstream.cxx
index b173b4724c..008d9c4cdc 100644
--- a/ucb/source/ucp/gio/gio_inputstream.cxx
+++ b/ucb/source/ucp/gio/gio_inputstream.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: gio_inputstream.cxx,v $
- * $Revision: 1.2 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/gio/gio_inputstream.hxx b/ucb/source/ucp/gio/gio_inputstream.hxx
index 1f53b7117a..70a65236c8 100644
--- a/ucb/source/ucp/gio/gio_inputstream.hxx
+++ b/ucb/source/ucp/gio/gio_inputstream.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: gio_inputstream.hxx,v $
- * $Revision: 1.2 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/gio/gio_mount.cxx b/ucb/source/ucp/gio/gio_mount.cxx
index 4166366c09..3617ed9ee7 100644
--- a/ucb/source/ucp/gio/gio_mount.cxx
+++ b/ucb/source/ucp/gio/gio_mount.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: gio_mount.cxx,v $
- * $Revision: 1.2 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/gio/gio_mount.hxx b/ucb/source/ucp/gio/gio_mount.hxx
index 3890e49a58..21fa002274 100644
--- a/ucb/source/ucp/gio/gio_mount.hxx
+++ b/ucb/source/ucp/gio/gio_mount.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: gio_mount.hxx,v $
- * $Revision: 1.2 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/gio/gio_outputstream.cxx b/ucb/source/ucp/gio/gio_outputstream.cxx
index 3bb20f5db5..2d10e25eb1 100644
--- a/ucb/source/ucp/gio/gio_outputstream.cxx
+++ b/ucb/source/ucp/gio/gio_outputstream.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: gio_outputstream.cxx,v $
- * $Revision: 1.2 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/gio/gio_outputstream.hxx b/ucb/source/ucp/gio/gio_outputstream.hxx
index 2e5479bece..aa8e22f11a 100644
--- a/ucb/source/ucp/gio/gio_outputstream.hxx
+++ b/ucb/source/ucp/gio/gio_outputstream.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: gio_outputstream.hxx,v $
- * $Revision: 1.2 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/gio/gio_provider.cxx b/ucb/source/ucp/gio/gio_provider.cxx
index d799a38fd4..9921f3a118 100644
--- a/ucb/source/ucp/gio/gio_provider.cxx
+++ b/ucb/source/ucp/gio/gio_provider.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: gio_provider.cxx,v $
- * $Revision: 1.2 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/gio/gio_provider.hxx b/ucb/source/ucp/gio/gio_provider.hxx
index 0eaa21c518..a4bf10d62a 100644
--- a/ucb/source/ucp/gio/gio_provider.hxx
+++ b/ucb/source/ucp/gio/gio_provider.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: gio_provider.hxx,v $
- * $Revision: 1.2 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/gio/gio_resultset.cxx b/ucb/source/ucp/gio/gio_resultset.cxx
index ae9019e73a..847be8b9d6 100644
--- a/ucb/source/ucp/gio/gio_resultset.cxx
+++ b/ucb/source/ucp/gio/gio_resultset.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: gio_resultset.cxx,v $
- * $Revision: 1.2 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/gio/gio_resultset.hxx b/ucb/source/ucp/gio/gio_resultset.hxx
index e5edd110a9..6041383326 100644
--- a/ucb/source/ucp/gio/gio_resultset.hxx
+++ b/ucb/source/ucp/gio/gio_resultset.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: gio_resultset.hxx,v $
- * $Revision: 1.2 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/gio/gio_seekable.cxx b/ucb/source/ucp/gio/gio_seekable.cxx
index 6c3b680121..562d04211e 100644
--- a/ucb/source/ucp/gio/gio_seekable.cxx
+++ b/ucb/source/ucp/gio/gio_seekable.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: gio_seekable.cxx,v $
- * $Revision: 1.2 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/gio/gio_seekable.hxx b/ucb/source/ucp/gio/gio_seekable.hxx
index 1c25a7aaac..ea9953ca0e 100644
--- a/ucb/source/ucp/gio/gio_seekable.hxx
+++ b/ucb/source/ucp/gio/gio_seekable.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: gio_seekable.hxx,v $
- * $Revision: 1.2 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/gio/makefile.mk b/ucb/source/ucp/gio/makefile.mk
index 2e7009e52a..e6ebe2413e 100644
--- a/ucb/source/ucp/gio/makefile.mk
+++ b/ucb/source/ucp/gio/makefile.mk
@@ -2,14 +2,10 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.2 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/gvfs/content.cxx b/ucb/source/ucp/gvfs/gvfs_content.cxx
index 2eb0ac2e00..121c69346f 100644
--- a/ucb/source/ucp/gvfs/content.cxx
+++ b/ucb/source/ucp/gvfs/gvfs_content.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: content.cxx,v $
- * $Revision: 1.12 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -39,9 +36,7 @@
#include "osl/doublecheckedlocking.h"
-#ifndef _COM_SUN_STAR_BEANS_PROPERTYVALUES_HPP_
#include <com/sun/star/beans/PropertyValue.hpp>
-#endif
#include <com/sun/star/beans/PropertyAttribute.hpp>
#include <com/sun/star/beans/PropertySetInfoChange.hpp>
#include <com/sun/star/beans/PropertySetInfoChangeEvent.hpp>
@@ -50,14 +45,10 @@
#include <com/sun/star/lang/IllegalAccessException.hpp>
#include <com/sun/star/ucb/ContentInfoAttribute.hpp>
#include <com/sun/star/ucb/InsertCommandArgument.hpp>
-#ifndef _COM_SUN_STAR_UCB_INTERACTIVEBADTRANSFRERURLEXCEPTION_HPP_
#include <com/sun/star/ucb/InteractiveBadTransferURLException.hpp>
-#endif
#include <com/sun/star/ucb/InteractiveAugmentedIOException.hpp>
#include <com/sun/star/ucb/InteractiveNetworkConnectException.hpp>
-#ifndef _COM_SUN_STAR_UCB_INTERACTIVENETWORKGENBERALEXCEPTION_HPP_
#include <com/sun/star/ucb/InteractiveNetworkGeneralException.hpp>
-#endif
#include <com/sun/star/ucb/InteractiveNetworkReadException.hpp>
#include <com/sun/star/ucb/InteractiveNetworkResolveNameException.hpp>
#include <com/sun/star/ucb/InteractiveNetworkWriteException.hpp>
@@ -79,9 +70,7 @@
#include <com/sun/star/ucb/NameClashException.hpp>
#include <ucbhelper/contentidentifier.hxx>
#include <ucbhelper/propertyvalueset.hxx>
-#ifndef _UCBHELPER_INTERACTIONREQUEST_HXX
#include <ucbhelper/interactionrequest.hxx>
-#endif
#include <ucbhelper/cancelcommandexecution.hxx>
#include <ucbhelper/simpleauthenticationrequest.hxx>
@@ -98,10 +87,10 @@ extern "C" { // missing in the header: doh.
# include <libgnomevfs/gnome-vfs-module-callback.h>
}
-#include "content.hxx"
-#include "provider.hxx"
-#include "directory.hxx"
-#include "stream.hxx"
+#include "gvfs_content.hxx"
+#include "gvfs_provider.hxx"
+#include "gvfs_directory.hxx"
+#include "gvfs_stream.hxx"
using namespace gvfs;
using namespace com::sun::star;
@@ -141,7 +130,7 @@ Content::Content(
#endif
}
-Content::Content(
+Content::Content(
const uno::Reference< lang::XMultiServiceFactory >& rxSMgr,
ContentProvider * pProvider,
const uno::Reference< ucb::XContentIdentifier >& Identifier,
@@ -235,7 +224,7 @@ uno::Sequence< uno::Type > SAL_CALL Content::getTypes()
CPPU_TYPE_REF( beans::XPropertyContainer ),
CPPU_TYPE_REF( beans::XPropertySetInfoChangeNotifier ),
CPPU_TYPE_REF( container::XChild ) );
-
+
pFolderCollection = &aFolderCollection;
pFileCollection = &aFileCollection;
OSL_DOUBLE_CHECKED_LOCKING_MEMORY_BARRIER();
@@ -265,7 +254,7 @@ uno::Sequence< rtl::OUString > SAL_CALL Content::getSupportedServiceNames()
throw( uno::RuntimeException )
{
uno::Sequence< rtl::OUString > aSNS( 1 );
- aSNS.getArray()[ 0 ] = rtl::OUString::createFromAscii(
+ aSNS.getArray()[ 0 ] = rtl::OUString::createFromAscii(
"com.sun.star.ucb.GnomeVFSContent" );
return aSNS;
}
@@ -326,7 +315,7 @@ uno::Any SAL_CALL Content::execute(
if ( !( aCommand.Argument >>= Properties ) )
ucbhelper::cancelCommandExecution ( getBadArgExcept (), xEnv );
-
+
aRet <<= getPropertyValues( Properties, xEnv );
} else if ( COMMAND_IS( aCommand, "setPropertyValues" ) ) {
@@ -398,6 +387,13 @@ uno::Any SAL_CALL Content::execute(
g_warning ("Open falling through ...");
#endif
+ } else if ( COMMAND_IS( aCommand, "createNewContent" ) && isFolder( xEnv ) ) {
+ ucb::ContentInfo arg;
+ if ( !( aCommand.Argument >>= arg ) )
+ ucbhelper::cancelCommandExecution ( getBadArgExcept (), xEnv );
+
+ aRet <<= createNewContent( arg );
+
} else if ( COMMAND_IS( aCommand, "insert" ) ) {
ucb::InsertCommandArgument arg;
if ( !( aCommand.Argument >>= arg ) )
@@ -452,32 +448,45 @@ void SAL_CALL Content::abort( sal_Int32 /*CommandId*/ )
// XContentCreator methods.
//
-uno::Sequence< ucb::ContentInfo > SAL_CALL
-Content::queryCreatableContentsInfo()
- throw( uno::RuntimeException )
+uno::Sequence< ucb::ContentInfo > Content::queryCreatableContentsInfo(
+ const uno::Reference< ucb::XCommandEnvironment >& xEnv)
+ throw( uno::RuntimeException )
{
- uno::Sequence< ucb::ContentInfo > seq(2);
-
- // Minimum set of props we really need
- uno::Sequence< beans::Property > props( 1 );
- props[0] = beans::Property(
- rtl::OUString::createFromAscii( "Title" ),
- -1,
- getCppuType( static_cast< rtl::OUString* >( 0 ) ),
- beans::PropertyAttribute::MAYBEVOID | beans::PropertyAttribute::BOUND );
-
- // file
- seq[0].Type = rtl::OUString::createFromAscii( GVFS_FILE_TYPE );
- seq[0].Attributes = ( ucb::ContentInfoAttribute::INSERT_WITH_INPUTSTREAM |
- ucb::ContentInfoAttribute::KIND_DOCUMENT );
- seq[0].Properties = props;
-
- // folder
- seq[1].Type = rtl::OUString::createFromAscii( GVFS_FOLDER_TYPE );
- seq[1].Attributes = ucb::ContentInfoAttribute::KIND_FOLDER;
- seq[1].Properties = props;
-
- return seq;
+ if ( isFolder( xEnv ) )
+ {
+ uno::Sequence< ucb::ContentInfo > seq(2);
+
+ // Minimum set of props we really need
+ uno::Sequence< beans::Property > props( 1 );
+ props[0] = beans::Property(
+ rtl::OUString::createFromAscii( "Title" ),
+ -1,
+ getCppuType( static_cast< rtl::OUString* >( 0 ) ),
+ beans::PropertyAttribute::MAYBEVOID | beans::PropertyAttribute::BOUND );
+
+ // file
+ seq[0].Type = rtl::OUString::createFromAscii( GVFS_FILE_TYPE );
+ seq[0].Attributes = ( ucb::ContentInfoAttribute::INSERT_WITH_INPUTSTREAM |
+ ucb::ContentInfoAttribute::KIND_DOCUMENT );
+ seq[0].Properties = props;
+
+ // folder
+ seq[1].Type = rtl::OUString::createFromAscii( GVFS_FOLDER_TYPE );
+ seq[1].Attributes = ucb::ContentInfoAttribute::KIND_FOLDER;
+ seq[1].Properties = props;
+
+ return seq;
+ }
+ else
+ {
+ return uno::Sequence< ucb::ContentInfo >();
+ }
+}
+
+uno::Sequence< ucb::ContentInfo > SAL_CALL Content::queryCreatableContentsInfo()
+ throw( uno::RuntimeException )
+{
+ return queryCreatableContentsInfo( uno::Reference< ucb::XCommandEnvironment >() );
}
uno::Reference< ucb::XContent > SAL_CALL
@@ -487,7 +496,7 @@ Content::createNewContent( const ucb::ContentInfo& Info )
bool create_document;
const char *name;
- if ( Info.Type.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( GVFS_FILE_TYPE ) ) )
+ if ( Info.Type.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( GVFS_FILE_TYPE ) ) )
create_document = true;
else if ( Info.Type.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( GVFS_FOLDER_TYPE ) ) )
create_document = false;
@@ -515,11 +524,11 @@ Content::createNewContent( const ucb::ContentInfo& Info )
uno::Reference< ucb::XContentIdentifier > xId
( new ::ucbhelper::ContentIdentifier( m_xSMgr, aURL ) );
- try {
+ try {
return new ::gvfs::Content( m_xSMgr, m_pProvider, xId, !create_document );
} catch ( ucb::ContentCreationException & ) {
return uno::Reference< ucb::XContent >();
- }
+ }
}
rtl::OUString Content::getParentURL()
@@ -581,7 +590,7 @@ uno::Reference< sdbc::XRow > Content::getPropertyValues(
if( ( result = getInfo( xEnv ) ) != GNOME_VFS_OK )
cancelCommandExecution( result, xEnv, sal_False );
-
+
const beans::Property* pProps;
if( rProperties.getLength() ) {
@@ -609,7 +618,7 @@ uno::Reference< sdbc::XRow > Content::getPropertyValues(
else if (rProp.Name.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "ContentType" ) ) )
xRow->appendString( rProp, getContentType () );
-
+
else if (rProp.Name.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "IsDocument" ) ) ) {
if (m_info.valid_fields & GNOME_VFS_FILE_INFO_FIELDS_TYPE)
xRow->appendBoolean( rProp, ( m_info.type == GNOME_VFS_FILE_TYPE_REGULAR ||
@@ -617,38 +626,38 @@ uno::Reference< sdbc::XRow > Content::getPropertyValues(
else
xRow->appendVoid( rProp );
}
-
else if (rProp.Name.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "IsFolder" ) ) ) {
if (m_info.valid_fields & GNOME_VFS_FILE_INFO_FIELDS_TYPE)
xRow->appendBoolean( rProp, ( m_info.type == GNOME_VFS_FILE_TYPE_DIRECTORY ) );
else
xRow->appendVoid( rProp );
}
+ else if (rProp.Name.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "IsReadOnly" ) ) ) {
- else if (rProp.Name.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "Size" ) ) ) {
- if (m_info.valid_fields & GNOME_VFS_FILE_INFO_FIELDS_SIZE)
- xRow->appendLong( rProp, m_info.size );
- else
- xRow->appendVoid( rProp );
- }
+ GnomeVFSFileInfo* fileInfo = gnome_vfs_file_info_new ();
- else if (rProp.Name.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "IsReadOnly" ) ) ) {
- if (m_info.valid_fields & GNOME_VFS_FILE_INFO_FIELDS_PERMISSIONS) {
+ ::rtl::OString aURI = getOURI();
+ gnome_vfs_get_file_info
+ ( (const sal_Char *)aURI, fileInfo,
+ GNOME_VFS_FILE_INFO_GET_ACCESS_RIGHTS );
+
+ if (fileInfo->valid_fields & GNOME_VFS_FILE_INFO_FIELDS_ACCESS) {
bool read_only = true;
- if (m_info.uid == getuid () &&
- m_info.permissions & GNOME_VFS_PERM_USER_WRITE)
- read_only = false;
- else if (m_info.gid == getgid () &&
- m_info.permissions & GNOME_VFS_PERM_GROUP_WRITE)
- read_only = false;
- else if (m_info.permissions & GNOME_VFS_PERM_OTHER_WRITE)
- read_only = false;
+ if (fileInfo->permissions & GNOME_VFS_PERM_ACCESS_WRITABLE)
+ read_only = false;
+
xRow->appendBoolean( rProp, read_only );
} else
xRow->appendVoid( rProp );
+ gnome_vfs_file_info_unref (fileInfo);
+ }
+ else if (rProp.Name.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "Size" ) ) ) {
+ if (m_info.valid_fields & GNOME_VFS_FILE_INFO_FIELDS_SIZE)
+ xRow->appendLong( rProp, m_info.size );
+ else
+ xRow->appendVoid( rProp );
}
-
else if (rProp.Name.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "IsHidden" ) ) )
xRow->appendBoolean( rProp, ( m_info.name && m_info.name[0] == '.' ) );
@@ -669,14 +678,17 @@ uno::Reference< sdbc::XRow > Content::getPropertyValues(
else
xRow->appendVoid( rProp );
}
-
+
else if (rProp.Name.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "MediaType" ) ) ) {
// We do this by sniffing in gnome-vfs; rather expensively.
#ifdef DEBUG
g_warning ("FIXME: Requested mime-type - an expensive op. indeed!");
#endif
xRow->appendVoid( rProp );
- } else {
+ } else if (rProp.Name.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "CreatableContentsInfo" ) ) )
+ xRow->appendObject( rProp, uno::makeAny( queryCreatableContentsInfo( xEnv ) ) );
+
+ else {
xRow->appendVoid( rProp );
}
}
@@ -688,7 +700,7 @@ uno::Reference< sdbc::XRow > Content::getPropertyValues(
return uno::Reference< sdbc::XRow >( xRow.get() );
}
-static lang::IllegalAccessException
+static lang::IllegalAccessException
getReadOnlyException( Content *ctnt )
{
return lang::IllegalAccessException
@@ -740,7 +752,7 @@ Content::doSetFileInfo( const GnomeVFSFileInfo *newInfo,
result = gnome_vfs_move ((const sal_Char *)aURI, newURI, FALSE);
- g_free (newURI);
+ g_free (newURI);
}
return result;
@@ -757,7 +769,7 @@ uno::Sequence< uno::Any > Content::setPropertyValues(
getInfo( xEnv );
- osl::ClearableGuard< osl::Mutex > aGuard( m_aMutex );
+ osl::ClearableGuard< osl::Mutex > aGuard( m_aMutex );
gnome_vfs_file_info_copy( &newInfo, &m_info );
@@ -769,16 +781,16 @@ uno::Sequence< uno::Any > Content::setPropertyValues(
beans::PropertyChangeEvent aEvent;
aEvent.Source = static_cast< cppu::OWeakObject * >( this );
- aEvent.Further = sal_False;
- aEvent.PropertyHandle = -1;
- // aEvent.PropertyName = fill in later ...
- // aEvent.OldValue =
- // aEvent.NewValue =
+ aEvent.Further = sal_False;
+ aEvent.PropertyHandle = -1;
+ // aEvent.PropertyName = fill in later ...
+ // aEvent.OldValue =
+ // aEvent.NewValue =
- int nCount = rValues.getLength();
+ int nCount = rValues.getLength();
const beans::PropertyValue* pValues = rValues.getConstArray();
- for ( sal_Int32 n = 0; n < nCount; ++n ) {
+ for ( sal_Int32 n = 0; n < nCount; ++n ) {
const beans::PropertyValue& rValue = pValues[ n ];
#ifdef DEBUG
@@ -788,7 +800,8 @@ uno::Sequence< uno::Any > Content::setPropertyValues(
rValue.Name.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "MediaType" ) ) ||
rValue.Name.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "IsDocument" ) ) ||
rValue.Name.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "IsFolder" ) ) ||
- rValue.Name.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "Size" ) ) )
+ rValue.Name.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "Size" ) ) ||
+ rValue.Name.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "CreatableContentsInfo" ) ) )
aRet[ n ] <<= getReadOnlyException( this );
else if ( rValue.Name.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "Title" ) ) ) {
@@ -810,9 +823,9 @@ uno::Sequence< uno::Any > Content::setPropertyValues(
aEvent.NewValue = uno::makeAny( aNewTitle );
aChanges.getArray()[ nChanged ] = aEvent;
nTitlePos = nChanged++;
-
+
newInfo.name = newName;
- setMask |= GNOME_VFS_SET_FILE_INFO_NAME;
+ setMask |= GNOME_VFS_SET_FILE_INFO_NAME;
} else // same name
g_free (newName);
}
@@ -832,7 +845,7 @@ uno::Sequence< uno::Any > Content::setPropertyValues(
aRet[ n ] <<= getReadOnlyException( this );
}
}
-
+
GnomeVFSResult result = GNOME_VFS_OK;
if ( !m_bTransient &&
@@ -849,9 +862,9 @@ uno::Sequence< uno::Any > Content::setPropertyValues(
if ( setMask & GNOME_VFS_SET_FILE_INFO_NAME ) {
uno::Reference< ucb::XContentIdentifier > xNewId
- = new ::ucbhelper::ContentIdentifier(
+ = new ::ucbhelper::ContentIdentifier(
m_xSMgr, makeNewURL( newInfo.name ) );
-
+
aGuard.clear();
if (!exchangeIdentity( xNewId ) )
aRet[ nTitlePos ] <<= uno::Exception
@@ -859,7 +872,7 @@ uno::Sequence< uno::Any > Content::setPropertyValues(
static_cast< cppu::OWeakObject * >( this ) );
}
}
-
+
gnome_vfs_file_info_clear( &newInfo );
if ( nChanged > 0 ) {
@@ -919,7 +932,7 @@ void Content::insert(
const uno::Reference< ucb::XCommandEnvironment > &xEnv )
throw( uno::Exception )
{
- osl::ClearableGuard< osl::Mutex > aGuard( m_aMutex );
+ osl::ClearableGuard< osl::Mutex > aGuard( m_aMutex );
#ifdef DEBUG
g_warning( "Insert '%s' (%d) (0x%x:%d)", getURI(), bReplaceExisting,
@@ -1004,9 +1017,9 @@ void Content::insert(
}
if (m_bTransient) {
- m_bTransient = sal_False;
+ m_bTransient = sal_False;
aGuard.clear();
- inserted();
+ inserted();
}
}
@@ -1035,14 +1048,14 @@ void Content::destroy( sal_Bool bDeletePhysical )
deleted();
osl::Guard< osl::Mutex > aGuard( m_aMutex );
-
+
// Process instanciated children...
::gvfs::Content::ContentRefList aChildren;
queryChildren( aChildren );
-
+
ContentRefList::const_iterator it = aChildren.begin();
ContentRefList::const_iterator end = aChildren.end();
-
+
while ( it != end ) {
(*it)->destroy( bDeletePhysical );
++it;
@@ -1100,10 +1113,10 @@ sal_Bool Content::exchangeIdentity(
uno::Reference< ucb::XContentIdentifier >
xNewChildId
= new ::ucbhelper::ContentIdentifier( m_xSMgr, aNewChildURL );
-
+
if ( !xChild->exchangeIdentity( xNewChildId ) )
return sal_False;
-
+
++it;
}
return sal_True;
@@ -1161,7 +1174,7 @@ uno::Any Content::mapVFSException( const GnomeVFSResult result, sal_Bool bWrite
if ((gvfs_message = gnome_vfs_result_to_string (result)))
message = GnomeToOUString( gvfs_message );
-
+
switch (result) {
case GNOME_VFS_OK:
g_error ("VFS_OK mapped to exception.");
@@ -1181,7 +1194,7 @@ uno::Any Content::mapVFSException( const GnomeVFSResult result, sal_Bool bWrite
break;
case GNOME_VFS_ERROR_BAD_PARAMETERS:
aException <<=
- lang::IllegalArgumentException
+ lang::IllegalArgumentException
( rtl::OUString(),
static_cast< cppu::OWeakObject * >( this ),
-1 );
@@ -1319,8 +1332,8 @@ uno::Sequence< beans::Property > Content::getProperties(
beans::PropertyAttribute::BOUND | beans::PropertyAttribute::READONLY ),
// FIXME: Too expensive for now (?)
// beans::Property( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "MediaType" ) ),
-// -1, getCppuType( static_cast< const rtl::OUString * >( 0 ) ),
-// beans::PropertyAttribute::BOUND | beans::PropertyAttribute::READONLY ),
+// -1, getCppuType( static_cast< const rtl::OUString * >( 0 ) ),
+// beans::PropertyAttribute::BOUND | beans::PropertyAttribute::READONLY ),
beans::Property( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Size" ) ),
-1, getCppuType( static_cast< const sal_Int64 * >( 0 ) ),
beans::PropertyAttribute::BOUND | beans::PropertyAttribute::READONLY ),
@@ -1335,19 +1348,22 @@ uno::Sequence< beans::Property > Content::getProperties(
beans::PropertyAttribute::BOUND | beans::PropertyAttribute::READONLY ),
beans::Property( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "IsHidden" ) ),
-1, getCppuBooleanType(),
+ beans::PropertyAttribute::BOUND | beans::PropertyAttribute::READONLY ),
+ beans::Property( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "CreatableContentsInfo" ) ),
+ -1, getCppuType( static_cast< const uno::Sequence< ucb::ContentInfo > * >( 0 ) ),
beans::PropertyAttribute::BOUND | beans::PropertyAttribute::READONLY )
};
const int nProps = sizeof (aGenericProperties) / sizeof (aGenericProperties[0]);
return uno::Sequence< beans::Property > ( aGenericProperties, nProps );
-
+
}
uno::Sequence< ucb::CommandInfo > Content::getCommands(
const uno::Reference< ucb::XCommandEnvironment > & xEnv )
{
- static ucb::CommandInfo aDocumentCommandInfoTable[] = {
+ static ucb::CommandInfo aCommandInfoTable[] = {
// Required commands
ucb::CommandInfo
( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "getCommandInfo" ) ),
@@ -1373,17 +1389,19 @@ uno::Sequence< ucb::CommandInfo > Content::getCommands(
( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "open" ) ),
-1, getCppuType( static_cast<ucb::OpenCommandArgument2 * >( 0 ) ) ),
- // Folder only
+ // Folder Only, omitted if not a folder
ucb::CommandInfo
( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "transfer" ) ),
- -1, getCppuType( static_cast<ucb::TransferInfo * >( 0 ) ) )
+ -1, getCppuType( static_cast<ucb::TransferInfo * >( 0 ) ) ),
+ ucb::CommandInfo
+ ( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "createNewContent" ) ),
+ -1, getCppuType( static_cast<ucb::ContentInfo * >( 0 ) ) )
};
- int num = 7;
-
- if ( isFolder( xEnv ) )
- num += 1;
- return uno::Sequence< ucb::CommandInfo >(aDocumentCommandInfoTable, num );
+ const int nProps
+ = sizeof( aCommandInfoTable ) / sizeof( aCommandInfoTable[ 0 ] );
+ return uno::Sequence< ucb::CommandInfo >(
+ aCommandInfoTable, isFolder( xEnv ) ? nProps : nProps - 2 );
}
rtl::OUString
@@ -1420,8 +1438,8 @@ Content::copyData( uno::Reference< io::XInputStream > xIn,
}
// Inherits an authentication context
-uno::Reference< io::XInputStream >
-Content::createTempStream(
+uno::Reference< io::XInputStream >
+Content::createTempStream(
const uno::Reference< ucb::XCommandEnvironment >& xEnv )
throw( uno::Exception )
{
@@ -1450,8 +1468,8 @@ Content::createTempStream(
return uno::Reference < io::XInputStream > ( xTempOut, uno::UNO_QUERY );
}
-uno::Reference< io::XInputStream >
-Content::createInputStream(
+uno::Reference< io::XInputStream >
+Content::createInputStream(
const uno::Reference< ucb::XCommandEnvironment >& xEnv )
throw( uno::Exception )
{
@@ -1471,11 +1489,11 @@ Content::createInputStream(
result = gnome_vfs_open
( &handle, (const sal_Char *)aURI,
(GnomeVFSOpenMode) (GNOME_VFS_OPEN_READ | GNOME_VFS_OPEN_RANDOM ) );
-
+
if (result == GNOME_VFS_ERROR_INVALID_OPEN_MODE ||
result == GNOME_VFS_ERROR_NOT_SUPPORTED)
return createTempStream( xEnv );
-
+
if (result != GNOME_VFS_OK)
cancelCommandExecution( result, xEnv );
@@ -1506,14 +1524,14 @@ Content::feedSink( uno::Reference< uno::XInterface > aSink,
= uno::Reference< io::XOutputStream >(aSink, uno::UNO_QUERY );
uno::Reference< io::XActiveDataSink > xDataSink
= uno::Reference< io::XActiveDataSink >(aSink, uno::UNO_QUERY );
-
+
if ( !xOut.is() && !xDataSink.is() )
return sal_False;
uno::Reference< io::XInputStream > xIn = createInputStream( xEnv );
if ( !xIn.is() )
return sal_False;
-
+
if ( xOut.is() )
copyData( xIn, xOut );
@@ -1538,7 +1556,7 @@ extern "C" {
{
task::XInteractionHandler *xIH;
-#ifdef DEBUG
+#ifdef DEBUG
g_warning ("Full authentication callback (%p) ...", callback_data);
#endif
@@ -1547,7 +1565,7 @@ extern "C" {
const GnomeVFSModuleCallbackFullAuthenticationIn *in =
(const GnomeVFSModuleCallbackFullAuthenticationIn *) in_void;
- GnomeVFSModuleCallbackFullAuthenticationOut *out =
+ GnomeVFSModuleCallbackFullAuthenticationOut *out =
(GnomeVFSModuleCallbackFullAuthenticationOut *) out_void;
g_return_if_fail (in != NULL && out != NULL);
@@ -1590,7 +1608,7 @@ extern "C" {
(aUserName.getLength() ?
ucbhelper::SimpleAuthenticationRequest::ENTITY_FIXED :
ucbhelper::SimpleAuthenticationRequest::ENTITY_NA);
-
+
// No suggested password.
ePassword = (in->flags & GNOME_VFS_MODULE_CALLBACK_FULL_AUTHENTICATION_NEED_PASSWORD) ?
ucbhelper::SimpleAuthenticationRequest::ENTITY_MODIFY :
@@ -1662,30 +1680,30 @@ extern "C" {
gsize out_size,
gpointer callback_data)
{
-#ifdef DEBUG
+#ifdef DEBUG
g_warning ("Old authentication callback (%p) [ UNTESTED ] ...", callback_data);
#endif
const GnomeVFSModuleCallbackAuthenticationIn *in =
(const GnomeVFSModuleCallbackAuthenticationIn *) in_void;
- GnomeVFSModuleCallbackAuthenticationOut *out =
+ GnomeVFSModuleCallbackAuthenticationOut *out =
(GnomeVFSModuleCallbackAuthenticationOut *) out_void;
g_return_if_fail (in != NULL && out != NULL);
g_return_if_fail (sizeof (GnomeVFSModuleCallbackAuthenticationIn) == in_size &&
sizeof (GnomeVFSModuleCallbackAuthenticationOut) == out_size);
- GnomeVFSModuleCallbackFullAuthenticationIn mapped_in = {
+ GnomeVFSModuleCallbackFullAuthenticationIn mapped_in = {
(GnomeVFSModuleCallbackFullAuthenticationFlags)
(GNOME_VFS_MODULE_CALLBACK_FULL_AUTHENTICATION_NEED_PASSWORD |
GNOME_VFS_MODULE_CALLBACK_FULL_AUTHENTICATION_NEED_USERNAME |
GNOME_VFS_MODULE_CALLBACK_FULL_AUTHENTICATION_NEED_DOMAIN),
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
GnomeVFSModuleCallbackFullAuthenticationOut mapped_out = { 0, 0, 0, 0, 0, 0, 0, 0 };
-
+
// Map the old style input auth. data to the new style structure.
if (in->previous_attempt_failed)
mapped_in.flags = (GnomeVFSModuleCallbackFullAuthenticationFlags)
- (mapped_in.flags |
+ (mapped_in.flags |
GNOME_VFS_MODULE_CALLBACK_FULL_AUTHENTICATION_PREVIOUS_ATTEMPT_FAILED);
GnomeVFSURI *pURI = NULL;
@@ -1698,11 +1716,11 @@ extern "C" {
mapped_in.server = (char *) gnome_vfs_uri_get_host_name (pURI);
mapped_in.port = gnome_vfs_uri_get_host_port (pURI);
mapped_in.username = (char *) gnome_vfs_uri_get_user_name (pURI);
- }
+ }
mapped_in.domain = in->realm;
mapped_in.default_user = mapped_in.username;
mapped_in.default_domain = mapped_in.domain;
-
+
vfs_authentication_callback ((gconstpointer) &mapped_in,
sizeof (mapped_in),
(gpointer) &mapped_out,
@@ -1710,7 +1728,7 @@ extern "C" {
callback_data);
if (pURI)
- gnome_vfs_uri_unref (pURI);
+ gnome_vfs_uri_unref (pURI);
// Map the new style auth. out data to the old style out structure.
out->username = mapped_out.username;
diff --git a/ucb/source/ucp/gvfs/content.hxx b/ucb/source/ucp/gvfs/gvfs_content.hxx
index 31254b8733..3b73162572 100644
--- a/ucb/source/ucp/gvfs/content.hxx
+++ b/ucb/source/ucp/gvfs/gvfs_content.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: content.hxx,v $
- * $Revision: 1.6 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -82,11 +79,11 @@ class Content : public ::ucbhelper::ContentImplHelper,
public com::sun::star::ucb::XContentCreator
{
//=========================================================================
-// Internals
+// Internals
//=========================================================================
private:
typedef rtl::Reference< Content > ContentRef;
- typedef std::list< ContentRef > ContentRefList;
+ typedef std::list< ContentRef > ContentRefList;
// Instance data
ContentProvider *m_pProvider; // No need for a ref, base class holds object
@@ -98,7 +95,7 @@ private:
::com::sun::star::uno::Any getBadArgExcept ();
GnomeVFSResult getInfo ( const ::com::sun::star::uno::Reference<
::com::sun::star::ucb::XCommandEnvironment >& xEnv );
- sal_Bool isFolder ( const ::com::sun::star::uno::Reference<
+ sal_Bool isFolder ( const ::com::sun::star::uno::Reference<
::com::sun::star::ucb::XCommandEnvironment >& xEnv );
sal_Bool exchangeIdentity( const ::com::sun::star::uno::Reference<
::com::sun::star::ucb::XContentIdentifier >& xNewId);
@@ -110,7 +107,7 @@ private:
// End Internal helpers
// For ucbhelper
- virtual ::rtl::OUString getParentURL();
+ virtual ::rtl::OUString getParentURL();
// For ucbhelper
virtual com::sun::star::uno::Sequence< com::sun::star::beans::Property >
getProperties( const com::sun::star::uno::Reference<
@@ -122,8 +119,8 @@ private:
public:
// Command "getPropertyValues"
- ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XRow >
- getPropertyValues( const ::com::sun::star::uno::Sequence<
+ ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XRow >
+ getPropertyValues( const ::com::sun::star::uno::Sequence<
::com::sun::star::beans::Property >& rProperties,
const ::com::sun::star::uno::Reference<
::com::sun::star::ucb::XCommandEnvironment >& xEnv );
@@ -136,22 +133,22 @@ private:
const ::com::sun::star::uno::Reference<
::com::sun::star::ucb::XCommandEnvironment >& xEnv );
- // Command "insert"
- void insert( const ::com::sun::star::uno::Reference<
+ // Command "insert"
+ void insert( const ::com::sun::star::uno::Reference<
::com::sun::star::io::XInputStream > & xInputStream,
- sal_Bool bReplaceExisting,
- const com::sun::star::uno::Reference<
- com::sun::star::ucb::XCommandEnvironment >& xEnv )
+ sal_Bool bReplaceExisting,
+ const com::sun::star::uno::Reference<
+ com::sun::star::ucb::XCommandEnvironment >& xEnv )
throw( ::com::sun::star::uno::Exception );
// Command "transfer"
void transfer( const ::com::sun::star::ucb::TransferInfo & rArgs,
const com::sun::star::uno::Reference<
- com::sun::star::ucb::XCommandEnvironment >& xEnv )
+ com::sun::star::ucb::XCommandEnvironment >& xEnv )
throw( ::com::sun::star::uno::Exception );
// Command "delete"
- void destroy( sal_Bool bDeletePhysical )
+ void destroy( sal_Bool bDeletePhysical )
throw( ::com::sun::star::uno::Exception );
// "open" helpers
@@ -161,21 +158,21 @@ private:
::com::sun::star::io::XOutputStream > xOut );
::com::sun::star::uno::Reference<
- ::com::sun::star::io::XInputStream >
+ ::com::sun::star::io::XInputStream >
createTempStream( const ::com::sun::star::uno::Reference<
com::sun::star::ucb::XCommandEnvironment >& xEnv )
throw( ::com::sun::star::uno::Exception );
::com::sun::star::uno::Reference<
- ::com::sun::star::io::XInputStream >
+ ::com::sun::star::io::XInputStream >
createInputStream( const ::com::sun::star::uno::Reference<
com::sun::star::ucb::XCommandEnvironment >& xEnv )
throw( ::com::sun::star::uno::Exception );
- sal_Bool feedSink( ::com::sun::star::uno::Reference<
+ sal_Bool feedSink( ::com::sun::star::uno::Reference<
::com::sun::star::uno::XInterface> aSink,
const ::com::sun::star::uno::Reference<
com::sun::star::ucb::XCommandEnvironment >& xEnv );
- ::com::sun::star::uno::Any mapVFSException( const GnomeVFSResult result,
+ ::com::sun::star::uno::Any mapVFSException( const GnomeVFSResult result,
sal_Bool bWrite );
void cancelCommandExecution(const GnomeVFSResult result,
@@ -192,27 +189,27 @@ public:
rtl::OUString getOUURI ();
//=========================================================================
-// Externals
+// Externals
//=========================================================================
public:
- Content( const ::com::sun::star::uno::Reference<
+ Content( const ::com::sun::star::uno::Reference<
::com::sun::star::lang::XMultiServiceFactory >& rxSMgr,
ContentProvider *pProvider,
const ::com::sun::star::uno::Reference<
::com::sun::star::ucb::XContentIdentifier >& Identifier)
throw ( ::com::sun::star::ucb::ContentCreationException );
- Content( const ::com::sun::star::uno::Reference<
+ Content( const ::com::sun::star::uno::Reference<
::com::sun::star::lang::XMultiServiceFactory >& rxSMgr,
ContentProvider *pProvider,
const ::com::sun::star::uno::Reference<
::com::sun::star::ucb::XContentIdentifier >& Identifier,
sal_Bool isFolder)
throw ( ::com::sun::star::ucb::ContentCreationException );
- virtual ~Content();
+ virtual ~Content();
- // XInterface
- XINTERFACE_DECL()
+ // XInterface
+ XINTERFACE_DECL()
// XTypeProvider
XTYPEPROVIDER_DECL()
@@ -220,40 +217,47 @@ public:
// XServiceInfo
virtual ::rtl::OUString SAL_CALL getImplementationName()
throw( ::com::sun::star::uno::RuntimeException );
- virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL
- getSupportedServiceNames()
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL
+ getSupportedServiceNames()
throw( ::com::sun::star::uno::RuntimeException );
- // XContent
- virtual rtl::OUString SAL_CALL
- getContentType()
+ // XContent
+ virtual rtl::OUString SAL_CALL
+ getContentType()
throw( com::sun::star::uno::RuntimeException );
- // XCommandProcessor
- virtual com::sun::star::uno::Any SAL_CALL
- execute( const com::sun::star::ucb::Command& aCommand,
+ // XCommandProcessor
+ virtual com::sun::star::uno::Any SAL_CALL
+ execute( const com::sun::star::ucb::Command& aCommand,
sal_Int32 CommandId,
const com::sun::star::uno::Reference<
com::sun::star::ucb::XCommandEnvironment >& xEnv )
throw( com::sun::star::uno::Exception,
com::sun::star::ucb::CommandAbortedException,
com::sun::star::uno::RuntimeException );
- virtual void SAL_CALL
- abort( sal_Int32 CommandId )
+ virtual void SAL_CALL
+ abort( sal_Int32 CommandId )
throw( com::sun::star::uno::RuntimeException );
- //////////////////////////////////////////////////////////////////////
- // Additional interfaces
- //////////////////////////////////////////////////////////////////////
+ //////////////////////////////////////////////////////////////////////
+ // Additional interfaces
+ //////////////////////////////////////////////////////////////////////
- // XContentCreator
+ // XContentCreator
virtual com::sun::star::uno::Sequence<
com::sun::star::ucb::ContentInfo > SAL_CALL
- queryCreatableContentsInfo()
+ queryCreatableContentsInfo()
throw( com::sun::star::uno::RuntimeException );
- virtual com::sun::star::uno::Reference<
- com::sun::star::ucb::XContent > SAL_CALL
- createNewContent( const com::sun::star::ucb::ContentInfo& Info )
+ virtual com::sun::star::uno::Reference<
+ com::sun::star::ucb::XContent > SAL_CALL
+ createNewContent( const com::sun::star::ucb::ContentInfo& Info )
+ throw( com::sun::star::uno::RuntimeException );
+
+
+ com::sun::star::uno::Sequence< com::sun::star::ucb::ContentInfo >
+ queryCreatableContentsInfo(
+ const com::sun::star::uno::Reference<
+ com::sun::star::ucb::XCommandEnvironment >& xEnv)
throw( com::sun::star::uno::RuntimeException );
};
diff --git a/ucb/source/ucp/gvfs/directory.cxx b/ucb/source/ucp/gvfs/gvfs_directory.cxx
index ff699a3c63..9654b3bc8d 100644
--- a/ucb/source/ucp/gvfs/directory.cxx
+++ b/ucb/source/ucp/gvfs/gvfs_directory.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: directory.cxx,v $
- * $Revision: 1.7 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -40,7 +37,7 @@
#include <ucbhelper/contentidentifier.hxx>
#include <ucbhelper/providerhelper.hxx>
-#include "directory.hxx"
+#include "gvfs_directory.hxx"
#include <libgnomevfs/gnome-vfs-utils.h>
#include <libgnomevfs/gnome-vfs-directory.h>
@@ -96,7 +93,7 @@ struct ResultListEntry
gnome_vfs_file_info_copy (&aInfo, fileInfo);
}
- ~ResultListEntry()
+ ~ResultListEntry()
{
gnome_vfs_file_info_clear (&aInfo);
}
@@ -180,7 +177,7 @@ rtl::OUString DataSupplier::queryContentIdentifierString( sal_uInt32 nIndex )
aId += rtl::OUString::createFromAscii( "/" );
aId += rtl::OUString::createFromAscii( escaped_name );
-
+
g_free( escaped_name );
m_pImpl->m_aResults[ nIndex ]->aId = aId;
@@ -240,7 +237,7 @@ DataSupplier::queryContent( sal_uInt32 nIndex )
= m_pImpl->m_xContent->getProvider()->queryContent( xId );
m_pImpl->m_aResults[ nIndex ]->xContent = xContent;
return xContent;
-
+
}
catch ( ucb::IllegalIdentifierException& ) {
}
@@ -347,7 +344,7 @@ sal_Bool DataSupplier::getData()
char *uri = m_pImpl->m_xContent->getURI();
result = gnome_vfs_directory_open
( &dirHandle, uri, GNOME_VFS_FILE_INFO_DEFAULT );
-
+
if (result != GNOME_VFS_OK) {
#ifdef DEBUG
g_warning ("Failed open of '%s' with '%s'",
@@ -360,35 +357,37 @@ sal_Bool DataSupplier::getData()
g_free( uri );
}
+ GnomeVFSFileInfo* fileInfo = gnome_vfs_file_info_new ();
- GnomeVFSFileInfo fileInfo;
- fileInfo.name = 0;
- while ((result = gnome_vfs_directory_read_next (dirHandle, &fileInfo)) == GNOME_VFS_OK) {
- if( fileInfo.name && fileInfo.name[0] == '.' &&
- ( fileInfo.name[1] == '\0' ||
- ( fileInfo.name[1] == '.' && fileInfo.name[2] == '\0' ) ) )
+ while ((result = gnome_vfs_directory_read_next (dirHandle, fileInfo)) == GNOME_VFS_OK) {
+ if( fileInfo->name && fileInfo->name[0] == '.' &&
+ ( fileInfo->name[1] == '\0' ||
+ ( fileInfo->name[1] == '.' && fileInfo->name[2] == '\0' ) ) )
continue;
switch ( m_pImpl->m_nOpenMode ) {
case ucb::OpenMode::FOLDERS:
- if ( !(fileInfo.valid_fields & GNOME_VFS_FILE_INFO_FIELDS_TYPE) ||
- fileInfo.type != GNOME_VFS_FILE_TYPE_DIRECTORY )
+ if ( !(fileInfo->valid_fields & GNOME_VFS_FILE_INFO_FIELDS_TYPE) ||
+ fileInfo->type != GNOME_VFS_FILE_TYPE_DIRECTORY )
continue;
break;
-
+
case ucb::OpenMode::DOCUMENTS:
- if ( !(fileInfo.valid_fields & GNOME_VFS_FILE_INFO_FIELDS_TYPE) ||
- fileInfo.type != GNOME_VFS_FILE_TYPE_REGULAR )
+ if ( !(fileInfo->valid_fields & GNOME_VFS_FILE_INFO_FIELDS_TYPE) ||
+ fileInfo->type != GNOME_VFS_FILE_TYPE_REGULAR )
continue;
break;
-
+
case ucb::OpenMode::ALL:
default:
break;
}
-
- m_pImpl->m_aResults.push_back( new ResultListEntry( &fileInfo ) );
+
+ m_pImpl->m_aResults.push_back( new ResultListEntry( fileInfo ) );
}
+
+ gnome_vfs_file_info_unref (fileInfo);
+
#ifdef DEBUG
g_warning ("Got %d directory entries", result);
#endif
diff --git a/ucb/source/ucp/gvfs/directory.hxx b/ucb/source/ucp/gvfs/gvfs_directory.hxx
index d5124eedb6..c771d497d9 100644
--- a/ucb/source/ucp/gvfs/directory.hxx
+++ b/ucb/source/ucp/gvfs/gvfs_directory.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: directory.hxx,v $
- * $Revision: 1.7 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -33,7 +30,7 @@
#include <rtl/ref.hxx>
#include <ucbhelper/resultset.hxx>
#include <ucbhelper/resultsethelper.hxx>
-#include "content.hxx"
+#include "gvfs_content.hxx"
namespace gvfs {
@@ -44,11 +41,11 @@ class DynamicResultSet : public ::ucbhelper::ResultSetImplHelper
com::sun::star::ucb::XCommandEnvironment > m_xEnv;
private:
- virtual void initStatic();
- virtual void initDynamic();
+ virtual void initStatic();
+ virtual void initDynamic();
public:
- DynamicResultSet( const com::sun::star::uno::Reference<
+ DynamicResultSet( const com::sun::star::uno::Reference<
com::sun::star::lang::XMultiServiceFactory >& rxSMgr,
const rtl::Reference< Content >& rxContent,
const com::sun::star::ucb::OpenCommandArgument2& rCommand,
diff --git a/ucb/source/ucp/gvfs/provider.cxx b/ucb/source/ucp/gvfs/gvfs_provider.cxx
index eec5dd1296..92fa95c0e6 100644
--- a/ucb/source/ucp/gvfs/provider.cxx
+++ b/ucb/source/ucp/gvfs/gvfs_provider.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: provider.cxx,v $
- * $Revision: 1.9 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -33,8 +30,8 @@
#include <ucbhelper/contentidentifier.hxx>
#include <libgnomevfs/gnome-vfs-init.h>
-#include "provider.hxx"
-#include "content.hxx"
+#include "gvfs_provider.hxx"
+#include "gvfs_content.hxx"
using namespace com::sun::star;
using namespace gvfs;
@@ -114,7 +111,7 @@ ContentProvider::queryContent(
uno::RuntimeException )
{
#ifdef DEBUG
- g_warning ("QueryContent: '%s'",
+ g_warning ("QueryContent: '%s'",
(const sal_Char *)rtl::OUStringToOString
(Identifier->getContentIdentifier(), RTL_TEXTENCODING_UTF8));
#endif
@@ -182,14 +179,14 @@ writeInfo( void *pRegistryKey,
return bSuccess;
}
-extern "C" void SAL_CALL
+extern "C" void SAL_CALL
component_getImplementationEnvironment( const sal_Char **ppEnvTypeName,
uno_Environment **/*ppEnv*/ )
{
*ppEnvTypeName = CPPU_CURRENT_LANGUAGE_BINDING_NAME;
}
-extern "C" sal_Bool SAL_CALL
+extern "C" sal_Bool SAL_CALL
component_writeInfo( void */*pServiceManager*/,
void *pRegistryKey )
{
diff --git a/ucb/source/ucp/gvfs/provider.hxx b/ucb/source/ucp/gvfs/gvfs_provider.hxx
index 4aa024ee96..39cd7b0cdb 100644
--- a/ucb/source/ucp/gvfs/provider.hxx
+++ b/ucb/source/ucp/gvfs/gvfs_provider.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: provider.hxx,v $
- * $Revision: 1.7 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/gvfs/stream.cxx b/ucb/source/ucp/gvfs/gvfs_stream.cxx
index 7ea1e95619..8c5c7c676f 100644
--- a/ucb/source/ucp/gvfs/stream.cxx
+++ b/ucb/source/ucp/gvfs/gvfs_stream.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: stream.cxx,v $
- * $Revision: 1.7 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -30,7 +27,7 @@
// MARKER(update_precomp.py): autogen include statement, do not remove
#include "precompiled_ucb.hxx"
-#include "stream.hxx"
+#include "gvfs_stream.hxx"
#include <rtl/memory.h>
#include <com/sun/star/ucb/InteractiveAugmentedIOException.hpp>
@@ -89,7 +86,7 @@ Stream::getInputStream( )
}
return Reference< XInputStream >( this );
}
-
+
com::sun::star::uno::Reference< com::sun::star::io::XOutputStream > SAL_CALL
Stream::getOutputStream( )
throw( com::sun::star::uno::RuntimeException )
@@ -187,13 +184,13 @@ sal_Int32 SAL_CALL Stream::available( )
}
void SAL_CALL Stream::closeInput( void )
- throw( NotConnectedException,
- IOException,
- RuntimeException )
+ throw( NotConnectedException,
+ IOException,
+ RuntimeException )
{
osl::MutexGuard aGuard( m_aMutex );
m_bInputStreamCalled = false;
-
+
if( ! m_bOutputStreamCalled )
closeStream();
}
@@ -234,7 +231,7 @@ sal_Int64 SAL_CALL Stream::getPosition()
throw IOException();
throwOnError( gnome_vfs_tell( m_handle, &nBytesIn ) );
-
+
return nBytesIn;
}
@@ -293,13 +290,13 @@ void SAL_CALL Stream::writeBytes( const com::sun::star::uno::Sequence< sal_Int8
p += bytesWritten;
}
}
-
+
void SAL_CALL Stream::flush( void )
throw( NotConnectedException, BufferSizeExceededException,
IOException, RuntimeException )
{
}
-
+
void SAL_CALL Stream::closeOutput( void )
throw( com::sun::star::io::NotConnectedException,
com::sun::star::io::IOException,
@@ -307,7 +304,7 @@ void SAL_CALL Stream::closeOutput( void )
{
osl::MutexGuard aGuard( m_aMutex );
m_bOutputStreamCalled = false;
-
+
if( ! m_bInputStreamCalled )
closeStream();
}
diff --git a/ucb/source/ucp/gvfs/stream.hxx b/ucb/source/ucp/gvfs/gvfs_stream.hxx
index a621c08e98..d7fb17cd6b 100644
--- a/ucb/source/ucp/gvfs/stream.hxx
+++ b/ucb/source/ucp/gvfs/gvfs_stream.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: stream.hxx,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/gvfs/makefile.mk b/ucb/source/ucp/gvfs/makefile.mk
index 889e3ffd41..b69455777c 100644
--- a/ucb/source/ucp/gvfs/makefile.mk
+++ b/ucb/source/ucp/gvfs/makefile.mk
@@ -2,14 +2,10 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.8 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
@@ -62,10 +58,10 @@ PKGCONFIG_LIBS!:=-Wl,--export-dynamic $(PKGCONFIG_LIBS:s/ -llinc//:s/ -lbonobo-a
DLLPRE =
SLOFILES=\
- $(SLO)$/content.obj \
- $(SLO)$/directory.obj \
- $(SLO)$/stream.obj \
- $(SLO)$/provider.obj
+ $(SLO)$/gvfs_content.obj \
+ $(SLO)$/gvfs_directory.obj \
+ $(SLO)$/gvfs_stream.obj \
+ $(SLO)$/gvfs_provider.obj
SHL1NOCHECK=TRUE
SHL1TARGET=$(TARGET)$(UCPGVFS_MAJOR).uno
diff --git a/ucb/source/ucp/hierarchy/dynamicresultset.cxx b/ucb/source/ucp/hierarchy/dynamicresultset.cxx
index f0c7ecf4f9..399b000ca0 100644
--- a/ucb/source/ucp/hierarchy/dynamicresultset.cxx
+++ b/ucb/source/ucp/hierarchy/dynamicresultset.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: dynamicresultset.cxx,v $
- * $Revision: 1.6 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/hierarchy/dynamicresultset.hxx b/ucb/source/ucp/hierarchy/dynamicresultset.hxx
index 7d06819ef9..505d4ea5ae 100644
--- a/ucb/source/ucp/hierarchy/dynamicresultset.hxx
+++ b/ucb/source/ucp/hierarchy/dynamicresultset.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: dynamicresultset.hxx,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/hierarchy/hierarchycontent.cxx b/ucb/source/ucp/hierarchy/hierarchycontent.cxx
index 49774e943f..e868dfc023 100644
--- a/ucb/source/ucp/hierarchy/hierarchycontent.cxx
+++ b/ucb/source/ucp/hierarchy/hierarchycontent.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: hierarchycontent.cxx,v $
- * $Revision: 1.31 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -41,7 +38,7 @@
**************************************************************************
- Root Folder vs. 'normal' Folder
- - root doesn't support command 'delete'
+ - root doesn't support command 'delete'
- root doesn't support command 'insert'
- root needs not created via XContentCreator - queryContent with root
folder id ( HIERARCHY_ROOT_FOLDER_URL ) always returns a value != 0
@@ -457,8 +454,8 @@ uno::Any SAL_CALL HierarchyContent::execute(
aRet <<= getCommandInfo( Environment );
}
- else if ( isFolder() && aCommand.Name.equalsAsciiL(
- RTL_CONSTASCII_STRINGPARAM( "open" ) ) )
+ else if ( aCommand.Name.equalsAsciiL(
+ RTL_CONSTASCII_STRINGPARAM( "open" ) ) && isFolder() )
{
//////////////////////////////////////////////////////////////////
// open command for a folder content
@@ -481,9 +478,9 @@ uno::Any SAL_CALL HierarchyContent::execute(
= new DynamicResultSet( m_xSMgr, this, aOpenCommand );
aRet <<= xSet;
}
- else if ( ( m_eKind != ROOT ) && !isReadOnly() &&
- aCommand.Name.equalsAsciiL(
- RTL_CONSTASCII_STRINGPARAM( "insert" ) ) )
+ else if ( aCommand.Name.equalsAsciiL(
+ RTL_CONSTASCII_STRINGPARAM( "insert" ) ) &&
+ ( m_eKind != ROOT ) && !isReadOnly() )
{
//////////////////////////////////////////////////////////////////
// insert
@@ -508,9 +505,9 @@ uno::Any SAL_CALL HierarchyContent::execute(
: ucb::NameClash::ERROR;
insert( nNameClash, Environment );
}
- else if ( ( m_eKind != ROOT ) && !isReadOnly() &&
- aCommand.Name.equalsAsciiL(
- RTL_CONSTASCII_STRINGPARAM( "delete" ) ) )
+ else if ( aCommand.Name.equalsAsciiL(
+ RTL_CONSTASCII_STRINGPARAM( "delete" ) ) &&
+ ( m_eKind != ROOT ) && !isReadOnly() )
{
//////////////////////////////////////////////////////////////////
// delete
@@ -546,13 +543,13 @@ uno::Any SAL_CALL HierarchyContent::execute(
// Remove own and all children's Additional Core Properties.
removeAdditionalPropertySet( sal_True );
}
- else if ( isFolder() && !isReadOnly() &&
- aCommand.Name.equalsAsciiL(
- RTL_CONSTASCII_STRINGPARAM( "transfer" ) ) )
+ else if ( aCommand.Name.equalsAsciiL(
+ RTL_CONSTASCII_STRINGPARAM( "transfer" ) ) &&
+ isFolder() && !isReadOnly() )
{
//////////////////////////////////////////////////////////////////
// transfer
- // ( Not available at link objects )
+ // ( Not available at link objects )
//////////////////////////////////////////////////////////////////
ucb::TransferInfo aInfo;
@@ -571,6 +568,31 @@ uno::Any SAL_CALL HierarchyContent::execute(
transfer( aInfo, Environment );
}
+ else if ( aCommand.Name.equalsAsciiL(
+ RTL_CONSTASCII_STRINGPARAM( "createNewContent" ) ) &&
+ isFolder() && !isReadOnly() )
+ {
+ //////////////////////////////////////////////////////////////////
+ // createNewContent
+ // ( Not available at link objects )
+ //////////////////////////////////////////////////////////////////
+
+ ucb::ContentInfo aInfo;
+ if ( !( aCommand.Argument >>= aInfo ) )
+ {
+ OSL_ENSURE( sal_False, "Wrong argument type!" );
+ ucbhelper::cancelCommandExecution(
+ uno::makeAny( lang::IllegalArgumentException(
+ rtl::OUString::createFromAscii(
+ "Wrong argument type!" ),
+ static_cast< cppu::OWeakObject * >( this ),
+ -1 ) ),
+ Environment );
+ // Unreachable
+ }
+
+ aRet <<= createNewContent( aInfo );
+ }
else
{
//////////////////////////////////////////////////////////////////
@@ -607,54 +629,7 @@ uno::Sequence< ucb::ContentInfo > SAL_CALL
HierarchyContent::queryCreatableContentsInfo()
throw( uno::RuntimeException )
{
- if ( isFolder() )
- {
- osl::Guard< osl::Mutex > aGuard( m_aMutex );
-
- uno::Sequence< ucb::ContentInfo > aSeq( 2 );
-
- // Folder.
- aSeq.getArray()[ 0 ].Type
- = rtl::OUString::createFromAscii( HIERARCHY_FOLDER_CONTENT_TYPE );
- aSeq.getArray()[ 0 ].Attributes
- = ucb::ContentInfoAttribute::KIND_FOLDER;
-
- uno::Sequence< beans::Property > aFolderProps( 1 );
- aFolderProps.getArray()[ 0 ] = beans::Property(
- rtl::OUString::createFromAscii( "Title" ),
- -1,
- getCppuType( static_cast< const rtl::OUString * >( 0 ) ),
- beans::PropertyAttribute::BOUND );
- aSeq.getArray()[ 0 ].Properties = aFolderProps;
-
- // Link.
- aSeq.getArray()[ 1 ].Type
- = rtl::OUString::createFromAscii( HIERARCHY_LINK_CONTENT_TYPE );
- aSeq.getArray()[ 1 ].Attributes
- = ucb::ContentInfoAttribute::KIND_LINK;
-
- uno::Sequence< beans::Property > aLinkProps( 2 );
- aLinkProps.getArray()[ 0 ] = beans::Property(
- rtl::OUString::createFromAscii( "Title" ),
- -1,
- getCppuType( static_cast< const rtl::OUString * >( 0 ) ),
- beans::PropertyAttribute::BOUND );
- aLinkProps.getArray()[ 1 ] = beans::Property(
- rtl::OUString::createFromAscii( "TargetURL" ),
- -1,
- getCppuType( static_cast< const rtl::OUString * >( 0 ) ),
- beans::PropertyAttribute::BOUND );
- aSeq.getArray()[ 1 ].Properties = aLinkProps;
-
- return aSeq;
- }
- else
- {
- OSL_ENSURE( sal_False,
- "queryCreatableContentsInfo called on non-folder object!" );
-
- return uno::Sequence< ucb::ContentInfo >( 0 );
- }
+ return m_aProps.getCreatableContentsInfo();
}
//=========================================================================
@@ -974,7 +949,7 @@ sal_Bool HierarchyContent::exchangeIdentity(
aOldURL.getLength(),
xNewId->getContentIdentifier() );
uno::Reference< ucb::XContentIdentifier > xNewChildId
- = new ::ucbhelper::ContentIdentifier(
+ = new ::ucbhelper::ContentIdentifier(
m_xSMgr, aNewChildURL );
if ( !xChild->exchangeIdentity( xNewChildId ) )
@@ -1026,7 +1001,7 @@ uno::Reference< sdbc::XRow > HierarchyContent::getPropertyValues(
xRow->appendString ( rProp, rData.getContentType() );
}
else if ( rProp.Name.equalsAsciiL(
- RTL_CONSTASCII_STRINGPARAM( "Title" ) ) )
+ RTL_CONSTASCII_STRINGPARAM( "Title" ) ) )
{
xRow->appendString ( rProp, rData.getTitle() );
}
@@ -1041,6 +1016,12 @@ uno::Reference< sdbc::XRow > HierarchyContent::getPropertyValues(
xRow->appendBoolean( rProp, rData.getIsFolder() );
}
else if ( rProp.Name.equalsAsciiL(
+ RTL_CONSTASCII_STRINGPARAM( "CreatableContentsInfo" ) ) )
+ {
+ xRow->appendObject(
+ rProp, uno::makeAny( rData.getCreatableContentsInfo() ) );
+ }
+ else if ( rProp.Name.equalsAsciiL(
RTL_CONSTASCII_STRINGPARAM( "TargetURL" ) ) )
{
// TargetURL is only supported by links.
@@ -1123,6 +1104,15 @@ uno::Reference< sdbc::XRow > HierarchyContent::getPropertyValues(
// @@@ Might actually be read-only!
beans::PropertyAttribute::BOUND ),
rData.getTargetURL() );
+ xRow->appendObject(
+ beans::Property(
+ rtl::OUString::createFromAscii( "CreatableContentsInfo" ),
+ -1,
+ getCppuType( static_cast<
+ const uno::Sequence< ucb::ContentInfo > * >( 0 ) ),
+ beans::PropertyAttribute::BOUND
+ | beans::PropertyAttribute::READONLY ),
+ uno::makeAny( rData.getCreatableContentsInfo() ) );
// Append all Additional Core Properties.
@@ -1161,11 +1151,11 @@ uno::Sequence< uno::Any > HierarchyContent::setPropertyValues(
beans::PropertyChangeEvent aEvent;
aEvent.Source = static_cast< cppu::OWeakObject * >( this );
- aEvent.Further = sal_False;
-// aEvent.PropertyName =
+ aEvent.Further = sal_False;
+// aEvent.PropertyName =
aEvent.PropertyHandle = -1;
-// aEvent.OldValue =
-// aEvent.NewValue =
+// aEvent.OldValue =
+// aEvent.NewValue =
const beans::PropertyValue* pValues = rValues.getConstArray();
sal_Int32 nCount = rValues.getLength();
@@ -1210,6 +1200,15 @@ uno::Sequence< uno::Any > HierarchyContent::setPropertyValues(
static_cast< cppu::OWeakObject * >( this ) );
}
else if ( rValue.Name.equalsAsciiL(
+ RTL_CONSTASCII_STRINGPARAM( "CreatableContentsInfo" ) ) )
+ {
+ // Read-only property!
+ aRet[ n ] <<= lang::IllegalAccessException(
+ rtl::OUString::createFromAscii(
+ "Property is read-only!" ),
+ static_cast< cppu::OWeakObject * >( this ) );
+ }
+ else if ( rValue.Name.equalsAsciiL(
RTL_CONSTASCII_STRINGPARAM( "Title" ) ) )
{
if ( isReadOnly() )
@@ -1238,7 +1237,7 @@ uno::Sequence< uno::Any > HierarchyContent::setPropertyValues(
m_aProps.setTitle( aNewValue );
m_aProps.setName(
- ::ucb_impl::urihelper::encodeSegment(
+ ::ucb_impl::urihelper::encodeSegment(
aNewValue ) );
// property change event will be set later...
@@ -1350,7 +1349,7 @@ uno::Sequence< uno::Any > HierarchyContent::setPropertyValues(
rValue.Name, rValue.Value );
aEvent.PropertyName = rValue.Name;
- aEvent.OldValue = aOldValue;
+ aEvent.OldValue = aOldValue;
aEvent.NewValue = rValue.Value;
aChanges.getArray()[ nChanged ] = aEvent;
@@ -1953,3 +1952,58 @@ void HierarchyContent::transfer(
}
}
+//=========================================================================
+//=========================================================================
+//
+// HierarchyContentProperties Implementation.
+//
+//=========================================================================
+//=========================================================================
+
+uno::Sequence< ucb::ContentInfo >
+HierarchyContentProperties::getCreatableContentsInfo() const
+{
+ if ( getIsFolder() )
+ {
+ uno::Sequence< ucb::ContentInfo > aSeq( 2 );
+
+ // Folder.
+ aSeq.getArray()[ 0 ].Type
+ = rtl::OUString::createFromAscii( HIERARCHY_FOLDER_CONTENT_TYPE );
+ aSeq.getArray()[ 0 ].Attributes
+ = ucb::ContentInfoAttribute::KIND_FOLDER;
+
+ uno::Sequence< beans::Property > aFolderProps( 1 );
+ aFolderProps.getArray()[ 0 ] = beans::Property(
+ rtl::OUString::createFromAscii( "Title" ),
+ -1,
+ getCppuType( static_cast< const rtl::OUString * >( 0 ) ),
+ beans::PropertyAttribute::BOUND );
+ aSeq.getArray()[ 0 ].Properties = aFolderProps;
+
+ // Link.
+ aSeq.getArray()[ 1 ].Type
+ = rtl::OUString::createFromAscii( HIERARCHY_LINK_CONTENT_TYPE );
+ aSeq.getArray()[ 1 ].Attributes
+ = ucb::ContentInfoAttribute::KIND_LINK;
+
+ uno::Sequence< beans::Property > aLinkProps( 2 );
+ aLinkProps.getArray()[ 0 ] = beans::Property(
+ rtl::OUString::createFromAscii( "Title" ),
+ -1,
+ getCppuType( static_cast< const rtl::OUString * >( 0 ) ),
+ beans::PropertyAttribute::BOUND );
+ aLinkProps.getArray()[ 1 ] = beans::Property(
+ rtl::OUString::createFromAscii( "TargetURL" ),
+ -1,
+ getCppuType( static_cast< const rtl::OUString * >( 0 ) ),
+ beans::PropertyAttribute::BOUND );
+ aSeq.getArray()[ 1 ].Properties = aLinkProps;
+
+ return aSeq;
+ }
+ else
+ {
+ return uno::Sequence< ucb::ContentInfo >( 0 );
+ }
+}
diff --git a/ucb/source/ucp/hierarchy/hierarchycontent.hxx b/ucb/source/ucp/hierarchy/hierarchycontent.hxx
index 168ada3b23..4dcb339ad6 100644
--- a/ucb/source/ucp/hierarchy/hierarchycontent.hxx
+++ b/ucb/source/ucp/hierarchy/hierarchycontent.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: hierarchycontent.hxx,v $
- * $Revision: 1.13 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -101,6 +98,9 @@ public:
sal_Bool getIsDocument() const { return !getIsFolder(); }
+ com::sun::star::uno::Sequence< com::sun::star::ucb::ContentInfo >
+ getCreatableContentsInfo() const;
+
const HierarchyEntryData & getHierarchyEntryData() const { return m_aData; }
private:
@@ -117,14 +117,14 @@ class HierarchyContent : public ::ucbhelper::ContentImplHelper,
{
enum ContentKind { LINK, FOLDER, ROOT };
enum ContentState { TRANSIENT, // created via CreateNewContent,
- // but did not process "insert" yet
+ // but did not process "insert" yet
PERSISTENT, // processed "insert"
- DEAD // processed "delete"
+ DEAD // processed "delete"
};
HierarchyContentProperties m_aProps;
- ContentKind m_eKind;
- ContentState m_eState;
+ ContentKind m_eKind;
+ ContentState m_eState;
HierarchyContentProvider* m_pProvider;
bool m_bCheckedReadOnly;
bool m_bIsReadOnly;
@@ -194,11 +194,11 @@ private:
sal_Bool exchangeIdentity(
const ::com::sun::star::uno::Reference<
- ::com::sun::star::ucb::XContentIdentifier >& xNewId );
+ ::com::sun::star::ucb::XContentIdentifier >& xNewId );
::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XRow >
getPropertyValues( const ::com::sun::star::uno::Sequence<
- ::com::sun::star::beans::Property >& rProperties );
+ ::com::sun::star::beans::Property >& rProperties );
::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any >
setPropertyValues(
const ::com::sun::star::uno::Sequence<
@@ -270,7 +270,7 @@ public:
execute( const com::sun::star::ucb::Command& aCommand,
sal_Int32 CommandId,
const com::sun::star::uno::Reference<
- com::sun::star::ucb::XCommandEnvironment >& Environment )
+ com::sun::star::ucb::XCommandEnvironment >& Environment )
throw( com::sun::star::uno::Exception,
com::sun::star::ucb::CommandAbortedException,
com::sun::star::uno::RuntimeException );
@@ -300,7 +300,7 @@ public:
getPropertyValues( const ::com::sun::star::uno::Reference<
::com::sun::star::lang::XMultiServiceFactory >& rSMgr,
const ::com::sun::star::uno::Sequence<
- ::com::sun::star::beans::Property >& rProperties,
+ ::com::sun::star::beans::Property >& rProperties,
const HierarchyContentProperties& rData,
HierarchyContentProvider* pProvider,
const ::rtl::OUString& rContentId );
diff --git a/ucb/source/ucp/hierarchy/hierarchycontentcaps.cxx b/ucb/source/ucp/hierarchy/hierarchycontentcaps.cxx
index 2adaa8cbb3..32677da383 100644
--- a/ucb/source/ucp/hierarchy/hierarchycontentcaps.cxx
+++ b/ucb/source/ucp/hierarchy/hierarchycontentcaps.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: hierarchycontentcaps.cxx,v $
- * $Revision: 1.9 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -39,25 +36,28 @@
Props/Commands:
- root folder folder link link
- (new) (new)
+ root folder folder link link
+ (new) (new)
----------------------------------------------------------------
- ContentType x x x x x
- IsDocument x x x x x
- IsFolder x x x x x
- Title x x x x x
- TargetURL x x
+ ContentType x x x x x
+ IsDocument x x x x x
+ IsFolder x x x x x
+ Title x x x x x
+ TargetURL x x
+ CreatableContentsInfo x x x x x
- getCommandInfo x x x x x
- getPropertySetInfo x x x x x
- getPropertyValues x x x x x
- setPropertyValues x x x x x
- insert x x
- delete x x
- open x x
- transfer x x
+ getCommandInfo x x x x x
+ getPropertySetInfo x x x x x
+ getPropertyValues x x x x x
+ setPropertyValues x x x x x
+ createNewContent x x
+ insert x x
+ delete x x
+ open x x
+ transfer x x
*************************************************************************/
+
#include <com/sun/star/beans/Property.hpp>
#include <com/sun/star/beans/PropertyAttribute.hpp>
#include <com/sun/star/beans/PropertyValue.hpp>
@@ -76,6 +76,12 @@ using namespace hierarchy_ucp;
//
//=========================================================================
+#define MAKEPROPSEQUENCE( a ) \
+ uno::Sequence< beans::Property >( a, sizeof( a ) / sizeof( a[ 0 ] ) )
+
+#define MAKECMDSEQUENCE( a ) \
+ uno::Sequence< ucb::CommandInfo >( a, sizeof( a ) / sizeof( a[ 0 ] ) )
+
//=========================================================================
//
// IMPORTENT: If any property data ( name / type / ... ) are changed, then
@@ -143,13 +149,20 @@ uno::Sequence< beans::Property > HierarchyContent::getProperties(
getCppuType( static_cast< const rtl::OUString * >( 0 ) ),
beans::PropertyAttribute::BOUND
| beans::PropertyAttribute::READONLY
- )
+ ),
+ beans::Property(
+ rtl::OUString( RTL_CONSTASCII_USTRINGPARAM(
+ "CreatableContentsInfo" ) ),
+ -1,
+ getCppuType( static_cast<
+ const uno::Sequence< ucb::ContentInfo > * >( 0 ) ),
+ beans::PropertyAttribute::BOUND
+ | beans::PropertyAttribute::READONLY )
///////////////////////////////////////////////////////////
// New properties
///////////////////////////////////////////////////////////
};
- return uno::Sequence<
- beans::Property >( aLinkPropertyInfoTable, 5 );
+ return MAKEPROPSEQUENCE( aLinkPropertyInfoTable );
}
else
{
@@ -195,13 +208,20 @@ uno::Sequence< beans::Property > HierarchyContent::getProperties(
-1,
getCppuType( static_cast< const rtl::OUString * >( 0 ) ),
beans::PropertyAttribute::BOUND
- )
+ ),
+ beans::Property(
+ rtl::OUString( RTL_CONSTASCII_USTRINGPARAM(
+ "CreatableContentsInfo" ) ),
+ -1,
+ getCppuType( static_cast<
+ const uno::Sequence< ucb::ContentInfo > * >( 0 ) ),
+ beans::PropertyAttribute::BOUND
+ | beans::PropertyAttribute::READONLY )
///////////////////////////////////////////////////////////
// New properties
///////////////////////////////////////////////////////////
};
- return uno::Sequence<
- beans::Property >( aLinkPropertyInfoTable, 5 );
+ return MAKEPROPSEQUENCE( aLinkPropertyInfoTable );
}
}
else if ( m_eKind == FOLDER )
@@ -248,16 +268,23 @@ uno::Sequence< beans::Property > HierarchyContent::getProperties(
getCppuType( static_cast< const rtl::OUString * >( 0 ) ),
beans::PropertyAttribute::BOUND
| beans::PropertyAttribute::READONLY
- )
+ ),
///////////////////////////////////////////////////////////
// Optional standard properties
///////////////////////////////////////////////////////////
+ beans::Property(
+ rtl::OUString( RTL_CONSTASCII_USTRINGPARAM(
+ "CreatableContentsInfo" ) ),
+ -1,
+ getCppuType( static_cast<
+ const uno::Sequence< ucb::ContentInfo > * >( 0 ) ),
+ beans::PropertyAttribute::BOUND
+ | beans::PropertyAttribute::READONLY )
///////////////////////////////////////////////////////////
// New properties
///////////////////////////////////////////////////////////
};
- return uno::Sequence<
- beans::Property >( aFolderPropertyInfoTable, 4 );
+ return MAKEPROPSEQUENCE( aFolderPropertyInfoTable );
}
else
{
@@ -294,16 +321,23 @@ uno::Sequence< beans::Property > HierarchyContent::getProperties(
-1,
getCppuType( static_cast< const rtl::OUString * >( 0 ) ),
beans::PropertyAttribute::BOUND
- )
+ ),
///////////////////////////////////////////////////////////
// Optional standard properties
///////////////////////////////////////////////////////////
+ beans::Property(
+ rtl::OUString( RTL_CONSTASCII_USTRINGPARAM(
+ "CreatableContentsInfo" ) ),
+ -1,
+ getCppuType( static_cast<
+ const uno::Sequence< ucb::ContentInfo > * >( 0 ) ),
+ beans::PropertyAttribute::BOUND
+ | beans::PropertyAttribute::READONLY )
///////////////////////////////////////////////////////////
// New properties
///////////////////////////////////////////////////////////
};
- return uno::Sequence<
- beans::Property >( aFolderPropertyInfoTable, 4 );
+ return MAKEPROPSEQUENCE( aFolderPropertyInfoTable );
}
}
else
@@ -314,6 +348,9 @@ uno::Sequence< beans::Property > HierarchyContent::getProperties(
//
//=================================================================
+ // Currently no difference between reonly /read-write
+ // -> all props ar read-only
+
static beans::Property aRootFolderPropertyInfoTable[] =
{
///////////////////////////////////////////////////////////////
@@ -346,16 +383,23 @@ uno::Sequence< beans::Property > HierarchyContent::getProperties(
getCppuType( static_cast< const rtl::OUString * >( 0 ) ),
beans::PropertyAttribute::BOUND
| beans::PropertyAttribute::READONLY
- )
+ ),
///////////////////////////////////////////////////////////////
// Optional standard properties
///////////////////////////////////////////////////////////////
+ beans::Property(
+ rtl::OUString( RTL_CONSTASCII_USTRINGPARAM(
+ "CreatableContentsInfo" ) ),
+ -1,
+ getCppuType( static_cast<
+ const uno::Sequence< ucb::ContentInfo > * >( 0 ) ),
+ beans::PropertyAttribute::BOUND
+ | beans::PropertyAttribute::READONLY )
///////////////////////////////////////////////////////////////
// New properties
///////////////////////////////////////////////////////////////
};
- return uno::Sequence<
- beans::Property >( aRootFolderPropertyInfoTable, 4 );
+ return MAKEPROPSEQUENCE( aRootFolderPropertyInfoTable );
}
}
@@ -416,8 +460,7 @@ uno::Sequence< ucb::CommandInfo > HierarchyContent::getCommands(
// New commands
///////////////////////////////////////////////////////////
};
- return uno::Sequence<
- ucb::CommandInfo >( aLinkCommandInfoTable, 4 );
+ return MAKECMDSEQUENCE( aLinkCommandInfoTable );
}
else
{
@@ -470,8 +513,7 @@ uno::Sequence< ucb::CommandInfo > HierarchyContent::getCommands(
// New commands
///////////////////////////////////////////////////////////
};
- return uno::Sequence<
- ucb::CommandInfo >( aLinkCommandInfoTable, 6 );
+ return MAKECMDSEQUENCE( aLinkCommandInfoTable );
}
}
else if ( m_eKind == FOLDER )
@@ -529,8 +571,7 @@ uno::Sequence< ucb::CommandInfo > HierarchyContent::getCommands(
// New commands
///////////////////////////////////////////////////////////
};
- return uno::Sequence<
- ucb::CommandInfo >( aFolderCommandInfoTable, 5 );
+ return MAKECMDSEQUENCE( aFolderCommandInfoTable );
}
else
{
@@ -589,13 +630,18 @@ uno::Sequence< ucb::CommandInfo > HierarchyContent::getCommands(
rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "transfer" ) ),
-1,
getCppuType( static_cast< ucb::TransferInfo * >( 0 ) )
+ ),
+ ucb::CommandInfo(
+ rtl::OUString(
+ RTL_CONSTASCII_USTRINGPARAM( "createNewContent" ) ),
+ -1,
+ getCppuType( static_cast< ucb::ContentInfo * >( 0 ) )
)
///////////////////////////////////////////////////////////
// New commands
///////////////////////////////////////////////////////////
};
- return uno::Sequence<
- ucb::CommandInfo >( aFolderCommandInfoTable, 8 );
+ return MAKECMDSEQUENCE( aFolderCommandInfoTable );
}
}
else
@@ -653,8 +699,7 @@ uno::Sequence< ucb::CommandInfo > HierarchyContent::getCommands(
// New commands
///////////////////////////////////////////////////////////
};
- return uno::Sequence<
- ucb::CommandInfo >( aRootFolderCommandInfoTable, 5 );
+ return MAKECMDSEQUENCE( aRootFolderCommandInfoTable );
}
else
{
@@ -703,13 +748,18 @@ uno::Sequence< ucb::CommandInfo > HierarchyContent::getCommands(
rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "transfer" ) ),
-1,
getCppuType( static_cast< ucb::TransferInfo * >( 0 ) )
+ ),
+ ucb::CommandInfo(
+ rtl::OUString(
+ RTL_CONSTASCII_USTRINGPARAM( "createNewContent" ) ),
+ -1,
+ getCppuType( static_cast< ucb::ContentInfo * >( 0 ) )
)
///////////////////////////////////////////////////////////
// New commands
///////////////////////////////////////////////////////////
};
- return uno::Sequence<
- ucb::CommandInfo >( aRootFolderCommandInfoTable, 6 );
+ return MAKECMDSEQUENCE( aRootFolderCommandInfoTable );
}
}
}
diff --git a/ucb/source/ucp/hierarchy/hierarchydata.cxx b/ucb/source/ucp/hierarchy/hierarchydata.cxx
index eb88177691..bed1d9105d 100644
--- a/ucb/source/ucp/hierarchy/hierarchydata.cxx
+++ b/ucb/source/ucp/hierarchy/hierarchydata.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: hierarchydata.cxx,v $
- * $Revision: 1.28 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/hierarchy/hierarchydata.hxx b/ucb/source/ucp/hierarchy/hierarchydata.hxx
index 4add72a283..419a66b0c6 100644
--- a/ucb/source/ucp/hierarchy/hierarchydata.hxx
+++ b/ucb/source/ucp/hierarchy/hierarchydata.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: hierarchydata.hxx,v $
- * $Revision: 1.14 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/hierarchy/hierarchydatasource.cxx b/ucb/source/ucp/hierarchy/hierarchydatasource.cxx
index 933beec7f7..ee1e31821d 100644
--- a/ucb/source/ucp/hierarchy/hierarchydatasource.cxx
+++ b/ucb/source/ucp/hierarchy/hierarchydatasource.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: hierarchydatasource.cxx,v $
- * $Revision: 1.11 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/hierarchy/hierarchydatasource.hxx b/ucb/source/ucp/hierarchy/hierarchydatasource.hxx
index 4681a53df2..2e4a7bc7d3 100644
--- a/ucb/source/ucp/hierarchy/hierarchydatasource.hxx
+++ b/ucb/source/ucp/hierarchy/hierarchydatasource.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: hierarchydatasource.hxx,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/hierarchy/hierarchydatasupplier.cxx b/ucb/source/ucp/hierarchy/hierarchydatasupplier.cxx
index d254d4259b..ebd5739afb 100644
--- a/ucb/source/ucp/hierarchy/hierarchydatasupplier.cxx
+++ b/ucb/source/ucp/hierarchy/hierarchydatasupplier.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: hierarchydatasupplier.cxx,v $
- * $Revision: 1.12 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/hierarchy/hierarchydatasupplier.hxx b/ucb/source/ucp/hierarchy/hierarchydatasupplier.hxx
index a18d450310..1d1755b197 100644
--- a/ucb/source/ucp/hierarchy/hierarchydatasupplier.hxx
+++ b/ucb/source/ucp/hierarchy/hierarchydatasupplier.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: hierarchydatasupplier.hxx,v $
- * $Revision: 1.7 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/hierarchy/hierarchyprovider.cxx b/ucb/source/ucp/hierarchy/hierarchyprovider.cxx
index cef8e4759e..e35aa5a22e 100644
--- a/ucb/source/ucp/hierarchy/hierarchyprovider.cxx
+++ b/ucb/source/ucp/hierarchy/hierarchyprovider.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: hierarchyprovider.cxx,v $
- * $Revision: 1.18 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/hierarchy/hierarchyprovider.hxx b/ucb/source/ucp/hierarchy/hierarchyprovider.hxx
index 4d2f09142a..1db4ce758e 100644
--- a/ucb/source/ucp/hierarchy/hierarchyprovider.hxx
+++ b/ucb/source/ucp/hierarchy/hierarchyprovider.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: hierarchyprovider.hxx,v $
- * $Revision: 1.9 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/hierarchy/hierarchyservices.cxx b/ucb/source/ucp/hierarchy/hierarchyservices.cxx
index 6df458de86..3249334d90 100644
--- a/ucb/source/ucp/hierarchy/hierarchyservices.cxx
+++ b/ucb/source/ucp/hierarchy/hierarchyservices.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: hierarchyservices.cxx,v $
- * $Revision: 1.8 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/hierarchy/hierarchyuri.cxx b/ucb/source/ucp/hierarchy/hierarchyuri.cxx
index 7339e34341..51b18c6482 100644
--- a/ucb/source/ucp/hierarchy/hierarchyuri.cxx
+++ b/ucb/source/ucp/hierarchy/hierarchyuri.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: hierarchyuri.cxx,v $
- * $Revision: 1.11 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/hierarchy/hierarchyuri.hxx b/ucb/source/ucp/hierarchy/hierarchyuri.hxx
index 46b9e92a0d..6738214cb6 100644
--- a/ucb/source/ucp/hierarchy/hierarchyuri.hxx
+++ b/ucb/source/ucp/hierarchy/hierarchyuri.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: hierarchyuri.hxx,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/hierarchy/makefile.mk b/ucb/source/ucp/hierarchy/makefile.mk
index b71ee7fa18..a968537873 100644
--- a/ucb/source/ucp/hierarchy/makefile.mk
+++ b/ucb/source/ucp/hierarchy/makefile.mk
@@ -2,14 +2,10 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.15 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/inc/urihelper.hxx b/ucb/source/ucp/inc/urihelper.hxx
index a3618293ed..fbf4cdb76f 100644
--- a/ucb/source/ucp/inc/urihelper.hxx
+++ b/ucb/source/ucp/inc/urihelper.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: urihelper.hxx,v $
- * $Revision: 1.6 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/odma/makefile.mk b/ucb/source/ucp/odma/makefile.mk
index 290898e655..d9ddcbfdf0 100644
--- a/ucb/source/ucp/odma/makefile.mk
+++ b/ucb/source/ucp/odma/makefile.mk
@@ -2,14 +2,10 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.8 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/odma/odma_content.cxx b/ucb/source/ucp/odma/odma_content.cxx
index fc4be63462..663436b2cb 100644
--- a/ucb/source/ucp/odma/odma_content.cxx
+++ b/ucb/source/ucp/odma/odma_content.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: odma_content.cxx,v $
- * $Revision: 1.7 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/odma/odma_content.hxx b/ucb/source/ucp/odma/odma_content.hxx
index 6c824176ed..ab50e1aec7 100644
--- a/ucb/source/ucp/odma/odma_content.hxx
+++ b/ucb/source/ucp/odma/odma_content.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: odma_content.hxx,v $
- * $Revision: 1.6 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/odma/odma_contentcaps.cxx b/ucb/source/ucp/odma/odma_contentcaps.cxx
index a9df4574c4..aa030af6fd 100644
--- a/ucb/source/ucp/odma/odma_contentcaps.cxx
+++ b/ucb/source/ucp/odma/odma_contentcaps.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: odma_contentcaps.cxx,v $
- * $Revision: 1.7 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/odma/odma_contentprops.hxx b/ucb/source/ucp/odma/odma_contentprops.hxx
index a5b5c7e41e..8ac9fae68f 100644
--- a/ucb/source/ucp/odma/odma_contentprops.hxx
+++ b/ucb/source/ucp/odma/odma_contentprops.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: odma_contentprops.hxx,v $
- * $Revision: 1.6 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/odma/odma_datasupplier.cxx b/ucb/source/ucp/odma/odma_datasupplier.cxx
index a047921752..a9024d4e64 100644
--- a/ucb/source/ucp/odma/odma_datasupplier.cxx
+++ b/ucb/source/ucp/odma/odma_datasupplier.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: odma_datasupplier.cxx,v $
- * $Revision: 1.7 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/odma/odma_datasupplier.hxx b/ucb/source/ucp/odma/odma_datasupplier.hxx
index d9624d20f0..3653d0bdc4 100644
--- a/ucb/source/ucp/odma/odma_datasupplier.hxx
+++ b/ucb/source/ucp/odma/odma_datasupplier.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: odma_datasupplier.hxx,v $
- * $Revision: 1.6 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/odma/odma_inputstream.cxx b/ucb/source/ucp/odma/odma_inputstream.cxx
index 6de50a90c2..d3011f56d7 100644
--- a/ucb/source/ucp/odma/odma_inputstream.cxx
+++ b/ucb/source/ucp/odma/odma_inputstream.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: odma_inputstream.cxx,v $
- * $Revision: 1.8 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/odma/odma_inputstream.hxx b/ucb/source/ucp/odma/odma_inputstream.hxx
index 93ae4a066b..c5fde77743 100644
--- a/ucb/source/ucp/odma/odma_inputstream.hxx
+++ b/ucb/source/ucp/odma/odma_inputstream.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: odma_inputstream.hxx,v $
- * $Revision: 1.6 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/odma/odma_lib.cxx b/ucb/source/ucp/odma/odma_lib.cxx
index e837c51ad6..b6a0d3ada1 100644
--- a/ucb/source/ucp/odma/odma_lib.cxx
+++ b/ucb/source/ucp/odma/odma_lib.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: odma_lib.cxx,v $
- * $Revision: 1.6 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/odma/odma_lib.hxx b/ucb/source/ucp/odma/odma_lib.hxx
index 2fbc1cda1e..0c9180ee7d 100644
--- a/ucb/source/ucp/odma/odma_lib.hxx
+++ b/ucb/source/ucp/odma/odma_lib.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: odma_lib.hxx,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/odma/odma_main.cxx b/ucb/source/ucp/odma/odma_main.cxx
index 47152d0921..ccd032f686 100644
--- a/ucb/source/ucp/odma/odma_main.cxx
+++ b/ucb/source/ucp/odma/odma_main.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: odma_main.cxx,v $
- * $Revision: 1.7 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/odma/odma_provider.cxx b/ucb/source/ucp/odma/odma_provider.cxx
index 988af49933..c6a30acc86 100644
--- a/ucb/source/ucp/odma/odma_provider.cxx
+++ b/ucb/source/ucp/odma/odma_provider.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: odma_provider.cxx,v $
- * $Revision: 1.9 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/odma/odma_provider.hxx b/ucb/source/ucp/odma/odma_provider.hxx
index 682e44fa64..cbd8e6b49f 100644
--- a/ucb/source/ucp/odma/odma_provider.hxx
+++ b/ucb/source/ucp/odma/odma_provider.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: odma_provider.hxx,v $
- * $Revision: 1.6 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/odma/odma_resultset.cxx b/ucb/source/ucp/odma/odma_resultset.cxx
index 2fdd2aa0fd..0e87441c77 100644
--- a/ucb/source/ucp/odma/odma_resultset.cxx
+++ b/ucb/source/ucp/odma/odma_resultset.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: odma_resultset.cxx,v $
- * $Revision: 1.7 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/odma/odma_resultset.hxx b/ucb/source/ucp/odma/odma_resultset.hxx
index cb1ac90597..690f73d19f 100644
--- a/ucb/source/ucp/odma/odma_resultset.hxx
+++ b/ucb/source/ucp/odma/odma_resultset.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: odma_resultset.hxx,v $
- * $Revision: 1.6 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/odma/odma_services.cxx b/ucb/source/ucp/odma/odma_services.cxx
index 1acb689f86..1140083942 100644
--- a/ucb/source/ucp/odma/odma_services.cxx
+++ b/ucb/source/ucp/odma/odma_services.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: odma_services.cxx,v $
- * $Revision: 1.7 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/package/makefile.mk b/ucb/source/ucp/package/makefile.mk
index 4b4f066ac1..bd4707cccc 100644
--- a/ucb/source/ucp/package/makefile.mk
+++ b/ucb/source/ucp/package/makefile.mk
@@ -2,14 +2,10 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.11 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/package/pkgcontent.cxx b/ucb/source/ucp/package/pkgcontent.cxx
index eafac3d769..56d60eb551 100644
--- a/ucb/source/ucp/package/pkgcontent.cxx
+++ b/ucb/source/ucp/package/pkgcontent.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: pkgcontent.cxx,v $
- * $Revision: 1.59 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -55,9 +52,7 @@
#include <com/sun/star/sdbc/XRow.hpp>
#include <com/sun/star/ucb/ContentInfoAttribute.hpp>
#include <com/sun/star/ucb/InsertCommandArgument.hpp>
-#ifndef _COM_SUN_STAR_UCB_INTERACTIVEBADTRANSFRERURLEXCEPTION_HPP_
#include <com/sun/star/ucb/InteractiveBadTransferURLException.hpp>
-#endif
#include <com/sun/star/ucb/MissingInputStreamException.hpp>
#include <com/sun/star/ucb/NameClash.hpp>
#include <com/sun/star/ucb/NameClashException.hpp>
@@ -84,9 +79,9 @@
using namespace com::sun::star;
using namespace package_ucp;
-#define NONE_MODIFIED sal_uInt32( 0x00 )
-#define MEDIATYPE_MODIFIED sal_uInt32( 0x01 )
-#define COMPRESSED_MODIFIED sal_uInt32( 0x02 )
+#define NONE_MODIFIED sal_uInt32( 0x00 )
+#define MEDIATYPE_MODIFIED sal_uInt32( 0x01 )
+#define COMPRESSED_MODIFIED sal_uInt32( 0x02 )
#define ENCRYPTED_MODIFIED sal_uInt32( 0x04 )
#define ENCRYPTIONKEY_MODIFIED sal_uInt32( 0x08 )
@@ -105,17 +100,60 @@ ContentProperties::ContentProperties( const rtl::OUString& rContentType )
bEncrypted( sal_False ),
bHasEncryptedEntries( sal_False )
{
- bIsFolder = rContentType.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( PACKAGE_FOLDER_CONTENT_TYPE ) )
- || rContentType.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( PACKAGE_ZIP_FOLDER_CONTENT_TYPE ) );
+ bIsFolder = rContentType.equalsAsciiL(
+ RTL_CONSTASCII_STRINGPARAM( PACKAGE_FOLDER_CONTENT_TYPE ) )
+ || rContentType.equalsAsciiL(
+ RTL_CONSTASCII_STRINGPARAM( PACKAGE_ZIP_FOLDER_CONTENT_TYPE ) );
bIsDocument = !bIsFolder;
OSL_ENSURE( bIsFolder ||
- rContentType.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( PACKAGE_STREAM_CONTENT_TYPE ) ) ||
- rContentType.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( PACKAGE_ZIP_STREAM_CONTENT_TYPE ) ),
+ rContentType.equalsAsciiL(
+ RTL_CONSTASCII_STRINGPARAM( PACKAGE_STREAM_CONTENT_TYPE ) )
+ || rContentType.equalsAsciiL(
+ RTL_CONSTASCII_STRINGPARAM( PACKAGE_ZIP_STREAM_CONTENT_TYPE ) ),
"ContentProperties::ContentProperties - Unknown type!" );
}
//=========================================================================
+
+uno::Sequence< ucb::ContentInfo >
+ContentProperties::getCreatableContentsInfo( PackageUri const & rUri ) const
+{
+ if ( bIsFolder )
+ {
+ uno::Sequence< beans::Property > aProps( 1 );
+ aProps.getArray()[ 0 ] = beans::Property(
+ rtl::OUString::createFromAscii( "Title" ),
+ -1,
+ getCppuType( static_cast< const rtl::OUString * >( 0 ) ),
+ beans::PropertyAttribute::BOUND );
+
+ uno::Sequence< ucb::ContentInfo > aSeq( 2 );
+
+ // Folder.
+ aSeq.getArray()[ 0 ].Type
+ = Content::getContentType( rUri.getScheme(), sal_True );
+ aSeq.getArray()[ 0 ].Attributes
+ = ucb::ContentInfoAttribute::KIND_FOLDER;
+ aSeq.getArray()[ 0 ].Properties = aProps;
+
+ // Stream.
+ aSeq.getArray()[ 1 ].Type
+ = Content::getContentType( rUri.getScheme(), sal_False );
+ aSeq.getArray()[ 1 ].Attributes
+ = ucb::ContentInfoAttribute::INSERT_WITH_INPUTSTREAM
+ | ucb::ContentInfoAttribute::KIND_DOCUMENT;
+ aSeq.getArray()[ 1 ].Properties = aProps;
+
+ return aSeq;
+ }
+ else
+ {
+ return uno::Sequence< ucb::ContentInfo >( 0 );
+ }
+}
+
+//=========================================================================
//=========================================================================
//
// Content Implementation.
@@ -166,9 +204,9 @@ Content* Content::create(
ucb::ContentInfo aInfo;
if ( bFolder || aURI.isRootFolder() )
- aInfo.Type = GetContentType( aURI.getScheme(), sal_True );
+ aInfo.Type = getContentType( aURI.getScheme(), sal_True );
else
- aInfo.Type = GetContentType( aURI.getScheme(), sal_False );
+ aInfo.Type = getContentType( aURI.getScheme(), sal_False );
return new Content( rxSMgr, pProvider, xId, xPackage, aURI, aInfo );
}
@@ -188,9 +226,9 @@ Content* Content::create(
PackageUri aURI( Identifier->getContentIdentifier() );
if ( !Info.Type.equalsIgnoreAsciiCase(
- GetContentType( aURI.getScheme(), sal_True ) ) &&
+ getContentType( aURI.getScheme(), sal_True ) ) &&
!Info.Type.equalsIgnoreAsciiCase(
- GetContentType( aURI.getScheme(), sal_False ) ) )
+ getContentType( aURI.getScheme(), sal_False ) ) )
return 0;
uno::Reference< container::XHierarchicalNameAccess > xPackage;
@@ -210,13 +248,13 @@ Content* Content::create(
//=========================================================================
// static
-::rtl::OUString Content::GetContentType(
+::rtl::OUString Content::getContentType(
const ::rtl::OUString& aScheme, sal_Bool bFolder )
{
return ( rtl::OUString::createFromAscii( "application/" )
+ aScheme
- + ( bFolder
- ? rtl::OUString::createFromAscii( "-folder" )
+ + ( bFolder
+ ? rtl::OUString::createFromAscii( "-folder" )
: rtl::OUString::createFromAscii( "-stream" ) ) );
}
@@ -294,7 +332,7 @@ uno::Any SAL_CALL Content::queryInterface( const uno::Type & rType )
aRet = cppu::queryInterface(
rType, static_cast< ucb::XContentCreator * >( this ) );
- return aRet.hasValue() ? aRet : ContentImplHelper::queryInterface( rType );
+ return aRet.hasValue() ? aRet : ContentImplHelper::queryInterface( rType );
}
//=========================================================================
@@ -609,7 +647,7 @@ uno::Any SAL_CALL Content::execute(
{
//////////////////////////////////////////////////////////////////
// transfer
- // ( Not available at stream objects )
+ // ( Not available at stream objects )
//////////////////////////////////////////////////////////////////
ucb::TransferInfo aInfo;
@@ -628,11 +666,36 @@ uno::Any SAL_CALL Content::execute(
transfer( aInfo, Environment );
}
else if ( aCommand.Name.equalsAsciiL(
+ RTL_CONSTASCII_STRINGPARAM( "createNewContent" ) ) &&
+ isFolder() )
+ {
+ //////////////////////////////////////////////////////////////////
+ // createNewContent
+ // ( Not available at stream objects )
+ //////////////////////////////////////////////////////////////////
+
+ ucb::ContentInfo aInfo;
+ if ( !( aCommand.Argument >>= aInfo ) )
+ {
+ OSL_ENSURE( sal_False, "Wrong argument type!" );
+ ucbhelper::cancelCommandExecution(
+ uno::makeAny( lang::IllegalArgumentException(
+ rtl::OUString::createFromAscii(
+ "Wrong argument type!" ),
+ static_cast< cppu::OWeakObject * >( this ),
+ -1 ) ),
+ Environment );
+ // Unreachable
+ }
+
+ aRet <<= createNewContent( aInfo );
+ }
+ else if ( aCommand.Name.equalsAsciiL(
RTL_CONSTASCII_STRINGPARAM( "flush" ) ) )
{
//////////////////////////////////////////////////////////////////
// flush
- // ( Not available at stream objects )
+ // ( Not available at stream objects )
//////////////////////////////////////////////////////////////////
if( !flushData() )
@@ -693,43 +756,7 @@ uno::Sequence< ucb::ContentInfo > SAL_CALL
Content::queryCreatableContentsInfo()
throw( uno::RuntimeException )
{
- if ( isFolder() )
- {
- osl::Guard< osl::Mutex > aGuard( m_aMutex );
-
- uno::Sequence< beans::Property > aProps( 1 );
- aProps.getArray()[ 0 ] = beans::Property(
- rtl::OUString::createFromAscii( "Title" ),
- -1,
- getCppuType( static_cast< const rtl::OUString * >( 0 ) ),
- beans::PropertyAttribute::BOUND );
-
- uno::Sequence< ucb::ContentInfo > aSeq( 2 );
-
- // Folder.
- aSeq.getArray()[ 0 ].Type
- = GetContentType( m_aUri.getScheme(), sal_True );
- aSeq.getArray()[ 0 ].Attributes
- = ucb::ContentInfoAttribute::KIND_FOLDER;
- aSeq.getArray()[ 0 ].Properties = aProps;
-
- // Stream.
- aSeq.getArray()[ 1 ].Type
- = GetContentType( m_aUri.getScheme(), sal_False );
- aSeq.getArray()[ 1 ].Attributes
- = ucb::ContentInfoAttribute::INSERT_WITH_INPUTSTREAM
- | ucb::ContentInfoAttribute::KIND_DOCUMENT;
- aSeq.getArray()[ 1 ].Properties = aProps;
-
- return aSeq;
- }
- else
- {
- OSL_ENSURE( sal_False,
- "queryCreatableContentsInfo called on non-folder object!" );
-
- return uno::Sequence< ucb::ContentInfo >( 0 );
- }
+ return m_aProps.getCreatableContentsInfo( m_aUri );
}
//=========================================================================
@@ -746,16 +773,16 @@ Content::createNewContent( const ucb::ContentInfo& Info )
return uno::Reference< ucb::XContent >();
if ( !Info.Type.equalsIgnoreAsciiCase(
- GetContentType( m_aUri.getScheme(), sal_True ) ) &&
+ getContentType( m_aUri.getScheme(), sal_True ) ) &&
!Info.Type.equalsIgnoreAsciiCase(
- GetContentType( m_aUri.getScheme(), sal_False ) ) )
+ getContentType( m_aUri.getScheme(), sal_False ) ) )
return uno::Reference< ucb::XContent >();
rtl::OUString aURL = m_aUri.getUri();
aURL += rtl::OUString::createFromAscii( "/" );
if ( Info.Type.equalsIgnoreAsciiCase(
- GetContentType( m_aUri.getScheme(), sal_True ) ) )
+ getContentType( m_aUri.getScheme(), sal_True ) ) )
aURL += rtl::OUString::createFromAscii( "New_Folder" );
else
aURL += rtl::OUString::createFromAscii( "New_Stream" );
@@ -828,7 +855,7 @@ uno::Reference< sdbc::XRow > Content::getPropertyValues(
const uno::Reference< lang::XMultiServiceFactory >& rSMgr,
const uno::Sequence< beans::Property >& rProperties,
const ContentProperties& rData,
- const rtl::Reference< ::ucbhelper::ContentProviderImplHelper >&
+ const rtl::Reference< ::ucbhelper::ContentProviderImplHelper >&
rProvider,
const rtl::OUString& rContentId )
{
@@ -871,6 +898,14 @@ uno::Reference< sdbc::XRow > Content::getPropertyValues(
xRow->appendBoolean( rProp, rData.bIsFolder );
}
else if ( rProp.Name.equalsAsciiL(
+ RTL_CONSTASCII_STRINGPARAM( "CreatableContentsInfo" ) ) )
+ {
+ xRow->appendObject(
+ rProp, uno::makeAny(
+ rData.getCreatableContentsInfo(
+ PackageUri( rContentId ) ) ) );
+ }
+ else if ( rProp.Name.equalsAsciiL(
RTL_CONSTASCII_STRINGPARAM( "MediaType" ) ) )
{
xRow->appendString ( rProp, rData.aMediaType );
@@ -978,6 +1013,16 @@ uno::Reference< sdbc::XRow > Content::getPropertyValues(
beans::PropertyAttribute::BOUND
| beans::PropertyAttribute::READONLY ),
rData.bIsFolder );
+ xRow->appendObject(
+ beans::Property(
+ rtl::OUString::createFromAscii( "CreatableContentsInfo" ),
+ -1,
+ getCppuType( static_cast<
+ const uno::Sequence< ucb::ContentInfo > * >( 0 ) ),
+ beans::PropertyAttribute::BOUND
+ | beans::PropertyAttribute::READONLY ),
+ uno::makeAny(
+ rData.getCreatableContentsInfo( PackageUri( rContentId ) ) ) );
xRow->appendString(
beans::Property(
rtl::OUString::createFromAscii( "MediaType" ),
@@ -1068,11 +1113,11 @@ uno::Sequence< uno::Any > Content::setPropertyValues(
beans::PropertyChangeEvent aEvent;
aEvent.Source = static_cast< cppu::OWeakObject * >( this );
- aEvent.Further = sal_False;
-// aEvent.PropertyName =
+ aEvent.Further = sal_False;
+// aEvent.PropertyName =
aEvent.PropertyHandle = -1;
-// aEvent.OldValue =
-// aEvent.NewValue =
+// aEvent.OldValue =
+// aEvent.NewValue =
const beans::PropertyValue* pValues = rValues.getConstArray();
sal_Int32 nCount = rValues.getLength();
@@ -1116,6 +1161,15 @@ uno::Sequence< uno::Any > Content::setPropertyValues(
static_cast< cppu::OWeakObject * >( this ) );
}
else if ( rValue.Name.equalsAsciiL(
+ RTL_CONSTASCII_STRINGPARAM( "CreatableContentsInfo" ) ) )
+ {
+ // Read-only property!
+ aRet[ n ] <<= lang::IllegalAccessException(
+ rtl::OUString::createFromAscii(
+ "Property is read-only!" ),
+ static_cast< cppu::OWeakObject * >( this ) );
+ }
+ else if ( rValue.Name.equalsAsciiL(
RTL_CONSTASCII_STRINGPARAM( "Title" ) ) )
{
if ( m_aUri.isRootFolder() )
@@ -1181,7 +1235,7 @@ uno::Sequence< uno::Any > Content::setPropertyValues(
aEvent.NewValue = uno::makeAny( aNewValue );
m_aProps.aMediaType = aNewValue;
- nChanged++;
+ nChanged++;
bStore = sal_True;
m_nModifiedProps |= MEDIATYPE_MODIFIED;
}
@@ -1219,7 +1273,7 @@ uno::Sequence< uno::Any > Content::setPropertyValues(
aEvent.NewValue = uno::makeAny( bNewValue );
m_aProps.bCompressed = bNewValue;
- nChanged++;
+ nChanged++;
bStore = sal_True;
m_nModifiedProps |= COMPRESSED_MODIFIED;
}
@@ -1256,7 +1310,7 @@ uno::Sequence< uno::Any > Content::setPropertyValues(
aEvent.NewValue = uno::makeAny( bNewValue );
m_aProps.bEncrypted = bNewValue;
- nChanged++;
+ nChanged++;
bStore = sal_True;
m_nModifiedProps |= ENCRYPTED_MODIFIED;
}
@@ -1350,7 +1404,7 @@ uno::Sequence< uno::Any > Content::setPropertyValues(
rValue.Name, rValue.Value );
aEvent.PropertyName = rValue.Name;
- aEvent.OldValue = aOldValue;
+ aEvent.OldValue = aOldValue;
aEvent.NewValue = rValue.Value;
aChanges.getArray()[ nChanged ] = aEvent;
@@ -1483,7 +1537,7 @@ uno::Any Content::open(
uno::Reference< ucb::XDynamicResultSet > xSet
= new DynamicResultSet( m_xSMgr, this, rArg, xEnv );
return uno::makeAny( xSet );
- }
+ }
else
{
//////////////////////////////////////////////////////////////////
@@ -1506,7 +1560,7 @@ uno::Any Content::open(
rtl::OUString aURL = m_xIdentifier->getContentIdentifier();
uno::Reference< io::XOutputStream > xOut( rArg.Sink, uno::UNO_QUERY );
if ( xOut.is() )
- {
+ {
// PUSH: write data into xOut
uno::Reference< io::XInputStream > xIn = getInputStream();
@@ -1560,14 +1614,14 @@ uno::Any Content::open(
{
// closeOutput, readSomeBytes, writeBytes
}
- }
+ }
else
- {
+ {
uno::Reference< io::XActiveDataSink > xDataSink(
rArg.Sink, uno::UNO_QUERY );
- if ( xDataSink.is() )
+ if ( xDataSink.is() )
{
- // PULL: wait for client read
+ // PULL: wait for client read
uno::Reference< io::XInputStream > xIn = getInputStream();
if ( !xIn.is() )
@@ -1598,7 +1652,7 @@ uno::Any Content::open(
// Done.
xDataSink->setInputStream( xIn );
}
- else
+ else
{
// Note: aOpenCommand.Sink may contain an XStream
// implementation. Support for this type of
@@ -1612,7 +1666,7 @@ uno::Any Content::open(
xEnv );
// Unreachable
}
- }
+ }
}
return uno::Any();
@@ -1931,8 +1985,8 @@ void Content::transfer(
//////////////////////////////////////////////////////////////////////
rtl::OUString aType = xSource->isFolder()
- ? GetContentType( m_aUri.getScheme(), sal_True )
- : GetContentType( m_aUri.getScheme(), sal_False );
+ ? getContentType( m_aUri.getScheme(), sal_True )
+ : getContentType( m_aUri.getScheme(), sal_False );
ucb::ContentInfo aContentInfo;
aContentInfo.Type = aType;
aContentInfo.Attributes = 0;
@@ -2185,7 +2239,7 @@ sal_Bool Content::exchangeIdentity(
aOldURL.getLength(),
xNewId->getContentIdentifier() );
uno::Reference< ucb::XContentIdentifier > xNewChildId
- = new ::ucbhelper::ContentIdentifier(
+ = new ::ucbhelper::ContentIdentifier(
m_xSMgr, aNewChildURL );
if ( !xChild->exchangeIdentity( xNewChildId ) )
@@ -2413,14 +2467,14 @@ sal_Bool Content::loadData(
if ( xEnumAccess.is() )
{
// folder
- rProps.aContentType = GetContentType( rURI.getScheme(), sal_True );
+ rProps.aContentType = getContentType( rURI.getScheme(), sal_True );
rProps.bIsDocument = sal_False;
rProps.bIsFolder = sal_True;
}
else
{
// stream
- rProps.aContentType = GetContentType( rURI.getScheme(), sal_False );
+ rProps.aContentType = getContentType( rURI.getScheme(), sal_False );
rProps.bIsDocument = sal_True;
rProps.bIsFolder = sal_False;
}
@@ -2611,8 +2665,8 @@ sal_Bool Content::storeData( const uno::Reference< io::XInputStream >& xStream )
if ( !xNA->hasByHierarchicalName( m_aUri.getPath() ) )
{
-// if ( !bCreate )
-// return sal_True;
+// if ( !bCreate )
+// return sal_True;
try
{
@@ -2956,4 +3010,3 @@ uno::Reference< container::XEnumeration > Content::getIterator()
return xIter;
}
-
diff --git a/ucb/source/ucp/package/pkgcontent.hxx b/ucb/source/ucp/package/pkgcontent.hxx
index 0673465d5c..1021f2563e 100644
--- a/ucb/source/ucp/package/pkgcontent.hxx
+++ b/ucb/source/ucp/package/pkgcontent.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: pkgcontent.hxx,v $
- * $Revision: 1.31 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -34,9 +31,7 @@
#include <list>
#include <rtl/ref.hxx>
-#ifndef _COM_SUN_STAR_UCB_INTERACTIVEBADTRANSFRERURLEXCEPTION_HPP_
#include <com/sun/star/ucb/InteractiveBadTransferURLException.hpp>
-#endif
#include <com/sun/star/ucb/XContentCreator.hpp>
#include <ucbhelper/contenthelper.hxx>
#include "pkguri.hxx"
@@ -100,6 +95,9 @@ struct ContentProperties
bHasEncryptedEntries( sal_False ) {}
ContentProperties( const ::rtl::OUString& rContentType );
+
+ com::sun::star::uno::Sequence< com::sun::star::ucb::ContentInfo >
+ getCreatableContentsInfo( PackageUri const & rUri ) const;
};
//=========================================================================
@@ -110,17 +108,17 @@ class Content : public ::ucbhelper::ContentImplHelper,
public com::sun::star::ucb::XContentCreator
{
enum ContentState { TRANSIENT, // created via CreateNewContent,
- // but did not process "insert" yet
+ // but did not process "insert" yet
PERSISTENT, // processed "insert"
- DEAD // processed "delete"
+ DEAD // processed "delete"
};
- PackageUri m_aUri;
- ContentProperties m_aProps;
- ContentState m_eState;
+ PackageUri m_aUri;
+ ContentProperties m_aProps;
+ ContentState m_eState;
com::sun::star::uno::Reference<
- com::sun::star::container::XHierarchicalNameAccess > m_xPackage;
- ContentProvider* m_pProvider;
+ com::sun::star::container::XHierarchicalNameAccess > m_xPackage;
+ ContentProvider* m_pProvider;
sal_uInt32 m_nModifiedProps;
private:
@@ -130,7 +128,7 @@ private:
const com::sun::star::uno::Reference<
com::sun::star::ucb::XContentIdentifier >& Identifier,
const ::com::sun::star::uno::Reference<
- com::sun::star::container::XHierarchicalNameAccess >& Package,
+ com::sun::star::container::XHierarchicalNameAccess >& Package,
const PackageUri& rUri,
const ContentProperties& rProps );
Content( const com::sun::star::uno::Reference<
@@ -139,7 +137,7 @@ private:
const com::sun::star::uno::Reference<
com::sun::star::ucb::XContentIdentifier >& Identifier,
const com::sun::star::uno::Reference<
- com::sun::star::container::XHierarchicalNameAccess >& Package,
+ com::sun::star::container::XHierarchicalNameAccess >& Package,
const PackageUri& rUri,
const com::sun::star::ucb::ContentInfo& Info );
@@ -155,7 +153,7 @@ private:
getPropertyValues( const ::com::sun::star::uno::Reference<
::com::sun::star::lang::XMultiServiceFactory >& rSMgr,
const ::com::sun::star::uno::Sequence<
- ::com::sun::star::beans::Property >& rProperties,
+ ::com::sun::star::beans::Property >& rProperties,
const ContentProperties& rData,
const rtl::Reference<
::ucbhelper::ContentProviderImplHelper >& rProvider,
@@ -183,24 +181,20 @@ private:
const PackageUri& rURI,
ContentProperties& rProps,
com::sun::star::uno::Reference<
- com::sun::star::container::XHierarchicalNameAccess > &
+ com::sun::star::container::XHierarchicalNameAccess > &
rxPackage );
static sal_Bool
hasData( ContentProvider* pProvider,
const PackageUri& rURI,
com::sun::star::uno::Reference<
- com::sun::star::container::XHierarchicalNameAccess > &
+ com::sun::star::container::XHierarchicalNameAccess > &
rxPackage );
- static ::rtl::OUString
- GetContentType( const ::rtl::OUString& aScheme,
- sal_Bool bFolder );
-
sal_Bool
hasData( const PackageUri& rURI );
sal_Bool
renameData( const com::sun::star::uno::Reference<
- com::sun::star::ucb::XContentIdentifier >& xOldId,
+ com::sun::star::ucb::XContentIdentifier >& xOldId,
const com::sun::star::uno::Reference<
com::sun::star::ucb::XContentIdentifier >& xNewId );
sal_Bool
@@ -223,7 +217,7 @@ private:
::com::sun::star::uno::Any
open( const ::com::sun::star::ucb::OpenCommandArgument2& rArg,
const ::com::sun::star::uno::Reference<
- ::com::sun::star::ucb::XCommandEnvironment > & xEnv )
+ ::com::sun::star::ucb::XCommandEnvironment > & xEnv )
throw( ::com::sun::star::uno::Exception );
void insert( const ::com::sun::star::uno::Reference<
@@ -292,7 +286,7 @@ public:
execute( const com::sun::star::ucb::Command& aCommand,
sal_Int32 CommandId,
const com::sun::star::uno::Reference<
- com::sun::star::ucb::XCommandEnvironment >& Environment )
+ com::sun::star::ucb::XCommandEnvironment >& Environment )
throw( com::sun::star::uno::Exception,
com::sun::star::ucb::CommandAbortedException,
com::sun::star::uno::RuntimeException );
@@ -323,7 +317,7 @@ public:
getPropertyValues( const ::com::sun::star::uno::Reference<
::com::sun::star::lang::XMultiServiceFactory >& rSMgr,
const ::com::sun::star::uno::Sequence<
- ::com::sun::star::beans::Property >& rProperties,
+ ::com::sun::star::beans::Property >& rProperties,
ContentProvider* pProvider,
const ::rtl::OUString& rContentId );
@@ -331,6 +325,9 @@ public:
::com::sun::star::uno::Reference<
::com::sun::star::container::XEnumeration >
getIterator();
+
+ static ::rtl::OUString
+ getContentType( const ::rtl::OUString& aScheme, sal_Bool bFolder );
};
}
diff --git a/ucb/source/ucp/package/pkgcontentcaps.cxx b/ucb/source/ucp/package/pkgcontentcaps.cxx
index 6e6e4a9123..636b1b3164 100644
--- a/ucb/source/ucp/package/pkgcontentcaps.cxx
+++ b/ucb/source/ucp/package/pkgcontentcaps.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: pkgcontentcaps.cxx,v $
- * $Revision: 1.22 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -45,6 +42,7 @@
MediaType (w) (w) w
Title r w w
Size - - r
+ CreatableContentsInfo r r r
Compressed - - w
Encrypted - - w
HasEncryptedEntries r - -
@@ -58,6 +56,7 @@
open x x x
transfer x x -
flush x x -
+ createNewContent x x -
*************************************************************************/
#include <com/sun/star/beans/Property.hpp>
@@ -78,6 +77,12 @@ using namespace package_ucp;
//
//=========================================================================
+#define MAKEPROPSEQUENCE( a ) \
+ uno::Sequence< beans::Property >( a, sizeof( a ) / sizeof( a[ 0 ] ) )
+
+#define MAKECMDSEQUENCE( a ) \
+ uno::Sequence< ucb::CommandInfo >( a, sizeof( a ) / sizeof( a[ 0 ] ) )
+
//=========================================================================
//
// IMPORTENT: If any property data ( name / type / ... ) are changed, then
@@ -145,6 +150,15 @@ uno::Sequence< beans::Property > Content::getProperties(
getCppuType( static_cast< const rtl::OUString * >( 0 ) ),
beans::PropertyAttribute::BOUND
),
+ beans::Property(
+ rtl::OUString( RTL_CONSTASCII_USTRINGPARAM(
+ "CreatableContentsInfo" ) ),
+ -1,
+ getCppuType( static_cast<
+ const uno::Sequence< ucb::ContentInfo > * >( 0 ) ),
+ beans::PropertyAttribute::BOUND
+ | beans::PropertyAttribute::READONLY
+ ),
///////////////////////////////////////////////////////////////
// New properties
///////////////////////////////////////////////////////////////
@@ -157,8 +171,7 @@ uno::Sequence< beans::Property > Content::getProperties(
| beans::PropertyAttribute::READONLY
)
};
- return uno::Sequence< beans::Property >(
- aRootFolderPropertyInfoTable, 6 );
+ return MAKEPROPSEQUENCE( aRootFolderPropertyInfoTable );
}
else
{
@@ -210,13 +223,21 @@ uno::Sequence< beans::Property > Content::getProperties(
-1,
getCppuType( static_cast< const rtl::OUString * >( 0 ) ),
beans::PropertyAttribute::BOUND
+ ),
+ beans::Property(
+ rtl::OUString( RTL_CONSTASCII_USTRINGPARAM(
+ "CreatableContentsInfo" ) ),
+ -1,
+ getCppuType( static_cast<
+ const uno::Sequence< ucb::ContentInfo > * >( 0 ) ),
+ beans::PropertyAttribute::BOUND
+ | beans::PropertyAttribute::READONLY
)
///////////////////////////////////////////////////////////////
// New properties
///////////////////////////////////////////////////////////////
};
- return uno::Sequence< beans::Property >(
- aFolderPropertyInfoTable, 5 );
+ return MAKEPROPSEQUENCE( aFolderPropertyInfoTable );
}
}
else
@@ -275,6 +296,15 @@ uno::Sequence< beans::Property > Content::getProperties(
beans::PropertyAttribute::BOUND
| beans::PropertyAttribute::READONLY
),
+ beans::Property(
+ rtl::OUString( RTL_CONSTASCII_USTRINGPARAM(
+ "CreatableContentsInfo" ) ),
+ -1,
+ getCppuType( static_cast<
+ const uno::Sequence< ucb::ContentInfo > * >( 0 ) ),
+ beans::PropertyAttribute::BOUND
+ | beans::PropertyAttribute::READONLY
+ ),
///////////////////////////////////////////////////////////////
// New properties
///////////////////////////////////////////////////////////////
@@ -291,7 +321,7 @@ uno::Sequence< beans::Property > Content::getProperties(
beans::PropertyAttribute::BOUND
)
};
- return uno::Sequence< beans::Property >( aStreamPropertyInfoTable, 8 );
+ return MAKEPROPSEQUENCE( aStreamPropertyInfoTable );
}
}
@@ -360,6 +390,12 @@ uno::Sequence< ucb::CommandInfo > Content::getCommands(
getCppuType(
static_cast< ucb::TransferInfo * >( 0 ) )
),
+ ucb::CommandInfo(
+ rtl::OUString(
+ RTL_CONSTASCII_USTRINGPARAM( "createNewContent" ) ),
+ -1,
+ getCppuType( static_cast< ucb::ContentInfo * >( 0 ) )
+ ),
///////////////////////////////////////////////////////////
// New commands
///////////////////////////////////////////////////////////
@@ -370,8 +406,7 @@ uno::Sequence< ucb::CommandInfo > Content::getCommands(
)
};
- return uno::Sequence<
- ucb::CommandInfo >( aRootFolderCommandInfoTable, 7 );
+ return MAKECMDSEQUENCE( aRootFolderCommandInfoTable );
}
else
{
@@ -439,6 +474,12 @@ uno::Sequence< ucb::CommandInfo > Content::getCommands(
getCppuType(
static_cast< ucb::TransferInfo * >( 0 ) )
),
+ ucb::CommandInfo(
+ rtl::OUString(
+ RTL_CONSTASCII_USTRINGPARAM( "createNewContent" ) ),
+ -1,
+ getCppuType( static_cast< ucb::ContentInfo * >( 0 ) )
+ ),
///////////////////////////////////////////////////////////
// New commands
///////////////////////////////////////////////////////////
@@ -449,8 +490,7 @@ uno::Sequence< ucb::CommandInfo > Content::getCommands(
)
};
- return uno::Sequence<
- ucb::CommandInfo >( aFolderCommandInfoTable, 9 );
+ return MAKECMDSEQUENCE( aFolderCommandInfoTable );
}
}
else
@@ -517,8 +557,6 @@ uno::Sequence< ucb::CommandInfo > Content::getCommands(
///////////////////////////////////////////////////////////////
};
- return uno::Sequence< ucb::CommandInfo >(
- aStreamCommandInfoTable, 7 );
+ return MAKECMDSEQUENCE( aStreamCommandInfoTable );
}
}
-
diff --git a/ucb/source/ucp/package/pkgdatasupplier.cxx b/ucb/source/ucp/package/pkgdatasupplier.cxx
index c465e8d7b4..72a6ffe91b 100644
--- a/ucb/source/ucp/package/pkgdatasupplier.cxx
+++ b/ucb/source/ucp/package/pkgdatasupplier.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: pkgdatasupplier.cxx,v $
- * $Revision: 1.16 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/package/pkgdatasupplier.hxx b/ucb/source/ucp/package/pkgdatasupplier.hxx
index e0eeccbefb..6775ff581e 100644
--- a/ucb/source/ucp/package/pkgdatasupplier.hxx
+++ b/ucb/source/ucp/package/pkgdatasupplier.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: pkgdatasupplier.hxx,v $
- * $Revision: 1.7 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/package/pkgprovider.cxx b/ucb/source/ucp/package/pkgprovider.cxx
index 434fe969e0..dfaaf43034 100644
--- a/ucb/source/ucp/package/pkgprovider.cxx
+++ b/ucb/source/ucp/package/pkgprovider.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: pkgprovider.cxx,v $
- * $Revision: 1.22 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/package/pkgprovider.hxx b/ucb/source/ucp/package/pkgprovider.hxx
index 8d84e8cb54..4862f64ace 100644
--- a/ucb/source/ucp/package/pkgprovider.hxx
+++ b/ucb/source/ucp/package/pkgprovider.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: pkgprovider.hxx,v $
- * $Revision: 1.8 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/package/pkgresultset.cxx b/ucb/source/ucp/package/pkgresultset.cxx
index 5320b2b16f..a843c6971f 100644
--- a/ucb/source/ucp/package/pkgresultset.cxx
+++ b/ucb/source/ucp/package/pkgresultset.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: pkgresultset.cxx,v $
- * $Revision: 1.6 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/package/pkgresultset.hxx b/ucb/source/ucp/package/pkgresultset.hxx
index 6d9fca191e..9b6adca131 100644
--- a/ucb/source/ucp/package/pkgresultset.hxx
+++ b/ucb/source/ucp/package/pkgresultset.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: pkgresultset.hxx,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/package/pkgservices.cxx b/ucb/source/ucp/package/pkgservices.cxx
index 202edf41f8..61edd11642 100644
--- a/ucb/source/ucp/package/pkgservices.cxx
+++ b/ucb/source/ucp/package/pkgservices.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: pkgservices.cxx,v $
- * $Revision: 1.8 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/package/pkguri.cxx b/ucb/source/ucp/package/pkguri.cxx
index a246d9cbd5..12a54eeda5 100644
--- a/ucb/source/ucp/package/pkguri.cxx
+++ b/ucb/source/ucp/package/pkguri.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: pkguri.cxx,v $
- * $Revision: 1.21 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/package/pkguri.hxx b/ucb/source/ucp/package/pkguri.hxx
index 42949afd51..ee2bbd9ca3 100644
--- a/ucb/source/ucp/package/pkguri.hxx
+++ b/ucb/source/ucp/package/pkguri.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: pkguri.hxx,v $
- * $Revision: 1.10 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/tdoc/makefile.mk b/ucb/source/ucp/tdoc/makefile.mk
index 1c2c44b124..2c85514ef9 100644
--- a/ucb/source/ucp/tdoc/makefile.mk
+++ b/ucb/source/ucp/tdoc/makefile.mk
@@ -2,14 +2,10 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.10 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/tdoc/tdoc_content.cxx b/ucb/source/ucp/tdoc/tdoc_content.cxx
index 308dd0a934..8a17b44fb3 100644
--- a/ucb/source/ucp/tdoc/tdoc_content.cxx
+++ b/ucb/source/ucp/tdoc/tdoc_content.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: tdoc_content.cxx,v $
- * $Revision: 1.16 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -226,7 +223,7 @@ uno::Any SAL_CALL Content::queryInterface( const uno::Type & rType )
rType, static_cast< ucb::XContentCreator * >( this ) );
if ( aRet.hasValue() )
{
- if ( !isContentCreator() )
+ if ( !m_aProps.isContentCreator() )
return uno::Any();
}
}
@@ -249,7 +246,7 @@ uno::Sequence< uno::Type > SAL_CALL Content::getTypes()
{
cppu::OTypeCollection * pCollection = 0;
- if ( isContentCreator() )
+ if ( m_aProps.isContentCreator() )
{
static cppu::OTypeCollection* pFolderTypes = 0;
@@ -660,6 +657,49 @@ uno::Any SAL_CALL Content::execute(
transfer( aInfo, Environment );
}
+ else if ( aCommand.Name.equalsAsciiL(
+ RTL_CONSTASCII_STRINGPARAM( "createNewContent" ) ) )
+ {
+ //////////////////////////////////////////////////////////////////
+ // createNewContent ( Supported by document and folders only )
+ //////////////////////////////////////////////////////////////////
+
+ {
+ osl::MutexGuard aGuard( m_aMutex );
+
+ ContentType eType = m_aProps.getType();
+ if ( ( eType != FOLDER ) && ( eType != DOCUMENT ) )
+ {
+ ucbhelper::cancelCommandExecution(
+ uno::makeAny( ucb::UnsupportedCommandException(
+ rtl::OUString(
+ RTL_CONSTASCII_USTRINGPARAM(
+ "createNewContent command only "
+ "supported by folders and "
+ "documents!" ) ),
+ static_cast< cppu::OWeakObject * >(
+ this ) ) ),
+ Environment );
+ // Unreachable
+ }
+ }
+
+ ucb::ContentInfo aInfo;
+ if ( !( aCommand.Argument >>= aInfo ) )
+ {
+ OSL_ENSURE( sal_False, "Wrong argument type!" );
+ ucbhelper::cancelCommandExecution(
+ uno::makeAny( lang::IllegalArgumentException(
+ rtl::OUString::createFromAscii(
+ "Wrong argument type!" ),
+ static_cast< cppu::OWeakObject * >( this ),
+ -1 ) ),
+ Environment );
+ // Unreachable
+ }
+
+ aRet <<= createNewContent( aInfo );
+ }
else
{
//////////////////////////////////////////////////////////////////
@@ -695,65 +735,7 @@ uno::Sequence< ucb::ContentInfo > SAL_CALL
Content::queryCreatableContentsInfo()
throw( uno::RuntimeException )
{
- if ( isContentCreator() )
- {
- osl::Guard< osl::Mutex > aGuard( m_aMutex );
-
- uno::Sequence< beans::Property > aProps( 1 );
- aProps.getArray()[ 0 ] = beans::Property(
- rtl::OUString::createFromAscii( "Title" ),
- -1,
- getCppuType( static_cast< const rtl::OUString * >( 0 ) ),
- beans::PropertyAttribute::BOUND );
-
-#ifdef NO_STREAM_CREATION_WITHIN_DOCUMENT_ROOT
- if ( m_aProps.getType() == DOCUMENT )
- {
- // streams cannot be created as direct children of document root
- uno::Sequence< ucb::ContentInfo > aSeq( 1 );
-
- // Folder.
- aSeq.getArray()[ 0 ].Type
- = rtl::OUString::createFromAscii( TDOC_FOLDER_CONTENT_TYPE );
- aSeq.getArray()[ 0 ].Attributes
- = ucb::ContentInfoAttribute::KIND_FOLDER;
- aSeq.getArray()[ 0 ].Properties = aProps;
-
- return aSeq;
- }
- else
- {
-#endif
- uno::Sequence< ucb::ContentInfo > aSeq( 2 );
-
- // Folder.
- aSeq.getArray()[ 0 ].Type
- = rtl::OUString::createFromAscii( TDOC_FOLDER_CONTENT_TYPE );
- aSeq.getArray()[ 0 ].Attributes
- = ucb::ContentInfoAttribute::KIND_FOLDER;
- aSeq.getArray()[ 0 ].Properties = aProps;
-
- // Stream.
- aSeq.getArray()[ 1 ].Type
- = rtl::OUString::createFromAscii( TDOC_STREAM_CONTENT_TYPE );
- aSeq.getArray()[ 1 ].Attributes
- = ucb::ContentInfoAttribute::INSERT_WITH_INPUTSTREAM
- | ucb::ContentInfoAttribute::KIND_DOCUMENT;
- aSeq.getArray()[ 1 ].Properties = aProps;
-
- return aSeq;
-#ifdef NO_STREAM_CREATION_WITHIN_DOCUMENT_ROOT
- }
-#endif
- }
- else
- {
- OSL_ENSURE( sal_False,
- "queryCreatableContentsInfo called on non-contentcreator "
- "object!" );
-
- return uno::Sequence< ucb::ContentInfo >( 0 );
- }
+ return m_aProps.getCreatableContentsInfo();
}
//=========================================================================
@@ -762,7 +744,7 @@ uno::Reference< ucb::XContent > SAL_CALL
Content::createNewContent( const ucb::ContentInfo& Info )
throw( uno::RuntimeException )
{
- if ( isContentCreator() )
+ if ( m_aProps.isContentCreator() )
{
osl::Guard< osl::Mutex > aGuard( m_aMutex );
@@ -963,7 +945,7 @@ sal_Bool Content::exchangeIdentity(
aOldURL.getLength(),
xNewId->getContentIdentifier() );
uno::Reference< ucb::XContentIdentifier > xNewChildId
- = new ::ucbhelper::ContentIdentifier(
+ = new ::ucbhelper::ContentIdentifier(
m_xSMgr, aNewChildURL );
if ( !xChild->exchangeIdentity( xNewChildId ) )
@@ -1061,6 +1043,12 @@ uno::Reference< sdbc::XRow > Content::getPropertyValues(
xRow->appendBoolean( rProp, rData.getIsFolder() );
}
else if ( rProp.Name.equalsAsciiL(
+ RTL_CONSTASCII_STRINGPARAM( "CreatableContentsInfo" ) ) )
+ {
+ xRow->appendObject(
+ rProp, uno::makeAny( rData.getCreatableContentsInfo() ) );
+ }
+ else if ( rProp.Name.equalsAsciiL(
RTL_CONSTASCII_STRINGPARAM( "Storage" ) ) )
{
// Storage is only supported by folders.
@@ -1155,6 +1143,15 @@ uno::Reference< sdbc::XRow > Content::getPropertyValues(
beans::PropertyAttribute::BOUND
| beans::PropertyAttribute::READONLY ),
rData.getIsFolder() );
+ xRow->appendObject(
+ beans::Property(
+ rtl::OUString::createFromAscii( "CreatableContentsInfo" ),
+ -1,
+ getCppuType( static_cast<
+ const uno::Sequence< ucb::ContentInfo > * >( 0 ) ),
+ beans::PropertyAttribute::BOUND
+ | beans::PropertyAttribute::READONLY ),
+ uno::makeAny( rData.getCreatableContentsInfo() ) );
// Storage is only supported by folders.
if ( eType == FOLDER )
@@ -1218,11 +1215,11 @@ uno::Sequence< uno::Any > Content::setPropertyValues(
beans::PropertyChangeEvent aEvent;
aEvent.Source = static_cast< cppu::OWeakObject * >( this );
- aEvent.Further = sal_False;
-// aEvent.PropertyName =
+ aEvent.Further = sal_False;
+ // aEvent.PropertyName =
aEvent.PropertyHandle = -1;
-// aEvent.OldValue =
-// aEvent.NewValue =
+ // aEvent.OldValue =
+ // aEvent.NewValue =
const beans::PropertyValue* pValues = rValues.getConstArray();
sal_Int32 nCount = rValues.getLength();
@@ -1266,6 +1263,15 @@ uno::Sequence< uno::Any > Content::setPropertyValues(
static_cast< cppu::OWeakObject * >( this ) );
}
else if ( rValue.Name.equalsAsciiL(
+ RTL_CONSTASCII_STRINGPARAM( "CreatableContentsInfo" ) ) )
+ {
+ // Read-only property!
+ aRet[ n ] <<= lang::IllegalAccessException(
+ rtl::OUString::createFromAscii(
+ "Property is read-only!" ),
+ static_cast< cppu::OWeakObject * >( this ) );
+ }
+ else if ( rValue.Name.equalsAsciiL(
RTL_CONSTASCII_STRINGPARAM( "Title" ) ) )
{
// Title is read-only for root and documents.
@@ -1382,7 +1388,7 @@ uno::Sequence< uno::Any > Content::setPropertyValues(
rValue.Name, rValue.Value );
aEvent.PropertyName = rValue.Name;
- aEvent.OldValue = aOldValue;
+ aEvent.OldValue = aOldValue;
aEvent.NewValue = rValue.Value;
aChanges.getArray()[ nChanged ] = aEvent;
@@ -1943,7 +1949,7 @@ Content::queryChildContent( const rtl::OUString & rRelativeChildUri )
aBuf.append( rRelativeChildUri.copy( 1 ) );
uno::Reference< ucb::XContentIdentifier > xChildId
- = new ::ucbhelper::ContentIdentifier(
+ = new ::ucbhelper::ContentIdentifier(
m_xSMgr, aBuf.makeStringAndClear() );
uno::Reference< ucb::XContent > xChild;
@@ -2370,14 +2376,6 @@ void Content::transfer(
}
//=========================================================================
-bool Content::isContentCreator()
-{
- osl::Guard< osl::Mutex > aGuard( m_aMutex );
- return
- ( m_aProps.getType() == FOLDER ) || ( m_aProps.getType() == DOCUMENT );
-}
-
-//=========================================================================
//static
bool Content::hasData( ContentProvider* pProvider, const Uri & rUri )
{
@@ -3059,3 +3057,79 @@ uno::Reference< io::XStream > Content::getStream(
}
}
}
+
+//=========================================================================
+//=========================================================================
+//
+// ContentProperties Implementation.
+//
+//=========================================================================
+//=========================================================================
+
+uno::Sequence< ucb::ContentInfo >
+ContentProperties::getCreatableContentsInfo() const
+{
+ if ( isContentCreator() )
+ {
+ uno::Sequence< beans::Property > aProps( 1 );
+ aProps.getArray()[ 0 ] = beans::Property(
+ rtl::OUString::createFromAscii( "Title" ),
+ -1,
+ getCppuType( static_cast< const rtl::OUString * >( 0 ) ),
+ beans::PropertyAttribute::BOUND );
+
+#ifdef NO_STREAM_CREATION_WITHIN_DOCUMENT_ROOT
+ if ( getType() == DOCUMENT )
+ {
+ // streams cannot be created as direct children of document root
+ uno::Sequence< ucb::ContentInfo > aSeq( 1 );
+
+ // Folder.
+ aSeq.getArray()[ 0 ].Type
+ = rtl::OUString::createFromAscii( TDOC_FOLDER_CONTENT_TYPE );
+ aSeq.getArray()[ 0 ].Attributes
+ = ucb::ContentInfoAttribute::KIND_FOLDER;
+ aSeq.getArray()[ 0 ].Properties = aProps;
+
+ return aSeq;
+ }
+ else
+ {
+#endif
+ uno::Sequence< ucb::ContentInfo > aSeq( 2 );
+
+ // Folder.
+ aSeq.getArray()[ 0 ].Type
+ = rtl::OUString::createFromAscii( TDOC_FOLDER_CONTENT_TYPE );
+ aSeq.getArray()[ 0 ].Attributes
+ = ucb::ContentInfoAttribute::KIND_FOLDER;
+ aSeq.getArray()[ 0 ].Properties = aProps;
+
+ // Stream.
+ aSeq.getArray()[ 1 ].Type
+ = rtl::OUString::createFromAscii( TDOC_STREAM_CONTENT_TYPE );
+ aSeq.getArray()[ 1 ].Attributes
+ = ucb::ContentInfoAttribute::INSERT_WITH_INPUTSTREAM
+ | ucb::ContentInfoAttribute::KIND_DOCUMENT;
+ aSeq.getArray()[ 1 ].Properties = aProps;
+
+ return aSeq;
+#ifdef NO_STREAM_CREATION_WITHIN_DOCUMENT_ROOT
+ }
+#endif
+ }
+ else
+ {
+ OSL_ENSURE( sal_False,
+ "getCreatableContentsInfo called on non-contentcreator "
+ "object!" );
+
+ return uno::Sequence< ucb::ContentInfo >( 0 );
+ }
+}
+
+//=========================================================================
+bool ContentProperties::isContentCreator() const
+{
+ return ( getType() == FOLDER ) || ( getType() == DOCUMENT );
+}
diff --git a/ucb/source/ucp/tdoc/tdoc_content.hxx b/ucb/source/ucp/tdoc/tdoc_content.hxx
index 1e6f03544b..7fde2aeea9 100644
--- a/ucb/source/ucp/tdoc/tdoc_content.hxx
+++ b/ucb/source/ucp/tdoc/tdoc_content.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: tdoc_content.hxx,v $
- * $Revision: 1.10 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -43,7 +40,8 @@ namespace com { namespace sun { namespace star {
namespace sdbc { class XRow; }
namespace io { class XInputStream; class XOutputStream; }
namespace beans { struct PropertyValue; }
- namespace ucb { struct OpenCommandArgument2; struct TransferInfo; }
+ namespace ucb { struct OpenCommandArgument2; struct TransferInfo;
+ struct ContentInfo; }
} } }
namespace tdoc_ucp
@@ -94,6 +92,11 @@ public:
const rtl::OUString & getTitle() const { return m_aTitle; }
void setTitle( const rtl::OUString & rTitle ) { m_aTitle = rTitle; }
+ com::sun::star::uno::Sequence< com::sun::star::ucb::ContentInfo >
+ getCreatableContentsInfo() const;
+
+ bool isContentCreator() const;
+
private:
ContentType m_eType;
rtl::OUString m_aContentType;
@@ -106,7 +109,7 @@ class Content : public ::ucbhelper::ContentImplHelper,
public com::sun::star::ucb::XContentCreator
{
enum ContentState { TRANSIENT, // created via createNewContent,
- // but did not process "insert" yet
+ // but did not process "insert" yet
PERSISTENT, // processed "insert"
DEAD // processed "delete" / document was closed
};
@@ -137,8 +140,6 @@ private:
com::sun::star::ucb::XCommandEnvironment > & xEnv );
virtual ::rtl::OUString getParentURL();
- bool isContentCreator();
-
static bool hasData( ContentProvider* pProvider, const Uri & rUri );
bool hasData( const Uri & rUri ) { return hasData( m_pProvider, rUri ); }
@@ -173,7 +174,7 @@ private:
::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XRow >
getPropertyValues( const ::com::sun::star::uno::Sequence<
- ::com::sun::star::beans::Property >& rProperties );
+ ::com::sun::star::beans::Property >& rProperties );
::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any >
setPropertyValues(
const ::com::sun::star::uno::Sequence<
@@ -294,7 +295,7 @@ public:
execute( const com::sun::star::ucb::Command& aCommand,
sal_Int32 CommandId,
const com::sun::star::uno::Reference<
- com::sun::star::ucb::XCommandEnvironment >& Environment )
+ com::sun::star::ucb::XCommandEnvironment >& Environment )
throw( com::sun::star::uno::Exception,
com::sun::star::ucb::CommandAbortedException,
com::sun::star::uno::RuntimeException );
diff --git a/ucb/source/ucp/tdoc/tdoc_contentcaps.cxx b/ucb/source/ucp/tdoc/tdoc_contentcaps.cxx
index b9a1410b55..acb85c2d28 100644
--- a/ucb/source/ucp/tdoc/tdoc_contentcaps.cxx
+++ b/ucb/source/ucp/tdoc/tdoc_contentcaps.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: tdoc_contentcaps.cxx,v $
- * $Revision: 1.8 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -46,6 +43,7 @@
IsDocument r r r r r r
IsFolder r r r r r r
Title r r w w w w
+ CreatableContentsInfo r r r r r r
Storage - - r r - -
DocumentModel - r - - - -
@@ -57,6 +55,7 @@
delete - - x - x -
open x x x - x -
transfer - x x - - -
+ createNewContent - x x - - -
#ifdef NO_STREAM_CREATION_WITHIN_DOCUMENT_ROOT
(*) not supported by streams that are direct children of document
@@ -88,6 +87,12 @@ using namespace tdoc_ucp;
//
//=========================================================================
+#define MAKEPROPSEQUENCE( a ) \
+ uno::Sequence< beans::Property >( a, sizeof( a ) / sizeof( a[ 0 ] ) )
+
+#define MAKECMDSEQUENCE( a ) \
+ uno::Sequence< ucb::CommandInfo >( a, sizeof( a ) / sizeof( a[ 0 ] ) )
+
//=========================================================================
//
// IMPORTENT: If any property data ( name / type / ... ) are changed, then
@@ -142,15 +147,24 @@ uno::Sequence< beans::Property > Content::getProperties(
-1,
getCppuType( static_cast< const rtl::OUString * >( 0 ) ),
beans::PropertyAttribute::BOUND
- )
+ ),
///////////////////////////////////////////////////////////
// Optional standard properties
///////////////////////////////////////////////////////////
+ beans::Property(
+ rtl::OUString( RTL_CONSTASCII_USTRINGPARAM(
+ "CreatableContentsInfo" ) ),
+ -1,
+ getCppuType( static_cast<
+ const uno::Sequence< ucb::ContentInfo > * >( 0 ) ),
+ beans::PropertyAttribute::BOUND
+ | beans::PropertyAttribute::READONLY
+ )
///////////////////////////////////////////////////////////
// New properties
///////////////////////////////////////////////////////////
};
- return uno::Sequence< beans::Property >( aStreamPropertyInfoTable, 4 );
+ return MAKEPROPSEQUENCE( aStreamPropertyInfoTable );
}
else if ( m_aProps.getType() == FOLDER )
{
@@ -197,6 +211,15 @@ uno::Sequence< beans::Property > Content::getProperties(
///////////////////////////////////////////////////////////
// Optional standard properties
///////////////////////////////////////////////////////////
+ beans::Property(
+ rtl::OUString( RTL_CONSTASCII_USTRINGPARAM(
+ "CreatableContentsInfo" ) ),
+ -1,
+ getCppuType( static_cast<
+ const uno::Sequence< ucb::ContentInfo > * >( 0 ) ),
+ beans::PropertyAttribute::BOUND
+ | beans::PropertyAttribute::READONLY
+ ),
///////////////////////////////////////////////////////////
// New properties
///////////////////////////////////////////////////////////
@@ -209,7 +232,7 @@ uno::Sequence< beans::Property > Content::getProperties(
| beans::PropertyAttribute::READONLY
)
};
- return uno::Sequence< beans::Property >( aFolderPropertyInfoTable, 5 );
+ return MAKEPROPSEQUENCE( aFolderPropertyInfoTable );
}
else if ( m_aProps.getType() == DOCUMENT )
{
@@ -257,6 +280,15 @@ uno::Sequence< beans::Property > Content::getProperties(
///////////////////////////////////////////////////////////
// Optional standard properties
///////////////////////////////////////////////////////////
+ beans::Property(
+ rtl::OUString( RTL_CONSTASCII_USTRINGPARAM(
+ "CreatableContentsInfo" ) ),
+ -1,
+ getCppuType( static_cast<
+ const uno::Sequence< ucb::ContentInfo > * >( 0 ) ),
+ beans::PropertyAttribute::BOUND
+ | beans::PropertyAttribute::READONLY
+ ),
///////////////////////////////////////////////////////////
// New properties
///////////////////////////////////////////////////////////
@@ -269,7 +301,7 @@ uno::Sequence< beans::Property > Content::getProperties(
| beans::PropertyAttribute::READONLY
)
};
- return uno::Sequence< beans::Property >( aDocPropertyInfoTable, 5 );
+ return MAKEPROPSEQUENCE( aDocPropertyInfoTable );
}
else
{
@@ -313,15 +345,24 @@ uno::Sequence< beans::Property > Content::getProperties(
getCppuType( static_cast< const rtl::OUString * >( 0 ) ),
beans::PropertyAttribute::BOUND
| beans::PropertyAttribute::READONLY
- )
+ ),
///////////////////////////////////////////////////////////////
// Optional standard properties
///////////////////////////////////////////////////////////////
+ beans::Property(
+ rtl::OUString( RTL_CONSTASCII_USTRINGPARAM(
+ "CreatableContentsInfo" ) ),
+ -1,
+ getCppuType( static_cast<
+ const uno::Sequence< ucb::ContentInfo > * >( 0 ) ),
+ beans::PropertyAttribute::BOUND
+ | beans::PropertyAttribute::READONLY
+ )
///////////////////////////////////////////////////////////////
// New properties
///////////////////////////////////////////////////////////////
};
- return uno::Sequence< beans::Property >( aRootPropertyInfoTable, 4 );
+ return MAKEPROPSEQUENCE( aRootPropertyInfoTable );
}
}
@@ -396,8 +437,7 @@ uno::Sequence< ucb::CommandInfo > Content::getCommands(
// New commands
///////////////////////////////////////////////////////////
};
- return uno::Sequence<
- ucb::CommandInfo >( aStreamCommandInfoTable1, 6 );
+ return MAKECMDSEQUENCE( aStreamCommandInfoTable1 );
}
#endif
//=================================================================
@@ -461,8 +501,7 @@ uno::Sequence< ucb::CommandInfo > Content::getCommands(
// New commands
///////////////////////////////////////////////////////////
};
- return uno::Sequence<
- ucb::CommandInfo >( aStreamCommandInfoTable, 7 );
+ return MAKECMDSEQUENCE( aStreamCommandInfoTable );
}
else if ( m_aProps.getType() == FOLDER )
{
@@ -527,13 +566,18 @@ uno::Sequence< ucb::CommandInfo > Content::getCommands(
rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "transfer" ) ),
-1,
getCppuType( static_cast< ucb::TransferInfo * >( 0 ) )
+ ),
+ ucb::CommandInfo(
+ rtl::OUString(
+ RTL_CONSTASCII_USTRINGPARAM( "createNewContent" ) ),
+ -1,
+ getCppuType( static_cast< ucb::ContentInfo * >( 0 ) )
)
///////////////////////////////////////////////////////////
// New commands
///////////////////////////////////////////////////////////
};
- return uno::Sequence<
- ucb::CommandInfo >( aFolderCommandInfoTable, 8 );
+ return MAKECMDSEQUENCE( aFolderCommandInfoTable );
}
else if ( m_aProps.getType() == DOCUMENT )
{
@@ -588,13 +632,18 @@ uno::Sequence< ucb::CommandInfo > Content::getCommands(
rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "transfer" ) ),
-1,
getCppuType( static_cast< ucb::TransferInfo * >( 0 ) )
+ ),
+ ucb::CommandInfo(
+ rtl::OUString(
+ RTL_CONSTASCII_USTRINGPARAM( "createNewContent" ) ),
+ -1,
+ getCppuType( static_cast< ucb::ContentInfo * >( 0 ) )
)
///////////////////////////////////////////////////////////
// New commands
///////////////////////////////////////////////////////////
};
- return uno::Sequence<
- ucb::CommandInfo >( aDocCommandInfoTable, 6 );
+ return MAKECMDSEQUENCE( aDocCommandInfoTable );
}
else
{
@@ -651,7 +700,6 @@ uno::Sequence< ucb::CommandInfo > Content::getCommands(
// New commands
///////////////////////////////////////////////////////////
};
- return uno::Sequence<
- ucb::CommandInfo >( aRootCommandInfoTable, 5 );
+ return MAKECMDSEQUENCE( aRootCommandInfoTable );
}
}
diff --git a/ucb/source/ucp/tdoc/tdoc_datasupplier.cxx b/ucb/source/ucp/tdoc/tdoc_datasupplier.cxx
index 4ea50aba52..62bdf66b28 100644
--- a/ucb/source/ucp/tdoc/tdoc_datasupplier.cxx
+++ b/ucb/source/ucp/tdoc/tdoc_datasupplier.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: tdoc_datasupplier.cxx,v $
- * $Revision: 1.7 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/tdoc/tdoc_datasupplier.hxx b/ucb/source/ucp/tdoc/tdoc_datasupplier.hxx
index 4e88e63d65..d555f4f739 100644
--- a/ucb/source/ucp/tdoc/tdoc_datasupplier.hxx
+++ b/ucb/source/ucp/tdoc/tdoc_datasupplier.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: tdoc_datasupplier.hxx,v $
- * $Revision: 1.6 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/tdoc/tdoc_docmgr.cxx b/ucb/source/ucp/tdoc/tdoc_docmgr.cxx
index 0d1b236397..8361e4bbbc 100644
--- a/ucb/source/ucp/tdoc/tdoc_docmgr.cxx
+++ b/ucb/source/ucp/tdoc/tdoc_docmgr.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: tdoc_docmgr.cxx,v $
- * $Revision: 1.19.24.2 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/tdoc/tdoc_docmgr.hxx b/ucb/source/ucp/tdoc/tdoc_docmgr.hxx
index ddf990fb4c..c9d68e5f7f 100644
--- a/ucb/source/ucp/tdoc/tdoc_docmgr.hxx
+++ b/ucb/source/ucp/tdoc/tdoc_docmgr.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: tdoc_docmgr.hxx,v $
- * $Revision: 1.7 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/tdoc/tdoc_documentcontentfactory.cxx b/ucb/source/ucp/tdoc/tdoc_documentcontentfactory.cxx
index 7ce9b01f95..02df472ff2 100644
--- a/ucb/source/ucp/tdoc/tdoc_documentcontentfactory.cxx
+++ b/ucb/source/ucp/tdoc/tdoc_documentcontentfactory.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: tdoc_documentcontentfactory.cxx,v $
- * $Revision: 1.6 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/tdoc/tdoc_documentcontentfactory.hxx b/ucb/source/ucp/tdoc/tdoc_documentcontentfactory.hxx
index 4960777adb..bde79fc1cb 100644
--- a/ucb/source/ucp/tdoc/tdoc_documentcontentfactory.hxx
+++ b/ucb/source/ucp/tdoc/tdoc_documentcontentfactory.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: tdoc_documentcontentfactory.hxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/tdoc/tdoc_passwordrequest.cxx b/ucb/source/ucp/tdoc/tdoc_passwordrequest.cxx
index d0c438543c..53c4ce84bb 100644
--- a/ucb/source/ucp/tdoc/tdoc_passwordrequest.cxx
+++ b/ucb/source/ucp/tdoc/tdoc_passwordrequest.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: tdoc_passwordrequest.cxx,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/tdoc/tdoc_passwordrequest.hxx b/ucb/source/ucp/tdoc/tdoc_passwordrequest.hxx
index cad379ed63..50381c8873 100644
--- a/ucb/source/ucp/tdoc/tdoc_passwordrequest.hxx
+++ b/ucb/source/ucp/tdoc/tdoc_passwordrequest.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: tdoc_passwordrequest.hxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/tdoc/tdoc_provider.cxx b/ucb/source/ucp/tdoc/tdoc_provider.cxx
index 684e4bb609..7bb8af30b2 100644
--- a/ucb/source/ucp/tdoc/tdoc_provider.cxx
+++ b/ucb/source/ucp/tdoc/tdoc_provider.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: tdoc_provider.cxx,v $
- * $Revision: 1.11 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/tdoc/tdoc_provider.hxx b/ucb/source/ucp/tdoc/tdoc_provider.hxx
index 3ad5d147cd..ca2ab4e5e7 100644
--- a/ucb/source/ucp/tdoc/tdoc_provider.hxx
+++ b/ucb/source/ucp/tdoc/tdoc_provider.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: tdoc_provider.hxx,v $
- * $Revision: 1.7 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/tdoc/tdoc_resultset.cxx b/ucb/source/ucp/tdoc/tdoc_resultset.cxx
index 915d7e416a..7beab3f46f 100644
--- a/ucb/source/ucp/tdoc/tdoc_resultset.cxx
+++ b/ucb/source/ucp/tdoc/tdoc_resultset.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: tdoc_resultset.cxx,v $
- * $Revision: 1.6 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/tdoc/tdoc_resultset.hxx b/ucb/source/ucp/tdoc/tdoc_resultset.hxx
index bd0c064804..1a13b82443 100644
--- a/ucb/source/ucp/tdoc/tdoc_resultset.hxx
+++ b/ucb/source/ucp/tdoc/tdoc_resultset.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: tdoc_resultset.hxx,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/tdoc/tdoc_services.cxx b/ucb/source/ucp/tdoc/tdoc_services.cxx
index 4b507f7a2f..26b1d8a2de 100644
--- a/ucb/source/ucp/tdoc/tdoc_services.cxx
+++ b/ucb/source/ucp/tdoc/tdoc_services.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: tdoc_services.cxx,v $
- * $Revision: 1.6 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/tdoc/tdoc_stgelems.cxx b/ucb/source/ucp/tdoc/tdoc_stgelems.cxx
index 6e0e327174..49065d4ae1 100644
--- a/ucb/source/ucp/tdoc/tdoc_stgelems.cxx
+++ b/ucb/source/ucp/tdoc/tdoc_stgelems.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: tdoc_stgelems.cxx,v $
- * $Revision: 1.9 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/tdoc/tdoc_stgelems.hxx b/ucb/source/ucp/tdoc/tdoc_stgelems.hxx
index 76917a15f3..424af316ae 100644
--- a/ucb/source/ucp/tdoc/tdoc_stgelems.hxx
+++ b/ucb/source/ucp/tdoc/tdoc_stgelems.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: tdoc_stgelems.hxx,v $
- * $Revision: 1.6 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/tdoc/tdoc_storage.cxx b/ucb/source/ucp/tdoc/tdoc_storage.cxx
index 0ce268bb15..7927108aad 100644
--- a/ucb/source/ucp/tdoc/tdoc_storage.cxx
+++ b/ucb/source/ucp/tdoc/tdoc_storage.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: tdoc_storage.cxx,v $
- * $Revision: 1.10 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/tdoc/tdoc_storage.hxx b/ucb/source/ucp/tdoc/tdoc_storage.hxx
index 0c858d5bd4..f570a8a3ab 100644
--- a/ucb/source/ucp/tdoc/tdoc_storage.hxx
+++ b/ucb/source/ucp/tdoc/tdoc_storage.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: tdoc_storage.hxx,v $
- * $Revision: 1.6 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/tdoc/tdoc_uri.cxx b/ucb/source/ucp/tdoc/tdoc_uri.cxx
index 2eef39f6e0..5c52a39248 100644
--- a/ucb/source/ucp/tdoc/tdoc_uri.cxx
+++ b/ucb/source/ucp/tdoc/tdoc_uri.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: tdoc_uri.cxx,v $
- * $Revision: 1.7 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/tdoc/tdoc_uri.hxx b/ucb/source/ucp/tdoc/tdoc_uri.hxx
index b4e75d327a..91427bddde 100644
--- a/ucb/source/ucp/tdoc/tdoc_uri.hxx
+++ b/ucb/source/ucp/tdoc/tdoc_uri.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: tdoc_uri.hxx,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/webdav/ContentProperties.cxx b/ucb/source/ucp/webdav/ContentProperties.cxx
index 4cc975070d..4bb54dea94 100644
--- a/ucb/source/ucp/webdav/ContentProperties.cxx
+++ b/ucb/source/ucp/webdav/ContentProperties.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: ContentProperties.cxx,v $
- * $Revision: 1.12.18.1 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/webdav/ContentProperties.hxx b/ucb/source/ucp/webdav/ContentProperties.hxx
index 4fb9af57f2..5a21dba08a 100644
--- a/ucb/source/ucp/webdav/ContentProperties.hxx
+++ b/ucb/source/ucp/webdav/ContentProperties.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: ContentProperties.hxx,v $
- * $Revision: 1.12.34.1 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/webdav/DAVAuthListener.hxx b/ucb/source/ucp/webdav/DAVAuthListener.hxx
index 6a4a84db81..fb5f0d0449 100644
--- a/ucb/source/ucp/webdav/DAVAuthListener.hxx
+++ b/ucb/source/ucp/webdav/DAVAuthListener.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: DAVAuthListener.hxx,v $
- * $Revision: 1.8 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/webdav/DAVAuthListenerImpl.hxx b/ucb/source/ucp/webdav/DAVAuthListenerImpl.hxx
index 2192e1fcca..3ee5bf152c 100644
--- a/ucb/source/ucp/webdav/DAVAuthListenerImpl.hxx
+++ b/ucb/source/ucp/webdav/DAVAuthListenerImpl.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: DAVAuthListenerImpl.hxx,v $
- * $Revision: 1.4 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/webdav/DAVException.hxx b/ucb/source/ucp/webdav/DAVException.hxx
index 4e281543c8..54ad20f440 100644
--- a/ucb/source/ucp/webdav/DAVException.hxx
+++ b/ucb/source/ucp/webdav/DAVException.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: DAVException.hxx,v $
- * $Revision: 1.9 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -108,20 +105,40 @@ class DAVException
{
public:
enum ExceptionCode {
- DAV_HTTP_ERROR = 0, // Generic error, mData = error message
- DAV_HTTP_LOOKUP, // Name lookup failed, mData = server[:port]
- DAV_HTTP_AUTH, // User authentication failed on server
- DAV_HTTP_AUTHPROXY, // User authentication failed on proxy
- DAV_HTTP_CONNECT, // Could not connect to server, mData = server[:port]
+ DAV_HTTP_ERROR = 0, // Generic error,
+ // mData = server error message,
+ // mStatusCode = HTTP status code
+ DAV_HTTP_LOOKUP, // Name lookup failed,
+ // mData = server[:port]
+ DAV_HTTP_AUTH, // User authentication failed on server,
+ // mData = server[:port]
+ DAV_HTTP_AUTHPROXY, // User authentication failed on proxy,
+ // mData = proxy server[:port]
+ DAV_HTTP_CONNECT, // Could not connect to server,
+ // mData = server[:port]
DAV_HTTP_TIMEOUT, // Connection timed out
+ // mData = server[:port]
DAV_HTTP_FAILED, // The precondition failed
+ // mData = server[:port]
DAV_HTTP_RETRY, // Retry request
- DAV_HTTP_REDIRECT, // See http_redirect.h, mData = new URL
- DAV_SESSION_CREATE, // session creation error, mData = server[:port]
- DAV_INVALID_ARG }; // mData = file URL
+ // mData = server[:port]
+ DAV_HTTP_REDIRECT, // Request was redirected,
+ // mData = new URL
+ DAV_SESSION_CREATE, // session creation error,
+ // mData = server[:port]
+ DAV_INVALID_ARG, // invalid argument
+
+ DAV_LOCK_EXPIRED, // DAV lock expired
+
+ DAV_NOT_LOCKED, // not locked
+
+ DAV_LOCKED_SELF, // locked by this OOo session
+
+ DAV_LOCKED // locked by third party
+ };
private:
- ExceptionCode mExceptionCode;
+ ExceptionCode mExceptionCode;
rtl::OUString mData;
sal_uInt16 mStatusCode;
diff --git a/ucb/source/ucp/webdav/DAVProperties.cxx b/ucb/source/ucp/webdav/DAVProperties.cxx
index e3a1edd700..1b950984b4 100644
--- a/ucb/source/ucp/webdav/DAVProperties.cxx
+++ b/ucb/source/ucp/webdav/DAVProperties.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: DAVProperties.cxx,v $
- * $Revision: 1.6 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -137,6 +134,26 @@ void DAVProperties::createUCBPropName( const char * nspace,
rtl::OUString aName
= rtl::OStringToOUString( name, RTL_TEXTENCODING_UTF8 );
+ if ( !aNameSpace.getLength() )
+ {
+ // Some servers send XML without proper namespaces. Assume "DAV:"
+ // in this case, if name is a well-known dav property name.
+ // Although this is not 100% correct, it solves many problems.
+
+ if ( DAVProperties::RESOURCETYPE.matchIgnoreAsciiCase( aName, 4 ) ||
+ DAVProperties::SUPPORTEDLOCK.matchIgnoreAsciiCase( aName, 4 ) ||
+ DAVProperties::LOCKDISCOVERY.matchIgnoreAsciiCase( aName, 4 ) ||
+ DAVProperties::CREATIONDATE.matchIgnoreAsciiCase( aName, 4 ) ||
+ DAVProperties::DISPLAYNAME.matchIgnoreAsciiCase( aName, 4 ) ||
+ DAVProperties::GETCONTENTLANGUAGE.matchIgnoreAsciiCase( aName, 4 ) ||
+ DAVProperties::GETCONTENTLENGTH.matchIgnoreAsciiCase( aName, 4 ) ||
+ DAVProperties::GETCONTENTTYPE.matchIgnoreAsciiCase( aName, 4 ) ||
+ DAVProperties::GETETAG.matchIgnoreAsciiCase( aName, 4 ) ||
+ DAVProperties::GETLASTMODIFIED.matchIgnoreAsciiCase( aName, 4 ) ||
+ DAVProperties::SOURCE.matchIgnoreAsciiCase( aName, 4 ) )
+ aNameSpace = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "DAV:" ) );
+ }
+
// Note: Concatenating strings BEFORE comparing against known namespaces
// is important. See RFC 2815 ( 23.4.2 Meaning of Qualified Names ).
rFullName = aNameSpace;
@@ -175,6 +192,8 @@ void DAVProperties::createUCBPropName( const char * nspace,
// static
bool DAVProperties::isUCBDeadProperty( const NeonPropName & rName )
{
- return ( rtl_str_compareIgnoreAsciiCase(
- rName.nspace, "http://ucb.openoffice.org/dav/props/" ) == 0 );
+ return ( rName.nspace &&
+ ( rtl_str_compareIgnoreAsciiCase(
+ rName.nspace, "http://ucb.openoffice.org/dav/props/" )
+ == 0 ) );
}
diff --git a/ucb/source/ucp/webdav/DAVProperties.hxx b/ucb/source/ucp/webdav/DAVProperties.hxx
index cd87f8238e..8567946177 100644
--- a/ucb/source/ucp/webdav/DAVProperties.hxx
+++ b/ucb/source/ucp/webdav/DAVProperties.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: DAVProperties.hxx,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/webdav/DAVRequestEnvironment.hxx b/ucb/source/ucp/webdav/DAVRequestEnvironment.hxx
index d8cbe527c6..c1a3ffb295 100644
--- a/ucb/source/ucp/webdav/DAVRequestEnvironment.hxx
+++ b/ucb/source/ucp/webdav/DAVRequestEnvironment.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: DAVRequestEnvironment.hxx,v $
- * $Revision: 1.9 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/webdav/DAVResource.hxx b/ucb/source/ucp/webdav/DAVResource.hxx
index 8dc62f4171..a133f0ba56 100644
--- a/ucb/source/ucp/webdav/DAVResource.hxx
+++ b/ucb/source/ucp/webdav/DAVResource.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: DAVResource.hxx,v $
- * $Revision: 1.9 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/webdav/DAVResourceAccess.cxx b/ucb/source/ucp/webdav/DAVResourceAccess.cxx
index f26caaedc2..076d92d214 100644
--- a/ucb/source/ucp/webdav/DAVResourceAccess.cxx
+++ b/ucb/source/ucp/webdav/DAVResourceAccess.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: DAVResourceAccess.cxx,v $
- * $Revision: 1.29.16.1 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -67,6 +64,7 @@ int DAVAuthListener_Impl::authenticate(
{
uno::Reference< task::XInteractionHandler > xIH
= m_xEnv->getInteractionHandler();
+
if ( xIH.is() )
{
// #102871# - Supply username and password from previous try.
@@ -78,19 +76,15 @@ int DAVAuthListener_Impl::authenticate(
outPassWord = m_aPrevPassword;
rtl::Reference< ucbhelper::SimpleAuthenticationRequest > xRequest
- = new ucbhelper::SimpleAuthenticationRequest( m_aURL,
- inHostName,
- inRealm,
- inoutUserName,
- outPassWord,
- ::rtl::OUString(),
- bAllowPersistentStoring,
- bCanUseSystemCredentials );
+ = new ucbhelper::SimpleAuthenticationRequest(
+ m_aURL, inHostName, inRealm, inoutUserName,
+ outPassWord, ::rtl::OUString(),
+ bAllowPersistentStoring, bCanUseSystemCredentials );
xIH->handle( xRequest.get() );
rtl::Reference< ucbhelper::InteractionContinuation > xSelection
= xRequest->getSelection();
-
+
if ( xSelection.is() )
{
// Handler handled the request.
@@ -105,8 +99,9 @@ int DAVAuthListener_Impl::authenticate(
sal_Bool bUseSystemCredentials = sal_False;
if ( bCanUseSystemCredentials )
- bUseSystemCredentials = xSupp->getUseSystemCredentials();
-
+ bUseSystemCredentials
+ = xSupp->getUseSystemCredentials();
+
if ( bUseSystemCredentials )
{
// This is the (strange) way to tell neon to use
@@ -117,7 +112,7 @@ int DAVAuthListener_Impl::authenticate(
else
{
inoutUserName = xSupp->getUserName();
- outPassWord = xSupp->getPassword();
+ outPassWord = xSupp->getPassword();
}
// #102871# - Remember username and password.
@@ -178,8 +173,9 @@ DAVResourceAccess & DAVResourceAccess::operator=(
return *this;
}
+#if 0 // currently not used, but please don't remove code
//=========================================================================
-void DAVResourceAccess::OPTIONS(
+void DAVResourceAccess::OPTIONS(
DAVCapabilities & rCapabilities,
const uno::Reference< ucb::XCommandEnvironment > & xEnv )
throw( DAVException )
@@ -194,10 +190,10 @@ void DAVResourceAccess::OPTIONS(
try
{
DAVRequestHeaders aHeaders;
- getUserRequestHeaders( xEnv,
- getRequestURI(),
- rtl::OUString::createFromAscii(
- "OPTIONS" ),
+ getUserRequestHeaders( xEnv,
+ getRequestURI(),
+ rtl::OUString::createFromAscii(
+ "OPTIONS" ),
aHeaders );
m_xSession->OPTIONS( getRequestURI(),
@@ -217,9 +213,10 @@ void DAVResourceAccess::OPTIONS(
}
while ( bRetry );
}
+#endif
//=========================================================================
-void DAVResourceAccess::PROPFIND(
+void DAVResourceAccess::PROPFIND(
const Depth nDepth,
const std::vector< rtl::OUString > & rPropertyNames,
std::vector< DAVResource > & rResources,
@@ -237,10 +234,10 @@ void DAVResourceAccess::PROPFIND(
{
DAVRequestHeaders aHeaders;
- getUserRequestHeaders( xEnv,
- getRequestURI(),
- rtl::OUString::createFromAscii(
- "PROPFIND" ),
+ getUserRequestHeaders( xEnv,
+ getRequestURI(),
+ rtl::OUString::createFromAscii(
+ "PROPFIND" ),
aHeaders );
m_xSession->PROPFIND( getRequestURI(),
@@ -264,7 +261,7 @@ void DAVResourceAccess::PROPFIND(
}
//=========================================================================
-void DAVResourceAccess::PROPFIND(
+void DAVResourceAccess::PROPFIND(
const Depth nDepth,
std::vector< DAVResourceInfo > & rResInfo,
const uno::Reference< ucb::XCommandEnvironment > & xEnv )
@@ -280,12 +277,12 @@ void DAVResourceAccess::PROPFIND(
try
{
DAVRequestHeaders aHeaders;
- getUserRequestHeaders( xEnv,
- getRequestURI(),
- rtl::OUString::createFromAscii(
- "PROPFIND" ),
+ getUserRequestHeaders( xEnv,
+ getRequestURI(),
+ rtl::OUString::createFromAscii(
+ "PROPFIND" ),
aHeaders );
-
+
m_xSession->PROPFIND( getRequestURI(),
nDepth,
rResInfo,
@@ -306,7 +303,7 @@ void DAVResourceAccess::PROPFIND(
}
//=========================================================================
-void DAVResourceAccess::PROPPATCH(
+void DAVResourceAccess::PROPPATCH(
const std::vector< ProppatchValue >& rValues,
const uno::Reference< ucb::XCommandEnvironment >& xEnv )
throw( DAVException )
@@ -321,12 +318,12 @@ void DAVResourceAccess::PROPPATCH(
try
{
DAVRequestHeaders aHeaders;
- getUserRequestHeaders( xEnv,
- getRequestURI(),
- rtl::OUString::createFromAscii(
- "PROPPATCH" ),
+ getUserRequestHeaders( xEnv,
+ getRequestURI(),
+ rtl::OUString::createFromAscii(
+ "PROPPATCH" ),
aHeaders );
-
+
m_xSession->PROPPATCH( getRequestURI(),
rValues,
DAVRequestEnvironment(
@@ -346,13 +343,14 @@ void DAVResourceAccess::PROPPATCH(
}
//=========================================================================
-void DAVResourceAccess::HEAD(
+void DAVResourceAccess::HEAD(
const std::vector< rtl::OUString > & rHeaderNames,
DAVResource & rResource,
const uno::Reference< ucb::XCommandEnvironment >& xEnv )
throw( DAVException )
{
initialize();
+
int errorCount = 0;
bool bRetry;
do
@@ -361,11 +359,11 @@ void DAVResourceAccess::HEAD(
try
{
DAVRequestHeaders aHeaders;
- getUserRequestHeaders( xEnv,
- getRequestURI(),
- rtl::OUString::createFromAscii( "HEAD" ),
+ getUserRequestHeaders( xEnv,
+ getRequestURI(),
+ rtl::OUString::createFromAscii( "HEAD" ),
aHeaders );
-
+
m_xSession->HEAD( getRequestURI(),
rHeaderNames,
rResource,
@@ -401,15 +399,16 @@ uno::Reference< io::XInputStream > DAVResourceAccess::GET(
try
{
DAVRequestHeaders aHeaders;
- getUserRequestHeaders( xEnv,
- getRequestURI(),
- rtl::OUString::createFromAscii( "GET" ),
+ getUserRequestHeaders( xEnv,
+ getRequestURI(),
+ rtl::OUString::createFromAscii( "GET" ),
aHeaders );
-
+
xStream = m_xSession->GET( getRequestURI(),
DAVRequestEnvironment(
getRequestURI(),
- new DAVAuthListener_Impl( xEnv, m_aURL ),
+ new DAVAuthListener_Impl(
+ xEnv, m_aURL ),
aHeaders, xEnv ) );
}
catch ( DAVException & e )
@@ -421,12 +420,12 @@ uno::Reference< io::XInputStream > DAVResourceAccess::GET(
}
}
while ( bRetry );
-
+
return xStream;
}
//=========================================================================
-void DAVResourceAccess::GET(
+void DAVResourceAccess::GET(
uno::Reference< io::XOutputStream > & rStream,
const uno::Reference< ucb::XCommandEnvironment > & xEnv )
throw( DAVException )
@@ -441,11 +440,11 @@ void DAVResourceAccess::GET(
try
{
DAVRequestHeaders aHeaders;
- getUserRequestHeaders( xEnv,
- getRequestURI(),
- rtl::OUString::createFromAscii( "GET" ),
+ getUserRequestHeaders( xEnv,
+ getRequestURI(),
+ rtl::OUString::createFromAscii( "GET" ),
aHeaders );
-
+
m_xSession->GET( getRequestURI(),
rStream,
DAVRequestEnvironment(
@@ -482,17 +481,18 @@ uno::Reference< io::XInputStream > DAVResourceAccess::GET(
try
{
DAVRequestHeaders aHeaders;
- getUserRequestHeaders( xEnv,
- getRequestURI(),
- rtl::OUString::createFromAscii( "GET" ),
+ getUserRequestHeaders( xEnv,
+ getRequestURI(),
+ rtl::OUString::createFromAscii( "GET" ),
aHeaders );
-
+
xStream = m_xSession->GET( getRequestURI(),
rHeaderNames,
rResource,
DAVRequestEnvironment(
getRequestURI(),
- new DAVAuthListener_Impl( xEnv, m_aURL ),
+ new DAVAuthListener_Impl(
+ xEnv, m_aURL ),
aHeaders, xEnv ) );
}
catch ( DAVException & e )
@@ -526,11 +526,11 @@ void DAVResourceAccess::GET(
try
{
DAVRequestHeaders aHeaders;
- getUserRequestHeaders( xEnv,
- getRequestURI(),
- rtl::OUString::createFromAscii( "GET" ),
+ getUserRequestHeaders( xEnv,
+ getRequestURI(),
+ rtl::OUString::createFromAscii( "GET" ),
aHeaders );
-
+
m_xSession->GET( getRequestURI(),
rStream,
rHeaderNames,
@@ -552,13 +552,15 @@ void DAVResourceAccess::GET(
}
//=========================================================================
-void DAVResourceAccess::ABORT()
+void DAVResourceAccess::abort()
throw( DAVException )
{
- // 17.11.09 (tkr): abort currently disabled caused by issue i106766
- // initialize();
- // m_xSession->ABORT();
+ // 17.11.09 (tkr): abort currently disabled caused by issue i106766
+ // initialize();
+ // m_xSession->abort();
+ OSL_TRACE( "Not implemented. -> #i106766#" );
}
+
//=========================================================================
namespace {
@@ -567,9 +569,9 @@ namespace {
{
try
{
- uno::Reference< io::XSeekable > xSeekable(
+ uno::Reference< io::XSeekable > xSeekable(
rStream, uno::UNO_QUERY );
- if ( xSeekable.is() )
+ if ( xSeekable.is() )
{
xSeekable->seek( 0 );
return;
@@ -588,7 +590,7 @@ namespace {
} // namespace
//=========================================================================
-void DAVResourceAccess::PUT(
+void DAVResourceAccess::PUT(
const uno::Reference< io::XInputStream > & rStream,
const uno::Reference< ucb::XCommandEnvironment > & xEnv )
throw( DAVException )
@@ -597,7 +599,7 @@ void DAVResourceAccess::PUT(
// Make stream seekable, if it not. Needed, if request must be retried.
uno::Reference< io::XInputStream > xSeekableStream
- = comphelper::OSeekableInputWrapper::CheckSeekableCanWrap(
+ = comphelper::OSeekableInputWrapper::CheckSeekableCanWrap(
rStream, m_xSMgr );
int errorCount = 0;
@@ -611,11 +613,11 @@ void DAVResourceAccess::PUT(
try
{
DAVRequestHeaders aHeaders;
- getUserRequestHeaders( xEnv,
- getRequestURI(),
- rtl::OUString::createFromAscii( "PUT" ),
+ getUserRequestHeaders( xEnv,
+ getRequestURI(),
+ rtl::OUString::createFromAscii( "PUT" ),
aHeaders );
-
+
m_xSession->PUT( getRequestURI(),
xSeekableStream,
DAVRequestEnvironment(
@@ -646,7 +648,7 @@ uno::Reference< io::XInputStream > DAVResourceAccess::POST(
// Make stream seekable, if it not. Needed, if request must be retried.
uno::Reference< io::XInputStream > xSeekableStream
- = comphelper::OSeekableInputWrapper::CheckSeekableCanWrap(
+ = comphelper::OSeekableInputWrapper::CheckSeekableCanWrap(
rInputStream, m_xSMgr );
uno::Reference< io::XInputStream > xStream;
@@ -663,18 +665,19 @@ uno::Reference< io::XInputStream > DAVResourceAccess::POST(
try
{
DAVRequestHeaders aHeaders;
- getUserRequestHeaders( xEnv,
- getRequestURI(),
- rtl::OUString::createFromAscii( "POST" ),
+ getUserRequestHeaders( xEnv,
+ getRequestURI(),
+ rtl::OUString::createFromAscii( "POST" ),
aHeaders );
-
+
xStream = m_xSession->POST( getRequestURI(),
rContentType,
rReferer,
xSeekableStream,
DAVRequestEnvironment(
getRequestURI(),
- new DAVAuthListener_Impl( xEnv, m_aURL ),
+ new DAVAuthListener_Impl(
+ xEnv, m_aURL ),
aHeaders, xEnv ) );
}
catch ( DAVException & e )
@@ -692,12 +695,11 @@ uno::Reference< io::XInputStream > DAVResourceAccess::POST(
}
}
while ( bRetry );
-
+
return xStream;
}
//=========================================================================
-
void DAVResourceAccess::POST(
const rtl::OUString & rContentType,
const rtl::OUString & rReferer,
@@ -710,7 +712,7 @@ void DAVResourceAccess::POST(
// Make stream seekable, if it not. Needed, if request must be retried.
uno::Reference< io::XInputStream > xSeekableStream
- = comphelper::OSeekableInputWrapper::CheckSeekableCanWrap(
+ = comphelper::OSeekableInputWrapper::CheckSeekableCanWrap(
rInputStream, m_xSMgr );
int errorCount = 0;
@@ -726,11 +728,11 @@ void DAVResourceAccess::POST(
try
{
DAVRequestHeaders aHeaders;
- getUserRequestHeaders( xEnv,
- getRequestURI(),
- rtl::OUString::createFromAscii( "POST" ),
+ getUserRequestHeaders( xEnv,
+ getRequestURI(),
+ rtl::OUString::createFromAscii( "POST" ),
aHeaders );
-
+
m_xSession->POST( getRequestURI(),
rContentType,
rReferer,
@@ -760,11 +762,12 @@ void DAVResourceAccess::POST(
}
//=========================================================================
-void DAVResourceAccess::MKCOL(
+void DAVResourceAccess::MKCOL(
const uno::Reference< ucb::XCommandEnvironment > & xEnv )
throw( DAVException )
{
initialize();
+
int errorCount = 0;
bool bRetry;
do
@@ -773,11 +776,11 @@ void DAVResourceAccess::MKCOL(
try
{
DAVRequestHeaders aHeaders;
- getUserRequestHeaders( xEnv,
- getRequestURI(),
- rtl::OUString::createFromAscii( "MKCOL" ),
+ getUserRequestHeaders( xEnv,
+ getRequestURI(),
+ rtl::OUString::createFromAscii( "MKCOL" ),
aHeaders );
-
+
m_xSession->MKCOL( getRequestURI(),
DAVRequestEnvironment(
getRequestURI(),
@@ -796,7 +799,7 @@ void DAVResourceAccess::MKCOL(
}
//=========================================================================
-void DAVResourceAccess::COPY(
+void DAVResourceAccess::COPY(
const ::rtl::OUString & rSourcePath,
const ::rtl::OUString & rDestinationURI,
sal_Bool bOverwrite,
@@ -804,6 +807,7 @@ void DAVResourceAccess::COPY(
throw( DAVException )
{
initialize();
+
int errorCount = 0;
bool bRetry;
do
@@ -812,11 +816,11 @@ void DAVResourceAccess::COPY(
try
{
DAVRequestHeaders aHeaders;
- getUserRequestHeaders( xEnv,
- getRequestURI(),
- rtl::OUString::createFromAscii( "COPY" ),
+ getUserRequestHeaders( xEnv,
+ getRequestURI(),
+ rtl::OUString::createFromAscii( "COPY" ),
aHeaders );
-
+
m_xSession->COPY( rSourcePath,
rDestinationURI,
DAVRequestEnvironment(
@@ -837,7 +841,7 @@ void DAVResourceAccess::COPY(
}
//=========================================================================
-void DAVResourceAccess::MOVE(
+void DAVResourceAccess::MOVE(
const ::rtl::OUString & rSourcePath,
const ::rtl::OUString & rDestinationURI,
sal_Bool bOverwrite,
@@ -845,6 +849,7 @@ void DAVResourceAccess::MOVE(
throw( DAVException )
{
initialize();
+
int errorCount = 0;
bool bRetry;
do
@@ -853,9 +858,9 @@ void DAVResourceAccess::MOVE(
try
{
DAVRequestHeaders aHeaders;
- getUserRequestHeaders( xEnv,
- getRequestURI(),
- rtl::OUString::createFromAscii( "MOVE" ),
+ getUserRequestHeaders( xEnv,
+ getRequestURI(),
+ rtl::OUString::createFromAscii( "MOVE" ),
aHeaders );
m_xSession->MOVE( rSourcePath,
@@ -878,7 +883,7 @@ void DAVResourceAccess::MOVE(
}
//=========================================================================
-void DAVResourceAccess::DESTROY(
+void DAVResourceAccess::DESTROY(
const uno::Reference< ucb::XCommandEnvironment > & xEnv )
throw( DAVException )
{
@@ -892,12 +897,12 @@ void DAVResourceAccess::DESTROY(
try
{
DAVRequestHeaders aHeaders;
- getUserRequestHeaders( xEnv,
- getRequestURI(),
- rtl::OUString::createFromAscii(
- "DESTROY" ),
+ getUserRequestHeaders( xEnv,
+ getRequestURI(),
+ rtl::OUString::createFromAscii(
+ "DESTROY" ),
aHeaders );
-
+
m_xSession->DESTROY( getRequestURI(),
DAVRequestEnvironment(
getRequestURI(),
@@ -916,23 +921,124 @@ void DAVResourceAccess::DESTROY(
}
//=========================================================================
-void DAVResourceAccess::LOCK (
- const ucb::Lock & /*rLock*/,
- const uno::Reference< ucb::XCommandEnvironment > & /*xEnv*/ )
- throw( DAVException )
+// set new lock.
+void DAVResourceAccess::LOCK(
+ ucb::Lock & inLock,
+ const uno::Reference< ucb::XCommandEnvironment > & xEnv )
+ throw ( DAVException )
+{
+ initialize();
+
+ int errorCount = 0;
+ bool bRetry;
+ do
+ {
+ bRetry = false;
+ try
+ {
+ DAVRequestHeaders aHeaders;
+ getUserRequestHeaders( xEnv,
+ getRequestURI(),
+ rtl::OUString::createFromAscii( "LOCK" ),
+ aHeaders );
+
+ m_xSession->LOCK( getRequestURI(),
+ inLock,
+ DAVRequestEnvironment(
+ getRequestURI(),
+ new DAVAuthListener_Impl( xEnv, m_aURL ),
+ aHeaders, xEnv ) );
+ }
+ catch ( DAVException & e )
+ {
+ errorCount++;
+ bRetry = handleException( e, errorCount );
+ if ( !bRetry )
+ throw;
+ }
+ }
+ while ( bRetry );
+}
+
+//=========================================================================
+// refresh existing lock.
+sal_Int64 DAVResourceAccess::LOCK(
+ sal_Int64 nTimeout,
+ const uno::Reference< ucb::XCommandEnvironment > & xEnv )
+ throw ( DAVException )
{
-// initialize();
- OSL_ENSURE( sal_False, "DAVResourceAccess::LOCK - NYI" );
+ initialize();
+
+ sal_Int64 nNewTimeout = 0;
+ int errorCount = 0;
+ bool bRetry;
+ do
+ {
+ bRetry = false;
+ try
+ {
+ DAVRequestHeaders aHeaders;
+ getUserRequestHeaders( xEnv,
+ getRequestURI(),
+ rtl::OUString::createFromAscii( "LOCK" ),
+ aHeaders );
+
+ nNewTimeout = m_xSession->LOCK( getRequestURI(),
+ nTimeout,
+ DAVRequestEnvironment(
+ getRequestURI(),
+ new DAVAuthListener_Impl(
+ xEnv, m_aURL ),
+ aHeaders, xEnv ) );
+ }
+ catch ( DAVException & e )
+ {
+ errorCount++;
+ bRetry = handleException( e, errorCount );
+ if ( !bRetry )
+ throw;
+ }
+ }
+ while ( bRetry );
+
+ return nNewTimeout;
}
//=========================================================================
-void DAVResourceAccess::UNLOCK (
- const ucb::Lock & /*rLock*/,
- const uno::Reference< ucb::XCommandEnvironment > & /*xEnv*/ )
- throw( DAVException )
+void DAVResourceAccess::UNLOCK(
+ const uno::Reference< ucb::XCommandEnvironment > & xEnv )
+ throw ( DAVException )
{
-// initialize();
- OSL_ENSURE( sal_False, "DAVResourceAccess::UNLOCK - NYI" );
+ initialize();
+
+ int errorCount = 0;
+ bool bRetry;
+ do
+ {
+ bRetry = false;
+ try
+ {
+ DAVRequestHeaders aHeaders;
+ getUserRequestHeaders( xEnv,
+ getRequestURI(),
+ rtl::OUString::createFromAscii( "UNLOCK" ),
+ aHeaders );
+
+ m_xSession->UNLOCK( getRequestURI(),
+ DAVRequestEnvironment(
+ getRequestURI(),
+ new DAVAuthListener_Impl( xEnv, m_aURL ),
+ aHeaders, xEnv ) );
+ }
+ catch ( DAVException & e )
+ {
+ errorCount++;
+ bRetry = handleException( e, errorCount );
+ if ( !bRetry )
+ throw;
+ }
+ }
+ while ( bRetry );
}
//=========================================================================
@@ -1009,9 +1115,9 @@ void DAVResourceAccess::getUserRequestHeaders(
{
if ( xEnv.is() )
{
- uno::Reference< ucb::XWebDAVCommandEnvironment > xDAVEnv(
+ uno::Reference< ucb::XWebDAVCommandEnvironment > xDAVEnv(
xEnv, uno::UNO_QUERY );
-
+
if ( xDAVEnv.is() )
{
uno::Sequence< beans::NamedValue > aRequestHeaders
@@ -1021,17 +1127,16 @@ void DAVResourceAccess::getUserRequestHeaders(
{
rtl::OUString aValue;
sal_Bool isString = aRequestHeaders[ n ].Value >>= aValue;
-
+
if ( !isString )
{
OSL_ENSURE( isString,
"DAVResourceAccess::getUserRequestHeaders :"
"Value is not a string! Ignoring..." );
}
-
- rRequestHeaders.push_back( DAVRequestHeader(
- aRequestHeaders[ n ].Name,
- aValue ) );
+
+ rRequestHeaders.push_back(
+ DAVRequestHeader( aRequestHeaders[ n ].Name, aValue ) );
}
}
}
@@ -1048,12 +1153,12 @@ sal_Bool DAVResourceAccess::detectRedirectCycle(
std::vector< NeonUri >::const_iterator it = m_aRedirectURIs.begin();
std::vector< NeonUri >::const_iterator end = m_aRedirectURIs.end();
-
+
while ( it != end )
{
if ( aUri == (*it) )
return sal_True;
-
+
it++;
}
@@ -1075,7 +1180,6 @@ void DAVResourceAccess::resetUri()
}
}
-
//=========================================================================
sal_Bool DAVResourceAccess::handleException( DAVException & e, int errorCount )
throw ( DAVException )
@@ -1095,10 +1199,12 @@ sal_Bool DAVResourceAccess::handleException( DAVException & e, int errorCount )
// if we have a bad connection try again. Up to three times.
case DAVException::DAV_HTTP_ERROR:
// retry up to three times, if not a client-side error.
- if ( ( e.getStatus() < 400 || e.getStatus() > 499 ) && errorCount < 3)
+ if ( e.getStatus() > 0 &&
+ ( e.getStatus() < 400 || e.getStatus() > 499 ) &&
+ errorCount < 3 )
{
return sal_True;
- }
+ }
return sal_False;
// <--
// --> tkr: if connection has said retry then retry!
diff --git a/ucb/source/ucp/webdav/DAVResourceAccess.hxx b/ucb/source/ucp/webdav/DAVResourceAccess.hxx
index 0d40b57bfb..31b9bbbfd8 100644
--- a/ucb/source/ucp/webdav/DAVResourceAccess.hxx
+++ b/ucb/source/ucp/webdav/DAVResourceAccess.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: DAVResourceAccess.hxx,v $
- * $Revision: 1.19 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -59,22 +56,22 @@ class DAVResourceAccess
rtl::Reference< DAVSession > m_xSession;
rtl::Reference< DAVSessionFactory > m_xSessionFactory;
com::sun::star::uno::Reference<
- com::sun::star::lang::XMultiServiceFactory > m_xSMgr;
+ com::sun::star::lang::XMultiServiceFactory > m_xSMgr;
std::vector< NeonUri > m_aRedirectURIs;
public:
DAVResourceAccess() : m_xSessionFactory( 0 ) {}
DAVResourceAccess( const com::sun::star::uno::Reference<
- com::sun::star::lang::XMultiServiceFactory > & rSMgr,
+ com::sun::star::lang::XMultiServiceFactory > & rSMgr,
rtl::Reference<
- DAVSessionFactory > const & rSessionFactory,
+ DAVSessionFactory > const & rSessionFactory,
const rtl::OUString & rURL );
DAVResourceAccess( const DAVResourceAccess & rOther );
DAVResourceAccess & operator=( const DAVResourceAccess & rOther );
void setURL( const rtl::OUString & rNewURL )
- throw( DAVException );
+ throw ( DAVException );
void resetUri();
@@ -86,146 +83,156 @@ public:
// DAV methods
//
+#if 0 // currently not used, but please don't remove code
void
OPTIONS( DAVCapabilities & rCapabilities,
- const com::sun::star::uno::Reference<
- com::sun::star::ucb::XCommandEnvironment > & xEnv )
- throw( DAVException );
+ const com::sun::star::uno::Reference<
+ com::sun::star::ucb::XCommandEnvironment > & xEnv )
+ throw ( DAVException );
+#endif
// allprop & named
void
PROPFIND( const Depth nDepth,
- const std::vector< rtl::OUString > & rPropertyNames,
- std::vector< DAVResource > & rResources,
- const com::sun::star::uno::Reference<
- com::sun::star::ucb::XCommandEnvironment > & xEnv )
- throw( DAVException );
+ const std::vector< rtl::OUString > & rPropertyNames,
+ std::vector< DAVResource > & rResources,
+ const com::sun::star::uno::Reference<
+ com::sun::star::ucb::XCommandEnvironment > & xEnv )
+ throw ( DAVException );
// propnames
void
PROPFIND( const Depth nDepth,
- std::vector< DAVResourceInfo > & rResInfo,
- const com::sun::star::uno::Reference<
- com::sun::star::ucb::XCommandEnvironment > & xEnv )
- throw( DAVException );
+ std::vector< DAVResourceInfo > & rResInfo,
+ const com::sun::star::uno::Reference<
+ com::sun::star::ucb::XCommandEnvironment > & xEnv )
+ throw ( DAVException );
void
PROPPATCH( const std::vector< ProppatchValue > & rValues,
- const com::sun::star::uno::Reference<
- com::sun::star::ucb::XCommandEnvironment >& xEnv )
- throw( DAVException );
+ const com::sun::star::uno::Reference<
+ com::sun::star::ucb::XCommandEnvironment >& xEnv )
+ throw ( DAVException );
void
HEAD( const std::vector< rtl::OUString > & rHeaderNames, // empty == 'all'
DAVResource & rResource,
const com::sun::star::uno::Reference<
- com::sun::star::ucb::XCommandEnvironment >& xEnv )
- throw( DAVException );
+ com::sun::star::ucb::XCommandEnvironment >& xEnv )
+ throw ( DAVException );
com::sun::star::uno::Reference< com::sun::star::io::XInputStream >
GET( const com::sun::star::uno::Reference<
- com::sun::star::ucb::XCommandEnvironment > & xEnv )
- throw( DAVException );
+ com::sun::star::ucb::XCommandEnvironment > & xEnv )
+ throw ( DAVException );
void
GET( com::sun::star::uno::Reference<
- com::sun::star::io::XOutputStream > & rStream,
+ com::sun::star::io::XOutputStream > & rStream,
const com::sun::star::uno::Reference<
- com::sun::star::ucb::XCommandEnvironment > & xEnv )
- throw( DAVException );
+ com::sun::star::ucb::XCommandEnvironment > & xEnv )
+ throw ( DAVException );
com::sun::star::uno::Reference< com::sun::star::io::XInputStream >
GET( const std::vector< rtl::OUString > & rHeaderNames, // empty == 'all'
DAVResource & rResource,
const com::sun::star::uno::Reference<
- com::sun::star::ucb::XCommandEnvironment > & xEnv )
- throw( DAVException );
+ com::sun::star::ucb::XCommandEnvironment > & xEnv )
+ throw ( DAVException );
void
GET( com::sun::star::uno::Reference<
- com::sun::star::io::XOutputStream > & rStream,
+ com::sun::star::io::XOutputStream > & rStream,
const std::vector< rtl::OUString > & rHeaderNames, // empty == 'all'
DAVResource & rResource,
const com::sun::star::uno::Reference<
- com::sun::star::ucb::XCommandEnvironment > & xEnv )
- throw( DAVException );
+ com::sun::star::ucb::XCommandEnvironment > & xEnv )
+ throw ( DAVException );
void
PUT( const com::sun::star::uno::Reference<
- com::sun::star::io::XInputStream > & rStream,
- const com::sun::star::uno::Reference<
- com::sun::star::ucb::XCommandEnvironment > & xEnv )
- throw( DAVException );
+ com::sun::star::io::XInputStream > & rStream,
+ const com::sun::star::uno::Reference<
+ com::sun::star::ucb::XCommandEnvironment > & xEnv )
+ throw ( DAVException );
com::sun::star::uno::Reference< com::sun::star::io::XInputStream >
POST( const rtl::OUString & rContentType,
- const rtl::OUString & rReferer,
- const com::sun::star::uno::Reference<
- com::sun::star::io::XInputStream > & rInputStream,
- const com::sun::star::uno::Reference<
+ const rtl::OUString & rReferer,
+ const com::sun::star::uno::Reference<
+ com::sun::star::io::XInputStream > & rInputStream,
+ const com::sun::star::uno::Reference<
com::sun::star::ucb::XCommandEnvironment >& xEnv )
throw ( DAVException );
void
POST( const rtl::OUString & rContentType,
- const rtl::OUString & rReferer,
- const com::sun::star::uno::Reference<
- com::sun::star::io::XInputStream > & rInputStream,
- com::sun::star::uno::Reference<
- com::sun::star::io::XOutputStream > & rOutputStream,
- const com::sun::star::uno::Reference<
- com::sun::star::ucb::XCommandEnvironment >& xEnv )
+ const rtl::OUString & rReferer,
+ const com::sun::star::uno::Reference<
+ com::sun::star::io::XInputStream > & rInputStream,
+ com::sun::star::uno::Reference<
+ com::sun::star::io::XOutputStream > & rOutputStream,
+ const com::sun::star::uno::Reference<
+ com::sun::star::ucb::XCommandEnvironment >& xEnv )
throw ( DAVException );
void
MKCOL( const com::sun::star::uno::Reference<
- com::sun::star::ucb::XCommandEnvironment > & xEnv )
- throw( DAVException );
+ com::sun::star::ucb::XCommandEnvironment > & xEnv )
+ throw ( DAVException );
void
COPY( const ::rtl::OUString & rSourcePath,
- const ::rtl::OUString & rDestinationURI,
- sal_Bool bOverwrite,
- const com::sun::star::uno::Reference<
- com::sun::star::ucb::XCommandEnvironment > & xEnv )
- throw( DAVException );
+ const ::rtl::OUString & rDestinationURI,
+ sal_Bool bOverwrite,
+ const com::sun::star::uno::Reference<
+ com::sun::star::ucb::XCommandEnvironment > & xEnv )
+ throw ( DAVException );
void
MOVE( const ::rtl::OUString & rSourcePath,
- const ::rtl::OUString & rDestinationURI,
- sal_Bool bOverwrite,
- const com::sun::star::uno::Reference<
- com::sun::star::ucb::XCommandEnvironment > & xEnv )
- throw( DAVException );
+ const ::rtl::OUString & rDestinationURI,
+ sal_Bool bOverwrite,
+ const com::sun::star::uno::Reference<
+ com::sun::star::ucb::XCommandEnvironment > & xEnv )
+ throw ( DAVException );
void
DESTROY( const com::sun::star::uno::Reference<
- com::sun::star::ucb::XCommandEnvironment > & xEnv )
- throw( DAVException );
+ com::sun::star::ucb::XCommandEnvironment > & xEnv )
+ throw ( DAVException );
+ // set new lock.
void
- LOCK( const com::sun::star::ucb::Lock & rLock,
- const com::sun::star::uno::Reference<
- com::sun::star::ucb::XCommandEnvironment > & xEnv )
- throw( DAVException );
+ LOCK( com::sun::star::ucb::Lock & inLock,
+ const com::sun::star::uno::Reference<
+ com::sun::star::ucb::XCommandEnvironment > & xEnv )
+ throw( DAVException );
+
+ // refresh existing lock.
+ sal_Int64
+ LOCK( sal_Int64 nTimeout,
+ const com::sun::star::uno::Reference<
+ com::sun::star::ucb::XCommandEnvironment > & xEnv )
+ throw ( DAVException );
void
- UNLOCK( const com::sun::star::ucb::Lock & rLock,
- const com::sun::star::uno::Reference<
- com::sun::star::ucb::XCommandEnvironment > & xEnv )
- throw( DAVException );
+ UNLOCK( const com::sun::star::uno::Reference<
+ com::sun::star::ucb::XCommandEnvironment > & xEnv )
+ throw ( DAVException );
void
- ABORT()
- throw( DAVException );
+ abort()
+ throw ( DAVException );
// helper
- static void getUserRequestHeaders(
- const com::sun::star::uno::Reference<
- com::sun::star::ucb::XCommandEnvironment > & xEnv,
- const rtl::OUString & rURI,
- const rtl::OUString & rMethod,
- DAVRequestHeaders & rRequestHeaders );
+ static void
+ getUserRequestHeaders(
+ const com::sun::star::uno::Reference<
+ com::sun::star::ucb::XCommandEnvironment > & xEnv,
+ const rtl::OUString & rURI,
+ const rtl::OUString & rMethod,
+ DAVRequestHeaders & rRequestHeaders );
private:
const rtl::OUString & getRequestURI() const;
diff --git a/ucb/source/ucp/webdav/DAVSession.hxx b/ucb/source/ucp/webdav/DAVSession.hxx
index 9070b086d6..1206679fc5 100644
--- a/ucb/source/ucp/webdav/DAVSession.hxx
+++ b/ucb/source/ucp/webdav/DAVSession.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: DAVSession.hxx,v $
- * $Revision: 1.20 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -42,7 +39,9 @@
#include "DAVTypes.hxx"
#include "DAVRequestEnvironment.hxx"
-
+namespace com { namespace sun { namespace star { namespace ucb {
+ struct Lock;
+} } } }
namespace webdav_ucp
{
@@ -73,28 +72,28 @@ public:
// DAV methods
//
- virtual void OPTIONS( const ::rtl::OUString & inPath,
+ virtual void OPTIONS( const ::rtl::OUString & inPath,
DAVCapabilities & outCapabilities,
const DAVRequestEnvironment & rEnv )
throw( DAVException ) = 0;
// allprop & named
- virtual void PROPFIND( const ::rtl::OUString & inPath,
- const Depth inDepth,
+ virtual void PROPFIND( const ::rtl::OUString & inPath,
+ const Depth inDepth,
const std::vector< ::rtl::OUString > & inPropertyNames,
- std::vector< DAVResource > & ioResources,
+ std::vector< DAVResource > & ioResources,
const DAVRequestEnvironment & rEnv )
throw( DAVException ) = 0;
// propnames
- virtual void PROPFIND( const ::rtl::OUString & inPath,
- const Depth inDepth,
+ virtual void PROPFIND( const ::rtl::OUString & inPath,
+ const Depth inDepth,
std::vector< DAVResourceInfo > & ioResInfo,
const DAVRequestEnvironment & rEnv )
throw( DAVException ) = 0;
- virtual void PROPPATCH( const ::rtl::OUString & inPath,
- const std::vector< ProppatchValue > & inValues,
+ virtual void PROPPATCH( const ::rtl::OUString & inPath,
+ const std::vector< ProppatchValue > & inValues,
const DAVRequestEnvironment & rEnv )
throw( DAVException ) = 0;
@@ -105,87 +104,95 @@ public:
throw( DAVException ) = 0;
virtual com::sun::star::uno::Reference< com::sun::star::io::XInputStream >
- GET( const ::rtl::OUString & inPath,
- const DAVRequestEnvironment & rEnv )
+ GET( const ::rtl::OUString & inPath,
+ const DAVRequestEnvironment & rEnv )
throw( DAVException ) = 0;
- virtual void GET( const ::rtl::OUString & inPath,
- com::sun::star::uno::Reference< com::sun::star::io::XOutputStream >& o,
- const DAVRequestEnvironment & rEnv )
+ virtual void GET( const ::rtl::OUString & inPath,
+ com::sun::star::uno::Reference<
+ com::sun::star::io::XOutputStream >& o,
+ const DAVRequestEnvironment & rEnv )
throw( DAVException ) = 0;
virtual com::sun::star::uno::Reference< com::sun::star::io::XInputStream >
- GET( const ::rtl::OUString & inPath,
- const std::vector< ::rtl::OUString > & inHeaderNames,
- DAVResource & ioResource,
- const DAVRequestEnvironment & rEnv )
+ GET( const ::rtl::OUString & inPath,
+ const std::vector< ::rtl::OUString > & inHeaderNames,
+ DAVResource & ioResource,
+ const DAVRequestEnvironment & rEnv )
throw( DAVException ) = 0;
- virtual void GET( const ::rtl::OUString & inPath,
- com::sun::star::uno::Reference< com::sun::star::io::XOutputStream >& o,
- const std::vector< ::rtl::OUString > & inHeaderNames,
- DAVResource & ioResource,
- const DAVRequestEnvironment & rEnv )
+ virtual void
+ GET( const ::rtl::OUString & inPath,
+ com::sun::star::uno::Reference< com::sun::star::io::XOutputStream >& o,
+ const std::vector< ::rtl::OUString > & inHeaderNames,
+ DAVResource & ioResource,
+ const DAVRequestEnvironment & rEnv )
throw( DAVException ) = 0;
- virtual void PUT( const ::rtl::OUString & inPath,
- const com::sun::star::uno::Reference<
- com::sun::star::io::XInputStream >& s,
- const DAVRequestEnvironment & rEnv )
- throw( DAVException ) = 0;
-
- virtual void ABORT()
+ virtual void PUT( const ::rtl::OUString & inPath,
+ const com::sun::star::uno::Reference<
+ com::sun::star::io::XInputStream >& s,
+ const DAVRequestEnvironment & rEnv )
throw( DAVException ) = 0;
virtual com::sun::star::uno::Reference< com::sun::star::io::XInputStream >
- POST( const rtl::OUString & inPath,
- const rtl::OUString & rContentType,
- const rtl::OUString & rReferer,
- const com::sun::star::uno::Reference<
- com::sun::star::io::XInputStream > & inInputStream,
- const DAVRequestEnvironment & rEnv )
+ POST( const rtl::OUString & inPath,
+ const rtl::OUString & rContentType,
+ const rtl::OUString & rReferer,
+ const com::sun::star::uno::Reference<
+ com::sun::star::io::XInputStream > & inInputStream,
+ const DAVRequestEnvironment & rEnv )
throw ( DAVException ) = 0;
virtual void POST( const rtl::OUString & inPath,
const rtl::OUString & rContentType,
const rtl::OUString & rReferer,
const com::sun::star::uno::Reference<
- com::sun::star::io::XInputStream > & inInputStream,
+ com::sun::star::io::XInputStream > & inInputStream,
com::sun::star::uno::Reference<
- com::sun::star::io::XOutputStream > & oOutputStream,
+ com::sun::star::io::XOutputStream > & oOutputStream,
const DAVRequestEnvironment & rEnv )
throw ( DAVException ) = 0;
- virtual void MKCOL( const ::rtl::OUString & inPath,
- const DAVRequestEnvironment & rEnv )
+ virtual void MKCOL( const ::rtl::OUString & inPath,
+ const DAVRequestEnvironment & rEnv )
throw( DAVException ) = 0;
- virtual void COPY( const ::rtl::OUString & inSource,
- const ::rtl::OUString & inDestination,
- const DAVRequestEnvironment & rEnv,
- sal_Bool inOverwrite = false )
+ virtual void COPY( const ::rtl::OUString & inSource,
+ const ::rtl::OUString & inDestination,
+ const DAVRequestEnvironment & rEnv,
+ sal_Bool inOverwrite = false )
throw( DAVException ) = 0;
- virtual void MOVE( const ::rtl::OUString & inSource,
- const ::rtl::OUString & inDestination,
- const DAVRequestEnvironment & rEnv,
- sal_Bool inOverwrite = false )
+ virtual void MOVE( const ::rtl::OUString & inSource,
+ const ::rtl::OUString & inDestination,
+ const DAVRequestEnvironment & rEnv,
+ sal_Bool inOverwrite = false )
throw( DAVException ) = 0;
- virtual void DESTROY( const ::rtl::OUString & inPath,
- const DAVRequestEnvironment & rEnv )
+ virtual void DESTROY( const ::rtl::OUString & inPath,
+ const DAVRequestEnvironment & rEnv )
throw( DAVException ) = 0;
- // Note: Uncomment the following if locking support is required
- /*
- virtual void LOCK ( const Lock & inLock,
- const DAVRequestEnvironment & rEnv )
- throw( DAVException ) = 0;
+ // set new lock.
+ virtual void LOCK( const ::rtl::OUString & inPath,
+ com::sun::star::ucb::Lock & inLock,
+ const DAVRequestEnvironment & rEnv )
+ throw ( DAVException ) = 0;
- virtual void UNLOCK ( const Lock & inLock,
- const DAVRequestEnvironment & rEnv )
+ // refresh existing lock.
+ virtual sal_Int64 LOCK( const ::rtl::OUString & inPath,
+ sal_Int64 nTimeout,
+ const DAVRequestEnvironment & rEnv )
+ throw ( DAVException ) = 0;
+
+ virtual void UNLOCK( const ::rtl::OUString & inPath,
+ const DAVRequestEnvironment & rEnv )
+ throw ( DAVException ) = 0;
+
+ virtual void abort()
throw( DAVException ) = 0;
- */
+
protected:
rtl::Reference< DAVSessionFactory > m_xFactory;
@@ -210,4 +217,3 @@ private:
} // namespace webdav_ucp
#endif // _DAVSESSION_HXX_
-
diff --git a/ucb/source/ucp/webdav/DAVSessionFactory.cxx b/ucb/source/ucp/webdav/DAVSessionFactory.cxx
index fba6318638..112fc93ca9 100644
--- a/ucb/source/ucp/webdav/DAVSessionFactory.cxx
+++ b/ucb/source/ucp/webdav/DAVSessionFactory.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: DAVSessionFactory.cxx,v $
- * $Revision: 1.14 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/webdav/DAVSessionFactory.hxx b/ucb/source/ucp/webdav/DAVSessionFactory.hxx
index 0b41f5e5fe..11b2ef29d5 100644
--- a/ucb/source/ucp/webdav/DAVSessionFactory.hxx
+++ b/ucb/source/ucp/webdav/DAVSessionFactory.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: DAVSessionFactory.hxx,v $
- * $Revision: 1.13 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/webdav/DAVTypes.hxx b/ucb/source/ucp/webdav/DAVTypes.hxx
index 3d9173f820..4d000057b0 100644
--- a/ucb/source/ucp/webdav/DAVTypes.hxx
+++ b/ucb/source/ucp/webdav/DAVTypes.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: DAVTypes.hxx,v $
- * $Revision: 1.7 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/webdav/DateTimeHelper.cxx b/ucb/source/ucp/webdav/DateTimeHelper.cxx
index 4ce2e08c29..ab3da8d22a 100644
--- a/ucb/source/ucp/webdav/DateTimeHelper.cxx
+++ b/ucb/source/ucp/webdav/DateTimeHelper.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: DateTimeHelper.cxx,v $
- * $Revision: 1.8 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/webdav/DateTimeHelper.hxx b/ucb/source/ucp/webdav/DateTimeHelper.hxx
index eb8999bca0..101bd8191b 100644
--- a/ucb/source/ucp/webdav/DateTimeHelper.hxx
+++ b/ucb/source/ucp/webdav/DateTimeHelper.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: DateTimeHelper.hxx,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/webdav/LinkSequence.cxx b/ucb/source/ucp/webdav/LinkSequence.cxx
index f890122dec..1d33216b4d 100644
--- a/ucb/source/ucp/webdav/LinkSequence.cxx
+++ b/ucb/source/ucp/webdav/LinkSequence.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: LinkSequence.cxx,v $
- * $Revision: 1.16 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -64,12 +61,11 @@ struct LinkSequenceParseContext
extern "C" int LinkSequence_startelement_callback(
void *,
int parent,
- const char *nspace,
+ const char * /*nspace*/,
const char *name,
const char ** )
{
- if ( ( name != 0 ) &&
- ( ( nspace == 0 ) || ( strcmp( nspace, "" ) == 0 ) ) )
+ if ( name != 0 )
{
switch ( parent )
{
@@ -192,7 +188,7 @@ bool LinkSequence::createFromXML( const rtl::OString & rInData,
rOutData[ nCount - 1 ] = *aCtx.pLink;
}
- nStart = nEnd + TOKEN_LENGTH + 1;
+ nStart = nEnd + TOKEN_LENGTH;
nEnd = rInData.indexOf( "</link>", nStart );
}
@@ -215,11 +211,11 @@ bool LinkSequence::toXML( const uno::Sequence< ucb::Link > & rInData,
for ( sal_Int32 n = 0; n < nCount; ++n )
{
- rOutData += aPre;
- rOutData += rInData[ n ].Source;
- rOutData += aMid;
- rOutData += rInData[ n ].Destination;
- rOutData += aEnd;
+ rOutData += aPre;
+ rOutData += rInData[ n ].Source;
+ rOutData += aMid;
+ rOutData += rInData[ n ].Destination;
+ rOutData += aEnd;
}
return true;
}
diff --git a/ucb/source/ucp/webdav/LinkSequence.hxx b/ucb/source/ucp/webdav/LinkSequence.hxx
index 368becfb06..8a2a13d015 100644
--- a/ucb/source/ucp/webdav/LinkSequence.hxx
+++ b/ucb/source/ucp/webdav/LinkSequence.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: LinkSequence.hxx,v $
- * $Revision: 1.6 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/webdav/LockEntrySequence.cxx b/ucb/source/ucp/webdav/LockEntrySequence.cxx
index 6d997bd0a6..8ed838d720 100644
--- a/ucb/source/ucp/webdav/LockEntrySequence.cxx
+++ b/ucb/source/ucp/webdav/LockEntrySequence.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: LockEntrySequence.cxx,v $
- * $Revision: 1.16 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -64,12 +61,11 @@ struct LockEntrySequenceParseContext
extern "C" int LockEntrySequence_startelement_callback(
void *,
int parent,
- const char *nspace,
+ const char * /*nspace*/,
const char *name,
const char ** )
{
- if ( ( name != 0 ) &&
- ( ( nspace == 0 ) || ( strcmp( nspace, "" ) == 0 ) ) )
+ if ( name != 0 )
{
switch ( parent )
{
@@ -83,6 +79,31 @@ extern "C" int LockEntrySequence_startelement_callback(
return STATE_LOCKSCOPE;
else if ( strcmp( name, "locktype" ) == 0 )
return STATE_LOCKTYPE;
+
+#define IIS_BUGS_WORKAROUND
+
+#ifdef IIS_BUGS_WORKAROUND
+ /* IIS (6) returns XML violating RFC 4918
+ for DAV:supportedlock property value.
+
+ <lockentry>
+ <write></write>
+ <shared></shared>
+ </lockentry>
+ <lockentry>
+ <write></write>
+ <exclusive></exclusive>
+ </lockentry>
+
+ Bother...
+ */
+ else if ( strcmp( name, "exclusive" ) == 0 )
+ return STATE_EXCLUSIVE;
+ else if ( strcmp( name, "shared" ) == 0 )
+ return STATE_SHARED;
+ else if ( strcmp( name, "write" ) == 0 )
+ return STATE_WRITE;
+#endif
break;
case STATE_LOCKSCOPE:
@@ -165,7 +186,7 @@ extern "C" int LockEntrySequence_endelement_callback(
// static
bool LockEntrySequence::createFromXML( const rtl::OString & rInData,
uno::Sequence<
- ucb::LockEntry > & rOutData )
+ ucb::LockEntry > & rOutData )
{
const sal_Int32 TOKEN_LENGTH = 12; // </lockentry>
bool success = true;
@@ -191,8 +212,8 @@ bool LockEntrySequence::createFromXML( const rtl::OString & rInData,
&aCtx );
ne_xml_parse( parser,
- rInData.getStr() + nStart,
- nEnd - nStart + TOKEN_LENGTH );
+ rInData.getStr() + nStart,
+ nEnd - nStart + TOKEN_LENGTH );
#if NEON_VERSION >= 0x0250
success = !ne_xml_failed( parser );
@@ -214,7 +235,7 @@ bool LockEntrySequence::createFromXML( const rtl::OString & rInData,
rOutData[ nCount - 1 ] = *aCtx.pEntry;
}
- nStart = nEnd + TOKEN_LENGTH + 1;
+ nStart = nEnd + TOKEN_LENGTH;
nEnd = rInData.indexOf( "</lockentry>", nStart );
}
diff --git a/ucb/source/ucp/webdav/LockEntrySequence.hxx b/ucb/source/ucp/webdav/LockEntrySequence.hxx
index 7c81a5f215..6f00020b63 100644
--- a/ucb/source/ucp/webdav/LockEntrySequence.hxx
+++ b/ucb/source/ucp/webdav/LockEntrySequence.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: LockEntrySequence.hxx,v $
- * $Revision: 1.6 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/webdav/LockSequence.cxx b/ucb/source/ucp/webdav/LockSequence.cxx
index b959ddc109..2c51d5ce1f 100644
--- a/ucb/source/ucp/webdav/LockSequence.cxx
+++ b/ucb/source/ucp/webdav/LockSequence.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: LockSequence.cxx,v $
- * $Revision: 1.17 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -74,12 +71,11 @@ struct LockSequenceParseContext
extern "C" int LockSequence_startelement_callback(
void *,
int parent,
- const char *nspace,
+ const char * /*nspace*/,
const char *name,
const char ** )
{
- if ( ( name != 0 ) &&
- ( ( nspace == 0 ) || ( strcmp( nspace, "" ) == 0 ) ) )
+ if ( name != 0 )
{
switch ( parent )
{
@@ -347,7 +343,7 @@ bool LockSequence::createFromXML( const rtl::OString & rInData,
rOutData[ nCount - 1 ] = *aCtx.pLock;
}
- nStart = nEnd + TOKEN_LENGTH + 1;
+ nStart = nEnd + TOKEN_LENGTH;
nEnd = rInData.indexOf( "</activelock>", nStart );
}
diff --git a/ucb/source/ucp/webdav/LockSequence.hxx b/ucb/source/ucp/webdav/LockSequence.hxx
index 79fbe4dba5..0e218d1a80 100644
--- a/ucb/source/ucp/webdav/LockSequence.hxx
+++ b/ucb/source/ucp/webdav/LockSequence.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: LockSequence.hxx,v $
- * $Revision: 1.6 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/webdav/NeonHeadRequest.cxx b/ucb/source/ucp/webdav/NeonHeadRequest.cxx
index 36208be7b0..4b29afae5a 100644
--- a/ucb/source/ucp/webdav/NeonHeadRequest.cxx
+++ b/ucb/source/ucp/webdav/NeonHeadRequest.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: NeonHeadRequest.cxx,v $
- * $Revision: 1.11 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/webdav/NeonHeadRequest.hxx b/ucb/source/ucp/webdav/NeonHeadRequest.hxx
index 6e44df3bb1..9bbafc9d82 100644
--- a/ucb/source/ucp/webdav/NeonHeadRequest.hxx
+++ b/ucb/source/ucp/webdav/NeonHeadRequest.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: NeonHeadRequest.hxx,v $
- * $Revision: 1.5 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/webdav/NeonInputStream.cxx b/ucb/source/ucp/webdav/NeonInputStream.cxx
index 3fdd0dbecd..746ce5666b 100644
--- a/ucb/source/ucp/webdav/NeonInputStream.cxx
+++ b/ucb/source/ucp/webdav/NeonInputStream.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: NeonInputStream.cxx,v $
- * $Revision: 1.11 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/webdav/NeonInputStream.hxx b/ucb/source/ucp/webdav/NeonInputStream.hxx
index 4d95c3eedd..7130f5a0bd 100644
--- a/ucb/source/ucp/webdav/NeonInputStream.hxx
+++ b/ucb/source/ucp/webdav/NeonInputStream.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: NeonInputStream.hxx,v $
- * $Revision: 1.8 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/webdav/NeonLockStore.cxx b/ucb/source/ucp/webdav/NeonLockStore.cxx
new file mode 100644
index 0000000000..a73e104649
--- /dev/null
+++ b/ucb/source/ucp/webdav/NeonLockStore.cxx
@@ -0,0 +1,245 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_ucb.hxx"
+
+#include <ne_locks.h>
+#include <ne_uri.h>
+#include "rtl/ustring.hxx"
+#include "osl/time.h"
+#include "osl/thread.hxx"
+#include "NeonSession.hxx"
+#include "NeonLockStore.hxx"
+
+using namespace webdav_ucp;
+
+namespace webdav_ucp {
+
+class TickerThread : public osl::Thread
+{
+ bool m_bFinish;
+ NeonLockStore & m_rLockStore;
+
+public:
+
+ TickerThread( NeonLockStore & rLockStore )
+ : osl::Thread(), m_bFinish( false ), m_rLockStore( rLockStore ) {}
+
+ void finish() { m_bFinish = true; }
+
+protected:
+
+ virtual void SAL_CALL run();
+};
+
+} // namespace webdav_ucp
+
+// -------------------------------------------------------------------
+void TickerThread::run()
+{
+ OSL_TRACE( "TickerThread: start." );
+
+ // we have to go through the loop more often to be able to finish ~quickly
+ const int nNth = 25;
+
+ int nCount = nNth;
+ while ( !m_bFinish )
+ {
+ if ( nCount-- <= 0 )
+ {
+ m_rLockStore.refreshLocks();
+ nCount = nNth;
+ }
+
+ TimeValue aTV;
+ aTV.Seconds = 0;
+ aTV.Nanosec = 1000000000 / nNth;
+ wait( aTV );
+ }
+
+ OSL_TRACE( "TickerThread: stop." );
+}
+
+// -------------------------------------------------------------------
+NeonLockStore::NeonLockStore()
+ : m_pNeonLockStore( ne_lockstore_create() ),
+ m_pTickerThread( 0 )
+{
+ OSL_ENSURE( m_pNeonLockStore, "Unable to create neon lock store!" );
+}
+
+// -------------------------------------------------------------------
+NeonLockStore::~NeonLockStore()
+{
+ stopTicker();
+
+ // release active locks, if any.
+ OSL_ENSURE( m_aLockInfoMap.size() == 0,
+ "NeonLockStore::~NeonLockStore - Releasing active locks!" );
+
+ LockInfoMap::const_iterator it( m_aLockInfoMap.begin() );
+ const LockInfoMap::const_iterator end( m_aLockInfoMap.end() );
+ while ( it != end )
+ {
+ NeonLock * pLock = (*it).first;
+ (*it).second.xSession->UNLOCK( pLock );
+
+ ne_lockstore_remove( m_pNeonLockStore, pLock );
+ ne_lock_destroy( pLock );
+
+ ++it;
+ }
+
+ ne_lockstore_destroy( m_pNeonLockStore );
+}
+
+// -------------------------------------------------------------------
+void NeonLockStore::startTicker()
+{
+ osl::MutexGuard aGuard( m_aMutex );
+
+ if ( !m_pTickerThread )
+ {
+ m_pTickerThread = new TickerThread( *this );
+ m_pTickerThread->create();
+ }
+}
+
+// -------------------------------------------------------------------
+void NeonLockStore::stopTicker()
+{
+ osl::MutexGuard aGuard( m_aMutex );
+
+ if ( m_pTickerThread )
+ {
+ m_pTickerThread->finish();
+ m_pTickerThread->join();
+ delete m_pTickerThread;
+ m_pTickerThread = 0;
+ }
+}
+
+// -------------------------------------------------------------------
+void NeonLockStore::registerSession( HttpSession * pHttpSession )
+{
+ osl::MutexGuard aGuard( m_aMutex );
+
+ ne_lockstore_register( m_pNeonLockStore, pHttpSession );
+}
+
+// -------------------------------------------------------------------
+NeonLock * NeonLockStore::findByUri( rtl::OUString const & rUri )
+{
+ osl::MutexGuard aGuard( m_aMutex );
+
+ ne_uri aUri;
+ ne_uri_parse( rtl::OUStringToOString(
+ rUri, RTL_TEXTENCODING_UTF8 ).getStr(), &aUri );
+ return ne_lockstore_findbyuri( m_pNeonLockStore, &aUri );
+}
+
+// -------------------------------------------------------------------
+void NeonLockStore::addLock( NeonLock * pLock,
+ rtl::Reference< NeonSession > const & xSession,
+ sal_Int32 nLastChanceToSendRefreshRequest )
+{
+ osl::MutexGuard aGuard( m_aMutex );
+
+ ne_lockstore_add( m_pNeonLockStore, pLock );
+ m_aLockInfoMap[ pLock ]
+ = LockInfo( xSession, nLastChanceToSendRefreshRequest );
+
+ startTicker();
+}
+
+// -------------------------------------------------------------------
+void NeonLockStore::updateLock( NeonLock * pLock,
+ sal_Int32 nLastChanceToSendRefreshRequest )
+{
+ osl::MutexGuard aGuard( m_aMutex );
+
+ LockInfoMap::iterator it( m_aLockInfoMap.find( pLock ) );
+ OSL_ENSURE( it != m_aLockInfoMap.end(),
+ "NeonLockStore::updateLock: lock not found!" );
+
+ if ( it != m_aLockInfoMap.end() )
+ {
+ (*it).second.nLastChanceToSendRefreshRequest
+ = nLastChanceToSendRefreshRequest;
+ }
+}
+
+// -------------------------------------------------------------------
+void NeonLockStore::removeLock( NeonLock * pLock )
+{
+ osl::MutexGuard aGuard( m_aMutex );
+
+ m_aLockInfoMap.erase( pLock );
+ ne_lockstore_remove( m_pNeonLockStore, pLock );
+
+ if ( m_aLockInfoMap.size() == 0 )
+ stopTicker();
+}
+
+// -------------------------------------------------------------------
+void NeonLockStore::refreshLocks()
+{
+ osl::MutexGuard aGuard( m_aMutex );
+
+ LockInfoMap::iterator it( m_aLockInfoMap.begin() );
+ const LockInfoMap::const_iterator end( m_aLockInfoMap.end() );
+ while ( it != end )
+ {
+ LockInfo & rInfo = (*it).second;
+ if ( rInfo.nLastChanceToSendRefreshRequest != -1 )
+ {
+ // 30 seconds or less remaining until lock expires?
+ TimeValue t1;
+ osl_getSystemTime( &t1 );
+ if ( rInfo.nLastChanceToSendRefreshRequest - 30
+ <= sal_Int32( t1.Seconds ) )
+ {
+ // refresh the lock.
+ sal_Int32 nlastChanceToSendRefreshRequest = -1;
+ if ( rInfo.xSession->LOCK(
+ (*it).first,
+ /* out param */ nlastChanceToSendRefreshRequest ) )
+ {
+ rInfo.nLastChanceToSendRefreshRequest
+ = nlastChanceToSendRefreshRequest;
+ }
+ else
+ {
+ // refresh failed. stop auto-refresh.
+ rInfo.nLastChanceToSendRefreshRequest = -1;
+ }
+ }
+ }
+ ++it;
+ }
+}
diff --git a/ucb/source/ucp/webdav/NeonLockStore.hxx b/ucb/source/ucp/webdav/NeonLockStore.hxx
new file mode 100644
index 0000000000..4db273ca73
--- /dev/null
+++ b/ucb/source/ucp/webdav/NeonLockStore.hxx
@@ -0,0 +1,102 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef INCLUDED_NEONLOCKSTORE_HXX
+#define INCLUDED_NEONLOCKSTORE_HXX
+
+#include <map>
+#include "ne_locks.h"
+#include "osl/mutex.hxx"
+#include "rtl/ref.hxx"
+#include "NeonTypes.hxx"
+
+namespace webdav_ucp
+{
+
+class TickerThread;
+class NeonSession;
+
+struct ltptr
+{
+ bool operator()( const NeonLock * p1, const NeonLock * p2 ) const
+ {
+ return p1 < p2;
+ }
+};
+
+typedef struct _LockInfo
+{
+ rtl::Reference< NeonSession > xSession;
+ sal_Int32 nLastChanceToSendRefreshRequest;
+
+ _LockInfo()
+ : nLastChanceToSendRefreshRequest( -1 ) {}
+
+ _LockInfo( rtl::Reference< NeonSession > const & _xSession,
+ sal_Int32 _nLastChanceToSendRefreshRequest )
+ : xSession( _xSession ),
+ nLastChanceToSendRefreshRequest( _nLastChanceToSendRefreshRequest ) {}
+
+} LockInfo;
+
+typedef std::map< NeonLock *, LockInfo, ltptr > LockInfoMap;
+
+class NeonLockStore
+{
+ osl::Mutex m_aMutex;
+ ne_lock_store * m_pNeonLockStore;
+ TickerThread * m_pTickerThread;
+ LockInfoMap m_aLockInfoMap;
+
+public:
+ NeonLockStore();
+ ~NeonLockStore();
+
+ void registerSession( HttpSession * pHttpSession );
+
+ NeonLock * findByUri( rtl::OUString const & rUri );
+
+ void addLock( NeonLock * pLock,
+ rtl::Reference< NeonSession > const & xSession,
+ // time in seconds since Jan 1 1970
+ // -1: infinite lock, no refresh
+ sal_Int32 nLastChanceToSendRefreshRequest );
+
+ void updateLock( NeonLock * pLock,
+ sal_Int32 nLastChanceToSendRefreshRequest );
+
+ void removeLock( NeonLock * pLock );
+
+ void refreshLocks();
+
+private:
+ void startTicker();
+ void stopTicker();
+};
+
+} // namespace webdav_ucp
+
+#endif // INCLUDED_NEONLOCKSTORE_HXX
diff --git a/ucb/source/ucp/webdav/NeonPropFindRequest.cxx b/ucb/source/ucp/webdav/NeonPropFindRequest.cxx
index ab1132fa88..172e43511b 100644
--- a/ucb/source/ucp/webdav/NeonPropFindRequest.cxx
+++ b/ucb/source/ucp/webdav/NeonPropFindRequest.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: NeonPropFindRequest.cxx,v $
- * $Revision: 1.24 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -30,14 +27,14 @@
// MARKER(update_precomp.py): autogen include statement, do not remove
#include "precompiled_ucb.hxx"
-#include <osl/diagnose.h>
+
+#include "osl/diagnose.h"
+#include "rtl/strbuf.hxx"
#include "NeonTypes.hxx"
#include "DAVException.hxx"
#include "DAVProperties.hxx"
#include "NeonPropFindRequest.hxx"
-#ifndef _LINKSEQUENCE_HXX_
#include "LinkSequence.hxx"
-#endif
#include "LockSequence.hxx"
#include "LockEntrySequence.hxx"
#include "UCBDeadPropertyValue.hxx"
@@ -49,6 +46,40 @@ using namespace std;
using namespace webdav_ucp;
// -------------------------------------------------------------------
+namespace
+{
+ // strip "DAV:" namespace from XML snippets to avoid
+ // parser error (undeclared namespace) later on.
+ rtl::OString stripDavNamespace( const rtl::OString & in )
+ {
+ const rtl::OString inXML( in.toAsciiLowerCase() );
+
+ rtl::OStringBuffer buf;
+ sal_Int32 start = 0;
+ sal_Int32 end = inXML.indexOf( "dav:" );
+ while ( end != -1 )
+ {
+ if ( inXML[ end - 1 ] == '<' ||
+ inXML[ end - 1 ] == '/' )
+ {
+ // copy from original buffer - preserve case.
+ buf.append( in.copy( start, end - start ) );
+ }
+ else
+ {
+ // copy from original buffer - preserve case.
+ buf.append( in.copy( start, end - start + 4 ) );
+ }
+ start = end + 4;
+ end = inXML.indexOf( "dav:", start );
+ }
+ buf.append( inXML.copy( start ) );
+
+ return rtl::OString( buf.makeStringAndClear() );
+ }
+}
+
+// -------------------------------------------------------------------
extern "C" int NPFR_propfind_iter( void* userdata,
const NeonPropName* pname,
const char* value,
@@ -57,9 +88,9 @@ extern "C" int NPFR_propfind_iter( void* userdata,
/*
HTTP Response Status Classes:
- - 1: Informational - Request received, continuing process
+ - 1: Informational - Request received, continuing process
- - 2: Success - The action was successfully received,
+ - 2: Success - The action was successfully received,
understood, and accepted
- 3: Redirection - Further action must be taken in order to
@@ -79,18 +110,22 @@ extern "C" int NPFR_propfind_iter( void* userdata,
DAVPropertyValue thePropertyValue;
thePropertyValue.IsCaseSensitive = true;
+ OSL_ENSURE( pname->nspace, "NPFR_propfind_iter - No namespace!" );
+
DAVProperties::createUCBPropName( pname->nspace,
- pname->name,
- thePropertyValue.Name );
+ pname->name,
+ thePropertyValue.Name );
bool bHasValue = false;
if ( DAVProperties::isUCBDeadProperty( *pname ) )
{
// DAV dead property added by WebDAV UCP?
if ( UCBDeadPropertyValue::createFromXML(
- value, thePropertyValue.Value ) )
+ value, thePropertyValue.Value ) )
+ {
OSL_ENSURE( thePropertyValue.Value.hasValue(),
- "NeonPropFindRequest::propfind_iter - No value!" );
+ "NPFR_propfind_iter - No value!" );
bHasValue = true;
+ }
}
if ( !bHasValue )
@@ -102,13 +137,9 @@ extern "C" int NPFR_propfind_iter( void* userdata,
aValue = aValue.trim(); // #107358# remove leading/trailing spaces
if ( aValue.getLength() )
{
- aValue = aValue.toAsciiLowerCase();
- if (
- ( aValue.compareTo(
- RTL_CONSTASCII_STRINGPARAM( "<collection" ) ) == 0 ) ||
- ( aValue.compareTo(
- RTL_CONSTASCII_STRINGPARAM( "<dav:collection" ) ) == 0 )
- )
+ aValue = stripDavNamespace( aValue ).toAsciiLowerCase();
+ if ( aValue.compareTo(
+ RTL_CONSTASCII_STRINGPARAM( "<collection" ) ) == 0 )
{
thePropertyValue.Value
<<= OUString::createFromAscii( "collection" );
@@ -125,20 +156,23 @@ extern "C" int NPFR_propfind_iter( void* userdata,
pname->name, "supportedlock" ) == 0 )
{
Sequence< LockEntry > aEntries;
- LockEntrySequence::createFromXML( value, aEntries );
+ LockEntrySequence::createFromXML(
+ stripDavNamespace( value ), aEntries );
thePropertyValue.Value <<= aEntries;
}
else if ( rtl_str_compareIgnoreAsciiCase(
pname->name, "lockdiscovery" ) == 0 )
{
Sequence< Lock > aLocks;
- LockSequence::createFromXML( value, aLocks );
+ LockSequence::createFromXML(
+ stripDavNamespace( value ), aLocks );
thePropertyValue.Value <<= aLocks;
}
else if ( rtl_str_compareIgnoreAsciiCase( pname->name, "source" ) == 0 )
{
Sequence< Link > aLinks;
- LinkSequence::createFromXML( value, aLinks );
+ LinkSequence::createFromXML(
+ stripDavNamespace( value ), aLinks );
thePropertyValue.Value <<= aLinks;
}
else
@@ -168,10 +202,10 @@ extern "C" void NPFR_propfind_results( void* userdata,
#if NEON_VERSION >= 0x0260
DAVResource theResource(
- OStringToOUString( uri->path, RTL_TEXTENCODING_UTF8 ) );
+ OStringToOUString( uri->path, RTL_TEXTENCODING_UTF8 ) );
#else
DAVResource theResource(
- OStringToOUString( href, RTL_TEXTENCODING_UTF8 ) );
+ OStringToOUString( href, RTL_TEXTENCODING_UTF8 ) );
#endif
ne_propset_iterate( set, NPFR_propfind_iter, &theResource );
@@ -210,10 +244,10 @@ extern "C" void NPFR_propnames_results( void* userdata,
// Create entry for the resource.
#if NEON_VERSION >= 0x0260
DAVResourceInfo theResource(
- OStringToOUString( uri->path, RTL_TEXTENCODING_UTF8 ) );
+ OStringToOUString( uri->path, RTL_TEXTENCODING_UTF8 ) );
#else
DAVResourceInfo theResource(
- OStringToOUString( href, RTL_TEXTENCODING_UTF8 ) );
+ OStringToOUString( href, RTL_TEXTENCODING_UTF8 ) );
#endif
// Fill entry.
@@ -247,7 +281,7 @@ NeonPropFindRequest::NeonPropFindRequest( HttpSession* inSession,
{
// Split fullname into namespace and name!
DAVProperties::createNeonPropName(
- inPropNames[ theIndex ], thePropNames[ theIndex ] );
+ inPropNames[ theIndex ], thePropNames[ theIndex ] );
}
thePropNames[ theIndex ].nspace = NULL;
thePropNames[ theIndex ].name = NULL;
@@ -288,7 +322,7 @@ NeonPropFindRequest::NeonPropFindRequest( HttpSession* inSession,
NeonPropFindRequest::NeonPropFindRequest(
HttpSession* inSession,
const char* inPath,
- const Depth inDepth,
+ const Depth inDepth,
std::vector< DAVResourceInfo > & ioResInfo,
int & nError )
{
diff --git a/ucb/source/ucp/webdav/NeonPropFindRequest.hxx b/ucb/source/ucp/webdav/NeonPropFindRequest.hxx
index 1e6d3a07b2..7487b29b74 100644
--- a/ucb/source/ucp/webdav/NeonPropFindRequest.hxx
+++ b/ucb/source/ucp/webdav/NeonPropFindRequest.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: NeonPropFindRequest.hxx,v $
- * $Revision: 1.8 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/webdav/NeonSession.cxx b/ucb/source/ucp/webdav/NeonSession.cxx
index 9b6bae2c15..d9ff4c0290 100644
--- a/ucb/source/ucp/webdav/NeonSession.cxx
+++ b/ucb/source/ucp/webdav/NeonSession.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: NeonSession.cxx,v $
- * $Revision: 1.55.12.1 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -34,12 +31,14 @@
#include <hash_map>
#include <vector>
#include <string.h>
+#include "osl/diagnose.h"
+#include "osl/time.h"
#include <rtl/string.h>
#include <ne_socket.h>
#include <ne_auth.h>
#include <ne_redirect.h>
-#include <ne_locks.h>
#include <ne_ssl.h>
+#include <ne_compress.h>
#include "libxml/parser.h"
#include "rtl/ustrbuf.hxx"
#include "comphelper/sequence.hxx"
@@ -62,6 +61,7 @@
#include <com/sun/star/security/CertificateContainer.hpp>
#include <com/sun/star/security/XCertificateContainer.hpp>
#include <com/sun/star/task/XMasterPasswordHandling.hpp>
+#include <com/sun/star/ucb/Lock.hpp>
#include <com/sun/star/xml/crypto/XSEInitializer.hpp>
using namespace com::sun::star;
@@ -119,10 +119,6 @@ typedef std::hash_map
RequestDataMap;
// -------------------------------------------------------------------
-// static members!
-bool NeonSession::m_bGlobalsInited = false;
-osl::Mutex NeonSession::m_aGlobalMutex;
-// -------------------------------------------------------------------
// Helper fuction
// -------------------------------------------------------------------
static sal_uInt16 makeStatusCode( const rtl::OUString & rStatusText )
@@ -190,21 +186,21 @@ struct NeonRequestContext
// -------------------------------------------------------------------
#if NEON_VERSION >= 0x0250
-extern "C" int NeonSession_ResponseBlockReader(void * inUserData,
+extern "C" int NeonSession_ResponseBlockReader(void * inUserData,
#else
-extern "C" void NeonSession_ResponseBlockReader(void * inUserData,
+extern "C" void NeonSession_ResponseBlockReader(void * inUserData,
#endif
- const char * inBuf,
+ const char * inBuf,
size_t inLen )
{
- // neon calls this function with (inLen == 0)...
+ // neon sometimes calls this function with (inLen == 0)...
if ( inLen > 0 )
{
NeonRequestContext * pCtx
= static_cast< NeonRequestContext * >( inUserData );
-
+
rtl::Reference< NeonInputStream > xInputStream(
- pCtx->xInputStream);
+ pCtx->xInputStream );
if ( xInputStream.is() )
xInputStream->AddToStream( inBuf, inLen );
@@ -220,11 +216,11 @@ extern "C" void NeonSession_ResponseBlockReader(void * inUserData,
// -------------------------------------------------------------------
#if NEON_VERSION >= 0x0250
-extern "C" int NeonSession_ResponseBlockWriter( void * inUserData,
+extern "C" int NeonSession_ResponseBlockWriter( void * inUserData,
#else
-extern "C" void NeonSession_ResponseBlockWriter( void * inUserData,
+extern "C" void NeonSession_ResponseBlockWriter( void * inUserData,
#endif
- const char * inBuf,
+ const char * inBuf,
size_t inLen )
{
// neon calls this function with (inLen == 0)...
@@ -232,7 +228,7 @@ extern "C" void NeonSession_ResponseBlockWriter( void * inUserData,
{
NeonRequestContext * pCtx
= static_cast< NeonRequestContext * >( inUserData );
- uno::Reference< io::XOutputStream > xOutputStream
+ uno::Reference< io::XOutputStream > xOutputStream
= pCtx->xOutputStream;
if ( xOutputStream.is() )
@@ -289,7 +285,7 @@ extern "C" int NeonSession_NeonAuth( void * inUserData,
if ( attempt == 0 )
{
- // neon does not handle username supplied with request URI (for
+ // neon does not handle username supplied with request URI (for
// instance when doing FTP over proxy - last checked: 0.23.5 )
try
@@ -327,22 +323,23 @@ extern "C" int NeonSession_NeonAuth( void * inUserData,
bool bCanUseSystemCreds = false;
#ifdef NE_FEATURE_SSPI
- bCanUseSystemCreds = (attempt == 0) && // avoid endless loops
- ne_has_support( NE_FEATURE_SSPI ) && // Windows-only feature.
- ( ( ne_strcasecmp( inAuthProtocol, "NTLM" ) == 0 ) ||
- ( ne_strcasecmp( inAuthProtocol, "Negotiate" ) == 0 ) );
+ bCanUseSystemCreds
+ = (attempt == 0) && // avoid endless loops
+ ne_has_support( NE_FEATURE_SSPI ) && // Windows-only feature.
+ ( ( ne_strcasecmp( inAuthProtocol, "NTLM" ) == 0 ) ||
+ ( ne_strcasecmp( inAuthProtocol, "Negotiate" ) == 0 ) );
#endif
- // #i97003# (tkr): Ask XMasterPasswordHandling if we should store the
+ // #i97003# (tkr): Ask XMasterPasswordHandling if we should store the
// credentials persistently and give this information to the auth listener
uno::Reference< task::XMasterPasswordHandling > xMasterPasswordHandling;
try
{
- xMasterPasswordHandling =
+ xMasterPasswordHandling =
uno::Reference< task::XMasterPasswordHandling >(
- theSession->getMSF()->createInstance(
- rtl::OUString::createFromAscii(
- "com.sun.star.task.PasswordContainer" )),
+ theSession->getMSF()->createInstance(
+ rtl::OUString::createFromAscii(
+ "com.sun.star.task.PasswordContainer" ) ),
uno::UNO_QUERY );
}
catch ( uno::Exception const & )
@@ -354,9 +351,9 @@ extern "C" int NeonSession_NeonAuth( void * inUserData,
theSession->getHostName(),
theUserName,
thePassWord,
- xMasterPasswordHandling.is()
+ xMasterPasswordHandling.is()
? xMasterPasswordHandling->
- isPersistentStoringAllowed()
+ isPersistentStoringAllowed()
: sal_False,
bCanUseSystemCreds);
@@ -400,17 +397,17 @@ namespace {
if ( nContStart != -1 )
{
nContStart = nContStart + sPartId.getLength();
- sal_Int32 nContEnd
+ sal_Int32 nContEnd
= _rRawString.indexOf( sal_Unicode( ',' ), nContStart );
sPart = _rRawString.copy( nContStart, nContEnd - nContStart );
}
return sPart;
}
-}
+} // namespace
// -------------------------------------------------------------------
-extern "C" int NeonSession_CertificationNotify( void *userdata,
- int failures,
+extern "C" int NeonSession_CertificationNotify( void *userdata,
+ int failures,
const ne_ssl_certificate *cert )
{
OSL_ASSERT( cert );
@@ -418,12 +415,12 @@ extern "C" int NeonSession_CertificationNotify( void *userdata,
NeonSession * pSession = static_cast< NeonSession * >( userdata );
uno::Reference< security::XCertificateContainer > xCertificateContainer;
try
- {
- xCertificateContainer
+ {
+ xCertificateContainer
= uno::Reference< security::XCertificateContainer >(
- pSession->getMSF()->createInstance(
- rtl::OUString::createFromAscii(
- "com.sun.star.security.CertificateContainer" ) ),
+ pSession->getMSF()->createInstance(
+ rtl::OUString::createFromAscii(
+ "com.sun.star.security.CertificateContainer" ) ),
uno::UNO_QUERY );
}
catch ( uno::Exception const & )
@@ -434,27 +431,27 @@ extern "C" int NeonSession_CertificationNotify( void *userdata,
return 1;
failures = 0;
-
+
char * dn = ne_ssl_readable_dname( ne_ssl_cert_subject( cert ) );
rtl::OUString cert_subject( dn, strlen( dn ), RTL_TEXTENCODING_UTF8, 0 );
free( dn );
security::CertificateContainerStatus certificateContainer(
- xCertificateContainer->hasCertificate(
+ xCertificateContainer->hasCertificate(
pSession->getHostName(), cert_subject ) );
if ( certificateContainer != security::CertificateContainerStatus_NOCERT )
- return
- certificateContainer == security::CertificateContainerStatus_TRUSTED
- ? 0
+ return
+ certificateContainer == security::CertificateContainerStatus_TRUSTED
+ ? 0
: 1;
-
+
uno::Reference< xml::crypto::XSEInitializer > xSEInitializer;
try
{
xSEInitializer = uno::Reference< xml::crypto::XSEInitializer >(
- pSession->getMSF()->createInstance(
+ pSession->getMSF()->createInstance(
rtl::OUString::createFromAscii( SEINITIALIZER_COMPONENT ) ),
uno::UNO_QUERY );
}
@@ -467,22 +464,22 @@ extern "C" int NeonSession_CertificationNotify( void *userdata,
uno::Reference< xml::crypto::XXMLSecurityContext > xSecurityContext(
xSEInitializer->createSecurityContext( rtl::OUString() ) );
-
+
uno::Reference< xml::crypto::XSecurityEnvironment > xSecurityEnv(
xSecurityContext->getSecurityEnvironment() );
-
+
//The end entity certificate
char * eeCertB64 = ne_ssl_cert_export( cert );
rtl::OString sEECertB64( eeCertB64 );
- uno::Reference< com::sun::star::security::XCertificate > xEECert(
- xSecurityEnv->createCertificateFromAscii(
+ uno::Reference< security::XCertificate > xEECert(
+ xSecurityEnv->createCertificateFromAscii(
rtl::OStringToOUString( sEECertB64, RTL_TEXTENCODING_ASCII_US ) ) );
ne_free( eeCertB64 );
eeCertB64 = 0;
-
+
std::vector< uno::Reference< security::XCertificate > > vecCerts;
const ne_ssl_certificate * issuerCert = cert;
do
@@ -493,24 +490,24 @@ extern "C" int NeonSession_CertificationNotify( void *userdata,
issuerCert = ne_ssl_cert_signedby( issuerCert );
if ( NULL == issuerCert )
break;
-
+
char * imCertB64 = ne_ssl_cert_export( issuerCert );
rtl::OString sInterMediateCertB64( imCertB64 );
ne_free( imCertB64 );
- uno::Reference< security::XCertificate> xImCert(
- xSecurityEnv->createCertificateFromAscii(
- rtl::OStringToOUString(
+ uno::Reference< security::XCertificate> xImCert(
+ xSecurityEnv->createCertificateFromAscii(
+ rtl::OStringToOUString(
sInterMediateCertB64, RTL_TEXTENCODING_ASCII_US ) ) );
if ( xImCert.is() )
vecCerts.push_back( xImCert );
}
while ( 1 );
- sal_Int64 certValidity = xSecurityEnv->verifyCertificate( xEECert,
+ sal_Int64 certValidity = xSecurityEnv->verifyCertificate( xEECert,
::comphelper::containerToSequence( vecCerts ) );
-
- if ( pSession->isDomainMatch(
+
+ if ( pSession->isDomainMatch(
GetHostnamePart( xEECert.get()->getSubjectName() ) ) )
{
// if host name matched with certificate then look if the
@@ -519,24 +516,24 @@ extern "C" int NeonSession_CertificationNotify( void *userdata,
return 0;
}
- const uno::Reference< ucb::XCommandEnvironment > xEnv(
+ const uno::Reference< ucb::XCommandEnvironment > xEnv(
pSession->getRequestEnvironment().m_xEnv );
if ( xEnv.is() )
{
failures = static_cast< int >( certValidity );
-
+
uno::Reference< task::XInteractionHandler > xIH(
xEnv->getInteractionHandler() );
if ( xIH.is() )
{
- rtl::Reference< ucbhelper::SimpleCertificateValidationRequest >
+ rtl::Reference< ucbhelper::SimpleCertificateValidationRequest >
xRequest( new ucbhelper::SimpleCertificateValidationRequest(
(sal_Int32)failures, xEECert, pSession->getHostName() ) );
xIH->handle( xRequest.get() );
rtl::Reference< ucbhelper::InteractionContinuation > xSelection
= xRequest->getSelection();
-
+
if ( xSelection.is() )
{
uno::Reference< task::XInteractionApprove > xApprove(
@@ -546,22 +543,22 @@ extern "C" int NeonSession_CertificationNotify( void *userdata,
xCertificateContainer->addCertificate(
pSession->getHostName(), cert_subject, sal_True );
return 0;
- }
- else
+ }
+ else
{
// Don't trust cert
xCertificateContainer->addCertificate(
pSession->getHostName(), cert_subject, sal_False );
- return 1;
+ return 1;
}
}
- }
+ }
else
{
// Don't trust cert
xCertificateContainer->addCertificate(
pSession->getHostName(), cert_subject, sal_False );
- return 1;
+ return 1;
}
}
return 1;
@@ -617,36 +614,41 @@ extern "C" void NeonSession_PreSendRequest( ne_request * req,
}
}
- const DAVRequestHeaders & rHeaders
- = pSession->getRequestEnvironment().m_aRequestHeaders;
+ const DAVRequestHeaders & rHeaders
+ = pSession->getRequestEnvironment().m_aRequestHeaders;
- DAVRequestHeaders::const_iterator it1( rHeaders.begin() );
- const DAVRequestHeaders::const_iterator end1( rHeaders.end() );
+ DAVRequestHeaders::const_iterator it1( rHeaders.begin() );
+ const DAVRequestHeaders::const_iterator end1( rHeaders.end() );
- while ( it1 != end1 )
- {
- rtl::OString aHeader
- = rtl::OUStringToOString( (*it1).first,
- RTL_TEXTENCODING_UTF8 );
- rtl::OString aValue
- = rtl::OUStringToOString( (*it1).second,
- RTL_TEXTENCODING_UTF8 );
- ne_buffer_concat( headers, aHeader.getStr(), ": ",
- aValue.getStr(), EOL, NULL );
-
- ++it1;
+ while ( it1 != end1 )
+ {
+ rtl::OString aHeader
+ = rtl::OUStringToOString( (*it1).first,
+ RTL_TEXTENCODING_UTF8 );
+ rtl::OString aValue
+ = rtl::OUStringToOString( (*it1).second,
+ RTL_TEXTENCODING_UTF8 );
+ ne_buffer_concat( headers, aHeader.getStr(), ": ",
+ aValue.getStr(), EOL, NULL );
+
+ ++it1;
+ }
}
}
-} // namespace
+// -------------------------------------------------------------------
+// static members!
+bool NeonSession::m_bGlobalsInited = false;
+osl::Mutex NeonSession::m_aGlobalMutex;
+NeonLockStore NeonSession::m_aNeonLockStore;
// -------------------------------------------------------------------
// Constructor
// -------------------------------------------------------------------
NeonSession::NeonSession(
- const rtl::Reference< DAVSessionFactory > & rSessionFactory,
- const rtl::OUString& inUri,
- const ucbhelper::InternetProxyDecider & rProxyDecider )
+ const rtl::Reference< DAVSessionFactory > & rSessionFactory,
+ const rtl::OUString& inUri,
+ const ucbhelper::InternetProxyDecider & rProxyDecider )
throw ( DAVException )
: DAVSession( rSessionFactory ),
m_pHttpSession( 0 ),
@@ -657,8 +659,6 @@ NeonSession::NeonSession(
m_aScheme = theUri.GetScheme();
m_aHostName = theUri.GetHost();
m_nPort = theUri.GetPort();
-
-// Init();
}
// -------------------------------------------------------------------
@@ -670,17 +670,17 @@ NeonSession::~NeonSession( )
{
ne_session_destroy( m_pHttpSession );
m_pHttpSession = 0;
- // Note: Uncomment the following if locking support is required
- /*
- if ( mNeonLockSession != NULL )
- {
- ne_lock_unregister( mNeonLockSession );
- mNeonLockSession = NULL;
- }
- */
}
+ delete static_cast< RequestDataMap * >( m_pRequestData );
+}
- delete static_cast<RequestDataMap*>(m_pRequestData);
+// -------------------------------------------------------------------
+void NeonSession::Init( const DAVRequestEnvironment & rEnv )
+ throw ( DAVException )
+{
+ osl::Guard< osl::Mutex > theGuard( m_aMutex );
+ m_aEnv = rEnv;
+ Init();
}
// -------------------------------------------------------------------
@@ -693,7 +693,7 @@ void NeonSession::Init()
if ( m_pHttpSession == 0 )
{
- // Ensure that Neon sockets are initialize
+ // Ensure that Neon sockets are initialized
// --> tkr #151111# crashed if copy and pasted pictures from the internet
// ne_sock_init() was executed by two threads at the same time.
@@ -705,9 +705,23 @@ void NeonSession::Init()
throw DAVException( DAVException::DAV_SESSION_CREATE,
NeonUri::makeConnectionEndPointString(
m_aHostName, m_nPort ) );
- // #122205# - libxml2 needs to be initialized once if used by
+
+ // #122205# - libxml2 needs to be initialized once if used by
// multithreaded programs like OOo.
xmlInitParser();
+#if 0
+ // for more debug flags see ne_utils.h; NE_DEBUGGING must be defined
+ // while compiling neon in order to actually activate neon debug
+ // output.
+ ne_debug_init( stderr, NE_DBG_FLUSH
+ | NE_DBG_HTTP
+ // | NE_DBG_HTTPBODY
+ // | NE_DBG_HTTPAUTH
+ // | NE_DBG_XML
+ // | NE_DBG_XMLPARSE
+ // | NE_DBG_LOCKS
+ );
+#endif
m_bGlobalsInited = true;
}
@@ -747,31 +761,30 @@ void NeonSession::Init()
// to the session
m_pHttpSession = ne_session_create(
- rtl::OUStringToOString( m_aScheme,
- RTL_TEXTENCODING_UTF8 ).getStr(),
- /* theUri.GetUserInfo(),
- @@@ for FTP via HTTP proxy, but not supported by Neon */
- rtl::OUStringToOString( m_aHostName,
- RTL_TEXTENCODING_UTF8 ).getStr(),
- m_nPort );
-
+ rtl::OUStringToOString( m_aScheme,
+ RTL_TEXTENCODING_UTF8 ).getStr(),
+ /* theUri.GetUserInfo(),
+ @@@ for FTP via HTTP proxy, but not supported by Neon */
+ rtl::OUStringToOString( m_aHostName,
+ RTL_TEXTENCODING_UTF8 ).getStr(),
+ m_nPort );
+
if ( m_pHttpSession == 0 )
throw DAVException( DAVException::DAV_SESSION_CREATE,
NeonUri::makeConnectionEndPointString(
m_aHostName, m_nPort ) );
- if (m_aScheme.equalsIgnoreAsciiCase( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM(
- "https" ) ) ) )
- {
-
- // Get all trusted certificates from key store
+ // Register the session with the lock store
+ m_aNeonLockStore.registerSession( m_pHttpSession );
-
-
+ if ( m_aScheme.equalsIgnoreAsciiCase(
+ rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "https" ) ) ) )
+ {
// Set a failure callback for certificate check
- ne_ssl_set_verify( m_pHttpSession, NeonSession_CertificationNotify, this);
- }
-
+ ne_ssl_set_verify(
+ m_pHttpSession, NeonSession_CertificationNotify, this);
+ }
+
// Add hooks (i.e. for adding additional headers to the request)
#if 0
@@ -815,27 +828,20 @@ void NeonSession::Init()
if ( m_aProxyName.getLength() )
{
ne_session_proxy( m_pHttpSession,
- rtl::OUStringToOString( m_aProxyName,
- RTL_TEXTENCODING_UTF8 )
- .getStr(),
+ rtl::OUStringToOString(
+ m_aProxyName,
+ RTL_TEXTENCODING_UTF8 ).getStr(),
m_nProxyPort );
}
- // Note: Uncomment the following if locking support is required
- /*
- mNeonLockSession = ne_lock_register( m_pHttpSession );
-
- if ( mNeonLockSession == NULL )
- throw DAVException( DAVException::DAV_SESSION_CREATE,
- theUri::makeConnectionEndPointString() );
- */
-
// Register for redirects.
ne_redirect_register( m_pHttpSession );
// authentication callbacks.
- ne_add_server_auth( m_pHttpSession, NE_AUTH_ALL, NeonSession_NeonAuth, this );
- ne_add_proxy_auth ( m_pHttpSession, NE_AUTH_ALL, NeonSession_NeonAuth, this );
+ ne_add_server_auth(
+ m_pHttpSession, NE_AUTH_ALL, NeonSession_NeonAuth, this );
+ ne_add_proxy_auth(
+ m_pHttpSession, NE_AUTH_ALL, NeonSession_NeonAuth, this );
}
}
@@ -870,15 +876,13 @@ sal_Bool NeonSession::UsesProxy()
// OPTIONS
// -------------------------------------------------------------------
void NeonSession::OPTIONS( const rtl::OUString & inPath,
- DAVCapabilities & outCapabilities,
+ DAVCapabilities & outCapabilities,
const DAVRequestEnvironment & rEnv )
throw( DAVException )
{
osl::Guard< osl::Mutex > theGuard( m_aMutex );
- Init();
-
- m_aEnv = rEnv;
+ Init( rEnv );
HttpServerCapabilities servercaps;
memset( &servercaps, 0, sizeof( servercaps ) );
@@ -887,8 +891,9 @@ void NeonSession::OPTIONS( const rtl::OUString & inPath,
rtl::OUStringToOString(
inPath, RTL_TEXTENCODING_UTF8 ),
&servercaps );
- HandleError( theRetVal );
-
+
+ HandleError( theRetVal, inPath, rEnv );
+
outCapabilities.class1 = !!servercaps.dav_class1;
outCapabilities.class2 = !!servercaps.dav_class2;
outCapabilities.executable = !!servercaps.dav_executable;
@@ -897,60 +902,58 @@ void NeonSession::OPTIONS( const rtl::OUString & inPath,
// -------------------------------------------------------------------
// PROPFIND - allprop & named
// -------------------------------------------------------------------
-void NeonSession::PROPFIND( const rtl::OUString & inPath,
- const Depth inDepth,
+void NeonSession::PROPFIND( const rtl::OUString & inPath,
+ const Depth inDepth,
const std::vector< rtl::OUString > & inPropNames,
- std::vector< DAVResource > & ioResources,
+ std::vector< DAVResource > & ioResources,
const DAVRequestEnvironment & rEnv )
throw ( DAVException )
{
osl::Guard< osl::Mutex > theGuard( m_aMutex );
- Init();
-
- m_aEnv = rEnv;
+ Init( rEnv );
int theRetVal = NE_OK;
NeonPropFindRequest theRequest( m_pHttpSession,
rtl::OUStringToOString(
inPath, RTL_TEXTENCODING_UTF8 ),
- inDepth,
- inPropNames,
- ioResources,
- theRetVal );
- HandleError( theRetVal );
+ inDepth,
+ inPropNames,
+ ioResources,
+ theRetVal );
+
+ HandleError( theRetVal, inPath, rEnv );
}
// -------------------------------------------------------------------
// PROPFIND - propnames
// -------------------------------------------------------------------
-void NeonSession::PROPFIND( const rtl::OUString & inPath,
- const Depth inDepth,
- std::vector< DAVResourceInfo >& ioResInfo,
+void NeonSession::PROPFIND( const rtl::OUString & inPath,
+ const Depth inDepth,
+ std::vector< DAVResourceInfo > & ioResInfo,
const DAVRequestEnvironment & rEnv )
throw( DAVException )
{
osl::Guard< osl::Mutex > theGuard( m_aMutex );
- Init();
-
- m_aEnv = rEnv;
+ Init( rEnv );
int theRetVal = NE_OK;
NeonPropFindRequest theRequest( m_pHttpSession,
rtl::OUStringToOString(
inPath, RTL_TEXTENCODING_UTF8 ),
- inDepth,
- ioResInfo,
- theRetVal );
- HandleError( theRetVal );
+ inDepth,
+ ioResInfo,
+ theRetVal );
+
+ HandleError( theRetVal, inPath, rEnv );
}
// -------------------------------------------------------------------
// PROPPATCH
// -------------------------------------------------------------------
-void NeonSession::PROPPATCH( const rtl::OUString & inPath,
- const std::vector< ProppatchValue > & inValues,
+void NeonSession::PROPPATCH( const rtl::OUString & inPath,
+ const std::vector< ProppatchValue > & inValues,
const DAVRequestEnvironment & rEnv )
throw( DAVException )
{
@@ -960,23 +963,24 @@ void NeonSession::PROPPATCH( const rtl::OUString & inPath,
mod_dav implementation:
- creationdate r ( File System prop )
- displayname w
+ creationdate r ( File System prop )
+ displayname w
getcontentlanguage r ( #ifdef DAV_DISABLE_WRITEABLE_PROPS )
getcontentlength r ( File System prop )
getcontenttype r ( #ifdef DAV_DISABLE_WRITEABLE_PROPS )
getetag r ( File System prop )
getlastmodified r ( File System prop )
- lockdiscovery r
- resourcetype r
- source w
+ lockdiscovery r
+ resourcetype r
+ source w
supportedlock r
executable w ( #ifndef WIN32 )
All dead properties are of course writable.
- */
+ */
int theRetVal = NE_OK;
+
int n; // for the "for" loop
// Generate the list of properties we want to set.
@@ -995,13 +999,13 @@ void NeonSession::PROPPATCH( const rtl::OUString & inPath,
if ( rValue.operation == PROPSET )
{
pItems[ n ].type = ne_propset;
-
+
rtl::OUString aStringValue;
if ( DAVProperties::isUCBDeadProperty( *pName ) )
{
// DAV dead property added by WebDAV UCP?
- if ( !UCBDeadPropertyValue::toXML(
- rValue.value, aStringValue ) )
+ if ( !UCBDeadPropertyValue::toXML( rValue.value,
+ aStringValue ) )
{
// Error!
pItems[ n ].value = 0;
@@ -1015,7 +1019,7 @@ void NeonSession::PROPPATCH( const rtl::OUString & inPath,
// complex properties...
if ( rValue.name == DAVProperties::SOURCE )
{
- uno::Sequence< ::com::sun::star::ucb::Link > aLinks;
+ uno::Sequence< ucb::Link > aLinks;
if ( rValue.value >>= aLinks )
{
LinkSequence::toXML( aLinks, aStringValue );
@@ -1050,23 +1054,21 @@ void NeonSession::PROPPATCH( const rtl::OUString & inPath,
pItems[ n ].value = 0;
}
}
-
+
if ( theRetVal == NE_OK )
{
osl::Guard< osl::Mutex > theGuard( m_aMutex );
-
- Init();
- m_aEnv = rEnv;
-
+ Init( rEnv );
+
pItems[ n ].name = 0;
-
+
theRetVal = ne_proppatch( m_pHttpSession,
rtl::OUStringToOString(
inPath, RTL_TEXTENCODING_UTF8 ),
pItems );
}
-
+
for ( n = 0; n < nPropCount; ++n )
{
free( (void *)pItems[ n ].name->name );
@@ -1075,8 +1077,8 @@ void NeonSession::PROPPATCH( const rtl::OUString & inPath,
}
delete [] pItems;
-
- HandleError( theRetVal );
+
+ HandleError( theRetVal, inPath, rEnv );
}
// -------------------------------------------------------------------
@@ -1090,9 +1092,7 @@ void NeonSession::HEAD( const ::rtl::OUString & inPath,
{
osl::Guard< osl::Mutex > theGuard( m_aMutex );
- Init();
-
- m_aEnv = rEnv;
+ Init( rEnv );
int theRetVal = NE_OK;
NeonHeadRequest theRequest( m_pHttpSession,
@@ -1100,22 +1100,21 @@ void NeonSession::HEAD( const ::rtl::OUString & inPath,
inHeaderNames,
ioResource,
theRetVal );
- HandleError( theRetVal );
+
+ HandleError( theRetVal, inPath, rEnv );
}
// -------------------------------------------------------------------
// GET
// -------------------------------------------------------------------
-uno::Reference< io::XInputStream >
+uno::Reference< io::XInputStream >
NeonSession::GET( const rtl::OUString & inPath,
- const DAVRequestEnvironment & rEnv )
+ const DAVRequestEnvironment & rEnv )
throw ( DAVException )
{
osl::Guard< osl::Mutex > theGuard( m_aMutex );
- Init();
-
- m_aEnv = rEnv;
+ Init( rEnv );
rtl::Reference< NeonInputStream > xInputStream( new NeonInputStream );
NeonRequestContext aCtx( xInputStream );
@@ -1125,23 +1124,23 @@ NeonSession::GET( const rtl::OUString & inPath,
NeonSession_ResponseBlockReader,
false,
&aCtx );
- HandleError( theRetVal );
+
+ HandleError( theRetVal, inPath, rEnv );
+
return uno::Reference< io::XInputStream >( xInputStream.get() );
}
// -------------------------------------------------------------------
// GET
// -------------------------------------------------------------------
-void NeonSession::GET( const rtl::OUString & inPath,
+void NeonSession::GET( const rtl::OUString & inPath,
uno::Reference< io::XOutputStream > & ioOutputStream,
const DAVRequestEnvironment & rEnv )
throw ( DAVException )
{
osl::Guard< osl::Mutex > theGuard( m_aMutex );
- Init();
-
- m_aEnv = rEnv;
+ Init( rEnv );
NeonRequestContext aCtx( ioOutputStream );
int theRetVal = GET( m_pHttpSession,
@@ -1150,24 +1149,23 @@ void NeonSession::GET( const rtl::OUString & inPath,
NeonSession_ResponseBlockWriter,
false,
&aCtx );
- HandleError( theRetVal );
+
+ HandleError( theRetVal, inPath, rEnv );
}
// -------------------------------------------------------------------
// GET
// -------------------------------------------------------------------
-uno::Reference< io::XInputStream >
+uno::Reference< io::XInputStream >
NeonSession::GET( const rtl::OUString & inPath,
- const std::vector< ::rtl::OUString > & inHeaderNames,
- DAVResource & ioResource,
- const DAVRequestEnvironment & rEnv )
+ const std::vector< ::rtl::OUString > & inHeaderNames,
+ DAVResource & ioResource,
+ const DAVRequestEnvironment & rEnv )
throw ( DAVException )
{
osl::Guard< osl::Mutex > theGuard( m_aMutex );
- Init();
-
- m_aEnv = rEnv;
+ Init( rEnv );
ioResource.uri = inPath;
ioResource.properties.clear();
@@ -1180,7 +1178,9 @@ NeonSession::GET( const rtl::OUString & inPath,
NeonSession_ResponseBlockReader,
true,
&aCtx );
- HandleError( theRetVal );
+
+ HandleError( theRetVal, inPath, rEnv );
+
return uno::Reference< io::XInputStream >( xInputStream.get() );
}
@@ -1188,17 +1188,15 @@ NeonSession::GET( const rtl::OUString & inPath,
// GET
// -------------------------------------------------------------------
void NeonSession::GET( const rtl::OUString & inPath,
- uno::Reference< io::XOutputStream > & ioOutputStream,
- const std::vector< ::rtl::OUString > & inHeaderNames,
- DAVResource & ioResource,
- const DAVRequestEnvironment & rEnv )
+ uno::Reference< io::XOutputStream > & ioOutputStream,
+ const std::vector< ::rtl::OUString > & inHeaderNames,
+ DAVResource & ioResource,
+ const DAVRequestEnvironment & rEnv )
throw ( DAVException )
{
osl::Guard< osl::Mutex > theGuard( m_aMutex );
- Init();
-
- m_aEnv = rEnv;
+ Init( rEnv );
ioResource.uri = inPath;
ioResource.properties.clear();
@@ -1210,27 +1208,26 @@ void NeonSession::GET( const rtl::OUString & inPath,
NeonSession_ResponseBlockWriter,
true,
&aCtx );
- HandleError( theRetVal );
+
+ HandleError( theRetVal, inPath, rEnv );
}
// -------------------------------------------------------------------
// PUT
// -------------------------------------------------------------------
-void NeonSession::PUT( const rtl::OUString & inPath,
+void NeonSession::PUT( const rtl::OUString & inPath,
const uno::Reference< io::XInputStream > & inInputStream,
const DAVRequestEnvironment & rEnv )
throw ( DAVException )
{
osl::Guard< osl::Mutex > theGuard( m_aMutex );
- Init();
-
- m_aEnv = rEnv;
-
uno::Sequence< sal_Int8 > aDataToSend;
if ( !getDataFromInputStream( inInputStream, aDataToSend, false ) )
throw DAVException( DAVException::DAV_INVALID_ARG );
+ Init( rEnv );
+
int theRetVal = PUT( m_pHttpSession,
rtl::OUStringToOString(
inPath, RTL_TEXTENCODING_UTF8 ),
@@ -1238,18 +1235,18 @@ void NeonSession::PUT( const rtl::OUString & inPath,
aDataToSend.getConstArray() ),
aDataToSend.getLength() );
- HandleError( theRetVal );
+ HandleError( theRetVal, inPath, rEnv );
}
// -------------------------------------------------------------------
// POST
// -------------------------------------------------------------------
-uno::Reference< io::XInputStream >
+uno::Reference< io::XInputStream >
NeonSession::POST( const rtl::OUString & inPath,
- const rtl::OUString & rContentType,
- const rtl::OUString & rReferer,
- const uno::Reference< io::XInputStream > & inInputStream,
- const DAVRequestEnvironment & rEnv )
+ const rtl::OUString & rContentType,
+ const rtl::OUString & rReferer,
+ const uno::Reference< io::XInputStream > & inInputStream,
+ const DAVRequestEnvironment & rEnv )
throw ( DAVException )
{
osl::Guard< osl::Mutex > theGuard( m_aMutex );
@@ -1258,15 +1255,13 @@ NeonSession::POST( const rtl::OUString & inPath,
if ( !getDataFromInputStream( inInputStream, aDataToSend, true ) )
throw DAVException( DAVException::DAV_INVALID_ARG );
- Init();
-
- m_aEnv = rEnv;
+ Init( rEnv );
rtl::Reference< NeonInputStream > xInputStream( new NeonInputStream );
NeonRequestContext aCtx( xInputStream );
int theRetVal = POST( m_pHttpSession,
rtl::OUStringToOString(
- inPath, RTL_TEXTENCODING_UTF8 ),
+ inPath, RTL_TEXTENCODING_UTF8 ),
reinterpret_cast< const char * >(
aDataToSend.getConstArray() ),
NeonSession_ResponseBlockReader,
@@ -1274,7 +1269,8 @@ NeonSession::POST( const rtl::OUString & inPath,
rContentType,
rReferer );
- HandleError( theRetVal );
+ HandleError( theRetVal, inPath, rEnv );
+
return uno::Reference< io::XInputStream >( xInputStream.get() );
}
@@ -1295,9 +1291,7 @@ void NeonSession::POST( const rtl::OUString & inPath,
if ( !getDataFromInputStream( inInputStream, aDataToSend, true ) )
throw DAVException( DAVException::DAV_INVALID_ARG );
- Init();
-
- m_aEnv = rEnv;
+ Init( rEnv );
NeonRequestContext aCtx( oOutputStream );
int theRetVal = POST( m_pHttpSession,
@@ -1310,20 +1304,7 @@ void NeonSession::POST( const rtl::OUString & inPath,
rContentType,
rReferer );
- HandleError( theRetVal );
-}
-
-// -------------------------------------------------------------------
-// ABORT
-// -------------------------------------------------------------------
-void NeonSession::ABORT()
- throw ( DAVException )
-{
- // 11.11.09 (tkr): The following code lines causing crashes if closing a ongoing connection. It turned out that this existing solution doesn't work in multi-threading environments.
- // So I disabled them in 3.2. . Issue #73893# should fix it in OOo 3.3.
-
- //if (NULL !=m_pHttpSession)
- // ne_close_connection(m_pHttpSession);
+ HandleError( theRetVal, inPath, rEnv );
}
// -------------------------------------------------------------------
@@ -1335,30 +1316,27 @@ void NeonSession::MKCOL( const rtl::OUString & inPath,
{
osl::Guard< osl::Mutex > theGuard( m_aMutex );
- Init();
-
- m_aEnv = rEnv;
+ Init( rEnv );
int theRetVal = ne_mkcol( m_pHttpSession,
rtl::OUStringToOString(
- inPath, RTL_TEXTENCODING_UTF8 ) );
- HandleError( theRetVal );
+ inPath, RTL_TEXTENCODING_UTF8 ) );
+
+ HandleError( theRetVal, inPath, rEnv );
}
// -------------------------------------------------------------------
// COPY
// -------------------------------------------------------------------
-void NeonSession::COPY( const rtl::OUString & inSourceURL,
- const rtl::OUString & inDestinationURL,
+void NeonSession::COPY( const rtl::OUString & inSourceURL,
+ const rtl::OUString & inDestinationURL,
const DAVRequestEnvironment & rEnv,
- sal_Bool inOverWrite )
+ sal_Bool inOverWrite )
throw ( DAVException )
{
osl::Guard< osl::Mutex > theGuard( m_aMutex );
- Init();
-
- m_aEnv = rEnv;
+ Init( rEnv );
NeonUri theSourceUri( inSourceURL );
NeonUri theDestinationUri( inDestinationURL );
@@ -1367,12 +1345,13 @@ void NeonSession::COPY( const rtl::OUString & inSourceURL,
inOverWrite ? 1 : 0,
NE_DEPTH_INFINITE,
rtl::OUStringToOString(
- theSourceUri.GetPath(),
- RTL_TEXTENCODING_UTF8 ),
+ theSourceUri.GetPath(),
+ RTL_TEXTENCODING_UTF8 ),
rtl::OUStringToOString(
- theDestinationUri.GetPath(),
- RTL_TEXTENCODING_UTF8 ) );
- HandleError( theRetVal );
+ theDestinationUri.GetPath(),
+ RTL_TEXTENCODING_UTF8 ) );
+
+ HandleError( theRetVal, inSourceURL, rEnv );
}
// -------------------------------------------------------------------
@@ -1386,21 +1365,20 @@ void NeonSession::MOVE( const rtl::OUString & inSourceURL,
{
osl::Guard< osl::Mutex > theGuard( m_aMutex );
- Init();
-
- m_aEnv = rEnv;
+ Init( rEnv );
NeonUri theSourceUri( inSourceURL );
NeonUri theDestinationUri( inDestinationURL );
int theRetVal = ne_move( m_pHttpSession,
inOverWrite ? 1 : 0,
rtl::OUStringToOString(
- theSourceUri.GetPath(),
- RTL_TEXTENCODING_UTF8 ),
+ theSourceUri.GetPath(),
+ RTL_TEXTENCODING_UTF8 ),
rtl::OUStringToOString(
- theDestinationUri.GetPath(),
- RTL_TEXTENCODING_UTF8 ) );
- HandleError( theRetVal );
+ theDestinationUri.GetPath(),
+ RTL_TEXTENCODING_UTF8 ) );
+
+ HandleError( theRetVal, inSourceURL, rEnv );
}
// -------------------------------------------------------------------
@@ -1412,53 +1390,282 @@ void NeonSession::DESTROY( const rtl::OUString & inPath,
{
osl::Guard< osl::Mutex > theGuard( m_aMutex );
- Init();
-
- m_aEnv = rEnv;
+ Init( rEnv );
int theRetVal = ne_delete( m_pHttpSession,
rtl::OUStringToOString(
- inPath, RTL_TEXTENCODING_UTF8 ) );
- HandleError( theRetVal );
+ inPath, RTL_TEXTENCODING_UTF8 ) );
+
+ HandleError( theRetVal, inPath, rEnv );
}
// -------------------------------------------------------------------
-// LOCK
+namespace
+{
+ sal_Int32 lastChanceToSendRefreshRequest( TimeValue const & rStart,
+ int timeout )
+ {
+ TimeValue aEnd;
+ osl_getSystemTime( &aEnd );
+
+ // Try to estimate a safe absolute time for sending the
+ // lock refresh request.
+ sal_Int32 lastChanceToSendRefreshRequest = -1;
+ if ( timeout != NE_TIMEOUT_INFINITE )
+ {
+ sal_Int32 calltime = aEnd.Seconds - rStart.Seconds;
+ if ( calltime <= timeout )
+ {
+ lastChanceToSendRefreshRequest
+ = aEnd.Seconds + timeout - calltime;
+ }
+ else
+ {
+ OSL_TRACE( "No chance to refresh lock before timeout!" );
+ }
+ }
+ return lastChanceToSendRefreshRequest;
+ }
+
+} // namespace
+
+// -------------------------------------------------------------------
+// LOCK (set new lock)
// -------------------------------------------------------------------
-// Note: Uncomment the following if locking support is required
-/*
-void NeonSession::LOCK( const Lock & inLock,
+void NeonSession::LOCK( const ::rtl::OUString & inPath,
+ ucb::Lock & rLock,
const DAVRequestEnvironment & rEnv )
throw ( DAVException )
{
osl::Guard< osl::Mutex > theGuard( m_aMutex );
- Init();
+ Init( rEnv );
- m_aEnv = rEnv;
+ /* Create a depth zero, exclusive write lock, with default timeout
+ * (allowing a server to pick a default). token, owner and uri are
+ * unset. */
+ NeonLock * theLock = ne_lock_create();
+
+ // Set the lock uri
+ ne_uri aUri;
+ ne_uri_parse( rtl::OUStringToOString( makeAbsoluteURL( inPath ),
+ RTL_TEXTENCODING_UTF8 ).getStr(),
+ &aUri );
+ theLock->uri = aUri;
+
+ // Set the lock depth
+ switch( rLock.Depth )
+ {
+ case ucb::LockDepth_ZERO:
+ theLock->depth = NE_DEPTH_ZERO;
+ break;
+ case ucb::LockDepth_ONE:
+ theLock->depth = NE_DEPTH_ONE;
+ break;
+ case ucb::LockDepth_INFINITY:
+ theLock->depth = NE_DEPTH_INFINITE;
+ break;
+ default:
+ throw DAVException( DAVException::DAV_INVALID_ARG );
+ }
+
+ // Set the lock scope
+ switch ( rLock.Scope )
+ {
+ case ucb::LockScope_EXCLUSIVE:
+ theLock->scope = ne_lockscope_exclusive;
+ break;
+ case ucb::LockScope_SHARED:
+ theLock->scope = ne_lockscope_shared;
+ break;
+ default:
+ throw DAVException( DAVException::DAV_INVALID_ARG );
+ }
+
+ // Set the lock timeout
+ theLock->timeout = (long)rLock.Timeout;
+
+ // Set the lock owner
+ rtl::OUString aValue;
+ rLock.Owner >>= aValue;
+ theLock->owner =
+ ne_strdup( rtl::OUStringToOString( aValue,
+ RTL_TEXTENCODING_UTF8 ).getStr() );
+ TimeValue startCall;
+ osl_getSystemTime( &startCall );
+
+ int theRetVal = ne_lock( m_pHttpSession, theLock );
+
+ if ( theRetVal == NE_OK )
+ {
+ m_aNeonLockStore.addLock( theLock,
+ this,
+ lastChanceToSendRefreshRequest(
+ startCall, theLock->timeout ) );
+
+ uno::Sequence< rtl::OUString > aTokens( 1 );
+ aTokens[ 0 ] = rtl::OUString::createFromAscii( theLock->token );
+ rLock.LockTokens = aTokens;
+
+ OSL_TRACE( "NeonSession::LOCK: created lock for %s. token: %s",
+ rtl::OUStringToOString( makeAbsoluteURL( inPath ),
+ RTL_TEXTENCODING_UTF8 ).getStr(),
+ theLock->token );
+ }
+ else
+ {
+ ne_lock_destroy( theLock );
+
+ OSL_TRACE( "NeonSession::LOCK: obtaining lock for %s failed!",
+ rtl::OUStringToOString( makeAbsoluteURL( inPath ),
+ RTL_TEXTENCODING_UTF8 ).getStr() );
+ }
+
+ HandleError( theRetVal, inPath, rEnv );
+}
- Lockit( inLock, true );
+// -------------------------------------------------------------------
+// LOCK (refresh existing lock)
+// -------------------------------------------------------------------
+sal_Int64 NeonSession::LOCK( const ::rtl::OUString & inPath,
+ sal_Int64 nTimeout,
+ const DAVRequestEnvironment & rEnv )
+ throw ( DAVException )
+{
+ osl::Guard< osl::Mutex > theGuard( m_aMutex );
+
+ // Try to get the neon lock from lock store
+ NeonLock * theLock
+ = m_aNeonLockStore.findByUri( makeAbsoluteURL( inPath ) );
+ if ( !theLock )
+ throw DAVException( DAVException::DAV_NOT_LOCKED );
+
+ Init( rEnv );
+
+ // refresh existing lock.
+ theLock->timeout = static_cast< long >( nTimeout );
+
+ TimeValue startCall;
+ osl_getSystemTime( &startCall );
+
+ int theRetVal = ne_lock_refresh( m_pHttpSession, theLock );
+
+ if ( theRetVal == NE_OK )
+ {
+ m_aNeonLockStore.updateLock( theLock,
+ lastChanceToSendRefreshRequest(
+ startCall, theLock->timeout ) );
+ }
+
+ HandleError( theRetVal, inPath, rEnv );
+
+ return theLock->timeout;
+}
+
+// -------------------------------------------------------------------
+// LOCK (refresh existing lock)
+// -------------------------------------------------------------------
+bool NeonSession::LOCK( NeonLock * pLock,
+ sal_Int32 & rlastChanceToSendRefreshRequest )
+{
+ osl::Guard< osl::Mutex > theGuard( m_aMutex );
+
+#if OSL_DEBUG_LEVEL > 0
+ char * p = ne_uri_unparse( &(pLock->uri) );
+ OSL_TRACE( "NeonSession::LOCK: Refreshing lock for %s.", p );
+ ne_free( p );
+#endif
+
+ // refresh existing lock.
+
+ TimeValue startCall;
+ osl_getSystemTime( &startCall );
+
+ if ( ne_lock_refresh( m_pHttpSession, pLock ) == NE_OK )
+ {
+ rlastChanceToSendRefreshRequest
+ = lastChanceToSendRefreshRequest( startCall, pLock->timeout );
+
+ OSL_TRACE( "Lock successfully refreshed." );
+ return true;
+ }
+ else
+ {
+ OSL_TRACE( "Lock not refreshed!" );
+ return false;
+ }
}
-*/
// -------------------------------------------------------------------
// UNLOCK
// -------------------------------------------------------------------
-// Note: Uncomment the following if locking support is required
-/*
-void NeonSession::UNLOCK( const Lock & inLock,
+void NeonSession::UNLOCK( const ::rtl::OUString & inPath,
const DAVRequestEnvironment & rEnv )
throw ( DAVException )
{
osl::Guard< osl::Mutex > theGuard( m_aMutex );
- Init();
+ // get the neon lock from lock store
+ NeonLock * theLock
+ = m_aNeonLockStore.findByUri( makeAbsoluteURL( inPath ) );
+ if ( !theLock )
+ throw DAVException( DAVException::DAV_NOT_LOCKED );
- m_aEnv = rEnv;
+ Init( rEnv );
+
+ int theRetVal = ne_unlock( m_pHttpSession, theLock );
- Lockit( inLock, false );
+ if ( theRetVal == NE_OK )
+ {
+ m_aNeonLockStore.removeLock( theLock );
+ ne_lock_destroy( theLock );
+ }
+ else
+ {
+ OSL_TRACE( "NeonSession::UNLOCK: unlocking of %s failed.",
+ rtl::OUStringToOString( makeAbsoluteURL( inPath ),
+ RTL_TEXTENCODING_UTF8 ).getStr() );
+ }
+
+ HandleError( theRetVal, inPath, rEnv );
+}
+
+// -------------------------------------------------------------------
+// UNLOCK
+// -------------------------------------------------------------------
+bool NeonSession::UNLOCK( NeonLock * pLock )
+{
+ osl::Guard< osl::Mutex > theGuard( m_aMutex );
+
+#if OSL_DEBUG_LEVEL > 0
+ char * p = ne_uri_unparse( &(pLock->uri) );
+ OSL_TRACE( "NeonSession::UNLOCK: Unlocking %s.", p );
+ ne_free( p );
+#endif
+
+ if ( ne_unlock( m_pHttpSession, pLock ) == NE_OK )
+ {
+ OSL_TRACE( "UNLOCK succeeded." );
+ return true;
+ }
+ else
+ {
+ OSL_TRACE( "UNLOCK failed!" );
+ return false;
+ }
+}
+
+// -------------------------------------------------------------------
+void NeonSession::abort()
+ throw ( DAVException )
+{
+ // 11.11.09 (tkr): The following code lines causing crashes if
+ // closing a ongoing connection. It turned out that this existing
+ // solution doesn't work in multi-threading environments.
+ // So I disabled them in 3.2. . Issue #73893# should fix it in OOo 3.3.
+ //if ( m_pHttpSession )
+ // ne_close_connection( m_pHttpSession );
}
-*/
// -------------------------------------------------------------------
const ucbhelper::InternetProxyServer & NeonSession::getProxySettings() const
@@ -1479,10 +1686,98 @@ const ucbhelper::InternetProxyServer & NeonSession::getProxySettings() const
}
// -------------------------------------------------------------------
+namespace {
+
+bool containsLocktoken( const uno::Sequence< ucb::Lock > & rLocks,
+ const char * token )
+{
+ for ( sal_Int32 n = 0; n < rLocks.getLength(); ++n )
+ {
+ const uno::Sequence< rtl::OUString > & rTokens
+ = rLocks[ n ].LockTokens;
+ for ( sal_Int32 m = 0; m < rTokens.getLength(); ++m )
+ {
+ if ( rTokens[ m ].equalsAscii( token ) )
+ return true;
+ }
+ }
+ return false;
+}
+
+} // namespace
+
+// -------------------------------------------------------------------
+bool NeonSession::removeExpiredLocktoken( const rtl::OUString & inURL,
+ const DAVRequestEnvironment & rEnv )
+{
+ NeonLock * theLock = m_aNeonLockStore.findByUri( inURL );
+ if ( !theLock )
+ return false;
+
+ // do a lockdiscovery to check whether this lock is still valid.
+ try
+ {
+ // @@@ Alternative: use ne_lock_discover() => less overhead
+
+ std::vector< DAVResource > aResources;
+ std::vector< rtl::OUString > aPropNames;
+ aPropNames.push_back( DAVProperties::LOCKDISCOVERY );
+
+ PROPFIND( rEnv.m_aRequestURI, DAVZERO, aPropNames, aResources, rEnv );
+
+ if ( aResources.size() == 0 )
+ return false;
+
+ std::vector< DAVPropertyValue >::const_iterator it
+ = aResources[ 0 ].properties.begin();
+ std::vector< DAVPropertyValue >::const_iterator end
+ = aResources[ 0 ].properties.end();
+
+ while ( it != end )
+ {
+ if ( (*it).Name.equals( DAVProperties::LOCKDISCOVERY ) )
+ {
+ uno::Sequence< ucb::Lock > aLocks;
+ if ( !( (*it).Value >>= aLocks ) )
+ return false;
+
+ if ( !containsLocktoken( aLocks, theLock->token ) )
+ {
+ // expired!
+ break;
+ }
+
+ // still valid.
+ return false;
+ }
+ ++it;
+ }
+
+ // No lockdiscovery prop in propfind result / locktoken not found
+ // in propfind result -> not locked
+ OSL_TRACE( "NeonSession::removeExpiredLocktoken: Removing "
+ " expired lock token for %s. token: %s",
+ rtl::OUStringToOString( inURL,
+ RTL_TEXTENCODING_UTF8 ).getStr(),
+ theLock->token );
+
+ m_aNeonLockStore.removeLock( theLock );
+ ne_lock_destroy( theLock );
+ return true;
+ }
+ catch ( DAVException const & )
+ {
+ }
+ return false;
+}
+
+// -------------------------------------------------------------------
// HandleError
// Common Error Handler
// -------------------------------------------------------------------
-void NeonSession::HandleError( int nError )
+void NeonSession::HandleError( int nError,
+ const rtl::OUString & inPath,
+ const DAVRequestEnvironment & rEnv )
throw ( DAVException )
{
m_aEnv = DAVRequestEnvironment();
@@ -1491,60 +1786,84 @@ void NeonSession::HandleError( int nError )
switch ( nError )
{
case NE_OK:
- // Cleanup.
return;
case NE_ERROR: // Generic error
{
rtl::OUString aText = rtl::OUString::createFromAscii(
- ne_get_error( m_pHttpSession ) );
- throw DAVException( DAVException::DAV_HTTP_ERROR,
- aText,
- makeStatusCode( aText ) );
- }
+ ne_get_error( m_pHttpSession ) );
+
+ sal_uInt16 code = makeStatusCode( aText );
+
+ if ( code == SC_LOCKED )
+ {
+ if ( m_aNeonLockStore.findByUri(
+ makeAbsoluteURL( inPath ) ) == 0 )
+ {
+ // locked by 3rd party
+ throw DAVException( DAVException::DAV_LOCKED );
+ }
+ else
+ {
+ // locked by ourself
+ throw DAVException( DAVException::DAV_LOCKED_SELF );
+ }
+ }
+ // Special handling for 400 and 412 status codes, which may indicate
+ // that a lock previously obtained by us has been released meanwhile
+ // by the server. Unfortunately, RFC is not clear at this point,
+ // thus server implementations behave different...
+ else if ( code == SC_BAD_REQUEST || code == SC_PRECONDITION_FAILED )
+ {
+ if ( removeExpiredLocktoken( makeAbsoluteURL( inPath ), rEnv ) )
+ throw DAVException( DAVException::DAV_LOCK_EXPIRED );
+ }
+
+ throw DAVException( DAVException::DAV_HTTP_ERROR, aText, code );
+ }
case NE_LOOKUP: // Name lookup failed.
throw DAVException( DAVException::DAV_HTTP_LOOKUP,
NeonUri::makeConnectionEndPointString(
- m_aHostName, m_nPort ) );
+ m_aHostName, m_nPort ) );
case NE_AUTH: // User authentication failed on server
throw DAVException( DAVException::DAV_HTTP_AUTH,
NeonUri::makeConnectionEndPointString(
- m_aHostName, m_nPort ) );
+ m_aHostName, m_nPort ) );
case NE_PROXYAUTH: // User authentication failed on proxy
throw DAVException( DAVException::DAV_HTTP_AUTHPROXY,
NeonUri::makeConnectionEndPointString(
- m_aProxyName, m_nProxyPort ) );
-
+ m_aProxyName, m_nProxyPort ) );
+
case NE_CONNECT: // Could not connect to server
throw DAVException( DAVException::DAV_HTTP_CONNECT,
NeonUri::makeConnectionEndPointString(
- m_aHostName, m_nPort ) );
+ m_aHostName, m_nPort ) );
case NE_TIMEOUT: // Connection timed out
throw DAVException( DAVException::DAV_HTTP_TIMEOUT,
NeonUri::makeConnectionEndPointString(
- m_aHostName, m_nPort ) );
+ m_aHostName, m_nPort ) );
case NE_FAILED: // The precondition failed
throw DAVException( DAVException::DAV_HTTP_FAILED,
NeonUri::makeConnectionEndPointString(
- m_aHostName, m_nPort ) );
+ m_aHostName, m_nPort ) );
case NE_RETRY: // Retry request (ne_end_request ONLY)
throw DAVException( DAVException::DAV_HTTP_RETRY,
NeonUri::makeConnectionEndPointString(
- m_aHostName, m_nPort ) );
+ m_aHostName, m_nPort ) );
case NE_REDIRECT:
{
NeonUri aUri( ne_redirect_location( m_pHttpSession ) );
throw DAVException(
- DAVException::DAV_HTTP_REDIRECT, aUri.GetURI() );
+ DAVException::DAV_HTTP_REDIRECT, aUri.GetURI() );
}
- default:
+ default:
{
OSL_TRACE( "NeonSession::HandleError : Unknown Neon error code!" );
throw DAVException( DAVException::DAV_HTTP_ERROR,
@@ -1554,78 +1873,6 @@ void NeonSession::HandleError( int nError )
}
}
-// Note: Uncomment the following if locking support is required
-/*
-void NeonSession::Lockit( const Lock & inLock, bool inLockit )
- throw ( DAVException )
-{
- osl::Guard< osl::Mutex > theGuard( m_aMutex );
-
- // Create the neon lock
- NeonLock * theLock = new NeonLock;
- int theRetVal;
-
- // Set the lock uri
- NeonUri theUri( inLock.uri );
- theLock->uri = const_cast< char * >
- ( rtl::OUStringToOString(
- theUri.GetPath(), RTL_TEXTENCODING_UTF8 ).getStr() );
-
- if ( inLockit )
- {
- // Set the lock depth
- switch( inLock.depth )
- {
- case DAVZERO:
- case DAVINFINITY:
- theLock->depth = int ( inLock.depth );
- break;
- default:
- throw DAVException( DAVException::DAV_INVALID_ARG );
- break;
- }
-
- // Set the lock scope
- switch ( inLock.scope )
- {
- case EXCLUSIVE:
- theLock->scope = ne_lockscope_exclusive;
- break;
- case SHARED:
- theLock->scope = ne_lockscope_shared;
- break;
- default:
- throw DAVException( DAVException::DAV_INVALID_ARG );
- break;
- }
-
- // Set the lock owner
- const char * theOwner = rtl::OUStringToOString( inLock.owner,
- RTL_TEXTENCODING_UTF8 );
- theLock->owner = const_cast< char * > ( theOwner );
-
- // Set the lock timeout
- // Note: Neon ignores the timeout
- //theLock->timeout = inLock.timeout;
-
- theRetVal = ne_lock( m_pHttpSession, theLock );
- }
- else
- {
-
- // Set the lock token
- rtl::OUString theToken = inLock.locktoken.getConstArray()[ 0 ];
- theLock->token = const_cast< char * >
- ( rtl::OUStringToOString(
- theToken, RTL_TEXTENCODING_UTF8 ).getStr() );
-
- theRetVal = ne_unlock( m_pHttpSession, theLock );
- }
-
- HandleError( theRetVal );
-}
-*/
-
// -------------------------------------------------------------------
namespace {
@@ -1655,7 +1902,7 @@ void runResponseHeaderHandler( void * userdata,
while ( it != end )
{
- // header names are case insensitive
+ // header names are case insensitive
if ( (*it).equalsIgnoreAsciiCase( aHeaderName ) )
{
aHeaderName = (*it);
@@ -1663,7 +1910,7 @@ void runResponseHeaderHandler( void * userdata,
}
++it;
}
-
+
if ( it != end )
bIncludeIt = true;
}
@@ -1702,22 +1949,23 @@ int NeonSession::GET( ne_session * sess,
#if NEON_VERSION < 0x0250
if ( getheaders )
- ne_add_response_header_catcher( req, runResponseHeaderHandler, userdata );
+ ne_add_response_header_catcher(
+ req, runResponseHeaderHandler, userdata );
#endif
- ne_add_response_body_reader( req, ne_accept_2xx, reader, userdata );
+ ne_decompress * dc
+ = ne_decompress_reader( req, ne_accept_2xx, reader, userdata );
ret = ne_request_dispatch( req );
#if NEON_VERSION >= 0x0250
if ( getheaders )
{
- while ((cursor = ne_response_header_iterate(req, cursor, &name, &value))
- != NULL)
+ while ( ( cursor = ne_response_header_iterate(
+ req, cursor, &name, &value ) ) != NULL )
{
char buffer[8192];
-
- ne_snprintf(buffer, sizeof buffer, "%s: %s", name, value);
+ ne_snprintf(buffer, sizeof buffer, "%s: %s", name, value);
runResponseHeaderHandler(userdata, buffer);
}
}
@@ -1725,6 +1973,9 @@ int NeonSession::GET( ne_session * sess,
if ( ret == NE_OK && ne_get_status( req )->klass != 2 )
ret = NE_ERROR;
+ if ( dc != 0 )
+ ne_decompress_destroy(dc);
+
ne_request_destroy( req );
return ret;
}
@@ -1812,10 +2063,11 @@ int NeonSession::POST( ne_session * sess,
// -------------------------------------------------------------------
// static
-bool NeonSession::getDataFromInputStream(
- const uno::Reference< io::XInputStream > & xStream,
- uno::Sequence< sal_Int8 > & rData,
- bool bAppendTrailingZeroByte )
+bool
+NeonSession::getDataFromInputStream(
+ const uno::Reference< io::XInputStream > & xStream,
+ uno::Sequence< sal_Int8 > & rData,
+ bool bAppendTrailingZeroByte )
{
if ( xStream.is() )
{
@@ -1824,9 +2076,9 @@ bool NeonSession::getDataFromInputStream(
{
try
{
- sal_Int32 nSize
+ sal_Int32 nSize
= sal::static_int_cast<sal_Int32>(xSeekable->getLength());
- sal_Int32 nRead
+ sal_Int32 nRead
= xStream->readBytes( rData, nSize );
if ( nRead == nSize )
@@ -1898,32 +2150,56 @@ bool NeonSession::getDataFromInputStream(
}
return false;
}
-// -------------------------------------------------------------------
-//static
-
-NeonSession::Map NeonSession::certMap;
// ---------------------------------------------------------------------
sal_Bool
-NeonSession::isDomainMatch( rtl::OUString certHostName)
+NeonSession::isDomainMatch( rtl::OUString certHostName )
{
rtl::OUString hostName = getHostName();
- if (hostName.equalsIgnoreAsciiCase( certHostName ))
+ if (hostName.equalsIgnoreAsciiCase( certHostName ) )
return sal_True;
-
-
- if ( 0 == certHostName.indexOf( rtl::OUString::createFromAscii( "*" ) ) && hostName.getLength() >= certHostName.getLength() )
+ if ( 0 == certHostName.indexOf( rtl::OUString::createFromAscii( "*" ) ) &&
+ hostName.getLength() >= certHostName.getLength() )
{
rtl::OUString cmpStr = certHostName.copy( 1 );
- if ( hostName.matchIgnoreAsciiCase( cmpStr, hostName.getLength( ) - cmpStr.getLength()) )
+ if ( hostName.matchIgnoreAsciiCase(
+ cmpStr, hostName.getLength() - cmpStr.getLength() ) )
return sal_True;
-
}
-
return sal_False;
}
-
+// ---------------------------------------------------------------------
+rtl::OUString NeonSession::makeAbsoluteURL( rtl::OUString const & rURL ) const
+{
+ try
+ {
+ // Is URL relative or already absolute?
+ if ( rURL[ 0 ] != sal_Unicode( '/' ) )
+ {
+ // absolute.
+ return rtl::OUString( rURL );
+ }
+ else
+ {
+ ne_uri aUri;
+ memset( &aUri, 0, sizeof( aUri ) );
+
+ ne_fill_server_uri( m_pHttpSession, &aUri );
+ aUri.path
+ = ne_strdup( rtl::OUStringToOString(
+ rURL, RTL_TEXTENCODING_UTF8 ).getStr() );
+ NeonUri aNeonUri( &aUri );
+ ne_uri_free( &aUri );
+ return aNeonUri.GetURI();
+ }
+ }
+ catch ( DAVException const & )
+ {
+ }
+ // error.
+ return rtl::OUString();
+}
diff --git a/ucb/source/ucp/webdav/NeonSession.hxx b/ucb/source/ucp/webdav/NeonSession.hxx
index 85daecd8e4..103724311d 100644
--- a/ucb/source/ucp/webdav/NeonSession.hxx
+++ b/ucb/source/ucp/webdav/NeonSession.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: NeonSession.hxx,v $
- * $Revision: 1.31.12.1 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -35,10 +32,9 @@
#include <osl/mutex.hxx>
#include "DAVSession.hxx"
#include "NeonTypes.hxx"
+#include "NeonLockStore.hxx"
#include <com/sun/star/lang/XMultiServiceFactory.hpp>
-using namespace com::sun::star;
-
namespace ucbhelper { class ProxyDecider; }
namespace webdav_ucp
@@ -51,236 +47,249 @@ namespace webdav_ucp
class NeonSession : public DAVSession
{
- private:
- osl::Mutex m_aMutex;
- static osl::Mutex m_aGlobalMutex;
- rtl::OUString m_aScheme;
- rtl::OUString m_aHostName;
- rtl::OUString m_aProxyName;
- sal_Int32 m_nPort;
- sal_Int32 m_nProxyPort;
- HttpSession * m_pHttpSession;
- void * m_pRequestData;
- const ucbhelper::InternetProxyDecider & m_rProxyDecider;
-
- // @@@ This should really be per-request data. But Neon currently
- // (0.23.5) has no interface for passing per-request user data.
- // Theoretically, a NeonSession instance could handle multiple requests
- // at a time --currently it doesn't. Thus this is not an issue at the
- // moment.
- DAVRequestEnvironment m_aEnv;
-
- // Note: Uncomment the following if locking support is required
- // NeonLockSession * mNeonLockSession;
-
- static bool m_bGlobalsInited;
-
- protected:
- virtual ~NeonSession();
-
- public:
- NeonSession( const rtl::Reference< DAVSessionFactory > & rSessionFactory,
- const rtl::OUString& inUri,
- const ucbhelper::InternetProxyDecider & rProxyDecider )
- throw ( DAVException );
-
- // DAVSession methods
- virtual sal_Bool CanUse( const ::rtl::OUString & inUri );
-
- virtual sal_Bool UsesProxy();
-
- const DAVRequestEnvironment & getRequestEnvironment() const
- { return m_aEnv; }
-
- virtual void
- OPTIONS( const ::rtl::OUString & inPath,
- DAVCapabilities & outCapabilities,
- const DAVRequestEnvironment & rEnv )
- throw ( DAVException );
-
- // allprop & named
- virtual void
- PROPFIND( const ::rtl::OUString & inPath,
- const Depth inDepth,
- const std::vector< ::rtl::OUString > & inPropNames,
- std::vector< DAVResource > & ioResources,
- const DAVRequestEnvironment & rEnv )
- throw ( DAVException );
-
- // propnames
- virtual void
- PROPFIND( const ::rtl::OUString & inPath,
- const Depth inDepth,
- std::vector< DAVResourceInfo >& ioResInfo,
- const DAVRequestEnvironment & rEnv )
- throw ( DAVException );
-
- virtual void
- PROPPATCH( const ::rtl::OUString & inPath,
- const std::vector< ProppatchValue > & inValues,
- const DAVRequestEnvironment & rEnv )
- throw( DAVException );
-
- virtual void
- HEAD( const ::rtl::OUString & inPath,
- const std::vector< ::rtl::OUString > & inHeaderNames,
- DAVResource & ioResource,
- const DAVRequestEnvironment & rEnv )
- throw( DAVException );
-
- virtual com::sun::star::uno::Reference<
- com::sun::star::io::XInputStream >
- GET( const ::rtl::OUString & inPath,
- const DAVRequestEnvironment & rEnv )
- throw ( DAVException );
-
- virtual void
- GET( const ::rtl::OUString & inPath,
- com::sun::star::uno::Reference<
- com::sun::star::io::XOutputStream > & ioOutputStream,
- const DAVRequestEnvironment & rEnv )
- throw ( DAVException );
-
- virtual com::sun::star::uno::Reference<
- com::sun::star::io::XInputStream >
- GET( const ::rtl::OUString & inPath,
- const std::vector< ::rtl::OUString > & inHeaderNames,
- DAVResource & ioResource,
- const DAVRequestEnvironment & rEnv )
- throw ( DAVException );
-
- virtual void
- GET( const ::rtl::OUString & inPath,
- com::sun::star::uno::Reference<
- com::sun::star::io::XOutputStream > & ioOutputStream,
- const std::vector< ::rtl::OUString > & inHeaderNames,
- DAVResource & ioResource,
+private:
+ osl::Mutex m_aMutex;
+ rtl::OUString m_aScheme;
+ rtl::OUString m_aHostName;
+ rtl::OUString m_aProxyName;
+ sal_Int32 m_nPort;
+ sal_Int32 m_nProxyPort;
+ HttpSession * m_pHttpSession;
+ void * m_pRequestData;
+ const ucbhelper::InternetProxyDecider & m_rProxyDecider;
+
+ // @@@ This should really be per-request data. But Neon currently
+ // (0.23.5) has no interface for passing per-request user data.
+ // Theoretically, a NeonSession instance could handle multiple requests
+ // at a time --currently it doesn't. Thus this is not an issue at the
+ // moment.
+ DAVRequestEnvironment m_aEnv;
+
+ static bool m_bGlobalsInited;
+ static osl::Mutex m_aGlobalMutex;
+ static NeonLockStore m_aNeonLockStore;
+
+protected:
+ virtual ~NeonSession();
+
+public:
+ NeonSession( const rtl::Reference< DAVSessionFactory > & rSessionFactory,
+ const rtl::OUString& inUri,
+ const ucbhelper::InternetProxyDecider & rProxyDecider )
+ throw ( DAVException );
+
+ // DAVSession methods
+ virtual sal_Bool CanUse( const ::rtl::OUString & inUri );
+
+ virtual sal_Bool UsesProxy();
+
+ const DAVRequestEnvironment & getRequestEnvironment() const
+ { return m_aEnv; }
+
+ virtual void
+ OPTIONS( const ::rtl::OUString & inPath,
+ DAVCapabilities & outCapabilities,
const DAVRequestEnvironment & rEnv )
- throw ( DAVException );
-
- virtual void
- PUT( const ::rtl::OUString & inPath,
- const com::sun::star::uno::Reference<
- com::sun::star::io::XInputStream > & inInputStream,
- const DAVRequestEnvironment & rEnv )
- throw ( DAVException );
-
- virtual com::sun::star::uno::Reference<
- com::sun::star::io::XInputStream >
- POST( const rtl::OUString & inPath,
- const rtl::OUString & rContentType,
- const rtl::OUString & rReferer,
- const com::sun::star::uno::Reference<
- com::sun::star::io::XInputStream > & inInputStream,
+ throw ( DAVException );
+
+ // allprop & named
+ virtual void
+ PROPFIND( const ::rtl::OUString & inPath,
+ const Depth inDepth,
+ const std::vector< ::rtl::OUString > & inPropNames,
+ std::vector< DAVResource > & ioResources,
const DAVRequestEnvironment & rEnv )
- throw ( DAVException );
+ throw ( DAVException );
- virtual void
- POST( const rtl::OUString & inPath,
- const rtl::OUString & rContentType,
- const rtl::OUString & rReferer,
- const com::sun::star::uno::Reference<
- com::sun::star::io::XInputStream > & inInputStream,
- com::sun::star::uno::Reference<
- com::sun::star::io::XOutputStream > & oOutputStream,
+ // propnames
+ virtual void
+ PROPFIND( const ::rtl::OUString & inPath,
+ const Depth inDepth,
+ std::vector< DAVResourceInfo >& ioResInfo,
const DAVRequestEnvironment & rEnv )
- throw ( DAVException );
+ throw ( DAVException );
- virtual void
- MKCOL( const ::rtl::OUString & inPath,
+ virtual void
+ PROPPATCH( const ::rtl::OUString & inPath,
+ const std::vector< ProppatchValue > & inValues,
const DAVRequestEnvironment & rEnv )
- throw ( DAVException );
-
- virtual void
- COPY( const ::rtl::OUString & inSourceURL,
- const ::rtl::OUString & inDestinationURL,
- const DAVRequestEnvironment & rEnv,
- sal_Bool inOverWrite )
- throw ( DAVException );
-
- virtual void
- MOVE( const ::rtl::OUString & inSourceURL,
- const ::rtl::OUString & inDestinationURL,
- const DAVRequestEnvironment & rEnv,
- sal_Bool inOverWrite )
- throw ( DAVException );
-
- virtual void DESTROY( const ::rtl::OUString & inPath,
- const DAVRequestEnvironment & rEnv )
- throw ( DAVException );
-
- virtual void ABORT()
- throw ( DAVException );
-
- // Note: Uncomment the following if locking support is required
- /*
- virtual void LOCK (const Lock & inLock,
- const DAVRequestEnvironment & rEnv )
- throw ( DAVException );
-
- virtual void UNLOCK (const Lock & inLock,
- const DAVRequestEnvironment & rEnv )
- throw ( DAVException );
- */
-
- // helpers
- const rtl::OUString & getHostName() const { return m_aHostName; }
-
- const ::uno::Reference< ::lang::XMultiServiceFactory > getMSF() { return m_xFactory->getServiceFactory(); }
-
- const void * getRequestData() const { return m_pRequestData; }
-
- sal_Bool isDomainMatch( rtl::OUString certHostName );
-
- private:
- // Initialise "Neon sockets"
- void Init( void )
- throw ( DAVException );
-
- void HandleError( int nError )
- throw ( DAVException );
-
- const ucbhelper::InternetProxyServer & getProxySettings() const;
-
- // Note: Uncomment the following if locking support is required
- // void Lockit( const Lock & inLock, bool inLockit )
- // throw ( DAVException );
-
- // low level GET implementation, used by public GET implementations
- static int GET( ne_session * sess,
- const char * uri,
- ne_block_reader reader,
- bool getheaders,
- void * userdata );
-
- // Buffer-based PUT implementation. Neon only has file descriptor-
- // based API.
- static int PUT( ne_session * sess,
- const char * uri,
- const char * buffer,
- size_t size );
-
- // Buffer-based POST implementation. Neon only has file descriptor-
- // based API.
- int POST( ne_session * sess,
- const char * uri,
- const char * buffer,
- ne_block_reader reader,
- void * userdata,
- const rtl::OUString & rContentType,
- const rtl::OUString & rReferer );
-
- // Helper: XInputStream -> Sequence< sal_Int8 >
- static bool getDataFromInputStream(
- const com::sun::star::uno::Reference<
- com::sun::star::io::XInputStream > & xStream,
- com::sun::star::uno::Sequence< sal_Int8 > & rData,
- bool bAppendTrailingZeroByte );
-
- typedef std::map< ::rtl::OUString, ::rtl::OUString > Map;
- static Map certMap;
+ throw ( DAVException );
+
+ virtual void
+ HEAD( const ::rtl::OUString & inPath,
+ const std::vector< ::rtl::OUString > & inHeaderNames,
+ DAVResource & ioResource,
+ const DAVRequestEnvironment & rEnv )
+ throw ( DAVException );
+
+ virtual com::sun::star::uno::Reference< com::sun::star::io::XInputStream >
+ GET( const ::rtl::OUString & inPath,
+ const DAVRequestEnvironment & rEnv )
+ throw ( DAVException );
+
+ virtual void
+ GET( const ::rtl::OUString & inPath,
+ com::sun::star::uno::Reference<
+ com::sun::star::io::XOutputStream > & ioOutputStream,
+ const DAVRequestEnvironment & rEnv )
+ throw ( DAVException );
+
+ virtual com::sun::star::uno::Reference< com::sun::star::io::XInputStream >
+ GET( const ::rtl::OUString & inPath,
+ const std::vector< ::rtl::OUString > & inHeaderNames,
+ DAVResource & ioResource,
+ const DAVRequestEnvironment & rEnv )
+ throw ( DAVException );
+
+ virtual void
+ GET( const ::rtl::OUString & inPath,
+ com::sun::star::uno::Reference<
+ com::sun::star::io::XOutputStream > & ioOutputStream,
+ const std::vector< ::rtl::OUString > & inHeaderNames,
+ DAVResource & ioResource,
+ const DAVRequestEnvironment & rEnv )
+ throw ( DAVException );
+
+ virtual void
+ PUT( const ::rtl::OUString & inPath,
+ const com::sun::star::uno::Reference<
+ com::sun::star::io::XInputStream > & inInputStream,
+ const DAVRequestEnvironment & rEnv )
+ throw ( DAVException );
+
+ virtual com::sun::star::uno::Reference< com::sun::star::io::XInputStream >
+ POST( const rtl::OUString & inPath,
+ const rtl::OUString & rContentType,
+ const rtl::OUString & rReferer,
+ const com::sun::star::uno::Reference<
+ com::sun::star::io::XInputStream > & inInputStream,
+ const DAVRequestEnvironment & rEnv )
+ throw ( DAVException );
+
+ virtual void
+ POST( const rtl::OUString & inPath,
+ const rtl::OUString & rContentType,
+ const rtl::OUString & rReferer,
+ const com::sun::star::uno::Reference<
+ com::sun::star::io::XInputStream > & inInputStream,
+ com::sun::star::uno::Reference<
+ com::sun::star::io::XOutputStream > & oOutputStream,
+ const DAVRequestEnvironment & rEnv )
+ throw ( DAVException );
+
+ virtual void
+ MKCOL( const ::rtl::OUString & inPath,
+ const DAVRequestEnvironment & rEnv )
+ throw ( DAVException );
+
+ virtual void
+ COPY( const ::rtl::OUString & inSourceURL,
+ const ::rtl::OUString & inDestinationURL,
+ const DAVRequestEnvironment & rEnv,
+ sal_Bool inOverWrite )
+ throw ( DAVException );
+
+ virtual void
+ MOVE( const ::rtl::OUString & inSourceURL,
+ const ::rtl::OUString & inDestinationURL,
+ const DAVRequestEnvironment & rEnv,
+ sal_Bool inOverWrite )
+ throw ( DAVException );
+
+ virtual void DESTROY( const ::rtl::OUString & inPath,
+ const DAVRequestEnvironment & rEnv )
+ throw ( DAVException );
+
+ // set new lock.
+ virtual void LOCK( const ::rtl::OUString & inURL,
+ com::sun::star::ucb::Lock & inLock,
+ const DAVRequestEnvironment & rEnv )
+ throw ( DAVException );
+
+ // refresh existing lock.
+ virtual sal_Int64 LOCK( const ::rtl::OUString & inURL,
+ sal_Int64 nTimeout,
+ const DAVRequestEnvironment & rEnv )
+ throw ( DAVException );
+
+ virtual void UNLOCK( const ::rtl::OUString & inURL,
+ const DAVRequestEnvironment & rEnv )
+ throw ( DAVException );
+
+ // helpers
+ virtual void abort()
+ throw ( DAVException );
+
+ const rtl::OUString & getHostName() const { return m_aHostName; }
+
+ const ::uno::Reference< ::lang::XMultiServiceFactory > getMSF()
+ { return m_xFactory->getServiceFactory(); }
+
+ const void * getRequestData() const { return m_pRequestData; }
+
+ sal_Bool isDomainMatch( rtl::OUString certHostName );
+
+private:
+ friend class NeonLockStore;
+
+ void Init( void )
+ throw ( DAVException );
+
+ void Init( const DAVRequestEnvironment & rEnv )
+ throw ( DAVException );
+
+ // ret: true => retry request.
+ void HandleError( int nError,
+ const rtl::OUString & inPath,
+ const DAVRequestEnvironment & rEnv )
+ throw ( DAVException );
+
+ const ucbhelper::InternetProxyServer & getProxySettings() const;
+
+ bool removeExpiredLocktoken( const rtl::OUString & inURL,
+ const DAVRequestEnvironment & rEnv );
+
+ // refresh lock, called by NeonLockStore::refreshLocks
+ bool LOCK( NeonLock * pLock,
+ sal_Int32 & rlastChanceToSendRefreshRequest );
+
+ // unlock, called by NeonLockStore::~NeonLockStore
+ bool UNLOCK( NeonLock * pLock );
+
+ // low level GET implementation, used by public GET implementations
+ static int GET( ne_session * sess,
+ const char * uri,
+ ne_block_reader reader,
+ bool getheaders,
+ void * userdata );
+
+ // Buffer-based PUT implementation. Neon only has file descriptor-
+ // based API.
+ static int PUT( ne_session * sess,
+ const char * uri,
+ const char * buffer,
+ size_t size );
+
+ // Buffer-based POST implementation. Neon only has file descriptor-
+ // based API.
+ int POST( ne_session * sess,
+ const char * uri,
+ const char * buffer,
+ ne_block_reader reader,
+ void * userdata,
+ const rtl::OUString & rContentType,
+ const rtl::OUString & rReferer );
+
+ // Helper: XInputStream -> Sequence< sal_Int8 >
+ static bool getDataFromInputStream(
+ const com::sun::star::uno::Reference<
+ com::sun::star::io::XInputStream > & xStream,
+ com::sun::star::uno::Sequence< sal_Int8 > & rData,
+ bool bAppendTrailingZeroByte );
+
+ rtl::OUString makeAbsoluteURL( rtl::OUString const & rURL ) const;
};
-} // namespace_ucp
+} // namespace webdav_ucp
#endif // _NEONSESSION_HXX_
diff --git a/ucb/source/ucp/webdav/NeonTypes.hxx b/ucb/source/ucp/webdav/NeonTypes.hxx
index 08c7d07460..cb150f06b2 100644
--- a/ucb/source/ucp/webdav/NeonTypes.hxx
+++ b/ucb/source/ucp/webdav/NeonTypes.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: NeonTypes.hxx,v $
- * $Revision: 1.13 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -35,6 +32,7 @@
#include <ne_utils.h>
#include <ne_basic.h>
#include <ne_props.h>
+#include <ne_locks.h>
typedef ne_session HttpSession;
typedef ne_status HttpStatus;
@@ -43,4 +41,6 @@ typedef ne_server_capabilities HttpServerCapabilities;
typedef ne_propname NeonPropName;
typedef ne_prop_result_set NeonPropFindResultSet;
+typedef struct ne_lock NeonLock;
+
#endif // _NEONTYPES_HXX_
diff --git a/ucb/source/ucp/webdav/NeonUri.cxx b/ucb/source/ucp/webdav/NeonUri.cxx
index ed8315b1cd..9b97c264a6 100644
--- a/ucb/source/ucp/webdav/NeonUri.cxx
+++ b/ucb/source/ucp/webdav/NeonUri.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: NeonUri.cxx,v $
- * $Revision: 1.25.16.1 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -42,11 +39,6 @@
using namespace webdav_ucp;
- char *scheme;
- char *host, *userinfo;
- unsigned int port;
- char *path, *query, *fragment;
-
# if defined __SUNPRO_CC
// FIXME: not sure whether initializing a ne_uri statically is supposed to work
// the string fields of ne_uri are char*, not const char*
@@ -65,38 +57,38 @@ using namespace webdav_ucp;
namespace {
-const ne_uri g_sUriDefaultsHTTP = { "http",
+const ne_uri g_sUriDefaultsHTTP = { "http",
#if NEON_VERSION >= 0x0260
- NULL,
+ NULL,
#endif
- NULL,
- DEFAULT_HTTP_PORT,
+ NULL,
+ DEFAULT_HTTP_PORT,
#if NEON_VERSION >= 0x0260
- NULL,
+ NULL,
#endif
- NULL,
+ NULL,
NULL };
-const ne_uri g_sUriDefaultsHTTPS = { "https",
+const ne_uri g_sUriDefaultsHTTPS = { "https",
#if NEON_VERSION >= 0x0260
- NULL,
+ NULL,
#endif
- NULL,
- DEFAULT_HTTPS_PORT,
+ NULL,
+ DEFAULT_HTTPS_PORT,
#if NEON_VERSION >= 0x0260
- NULL,
+ NULL,
#endif
- NULL,
+ NULL,
NULL };
-const ne_uri g_sUriDefaultsFTP = { "ftp",
+const ne_uri g_sUriDefaultsFTP = { "ftp",
#if NEON_VERSION >= 0x0260
- NULL,
+ NULL,
#endif
- NULL,
- DEFAULT_FTP_PORT,
+ NULL,
+ DEFAULT_FTP_PORT,
#if NEON_VERSION >= 0x0260
- NULL,
+ NULL,
#endif
- NULL,
+ NULL,
NULL };
} // namespace
@@ -136,7 +128,7 @@ NeonUri::NeonUri( const ne_uri * inUri )
init( rtl::OString( uri ), inUri );
free( uri );
-
+
calculateURI();
}
@@ -149,7 +141,7 @@ NeonUri::NeonUri( const rtl::OUString & inUri )
// #i77023#
rtl::OUString aEscapedUri( ucb_impl::urihelper::encodeURI( inUri ) );
- rtl::OString theInputUri(
+ rtl::OString theInputUri(
aEscapedUri.getStr(), aEscapedUri.getLength(), RTL_TEXTENCODING_UTF8 );
ne_uri theUri;
@@ -196,17 +188,17 @@ void NeonUri::init( const rtl::OString & rUri, const ne_uri * pUri )
RTL_TEXTENCODING_UTF8 );
#if NEON_VERSION >= 0x0260
- if ( pUri->query )
+ if ( pUri->query )
{
mPath += rtl::OUString::createFromAscii( "?" );
- mPath += rtl::OStringToOUString(
+ mPath += rtl::OStringToOUString(
pUri->query, RTL_TEXTENCODING_UTF8 );
}
if ( pUri->fragment )
{
mPath += rtl::OUString::createFromAscii( "#" );
- mPath += rtl::OStringToOUString(
+ mPath += rtl::OStringToOUString(
pUri->fragment, RTL_TEXTENCODING_UTF8 );
}
#endif
@@ -230,7 +222,7 @@ void NeonUri::calculateURI ()
aBuf.appendAscii( "@" );
}
// Is host a numeric IPv6 address?
- if ( ( mHostName.indexOf( ':' ) != -1 ) &&
+ if ( ( mHostName.indexOf( ':' ) != -1 ) &&
( mHostName[ 0 ] != sal_Unicode( '[' ) ) )
{
aBuf.appendAscii( "[" );
@@ -283,7 +275,7 @@ void NeonUri::calculateURI ()
}
if (nPos != -1)
{
- rtl::OUString aTemp(
+ rtl::OUString aTemp(
mPath.copy (nPos + 1, mPath.getLength () - nPos - 1 - nTrail) );
// query, fragment present?
@@ -343,7 +335,7 @@ rtl::OUString NeonUri::makeConnectionEndPointString(
rtl::OUStringBuffer aBuf;
// Is host a numeric IPv6 address?
- if ( ( rHostName.indexOf( ':' ) != -1 ) &&
+ if ( ( rHostName.indexOf( ':' ) != -1 ) &&
( rHostName[ 0 ] != sal_Unicode( '[' ) ) )
{
aBuf.appendAscii( "[" );
diff --git a/ucb/source/ucp/webdav/NeonUri.hxx b/ucb/source/ucp/webdav/NeonUri.hxx
index 1b54085e53..2623887ae0 100644
--- a/ucb/source/ucp/webdav/NeonUri.hxx
+++ b/ucb/source/ucp/webdav/NeonUri.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: NeonUri.hxx,v $
- * $Revision: 1.14.22.1 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/webdav/PropertyMap.hxx b/ucb/source/ucp/webdav/PropertyMap.hxx
index 14e915bc1c..fefe316979 100644
--- a/ucb/source/ucp/webdav/PropertyMap.hxx
+++ b/ucb/source/ucp/webdav/PropertyMap.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: PropertyMap.hxx,v $
- * $Revision: 1.3 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/webdav/UCBDeadPropertyValue.cxx b/ucb/source/ucp/webdav/UCBDeadPropertyValue.cxx
index 012bd85c92..f9a36d3113 100644
--- a/ucb/source/ucp/webdav/UCBDeadPropertyValue.cxx
+++ b/ucb/source/ucp/webdav/UCBDeadPropertyValue.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: UCBDeadPropertyValue.cxx,v $
- * $Revision: 1.19 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -89,12 +86,11 @@ const rtl::OUString UCBDeadPropertyValue::aXMLEnd
extern "C" int UCBDeadPropertyValue_startelement_callback(
void *,
int parent,
- const char *nspace,
+ const char * /*nspace*/,
const char *name,
const char ** )
{
- if ( ( name != 0 ) &&
- ( ( nspace == 0 ) || ( strcmp( nspace, "" ) == 0 ) ) )
+ if ( name != 0 )
{
switch ( parent )
{
@@ -187,7 +183,7 @@ static rtl::OUString encodeValue( const rtl::OUString & rValue )
// PROPPATCH:
// - Encoded property value: x&lt;z
// - UCBDeadPropertyValue::toXML result:
- // <ucbprop><type>string</type><value>x&lt;z</value></ucbprop>
+ // <ucbprop><type>string</type><value>x&lt;z</value></ucbprop>
// PROPFIND:
// - parser replaces &lt; by > ==> error (not well formed)
@@ -361,7 +357,7 @@ bool UCBDeadPropertyValue::supportsType( const uno::Type & rType )
//////////////////////////////////////////////////////////////////////////
// static
bool UCBDeadPropertyValue::createFromXML( const rtl::OString & rInData,
- uno::Any & rOutData )
+ uno::Any & rOutData )
{
bool success = false;
@@ -450,7 +446,7 @@ bool UCBDeadPropertyValue::createFromXML( const rtl::OString & rInData,
//////////////////////////////////////////////////////////////////////////
// static
bool UCBDeadPropertyValue::toXML( const uno::Any & rInData,
- rtl::OUString & rOutData )
+ rtl::OUString & rOutData )
{
// <ucbprop><type>the_type</type><value>the_value</value></ucbprop>
@@ -466,7 +462,7 @@ bool UCBDeadPropertyValue::toXML( const uno::Any & rInData,
rInData >>= aStringValue;
aStringType = aTypeString;
}
- else if ( rType == getCppuType( static_cast< const sal_Int32 * >( 0 ) ) )
+ else if ( rType == getCppuType( static_cast< const sal_Int32 * >( 0 ) ) )
{
// long
sal_Int32 nValue = 0;
@@ -541,7 +537,7 @@ bool UCBDeadPropertyValue::toXML( const uno::Any & rInData,
// Encode value! It must not contain XML reserved chars!
aStringValue = encodeValue( aStringValue );
- rOutData = aXMLPre;
+ rOutData = aXMLPre;
rOutData += aStringType;
rOutData += aXMLMid;
rOutData += aStringValue;
diff --git a/ucb/source/ucp/webdav/UCBDeadPropertyValue.hxx b/ucb/source/ucp/webdav/UCBDeadPropertyValue.hxx
index 77aa746587..b6a2bba2d4 100644
--- a/ucb/source/ucp/webdav/UCBDeadPropertyValue.hxx
+++ b/ucb/source/ucp/webdav/UCBDeadPropertyValue.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: UCBDeadPropertyValue.hxx,v $
- * $Revision: 1.6 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/webdav/makefile.mk b/ucb/source/ucp/webdav/makefile.mk
index c8891723cd..551efb6f06 100644
--- a/ucb/source/ucp/webdav/makefile.mk
+++ b/ucb/source/ucp/webdav/makefile.mk
@@ -2,14 +2,10 @@
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2008 by Sun Microsystems, Inc.
+# Copyright 2000, 2010 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
-# $RCSfile: makefile.mk,v $
-#
-# $Revision: 1.43 $
-#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
@@ -87,25 +83,26 @@ CFLAGS+= $(OPENSSL_CFLAGS)
# --- General -----------------------------------------------------
SLOFILES=\
- $(SLO)$/webdavservices.obj \
- $(SLO)$/webdavprovider.obj \
- $(SLO)$/webdavcontent.obj \
- $(SLO)$/webdavcontentcaps.obj \
- $(SLO)$/webdavresultset.obj \
- $(SLO)$/webdavdatasupplier.obj \
- $(SLO)$/ContentProperties.obj \
- $(SLO)$/DAVProperties.obj \
- $(SLO)$/DAVSessionFactory.obj \
- $(SLO)$/DAVResourceAccess.obj \
- $(SLO)$/NeonUri.obj \
- $(SLO)$/NeonInputStream.obj \
- $(SLO)$/NeonPropFindRequest.obj \
- $(SLO)$/NeonHeadRequest.obj \
- $(SLO)$/NeonSession.obj \
- $(SLO)$/DateTimeHelper.obj \
- $(SLO)$/LinkSequence.obj \
- $(SLO)$/LockSequence.obj \
- $(SLO)$/LockEntrySequence.obj \
+ $(SLO)$/webdavservices.obj \
+ $(SLO)$/webdavprovider.obj \
+ $(SLO)$/webdavcontent.obj \
+ $(SLO)$/webdavcontentcaps.obj \
+ $(SLO)$/webdavresultset.obj \
+ $(SLO)$/webdavdatasupplier.obj \
+ $(SLO)$/ContentProperties.obj \
+ $(SLO)$/DAVProperties.obj \
+ $(SLO)$/DAVSessionFactory.obj \
+ $(SLO)$/DAVResourceAccess.obj \
+ $(SLO)$/NeonUri.obj \
+ $(SLO)$/NeonInputStream.obj \
+ $(SLO)$/NeonPropFindRequest.obj \
+ $(SLO)$/NeonHeadRequest.obj \
+ $(SLO)$/NeonSession.obj \
+ $(SLO)$/NeonLockStore.obj \
+ $(SLO)$/DateTimeHelper.obj \
+ $(SLO)$/LinkSequence.obj \
+ $(SLO)$/LockSequence.obj \
+ $(SLO)$/LockEntrySequence.obj \
$(SLO)$/UCBDeadPropertyValue.obj
LIB1TARGET=$(SLB)$/_$(TARGET).lib
@@ -119,17 +116,15 @@ SHL1IMPLIB=i$(TARGET)
SHL1VERSIONMAP=exports.map
SHL1STDLIBS=\
- $(CPPUHELPERLIB) \
- $(CPPULIB) \
- $(SALLIB) \
- $(SALHELPERLIB) \
- $(UCBHELPERLIB) \
- $(COMPHELPERLIB) \
- $(NEON3RDLIB) \
+ $(CPPUHELPERLIB) \
+ $(CPPULIB) \
+ $(SALLIB) \
+ $(SALHELPERLIB) \
+ $(UCBHELPERLIB) \
+ $(COMPHELPERLIB) \
+ $(NEON3RDLIB) \
$(LIBXML2LIB)
-
-
.IF "$(GUI)"=="WNT"
SHL1STDLIBS+= $(WSOCK32LIB)
.IF "$(WINDOWS_VISTA_PSDK)" != ""
@@ -150,8 +145,6 @@ SHL1STDLIBS+= $(OPENSSLLIBST)
.ENDIF
.ENDIF # WNT
-
-
SHL1DEF=$(MISC)$/$(SHL1TARGET).def
SHL1LIBS=$(LIB1TARGET)
@@ -165,4 +158,3 @@ DEF1NAME=$(SHL1TARGET)
# --- Targets ----------------------------------------------------------
.INCLUDE: target.mk
-
diff --git a/ucb/source/ucp/webdav/webdavcontent.cxx b/ucb/source/ucp/webdav/webdavcontent.cxx
index 9dd59c4441..c4aab34aa2 100644
--- a/ucb/source/ucp/webdav/webdavcontent.cxx
+++ b/ucb/source/ucp/webdav/webdavcontent.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: webdavcontent.cxx,v $
- * $Revision: 1.65.12.1 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -36,13 +33,16 @@
**************************************************************************
*************************************************************************/
-#include <osl/diagnose.h>
+#include <osl/diagnose.h>
#include "osl/doublecheckedlocking.h"
#include <rtl/uri.hxx>
#include <rtl/ustrbuf.hxx>
-#include "com/sun/star/task/XPasswordContainer.hpp"
-#include "com/sun/star/task/NoMasterException.hpp"
+#include <ucbhelper/contentidentifier.hxx>
+#include <ucbhelper/propertyvalueset.hxx>
+#include <ucbhelper/simpleinteractionrequest.hxx>
+#include <ucbhelper/cancelcommandexecution.hxx>
+
#include <com/sun/star/beans/PropertyAttribute.hpp>
#include <com/sun/star/beans/PropertySetInfoChange.hpp>
#include <com/sun/star/beans/PropertySetInfoChangeEvent.hpp>
@@ -50,39 +50,37 @@
#include <com/sun/star/io/XActiveDataSink.hpp>
#include <com/sun/star/io/XOutputStream.hpp>
#include <com/sun/star/lang/IllegalAccessException.hpp>
-#include "com/sun/star/ucb/AuthenticationRequest.hpp"
+#include <com/sun/star/task/PasswordContainerInteractionHandler.hpp>
+#include <com/sun/star/ucb/CommandEnvironment.hpp>
#include <com/sun/star/ucb/CommandFailedException.hpp>
#include <com/sun/star/ucb/ContentInfoAttribute.hpp>
#include <com/sun/star/ucb/InsertCommandArgument.hpp>
-#ifndef _COM_SUN_STAR_UCB_INTERACTIVEBADTRANSFRERURLEXCEPTION_HPP_
#include <com/sun/star/ucb/InteractiveBadTransferURLException.hpp>
-#endif
#include <com/sun/star/ucb/InteractiveAugmentedIOException.hpp>
+#include "com/sun/star/ucb/InteractiveLockingLockedException.hpp"
+#include "com/sun/star/ucb/InteractiveLockingLockExpiredException.hpp"
+#include "com/sun/star/ucb/InteractiveLockingNotLockedException.hpp"
#include <com/sun/star/ucb/InteractiveNetworkConnectException.hpp>
-#ifndef _COM_SUN_STAR_UCB_INTERACTIVENETWORKGENBERALEXCEPTION_HPP_
#include <com/sun/star/ucb/InteractiveNetworkGeneralException.hpp>
-#endif
#include <com/sun/star/ucb/InteractiveNetworkReadException.hpp>
#include <com/sun/star/ucb/InteractiveNetworkResolveNameException.hpp>
#include <com/sun/star/ucb/InteractiveNetworkWriteException.hpp>
+#include <com/sun/star/ucb/MissingInputStreamException.hpp>
+#include <com/sun/star/ucb/MissingPropertiesException.hpp>
#include <com/sun/star/ucb/NameClash.hpp>
#include <com/sun/star/ucb/NameClashException.hpp>
#include <com/sun/star/ucb/OpenCommandArgument2.hpp>
#include <com/sun/star/ucb/OpenMode.hpp>
#include <com/sun/star/ucb/PostCommandArgument2.hpp>
#include <com/sun/star/ucb/TransferInfo.hpp>
-#include <com/sun/star/ucb/XCommandInfo.hpp>
-#include <com/sun/star/ucb/XPersistentPropertySet.hpp>
-#include <com/sun/star/ucb/MissingInputStreamException.hpp>
-#include <com/sun/star/ucb/MissingPropertiesException.hpp>
#include <com/sun/star/ucb/UnsupportedCommandException.hpp>
#include <com/sun/star/ucb/UnsupportedDataSinkException.hpp>
#include <com/sun/star/ucb/UnsupportedNameClashException.hpp>
#include <com/sun/star/ucb/UnsupportedOpenModeException.hpp>
-#include <ucbhelper/contentidentifier.hxx>
-#include <ucbhelper/propertyvalueset.hxx>
-#include <ucbhelper/simpleinteractionrequest.hxx>
-#include <ucbhelper/cancelcommandexecution.hxx>
+#include <com/sun/star/ucb/XCommandInfo.hpp>
+#include <com/sun/star/ucb/XPersistentPropertySet.hpp>
+#include <com/sun/star/uno/XComponentContext.hpp>
+
#include "webdavcontent.hxx"
#include "webdavprovider.hxx"
#include "webdavresultset.hxx"
@@ -96,250 +94,6 @@ using namespace webdav_ucp;
//=========================================================================
//=========================================================================
//
-// CommandEnvironment_Impl Implementation.
-//
-//=========================================================================
-//=========================================================================
-
-class CommandEnvironment_Impl : public cppu::OWeakObject,
- public ucb::XCommandEnvironment,
- public task::XInteractionHandler
-{
-public:
-
- CommandEnvironment_Impl(
- const uno::Reference< lang::XMultiServiceFactory >& xSMgr )
- : m_xSMgr( xSMgr )
- {
- }
-
- // XInterface
- XINTERFACE_DECL()
-
- // XCommandEnvironment
- virtual uno::Reference< task::XInteractionHandler > SAL_CALL
- getInteractionHandler( )
- throw (uno::RuntimeException)
- {
- return this;
- }
-
- virtual uno::Reference< ucb::XProgressHandler > SAL_CALL
- getProgressHandler( )
- throw (uno::RuntimeException)
- {
- return 0;
- }
-
- // XInteractionHandler
- virtual void SAL_CALL
- handle( const uno::Reference< task::XInteractionRequest >& Request )
- throw (uno::RuntimeException);
-
-private:
-
- void
- handleAuthenticationRequest(
- ucb::AuthenticationRequest const&,
- uno::Sequence< uno::Reference< task::XInteractionContinuation > > const&)
- SAL_THROW((uno::RuntimeException))
- {
- }
-
- uno::Reference< lang::XMultiServiceFactory > m_xSMgr;
-};
-
-//=========================================================================
-void SAL_CALL CommandEnvironment_Impl::acquire()
- throw()
-{
- OWeakObject::acquire();
-}
-
-//=========================================================================
-void SAL_CALL CommandEnvironment_Impl::release()
- throw()
-{
- OWeakObject::release();
-}
-
-//=========================================================================
-uno::Any SAL_CALL CommandEnvironment_Impl::queryInterface(
- const uno::Type & rType )
- throw( uno::RuntimeException )
-{
- uno::Any aRet = cppu::queryInterface(
- rType,
- static_cast< ucb::XCommandEnvironment * >( this ),
- static_cast< task::XInteractionHandler * >( this ) );
- return aRet.hasValue() ? aRet : OWeakObject::queryInterface( rType );
-}
-
-//=========================================================================
-void SAL_CALL CommandEnvironment_Impl::handle(
- const uno::Reference< task::XInteractionRequest >& rIRequest )
- throw (uno::RuntimeException)
-{
- if (!rIRequest.is())
- return;
-
- uno::Any aAnyRequest(rIRequest->getRequest());
-
- ucb::AuthenticationRequest rRequest;
- if (!(aAnyRequest >>= rRequest))
- return;
-
- uno::Sequence< uno::Reference< task::XInteractionContinuation > >
- rContinuations = rIRequest->getContinuations();
-
- // get continuations
- uno::Reference< task::XInteractionRetry > xRetry;
- uno::Reference< task::XInteractionAbort > xAbort;
- uno::Reference< ucb::XInteractionSupplyAuthentication >
- xSupplyAuthentication;
-
- for (sal_Int32 i = 0; i < rContinuations.getLength(); ++i) {
- xRetry = uno::Reference< task::XInteractionRetry >(
- rContinuations[i], uno::UNO_QUERY );
- if( xRetry.is() )
- continue;
-
- xAbort = uno::Reference< task::XInteractionAbort >(
- rContinuations[i], uno::UNO_QUERY );
- if (xAbort.is())
- continue;
-
- xSupplyAuthentication
- = uno::Reference< ucb::XInteractionSupplyAuthentication >(
- rContinuations[i], uno::UNO_QUERY );
- if( xSupplyAuthentication.is() )
- continue;
- }
-
- bool bRemember;
- bool bRememberPersistent;
- if (xSupplyAuthentication.is())
- {
- ucb::RememberAuthentication eDefault;
- uno::Sequence< ucb::RememberAuthentication > aModes(
- xSupplyAuthentication->getRememberPasswordModes(eDefault));
- bRemember = eDefault != ucb::RememberAuthentication_NO;
- bRememberPersistent = false;
- for (sal_Int32 i = 0; i < aModes.getLength(); ++i)
- if (aModes[i] == ucb::RememberAuthentication_PERSISTENT)
- {
- bRememberPersistent = true;
- break;
- }
- }
- else
- {
- bRemember = false;
- bRememberPersistent = false;
- }
-
- uno::Reference< task::XPasswordContainer > xContainer;
- try
- {
- xContainer
- = uno::Reference< task::XPasswordContainer >(
- m_xSMgr->createInstance(
- rtl::OUString( RTL_CONSTASCII_USTRINGPARAM(
- "com.sun.star.task.PasswordContainer"))),
- uno::UNO_QUERY);
- }
- catch (uno::Exception const &)
- {
- }
-
- // xContainer works with userName passwdSequences pairs:
- if (xContainer.is() && rRequest.HasUserName && rRequest.HasPassword )
- {
- try
- {
- if (rRequest.UserName.getLength() == 0)
- {
- task::UrlRecord
- aRec(xContainer->find(rRequest.ServerName, this));
- if (aRec.UserList.getLength() != 0)
- {
- if (xSupplyAuthentication->canSetUserName())
- xSupplyAuthentication->
- setUserName(aRec.UserList[0].UserName.getStr());
- if (xSupplyAuthentication->canSetPassword())
- {
- OSL_ENSURE(aRec.UserList[0].Passwords.getLength() != 0,
- "empty password list");
- xSupplyAuthentication->
- setPassword(aRec.UserList[0].Passwords[0].getStr());
- }
- if (aRec.UserList[0].Passwords.getLength() > 1)
- {
- if (rRequest.HasRealm)
- {
- if (xSupplyAuthentication->canSetRealm())
- xSupplyAuthentication->
- setRealm(aRec.UserList[0].Passwords[1].
- getStr());
- }
- else if (xSupplyAuthentication->canSetAccount())
- xSupplyAuthentication->
- setAccount(aRec.UserList[0].Passwords[1].
- getStr());
- }
- xSupplyAuthentication->select();
- return;
- }
- }
- else
- {
- task::UrlRecord
- aRec(xContainer->findForName(rRequest.ServerName,
- rRequest.UserName,
- this));
- if (aRec.UserList.getLength() != 0)
- {
- OSL_ENSURE(aRec.UserList[0].Passwords.getLength() != 0,
- "empty password list");
- if (!rRequest.HasPassword
- || rRequest.Password != aRec.UserList[0].Passwords[0])
- {
- if (xSupplyAuthentication->canSetUserName())
- xSupplyAuthentication->
- setUserName(aRec.UserList[0].UserName.getStr());
- if (xSupplyAuthentication->canSetPassword())
- xSupplyAuthentication->
- setPassword(aRec.UserList[0].Passwords[0].
- getStr());
- if (aRec.UserList[0].Passwords.getLength() > 1)
- {
- if (rRequest.HasRealm)
- {
- if (xSupplyAuthentication->canSetRealm())
- xSupplyAuthentication->
- setRealm(aRec.UserList[0].Passwords[1].
- getStr());
- }
- else if (xSupplyAuthentication->canSetAccount())
- xSupplyAuthentication->
- setAccount(aRec.UserList[0].Passwords[1].
- getStr());
- }
- xSupplyAuthentication->select();
- return;
- }
- }
- }
- }
- catch (task::NoMasterException const &)
- {} // user did not enter master password
- }
- return;
-}
-
-//=========================================================================
-//=========================================================================
-//
// Content Implementation.
//
//=========================================================================
@@ -363,8 +117,8 @@ Content::Content(
try
{
m_xResAccess.reset( new DAVResourceAccess(
- rxSMgr,
- rSessionFactory,
+ rxSMgr,
+ rSessionFactory,
Identifier->getContentIdentifier() ) );
NeonUri aURI( Identifier->getContentIdentifier() );
@@ -439,16 +193,35 @@ uno::Any SAL_CALL Content::queryInterface( const uno::Type & rType )
{
// Note: isFolder may require network activities! So call it only
// if it is really necessary!!!
- uno::Any aRet = cppu::queryInterface(
+ uno::Any aRet = cppu::queryInterface(
rType,
static_cast< ucb::XContentCreator * >( this ) );
if ( aRet.hasValue() )
{
try
{
- return isFolder( new CommandEnvironment_Impl(m_xSMgr) )
- ? aRet
- : uno::Any();
+ uno::Reference< beans::XPropertySet > const xProps(
+ m_xSMgr, uno::UNO_QUERY_THROW );
+ uno::Reference< uno::XComponentContext > xCtx;
+ xCtx.set( xProps->getPropertyValue(
+ rtl::OUString(
+ RTL_CONSTASCII_USTRINGPARAM( "DefaultContext" ) ) ),
+ uno::UNO_QUERY_THROW );
+
+ uno::Reference< task::XInteractionHandler > xIH(
+ task::PasswordContainerInteractionHandler::create( xCtx ) );
+
+ // Supply a command env to isFolder() that contains an interaction
+ // handler that uses the password container service to obtain
+ // credentials without displaying a password gui.
+
+ uno::Reference< ucb::XCommandEnvironment > xCmdEnv(
+ ucb::CommandEnvironment::create(
+ xCtx,
+ xIH,
+ uno::Reference< ucb::XProgressHandler >() ) );
+
+ return isFolder( xCmdEnv ) ? aRet : uno::Any();
}
catch ( uno::RuntimeException const & )
{
@@ -630,17 +403,22 @@ uno::Any SAL_CALL Content::execute(
ucb::CommandAbortedException,
uno::RuntimeException )
{
+ OSL_TRACE( ">>>>> Content::execute: start: command: %s, env: %s",
+ rtl::OUStringToOString( aCommand.Name,
+ RTL_TEXTENCODING_UTF8 ).getStr(),
+ Environment.is() ? "present" : "missing" );
+
uno::Any aRet;
-
+
if ( aCommand.Name.equalsAsciiL(
RTL_CONSTASCII_STRINGPARAM( "getPropertyValues" ) ) )
{
- //////////////////////////////////////////////////////////////////
- // getPropertyValues
- //////////////////////////////////////////////////////////////////
+ //////////////////////////////////////////////////////////////////
+ // getPropertyValues
+ //////////////////////////////////////////////////////////////////
uno::Sequence< beans::Property > Properties;
- if ( !( aCommand.Argument >>= Properties ) )
+ if ( !( aCommand.Argument >>= Properties ) )
{
ucbhelper::cancelCommandExecution(
uno::makeAny( lang::IllegalArgumentException(
@@ -652,17 +430,17 @@ uno::Any SAL_CALL Content::execute(
// Unreachable
}
- aRet <<= getPropertyValues( Properties, Environment );
+ aRet <<= getPropertyValues( Properties, Environment );
}
else if ( aCommand.Name.equalsAsciiL(
RTL_CONSTASCII_STRINGPARAM( "setPropertyValues" ) ) )
{
- //////////////////////////////////////////////////////////////////
- // setPropertyValues
- //////////////////////////////////////////////////////////////////
+ //////////////////////////////////////////////////////////////////
+ // setPropertyValues
+ //////////////////////////////////////////////////////////////////
uno::Sequence< beans::PropertyValue > aProperties;
- if ( !( aCommand.Argument >>= aProperties ) )
+ if ( !( aCommand.Argument >>= aProperties ) )
{
ucbhelper::cancelCommandExecution(
uno::makeAny( lang::IllegalArgumentException(
@@ -674,7 +452,7 @@ uno::Any SAL_CALL Content::execute(
// Unreachable
}
- if ( !aProperties.getLength() )
+ if ( !aProperties.getLength() )
{
ucbhelper::cancelCommandExecution(
uno::makeAny( lang::IllegalArgumentException(
@@ -713,8 +491,8 @@ uno::Any SAL_CALL Content::execute(
RTL_CONSTASCII_STRINGPARAM( "open" ) ) )
{
//////////////////////////////////////////////////////////////////
- // open
- //////////////////////////////////////////////////////////////////
+ // open
+ //////////////////////////////////////////////////////////////////
ucb::OpenCommandArgument2 aOpenCommand;
if ( !( aCommand.Argument >>= aOpenCommand ) )
@@ -735,11 +513,11 @@ uno::Any SAL_CALL Content::execute(
RTL_CONSTASCII_STRINGPARAM( "insert" ) ) )
{
//////////////////////////////////////////////////////////////////
- // insert
- //////////////////////////////////////////////////////////////////
+ // insert
+ //////////////////////////////////////////////////////////////////
ucb::InsertCommandArgument arg;
- if ( !( aCommand.Argument >>= arg ) )
+ if ( !( aCommand.Argument >>= arg ) )
{
ucbhelper::cancelCommandExecution(
uno::makeAny( lang::IllegalArgumentException(
@@ -751,23 +529,23 @@ uno::Any SAL_CALL Content::execute(
// Unreachable
}
- insert( arg.Data, arg.ReplaceExisting, Environment );
+ insert( arg.Data, arg.ReplaceExisting, Environment );
}
else if ( aCommand.Name.equalsAsciiL(
RTL_CONSTASCII_STRINGPARAM( "delete" ) ) )
{
- //////////////////////////////////////////////////////////////////
- // delete
- //////////////////////////////////////////////////////////////////
+ //////////////////////////////////////////////////////////////////
+ // delete
+ //////////////////////////////////////////////////////////////////
- sal_Bool bDeletePhysical = sal_False;
- aCommand.Argument >>= bDeletePhysical;
+ sal_Bool bDeletePhysical = sal_False;
+ aCommand.Argument >>= bDeletePhysical;
-// KSO: Ignore parameter and destroy the content, if you don't support
+// KSO: Ignore parameter and destroy the content, if you don't support
// putting objects into trashcan. ( Since we do not have a trash can
// service yet (src603), you actually have no other choice. )
// if ( bDeletePhysical )
-// {
+// {
try
{
std::auto_ptr< DAVResourceAccess > xResAccess;
@@ -815,7 +593,7 @@ uno::Any SAL_CALL Content::execute(
Environment );
// Unreachable
}
-
+
transfer( transferArgs, Environment );
}
else if ( aCommand.Name.equalsAsciiL(
@@ -823,8 +601,8 @@ uno::Any SAL_CALL Content::execute(
{
//////////////////////////////////////////////////////////////////
// post
- //////////////////////////////////////////////////////////////////
-
+ //////////////////////////////////////////////////////////////////
+
ucb::PostCommandArgument2 aArg;
if ( !( aCommand.Argument >>= aArg ) )
{
@@ -840,20 +618,67 @@ uno::Any SAL_CALL Content::execute(
post( aArg, Environment );
}
+ else if ( aCommand.Name.equalsAsciiL(
+ RTL_CONSTASCII_STRINGPARAM( "lock" ) ) &&
+ supportsExclusiveWriteLock( Environment ) )
+ {
+ //////////////////////////////////////////////////////////////////
+ // lock
+ //////////////////////////////////////////////////////////////////
+
+ lock( Environment );
+ }
+ else if ( aCommand.Name.equalsAsciiL(
+ RTL_CONSTASCII_STRINGPARAM( "unlock" ) ) &&
+ supportsExclusiveWriteLock( Environment ) )
+ {
+ //////////////////////////////////////////////////////////////////
+ // unlock
+ //////////////////////////////////////////////////////////////////
+
+ unlock( Environment );
+ }
+ else if ( aCommand.Name.equalsAsciiL(
+ RTL_CONSTASCII_STRINGPARAM( "createNewContent" ) ) &&
+ isFolder( Environment ) )
+ {
+ //////////////////////////////////////////////////////////////////
+ // createNewContent
+ //////////////////////////////////////////////////////////////////
+
+ ucb::ContentInfo aArg;
+ if ( !( aCommand.Argument >>= aArg ) )
+ {
+ ucbhelper::cancelCommandExecution(
+ uno::makeAny( lang::IllegalArgumentException(
+ rtl::OUString::createFromAscii(
+ "Wrong argument type!" ),
+ static_cast< cppu::OWeakObject * >( this ),
+ -1 ) ),
+ Environment );
+ // Unreachable
+ }
+
+ aRet = uno::makeAny( createNewContent( aArg ) );
+ }
else
{
- //////////////////////////////////////////////////////////////////
- // Unsupported command
- //////////////////////////////////////////////////////////////////
+ //////////////////////////////////////////////////////////////////
+ // Unsupported command
+ //////////////////////////////////////////////////////////////////
ucbhelper::cancelCommandExecution(
uno::makeAny( ucb::UnsupportedCommandException(
- rtl::OUString(),
- static_cast< cppu::OWeakObject * >( this ) ) ),
+ aCommand.Name,
+ static_cast< cppu::OWeakObject * >( this ) ) ),
Environment );
// Unreachable
}
+ OSL_TRACE( "<<<<< Content::execute: end: command: %s",
+ rtl::OUStringToOString( aCommand.Name,
+ RTL_TEXTENCODING_UTF8 ).getStr() );
+
return aRet;
}
@@ -863,19 +688,22 @@ void SAL_CALL Content::abort( sal_Int32 /*CommandId*/ )
throw( uno::RuntimeException )
{
try
+ {
+ std::auto_ptr< DAVResourceAccess > xResAccess;
{
- std::auto_ptr< DAVResourceAccess > xResAccess;
- {
- osl::MutexGuard aGuard( m_aMutex );
- xResAccess.reset(
- new DAVResourceAccess( *m_xResAccess.get() ) );
- }
- xResAccess->ABORT();
+ osl::MutexGuard aGuard( m_aMutex );
+ xResAccess.reset( new DAVResourceAccess( *m_xResAccess.get() ) );
}
- catch ( DAVException const & /*e*/ )
+ xResAccess->abort();
{
- // ABORT command failed!
+ osl::Guard< osl::Mutex > aGuard( m_aMutex );
+ m_xResAccess.reset( new DAVResourceAccess( *xResAccess.get() ) );
}
+ }
+ catch ( DAVException const & )
+ {
+ // abort failed!
+ }
}
//=========================================================================
@@ -893,8 +721,8 @@ void SAL_CALL Content::addProperty( const rtl::OUString& Name,
lang::IllegalArgumentException,
uno::RuntimeException )
{
-// if ( m_bTransient )
-// @@@ ???
+// if ( m_bTransient )
+// @@@ ???
if ( !Name.getLength() )
throw lang::IllegalArgumentException();
@@ -902,8 +730,8 @@ void SAL_CALL Content::addProperty( const rtl::OUString& Name,
// Check property type.
if ( !UCBDeadPropertyValue::supportsType( DefaultValue.getValueType() ) )
{
- OSL_ENSURE( sal_False, "Content::addProperty - "
- "Unsupported property type!" );
+ OSL_ENSURE( sal_False,
+ "Content::addProperty - Unsupported property type!" );
throw beans::IllegalTypeException();
}
@@ -950,10 +778,10 @@ void SAL_CALL Content::addProperty( const rtl::OUString& Name,
// Notify propertyset info change listeners.
beans::PropertySetInfoChangeEvent evt(
- static_cast< cppu::OWeakObject * >( this ),
- Name,
- -1, // No handle available
- beans::PropertySetInfoChange::PROPERTY_INSERTED );
+ static_cast< cppu::OWeakObject * >( this ),
+ Name,
+ -1, // No handle available
+ beans::PropertySetInfoChange::PROPERTY_INSERTED );
notifyPropertySetInfoChange( evt );
}
catch ( DAVException const & e )
@@ -961,9 +789,9 @@ void SAL_CALL Content::addProperty( const rtl::OUString& Name,
if ( e.getStatus() == SC_FORBIDDEN )
{
// Support for setting arbitrary dead properties is optional!
-
+
// Store property locally.
- ContentImplHelper::addProperty(
+ ContentImplHelper::addProperty(
Name, Attributes, DefaultValue );
}
else
@@ -978,7 +806,7 @@ void SAL_CALL Content::addProperty( const rtl::OUString& Name,
case UNKNOWN:
case DAV:
throw lang::IllegalArgumentException();
-
+
case FTP:
case NON_DAV:
// Store property locally.
@@ -1029,7 +857,7 @@ void SAL_CALL Content::removeProperty( const rtl::OUString& Name )
{
beans::Property aProp
= getPropertySetInfo( xEnv, sal_False /* don't cache data */ )
- ->getPropertyByName( Name );
+ ->getPropertyByName( Name );
if ( !( aProp.Attributes & beans::PropertyAttribute::REMOVEABLE ) )
{
@@ -1039,7 +867,7 @@ void SAL_CALL Content::removeProperty( const rtl::OUString& Name )
}
catch ( beans::UnknownPropertyException const & )
{
-// OSL_ENSURE( sal_False, "removeProperty - Unknown property!" );
+ //OSL_ENSURE( sal_False, "removeProperty - Unknown property!" );
throw;
}
#endif
@@ -1053,7 +881,7 @@ void SAL_CALL Content::removeProperty( const rtl::OUString& Name )
std::vector< ProppatchValue > aProppatchValues;
ProppatchValue aValue( PROPREMOVE, Name, uno::Any() );
aProppatchValues.push_back( aValue );
-
+
// Remove property value from server.
std::auto_ptr< DAVResourceAccess > xResAccess;
{
@@ -1079,7 +907,7 @@ void SAL_CALL Content::removeProperty( const rtl::OUString& Name )
if ( e.getStatus() == SC_FORBIDDEN )
{
// Support for setting arbitrary dead properties is optional!
-
+
// Try to remove property from local store.
ContentImplHelper::removeProperty( Name );
}
@@ -1139,9 +967,9 @@ Content::queryCreatableContentsInfo()
throw( uno::RuntimeException )
{
osl::Guard< osl::Mutex > aGuard( m_aMutex );
-
+
uno::Sequence< ucb::ContentInfo > aSeq( 2 );
-
+
// document.
aSeq.getArray()[ 0 ].Type
= rtl::OUString::createFromAscii( WEBDAV_CONTENT_TYPE );
@@ -1270,7 +1098,7 @@ uno::Reference< sdbc::XRow > Content::getPropertyValues(
const rtl::Reference< ::ucbhelper::ContentProviderImplHelper >& rProvider,
const rtl::OUString& rContentId )
{
- // Note: Empty sequence means "get values of all supported properties".
+ // Note: Empty sequence means "get values of all supported properties".
rtl::Reference< ::ucbhelper::PropertyValueSet > xRow
= new ::ucbhelper::PropertyValueSet( rSMgr );
@@ -1279,10 +1107,10 @@ uno::Reference< sdbc::XRow > Content::getPropertyValues(
if ( nCount )
{
uno::Reference< beans::XPropertySet > xAdditionalPropSet;
- sal_Bool bTriedToGetAdditonalPropSet = sal_False;
+ sal_Bool bTriedToGetAdditonalPropSet = sal_False;
const beans::Property* pProps = rProperties.getConstArray();
- for ( sal_Int32 n = 0; n < nCount; ++n )
+ for ( sal_Int32 n = 0; n < nCount; ++n )
{
const beans::Property& rProp = pProps[ n ];
@@ -1338,9 +1166,9 @@ uno::Reference< sdbc::XRow > Content::getPropertyValues(
// Append all local Additional Properties.
uno::Reference< beans::XPropertySet > xSet(
- rProvider->getAdditionalPropertySet( rContentId, sal_False ),
- uno::UNO_QUERY );
- xRow->appendPropertySet( xSet );
+ rProvider->getAdditionalPropertySet( rContentId, sal_False ),
+ uno::UNO_QUERY );
+ xRow->appendPropertySet( xSet );
}
return uno::Reference< sdbc::XRow >( xRow.get() );
@@ -1357,8 +1185,8 @@ uno::Reference< sdbc::XRow > Content::getPropertyValues(
std::auto_ptr< DAVResourceAccess > xResAccess;
rtl::OUString aEscapedTitle;
bool bHasAll = false;
- uno::Reference< lang::XMultiServiceFactory > xSMgr;
- uno::Reference< ucb::XContentIdentifier > xIdentifier;
+ uno::Reference< lang::XMultiServiceFactory > xSMgr;
+ uno::Reference< ucb::XContentIdentifier > xIdentifier;
rtl::Reference< ::ucbhelper::ContentProviderImplHelper > xProvider;
{
@@ -1400,68 +1228,73 @@ uno::Reference< sdbc::XRow > Content::getPropertyValues(
if ( DAV == rType )
{
- // cache lookup... getResourceType may fill the props cache via PROPFIND!
+ // cache lookup... getResourceType may fill the props cache via
+ // PROPFIND!
if ( m_xCachedProps.get() )
{
- xCachedProps.reset( new ContentProperties( *m_xCachedProps.get() ) );
-
+ xCachedProps.reset(
+ new ContentProperties( *m_xCachedProps.get() ) );
+
std::vector< rtl::OUString > aMissingProps;
- if ( xCachedProps->containsAllNames( rProperties, aMissingProps ) )
+ if ( xCachedProps->containsAllNames(
+ rProperties, aMissingProps ) )
{
- // All properties are already in cache! No server access needed.
+ // All properties are already in cache! No server access
+ // needed.
bHasAll = true;
}
-
+
// use the cached ContentProperties instance
xProps.reset( new ContentProperties( *xCachedProps.get() ) );
}
-
+
if ( !bHasAll )
{
// Only DAV resources support PROPFIND
std::vector< rtl::OUString > aPropNames;
-
- uno::Sequence< beans::Property > aProperties( rProperties.getLength() );
+
+ uno::Sequence< beans::Property > aProperties(
+ rProperties.getLength() );
if ( m_aFailedPropNames.size() > 0 )
- {
+ {
sal_Int32 nProps = 0;
sal_Int32 nCount = rProperties.getLength();
for ( sal_Int32 n = 0; n < nCount; ++n )
{
const rtl::OUString & rName = rProperties[ n ].Name;
-
+
std::vector< rtl::OUString >::const_iterator it
= m_aFailedPropNames.begin();
std::vector< rtl::OUString >::const_iterator end
= m_aFailedPropNames.end();
-
+
while ( it != end )
{
if ( *it == rName )
break;
-
+
++it;
}
-
+
if ( it == end )
{
aProperties[ nProps ] = rProperties[ n ];
nProps++;
}
}
-
+
aProperties.realloc( nProps );
}
else
{
aProperties = rProperties;
}
-
+
if ( aProperties.getLength() > 0 )
- ContentProperties::UCBNamesToDAVNames(
+ ContentProperties::UCBNamesToDAVNames(
aProperties, aPropNames );
-
+
if ( aPropNames.size() > 0 )
{
std::vector< DAVResource > resources;
@@ -1469,22 +1302,23 @@ uno::Reference< sdbc::XRow > Content::getPropertyValues(
{
xResAccess->PROPFIND(
DAVZERO, aPropNames, resources, xEnv );
-
+
if ( 1 == resources.size() )
{
if ( xProps.get())
- xProps->addProperties(
- aPropNames, ContentProperties( resources[ 0 ] ));
+ xProps->addProperties(
+ aPropNames,
+ ContentProperties( resources[ 0 ] ));
else
- xProps.reset(
+ xProps.reset(
new ContentProperties( resources[ 0 ] ) );
}
}
catch ( DAVException const & e )
{
bNetworkAccessAllowed
- = shouldAccessNetworkAfterException( e );
-
+ = shouldAccessNetworkAfterException( e );
+
if ( !bNetworkAccessAllowed )
{
cancelCommandExecution( e, xEnv );
@@ -1501,7 +1335,7 @@ uno::Reference< sdbc::XRow > Content::getPropertyValues(
std::vector< rtl::OUString > aMissingProps;
if ( !( xProps.get()
&& xProps->containsAllNames(
- rProperties, aMissingProps ) )
+ rProperties, aMissingProps ) )
&& !m_bDidGetOrHead )
{
// Possibly the missing props can be obtained using a HEAD
@@ -1520,19 +1354,19 @@ uno::Reference< sdbc::XRow > Content::getPropertyValues(
DAVResource resource;
xResAccess->HEAD( aHeaderNames, resource, xEnv );
m_bDidGetOrHead = true;
-
+
if ( xProps.get() )
xProps->addProperties(
- aMissingProps,
- ContentProperties( resource ) );
+ aMissingProps,
+ ContentProperties( resource ) );
else
xProps.reset ( new ContentProperties( resource ) );
if ( m_eResourceType == NON_DAV )
xProps->addProperties( aMissingProps,
ContentProperties(
- aEscapedTitle,
- false ) );
+ aEscapedTitle,
+ false ) );
}
catch ( DAVException const & e )
{
@@ -1548,15 +1382,15 @@ uno::Reference< sdbc::XRow > Content::getPropertyValues(
}
}
}
+
// might trigger HTTP redirect.
- // Therefore, title must be upadated here.
+ // Therefore, title must be updated here.
NeonUri aUri( xResAccess->getURL() );
aEscapedTitle = aUri.GetPathBaseName();
if ( UNKNOWN == rType )
{
- xProps.reset(
- new ContentProperties( aEscapedTitle ) );
+ xProps.reset( new ContentProperties( aEscapedTitle ) );
}
// For DAV resources we only know the Title, for non-DAV
@@ -1565,32 +1399,30 @@ uno::Reference< sdbc::XRow > Content::getPropertyValues(
{
//xProps.reset(
// new ContentProperties( aEscapedTitle ) );
- xProps->addProperty( rtl::OUString(
- RTL_CONSTASCII_USTRINGPARAM(
- "Title" )),
- uno::makeAny( aEscapedTitle), true);
+ xProps->addProperty(
+ rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Title" ) ),
+ uno::makeAny( aEscapedTitle ),
+ true );
}
else
{
if ( !xProps.get() )
- xProps.reset(
- new ContentProperties( aEscapedTitle, false ) );
+ xProps.reset( new ContentProperties( aEscapedTitle, false ) );
else
- xProps->addProperty( rtl::OUString(
- RTL_CONSTASCII_USTRINGPARAM(
- "Title" )),
- uno::makeAny( aEscapedTitle), true);
+ xProps->addProperty(
+ rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Title" ) ),
+ uno::makeAny( aEscapedTitle ),
+ true );
- xProps->addProperty( rtl::OUString(
- RTL_CONSTASCII_USTRINGPARAM(
- "IsFolder" )),
- uno::makeAny( false), true);
- xProps->addProperty( rtl::OUString(
- RTL_CONSTASCII_USTRINGPARAM(
- "IsDocument" )),
- uno::makeAny( true), true);
-
- }
+ xProps->addProperty(
+ rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "IsFolder" ) ),
+ uno::makeAny( false ),
+ true );
+ xProps->addProperty(
+ rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "IsDocument" ) ),
+ uno::makeAny( true ),
+ true );
+ }
}
else
{
@@ -1601,18 +1433,37 @@ uno::Reference< sdbc::XRow > Content::getPropertyValues(
m_bCollection ) );
}
- // Add BaseURI property, if requested.
- if ( !xProps->contains(
- rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "BaseURI" ) ) ) )
+ sal_Int32 nCount = rProperties.getLength();
+ for ( sal_Int32 n = 0; n < nCount; ++n )
{
- xProps->addProperty( rtl::OUString(
- RTL_CONSTASCII_USTRINGPARAM(
- "BaseURI" ) ),
- uno::makeAny(
- getBaseURI( xResAccess ) ),
- true );
+ const rtl::OUString rName = rProperties[ n ].Name;
+ if ( rName.equalsAsciiL(
+ RTL_CONSTASCII_STRINGPARAM( "BaseURI" ) ) )
+ {
+ // Add BaseURI property, if requested.
+ xProps->addProperty(
+ rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "BaseURI" ) ),
+ uno::makeAny( getBaseURI( xResAccess ) ),
+ true );
+ }
+ else if ( rName.equalsAsciiL(
+ RTL_CONSTASCII_STRINGPARAM( "CreatableContentsInfo" ) ) )
+ {
+ // Add CreatableContentsInfo property, if requested.
+ sal_Bool bFolder = sal_False;
+ xProps->getValue(
+ rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "IsFolder" ) ) )
+ >>= bFolder;
+ xProps->addProperty(
+ rtl::OUString(
+ RTL_CONSTASCII_USTRINGPARAM( "CreatableContentsInfo" ) ),
+ uno::makeAny( bFolder
+ ? queryCreatableContentsInfo()
+ : uno::Sequence< ucb::ContentInfo >() ),
+ true );
+ }
}
-
+
uno::Reference< sdbc::XRow > xResultRow
= getPropertyValues( xSMgr,
rProperties,
@@ -1622,12 +1473,12 @@ uno::Reference< sdbc::XRow > Content::getPropertyValues(
{
osl::Guard< osl::Mutex > aGuard( m_aMutex );
-
+
if ( !m_xCachedProps.get() )
m_xCachedProps.reset( new ContentProperties( *xProps.get() ) );
else
m_xCachedProps->addProperties( *xProps.get() );
-
+
m_xResAccess.reset( new DAVResourceAccess( *xResAccess.get() ) );
m_aEscapedTitle = aEscapedTitle;
}
@@ -1663,10 +1514,10 @@ uno::Sequence< uno::Any > Content::setPropertyValues(
beans::PropertyChangeEvent aEvent;
aEvent.Source = static_cast< cppu::OWeakObject * >( this );
- aEvent.Further = sal_False;
+ aEvent.Further = sal_False;
// aEvent.PropertyName =
aEvent.PropertyHandle = -1;
- // aEvent.OldValue =
+ // aEvent.OldValue =
// aEvent.NewValue =
std::vector< ProppatchValue > aProppatchValues;
@@ -1724,7 +1575,7 @@ uno::Sequence< uno::Any > Content::setPropertyValues(
static_cast< cppu::OWeakObject * >( this ) );
}
else if ( rName.equalsAsciiL(
- RTL_CONSTASCII_STRINGPARAM( "IsFolder" ) ) )
+ RTL_CONSTASCII_STRINGPARAM( "IsFolder" ) ) )
{
// Read-only property!
aRet[ n ] <<= lang::IllegalAccessException(
@@ -1740,17 +1591,17 @@ uno::Sequence< uno::Any > Content::setPropertyValues(
// No empty titles!
if ( aNewValue.getLength() > 0 )
{
- try
+ try
{
NeonUri aURI( xIdentifier->getContentIdentifier() );
aOldTitle = aURI.GetPathBaseNameUnescaped();
-
+
if ( aNewValue != aOldTitle )
{
// modified title -> modified URL -> exchange !
if ( !bTransient )
bExchange = sal_True;
-
+
// new value will be set later...
aNewTitle = aNewValue;
@@ -1843,6 +1694,15 @@ uno::Sequence< uno::Any > Content::setPropertyValues(
"Property is read-only!" ),
static_cast< cppu::OWeakObject * >( this ) );
}
+ if ( rName.equalsAsciiL(
+ RTL_CONSTASCII_STRINGPARAM( "CreatableContentsInfo" ) ) )
+ {
+ // Read-only property!
+ aRet[ n ] <<= lang::IllegalAccessException(
+ rtl::OUString::createFromAscii(
+ "Property is read-only!" ),
+ static_cast< cppu::OWeakObject * >( this ) );
+ }
else
{
if ( getResourceType( xEnv, xResAccess ) == DAV )
@@ -1920,7 +1780,7 @@ uno::Sequence< uno::Any > Content::setPropertyValues(
{
// Set property values at server.
xResAccess->PROPPATCH( aProppatchValues, xEnv );
-
+
std::vector< ProppatchValue >::const_iterator it
= aProppatchValues.begin();
std::vector< ProppatchValue >::const_iterator end
@@ -1931,7 +1791,7 @@ uno::Sequence< uno::Any > Content::setPropertyValues(
aEvent.PropertyName = (*it).name;
aEvent.OldValue = uno::Any(); // @@@ to expensive to obtain!
aEvent.NewValue = (*it).value;
-
+
aChanges.getArray()[ nChanged ] = aEvent;
nChanged++;
@@ -1953,7 +1813,7 @@ uno::Sequence< uno::Any > Content::setPropertyValues(
= aProppatchPropsPositions.begin();
std::vector< sal_Int32 >::const_iterator end
= aProppatchPropsPositions.end();
-
+
while ( it != end )
{
// Set error.
@@ -1989,28 +1849,28 @@ uno::Sequence< uno::Any > Content::setPropertyValues(
// @@@ Should check for resources that could not be moved
// (due to source access or target overwrite) and send
// this information through the interaction handler.
-
+
// @@@ Existing content should be checked to see if it needs
// to be deleted at the source
-
+
// @@@ Existing content should be checked to see if it has
// been overwritten at the target
-
+
if ( exchangeIdentity( xNewId ) )
{
xResAccess->setURL( aNewURL );
-
+
// DAV resources store all additional props on server!
-// // Adapt Additional Core Properties.
-// renameAdditionalPropertySet( xOldId->getContentIdentifier(),
-// xNewId->getContentIdentifier(),
-// sal_True );
+// // Adapt Additional Core Properties.
+// renameAdditionalPropertySet( xOldId->getContentIdentifier(),
+// xNewId->getContentIdentifier(),
+// sal_True );
}
else
{
// Do not set new title!
aNewTitle = rtl::OUString();
-
+
// Set error .
aRet[ nTitlePos ] <<= uno::Exception(
rtl::OUString::createFromAscii( "Exchange failed!" ),
@@ -2026,7 +1886,7 @@ uno::Sequence< uno::Any > Content::setPropertyValues(
aRet[ nTitlePos ] <<= MapDAVException( e, sal_True );
}
}
-
+
if ( aNewTitle.getLength() )
{
osl::Guard< osl::Mutex > aGuard( m_aMutex );
@@ -2035,16 +1895,16 @@ uno::Sequence< uno::Any > Content::setPropertyValues(
aEvent.OldValue = uno::makeAny( aOldTitle );
aEvent.NewValue = uno::makeAny( aNewTitle );
- m_aEscapedTitle = NeonUri::escapeSegment( aNewTitle );
-
+ m_aEscapedTitle = NeonUri::escapeSegment( aNewTitle );
+
aChanges.getArray()[ nChanged ] = aEvent;
nChanged++;
}
if ( nChanged > 0 )
{
- aChanges.realloc( nChanged );
- notifyPropertiesChange( aChanges );
+ aChanges.realloc( nChanged );
+ notifyPropertiesChange( aChanges );
}
{
@@ -2144,17 +2004,18 @@ uno::Any Content::open(
xResAccess->GET( xOut, aHeaders, aResource, xEnv );
m_bDidGetOrHead = true;
-
+
{
osl::MutexGuard aGuard( m_aMutex );
// cache headers.
if ( !m_xCachedProps.get())
- m_xCachedProps.reset( new ContentProperties( aResource ) );
+ m_xCachedProps.reset(
+ new ContentProperties( aResource ) );
else
m_xCachedProps->addProperties( aResource );
- m_xResAccess.reset(
+ m_xResAccess.reset(
new DAVResourceAccess( *xResAccess.get() ) );
}
}
@@ -2178,7 +2039,7 @@ uno::Any Content::open(
{
osl::MutexGuard aGuard( m_aMutex );
- xResAccess.reset(
+ xResAccess.reset(
new DAVResourceAccess( *m_xResAccess.get() ) );
}
@@ -2189,17 +2050,19 @@ uno::Any Content::open(
uno::Reference< io::XInputStream > xIn
= xResAccess->GET( aHeaders, aResource, xEnv );
m_bDidGetOrHead = true;
-
+
{
osl::MutexGuard aGuard( m_aMutex );
-
+
// cache headers.
if ( !m_xCachedProps.get())
- m_xCachedProps.reset( new ContentProperties( aResource ) );
+ m_xCachedProps.reset(
+ new ContentProperties( aResource ) );
else
- m_xCachedProps->addProperties( aResource.properties );
-
- m_xResAccess.reset(
+ m_xCachedProps->addProperties(
+ aResource.properties );
+
+ m_xResAccess.reset(
new DAVResourceAccess( *xResAccess.get() ) );
}
@@ -2245,7 +2108,7 @@ void Content::post(
std::auto_ptr< DAVResourceAccess > xResAccess;
{
osl::MutexGuard aGuard( m_aMutex );
- xResAccess.reset(
+ xResAccess.reset(
new DAVResourceAccess( *m_xResAccess.get() ) );
}
@@ -2254,10 +2117,10 @@ void Content::post(
rArg.Referer,
rArg.Source,
xEnv );
-
+
{
osl::MutexGuard aGuard( m_aMutex );
- m_xResAccess.reset(
+ m_xResAccess.reset(
new DAVResourceAccess( *xResAccess.get() ) );
}
@@ -2279,7 +2142,7 @@ void Content::post(
std::auto_ptr< DAVResourceAccess > xResAccess;
{
osl::MutexGuard aGuard( m_aMutex );
- xResAccess.reset(
+ xResAccess.reset(
new DAVResourceAccess( *m_xResAccess.get() ) );
}
@@ -2291,7 +2154,7 @@ void Content::post(
{
osl::MutexGuard aGuard( m_aMutex );
- m_xResAccess.reset(
+ m_xResAccess.reset(
new DAVResourceAccess( *xResAccess.get() ) );
}
}
@@ -2327,7 +2190,7 @@ void Content::queryChildren( ContentRefList& rChildren )
rtl::OUString aURL = m_xIdentifier->getContentIdentifier();
sal_Int32 nURLPos = aURL.lastIndexOf( '/' );
-
+
if ( nURLPos != ( aURL.getLength() - 1 ) )
{
// No trailing slash found. Append.
@@ -2335,7 +2198,7 @@ void Content::queryChildren( ContentRefList& rChildren )
}
sal_Int32 nLen = aURL.getLength();
-
+
::ucbhelper::ContentRefList::const_iterator it = aAllContents.begin();
::ucbhelper::ContentRefList::const_iterator end = aAllContents.end();
@@ -2344,14 +2207,14 @@ void Content::queryChildren( ContentRefList& rChildren )
::ucbhelper::ContentImplHelperRef xChild = (*it);
rtl::OUString aChildURL
= xChild->getIdentifier()->getContentIdentifier();
-
+
// Is aURL a prefix of aChildURL?
if ( ( aChildURL.getLength() > nLen ) &&
( aChildURL.compareTo( aURL, nLen ) == 0 ) )
{
sal_Int32 nPos = nLen;
nPos = aChildURL.indexOf( '/', nPos );
-
+
if ( ( nPos == -1 ) ||
( nPos == ( aChildURL.getLength() - 1 ) ) )
{
@@ -2407,17 +2270,17 @@ void Content::insert(
{
/* [RFC 2616] - HTTP
- The PUT method requests that the enclosed entity be stored under the
- supplied Request-URI. If the Request-URI refers to an already
- existing resource, the enclosed entity SHOULD be considered as a
- modified version of the one residing on the origin server.
+ The PUT method requests that the enclosed entity be stored under the
+ supplied Request-URI. If the Request-URI refers to an already
+ existing resource, the enclosed entity SHOULD be considered as a
+ modified version of the one residing on the origin server.
*/
/* [RFC 2518] - WebDAV
- MKCOL creates a new collection resource at the location specified by
- the Request-URI. If the resource identified by the Request-URI is
- non-null then the MKCOL MUST fail.
+ MKCOL creates a new collection resource at the location specified by
+ the Request-URI. If the resource identified by the Request-URI is
+ non-null then the MKCOL MUST fail.
*/
// ==> Complain on PUT, continue on MKCOL.
@@ -2493,13 +2356,13 @@ void Content::insert(
rtl::OUString aURL = getParentURL();
if ( aURL.lastIndexOf( '/' ) != ( aURL.getLength() - 1 ) )
aURL += rtl::OUString::createFromAscii( "/" );
-
+
aURL += aEscapedTitle;
-
+
try
{
xResAccess->setURL( aURL );
-
+
if ( bCollection )
xResAccess->MKCOL( Environment );
else
@@ -2527,16 +2390,16 @@ void Content::insert(
cancelCommandExecution( e, Environment, sal_True );
// Unreachable
}
-
+
// Insert (recursion!).
insert( xInputStream, bReplaceExisting, Environment );
{
osl::Guard< osl::Mutex > aGuard( m_aMutex );
- m_xResAccess.reset(
+ m_xResAccess.reset(
new DAVResourceAccess( *xResAccess.get() ) );
}
-
+
// Success!
return;
}
@@ -2564,19 +2427,19 @@ void Content::insert(
}
}
}
-
+
cancelCommandExecution( except, Environment, sal_True );
// Unreachable
}
-
+
{
osl::Guard< osl::Mutex > aGuard( m_aMutex );
- m_xIdentifier
+ m_xIdentifier
= new ::ucbhelper::ContentIdentifier( m_xSMgr, aURL );
}
-
+
inserted();
-
+
{
osl::Guard< osl::Mutex > aGuard( m_aMutex );
m_bTransient = sal_False;
@@ -2594,7 +2457,7 @@ void Content::insert(
Environment );
// Unreachable
}
-
+
try
{
xResAccess->PUT( xInputStream, Environment );
@@ -2686,7 +2549,7 @@ void Content::transfer(
RTL_CONSTASCII_STRINGPARAM( DAV_URL_SCHEME ) ) )
targetURI.SetScheme(
rtl::OUString::createFromAscii( HTTP_URL_SCHEME ) );
-
+
// @@@ This implementation of 'transfer' only works
// if the source and target are located at same host.
// (Neon does not support cross-server copy/move)
@@ -2868,14 +2731,14 @@ void Content::destroy( sal_Bool bDeletePhysical )
uno::Reference< ucb::XContent > xThis = this;
deleted();
-
+
osl::Guard< osl::Mutex > aGuard( m_aMutex );
-
+
// Process instanciated children...
::webdav_ucp::Content::ContentRefList aChildren;
queryChildren( aChildren );
-
+
ContentRefList::const_iterator it = aChildren.begin();
ContentRefList::const_iterator end = aChildren.end();
@@ -2887,12 +2750,105 @@ void Content::destroy( sal_Bool bDeletePhysical )
}
//=========================================================================
+bool Content::supportsExclusiveWriteLock(
+ const uno::Reference< ucb::XCommandEnvironment >& Environment )
+{
+ if ( getResourceType( Environment ) == DAV )
+ {
+ if ( m_xCachedProps.get() )
+ {
+ uno::Sequence< ucb::LockEntry > aSupportedLocks;
+ if ( m_xCachedProps->getValue( DAVProperties::SUPPORTEDLOCK )
+ >>= aSupportedLocks )
+ {
+ for ( sal_Int32 n = 0; n < aSupportedLocks.getLength(); ++n )
+ {
+ if ( aSupportedLocks[ n ].Scope
+ == ucb::LockScope_EXCLUSIVE &&
+ aSupportedLocks[ n ].Type
+ == ucb::LockType_WRITE )
+ return true;
+ }
+ }
+ }
+ }
+ return false;
+}
+
+//=========================================================================
+void Content::lock(
+ const uno::Reference< ucb::XCommandEnvironment >& Environment )
+ throw( uno::Exception )
+{
+ try
+ {
+ std::auto_ptr< DAVResourceAccess > xResAccess;
+ {
+ osl::Guard< osl::Mutex > aGuard( m_aMutex );
+ xResAccess.reset( new DAVResourceAccess( *m_xResAccess.get() ) );
+ }
+
+ uno::Any aOwnerAny;
+ aOwnerAny
+ <<= rtl::OUString::createFromAscii( "http://ucb.openoffice.org" );
+
+ ucb::Lock aLock(
+ ucb::LockScope_EXCLUSIVE,
+ ucb::LockType_WRITE,
+ ucb::LockDepth_ZERO,
+ aOwnerAny,
+ 180, // lock timeout in secs
+ //-1, // infinite lock
+ uno::Sequence< ::rtl::OUString >() );
+
+ xResAccess->LOCK( aLock, Environment );
+
+ {
+ osl::Guard< osl::Mutex > aGuard( m_aMutex );
+ m_xResAccess.reset( new DAVResourceAccess( *xResAccess.get() ) );
+ }
+ }
+ catch ( DAVException const & e )
+ {
+ cancelCommandExecution( e, Environment, sal_False );
+ // Unreachable
+ }
+}
+
+//=========================================================================
+void Content::unlock(
+ const uno::Reference< ucb::XCommandEnvironment >& Environment )
+ throw( uno::Exception )
+{
+ try
+ {
+ std::auto_ptr< DAVResourceAccess > xResAccess;
+ {
+ osl::Guard< osl::Mutex > aGuard( m_aMutex );
+ xResAccess.reset( new DAVResourceAccess( *m_xResAccess.get() ) );
+ }
+
+ xResAccess->UNLOCK( Environment );
+
+ {
+ osl::Guard< osl::Mutex > aGuard( m_aMutex );
+ m_xResAccess.reset( new DAVResourceAccess( *xResAccess.get() ) );
+ }
+ }
+ catch ( DAVException const & e )
+ {
+ cancelCommandExecution( e, Environment, sal_False );
+ // Unreachable
+ }
+}
+
+//=========================================================================
sal_Bool Content::exchangeIdentity(
const uno::Reference< ucb::XContentIdentifier >& xNewId )
{
if ( !xNewId.is() )
return sal_False;
-
+
osl::ClearableGuard< osl::Mutex > aGuard( m_aMutex );
uno::Reference< ucb::XContent > xThis = this;
@@ -2907,7 +2863,7 @@ sal_Bool Content::exchangeIdentity(
// Exchange own identitity.
// Fail, if a content with given id already exists.
-// if ( !hasData( xNewId ) )
+// if ( !hasData( xNewId ) )
{
rtl::OUString aOldURL = m_xIdentifier->getContentIdentifier();
@@ -2915,10 +2871,10 @@ sal_Bool Content::exchangeIdentity(
if ( exchange( xNewId ) )
{
// Process instanciated children...
-
+
ContentRefList aChildren;
queryChildren( aChildren );
-
+
ContentRefList::const_iterator it = aChildren.begin();
ContentRefList::const_iterator end = aChildren.end();
@@ -2936,13 +2892,13 @@ sal_Bool Content::exchangeIdentity(
0,
aOldURL.getLength(),
xNewId->getContentIdentifier() );
- uno::Reference< ucb::XContentIdentifier >
- xNewChildId
- = new ::ucbhelper::ContentIdentifier( m_xSMgr, aNewChildURL );
-
+ uno::Reference< ucb::XContentIdentifier > xNewChildId
+ = new ::ucbhelper::ContentIdentifier(
+ m_xSMgr, aNewChildURL );
+
if ( !xChild->exchangeIdentity( xNewChildId ) )
return sal_False;
-
+
++it;
}
return sal_True;
@@ -2962,7 +2918,7 @@ sal_Bool Content::isFolder(
{
{
osl::MutexGuard aGuard( m_aMutex );
-
+
if ( m_bTransient )
return m_bCollection;
}
@@ -3010,11 +2966,10 @@ uno::Any Content::MapDAVException( const DAVException & e, sal_Bool bWrite )
aArgs );
return aException;
}
-
default:
break;
}
-
+
switch ( e.getError() )
{
case DAVException::DAV_HTTP_ERROR:
@@ -3022,14 +2977,14 @@ uno::Any Content::MapDAVException( const DAVException & e, sal_Bool bWrite )
if ( bWrite )
aException <<=
ucb::InteractiveNetworkWriteException(
- rtl::OUString(),
+ e.getData(),
static_cast< cppu::OWeakObject * >( this ),
task::InteractionClassification_ERROR,
e.getData() );
else
aException <<=
ucb::InteractiveNetworkReadException(
- rtl::OUString(),
+ e.getData(),
static_cast< cppu::OWeakObject * >( this ),
task::InteractionClassification_ERROR,
e.getData() );
@@ -3044,14 +2999,14 @@ uno::Any Content::MapDAVException( const DAVException & e, sal_Bool bWrite )
task::InteractionClassification_ERROR,
e.getData() );
break;
-
+
// @@@ No matching InteractiveNetwork*Exception
-// case DAVException::DAV_HTTP_AUTH:
-// break;
+// case DAVException::DAV_HTTP_AUTH:
+// break;
// @@@ No matching InteractiveNetwork*Exception
-// case DAVException::DAV_HTTP_AUTHPROXY:
-// break;
+// case DAVException::DAV_HTTP_AUTHPROXY:
+// break;
case DAVException::DAV_HTTP_CONNECT:
aException <<=
@@ -3063,16 +3018,16 @@ uno::Any Content::MapDAVException( const DAVException & e, sal_Bool bWrite )
break;
// @@@ No matching InteractiveNetwork*Exception
-// case DAVException::DAV_HTTP_TIMEOUT:
-// break;
+// case DAVException::DAV_HTTP_TIMEOUT:
+// break;
// @@@ No matching InteractiveNetwork*Exception
-// case DAVException::DAV_HTTP_REDIRECT:
-// break;
+// case DAVException::DAV_HTTP_REDIRECT:
+// break;
// @@@ No matching InteractiveNetwork*Exception
-// case DAVException::DAV_SESSION_CREATE:
-// break;
+// case DAVException::DAV_SESSION_CREATE:
+// break;
case DAVException::DAV_INVALID_ARG:
aException <<=
@@ -3081,7 +3036,63 @@ uno::Any Content::MapDAVException( const DAVException & e, sal_Bool bWrite )
static_cast< cppu::OWeakObject * >( this ),
-1 );
break;
-
+
+ case DAVException::DAV_LOCKED:
+#if 1
+ aException <<=
+ ucb::InteractiveLockingLockedException(
+ rtl::OUString::createFromAscii( "Locked!" ),
+ static_cast< cppu::OWeakObject * >( this ),
+ task::InteractionClassification_ERROR,
+ m_xIdentifier->getContentIdentifier(),
+ sal_True );
+#else
+ {
+ uno::Sequence< uno::Any > aArgs( 1 );
+ aArgs[ 0 ] <<= beans::PropertyValue(
+ rtl::OUString::createFromAscii("Uri"), -1,
+ uno::makeAny(m_xIdentifier->getContentIdentifier()),
+ beans::PropertyState_DIRECT_VALUE);
+
+ aException <<=
+ ucb::InteractiveAugmentedIOException(
+ rtl::OUString::createFromAscii( "Locked!" ),
+ static_cast< cppu::OWeakObject * >( this ),
+ task::InteractionClassification_ERROR,
+ ucb::IOErrorCode_LOCKING_VIOLATION,
+ aArgs );
+ }
+#endif
+ break;
+
+ case DAVException::DAV_LOCKED_SELF:
+ aException <<=
+ ucb::InteractiveLockingLockedException(
+ rtl::OUString::createFromAscii( "Locked (self)!" ),
+ static_cast< cppu::OWeakObject * >( this ),
+ task::InteractionClassification_ERROR,
+ m_xIdentifier->getContentIdentifier(),
+ sal_True );
+ break;
+
+ case DAVException::DAV_NOT_LOCKED:
+ aException <<=
+ ucb::InteractiveLockingNotLockedException(
+ rtl::OUString::createFromAscii( "Not locked!" ),
+ static_cast< cppu::OWeakObject * >( this ),
+ task::InteractionClassification_ERROR,
+ m_xIdentifier->getContentIdentifier() );
+ break;
+
+ case DAVException::DAV_LOCK_EXPIRED:
+ aException <<=
+ ucb::InteractiveLockingLockExpiredException(
+ rtl::OUString::createFromAscii( "Lock expired!" ),
+ static_cast< cppu::OWeakObject * >( this ),
+ task::InteractionClassification_ERROR,
+ m_xIdentifier->getContentIdentifier() );
+ break;
+
default:
aException <<=
ucb::InteractiveNetworkGeneralException(
@@ -3090,7 +3101,7 @@ uno::Any Content::MapDAVException( const DAVException & e, sal_Bool bWrite )
task::InteractionClassification_ERROR );
break;
}
-
+
return aException;
}
@@ -3120,7 +3131,8 @@ void Content::cancelCommandExecution(
}
//=========================================================================
-const rtl::OUString Content::getBaseURI( const std::auto_ptr< DAVResourceAccess > & rResAccess )
+const rtl::OUString
+Content::getBaseURI( const std::auto_ptr< DAVResourceAccess > & rResAccess )
{
osl::Guard< osl::Mutex > aGuard( m_aMutex );
@@ -3176,35 +3188,44 @@ const Content::ResourceType & Content::getResourceType(
{
try
{
- // Try to fetch some frequently used property value, e.g. those
+ // Try to fetch some frequently used property value, e.g. those
// used when loading documents... along with identifying whether
// this is a DAV resource.
std::vector< DAVResource > resources;
std::vector< rtl::OUString > aPropNames;
- uno::Sequence< beans::Property > aProperties( 4 );
- aProperties[ 0 ].Name = rtl::OUString::createFromAscii( "IsFolder" );
- aProperties[ 1 ].Name = rtl::OUString::createFromAscii( "IsDocument" );
- aProperties[ 2 ].Name = rtl::OUString::createFromAscii( "IsReadOnly" );
- aProperties[ 3 ].Name = rtl::OUString::createFromAscii( "MediaType" );
+ uno::Sequence< beans::Property > aProperties( 5 );
+ aProperties[ 0 ].Name
+ = rtl::OUString::createFromAscii( "IsFolder" );
+ aProperties[ 1 ].Name
+ = rtl::OUString::createFromAscii( "IsDocument" );
+ aProperties[ 2 ].Name
+ = rtl::OUString::createFromAscii( "IsReadOnly" );
+ aProperties[ 3 ].Name
+ = rtl::OUString::createFromAscii( "MediaType" );
+ aProperties[ 4 ].Name
+ = DAVProperties::SUPPORTEDLOCK;
ContentProperties::UCBNamesToDAVNames(
aProperties, aPropNames );
rResAccess->PROPFIND(
DAVZERO, aPropNames, resources, xEnv );
-
+
if ( resources.size() == 1 )
- {
- m_xCachedProps.reset( new ContentProperties( resources[ 0 ] ) );
- m_xCachedProps->containsAllNames( aProperties, m_aFailedPropNames );
+ {
+ m_xCachedProps.reset(
+ new ContentProperties( resources[ 0 ] ) );
+ m_xCachedProps->containsAllNames(
+ aProperties, m_aFailedPropNames );
}
+
eResourceType = DAV;
}
- catch ( DAVException const& e)
+ catch ( DAVException const & e )
{
rResAccess->resetUri();
- if (e.getStatus() == SC_METHOD_NOT_ALLOWED)
+ if ( e.getStatus() == SC_METHOD_NOT_ALLOWED )
{
// Status SC_METHOD_NOT_ALLOWED is a safe indicator that the
// resource is NON_DAV
@@ -3213,7 +3234,6 @@ const Content::ResourceType & Content::getResourceType(
}
}
m_eResourceType = eResourceType;
-
}
return m_eResourceType;
}
diff --git a/ucb/source/ucp/webdav/webdavcontent.hxx b/ucb/source/ucp/webdav/webdavcontent.hxx
index 030fcc2b7e..85b9b710f3 100644
--- a/ucb/source/ucp/webdav/webdavcontent.hxx
+++ b/ucb/source/ucp/webdav/webdavcontent.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: webdavcontent.hxx,v $
- * $Revision: 1.23.32.1 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -88,7 +85,7 @@ class Content : public ::ucbhelper::ContentImplHelper,
rtl::OUString m_aEscapedTitle;
ResourceType m_eResourceType;
ContentProvider* m_pProvider; // No need for a ref, base class holds object
- bool m_bTransient;
+ bool m_bTransient;
bool m_bCollection;
bool m_bDidGetOrHead;
std::vector< rtl::OUString > m_aFailedPropNames;
@@ -96,81 +93,91 @@ class Content : public ::ucbhelper::ContentImplHelper,
private:
virtual com::sun::star::uno::Sequence< com::sun::star::beans::Property >
getProperties( const com::sun::star::uno::Reference<
- com::sun::star::ucb::XCommandEnvironment > & xEnv );
+ com::sun::star::ucb::XCommandEnvironment > & xEnv );
virtual com::sun::star::uno::Sequence< com::sun::star::ucb::CommandInfo >
getCommands( const com::sun::star::uno::Reference<
- com::sun::star::ucb::XCommandEnvironment > & xEnv );
- virtual ::rtl::OUString getParentURL();
+ com::sun::star::ucb::XCommandEnvironment > & xEnv );
+ virtual ::rtl::OUString getParentURL();
- sal_Bool isFolder( const ::com::sun::star::uno::Reference<
- ::com::sun::star::ucb::XCommandEnvironment >& xEnv )
+ sal_Bool isFolder( const ::com::sun::star::uno::Reference<
+ ::com::sun::star::ucb::XCommandEnvironment >& xEnv )
throw ( ::com::sun::star::uno::Exception );
- ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XRow >
- getPropertyValues( const ::com::sun::star::uno::Sequence<
+ ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XRow >
+ getPropertyValues( const ::com::sun::star::uno::Sequence<
::com::sun::star::beans::Property >& rProperties,
- const ::com::sun::star::uno::Reference<
- ::com::sun::star::ucb::XCommandEnvironment >& xEnv )
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::ucb::XCommandEnvironment >& xEnv )
throw ( ::com::sun::star::uno::Exception );
::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any >
- setPropertyValues(
- const ::com::sun::star::uno::Sequence<
- ::com::sun::star::beans::PropertyValue >& rValues,
- const ::com::sun::star::uno::Reference<
- ::com::sun::star::ucb::XCommandEnvironment >& xEnv )
+ setPropertyValues( const ::com::sun::star::uno::Sequence<
+ ::com::sun::star::beans::PropertyValue >& rValues,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::ucb::XCommandEnvironment >& xEnv )
throw ( ::com::sun::star::uno::Exception );
typedef rtl::Reference< Content > ContentRef;
- typedef std::list< ContentRef > ContentRefList;
- void queryChildren( ContentRefList& rChildren);
+ typedef std::list< ContentRef > ContentRefList;
+ void queryChildren( ContentRefList& rChildren);
- sal_Bool exchangeIdentity(
- const ::com::sun::star::uno::Reference<
- ::com::sun::star::ucb::XContentIdentifier >& xNewId );
+ sal_Bool
+ exchangeIdentity( const ::com::sun::star::uno::Reference<
+ ::com::sun::star::ucb::XContentIdentifier >& xNewId );
- const rtl::OUString getBaseURI( const std::auto_ptr< DAVResourceAccess > & rResAccess );
+ const rtl::OUString
+ getBaseURI( const std::auto_ptr< DAVResourceAccess > & rResAccess );
- const ResourceType & getResourceType(
- const ::com::sun::star::uno::Reference<
- ::com::sun::star::ucb::XCommandEnvironment >& xEnv )
+ const ResourceType &
+ getResourceType( const ::com::sun::star::uno::Reference<
+ ::com::sun::star::ucb::XCommandEnvironment >& xEnv )
throw ( ::com::sun::star::uno::Exception );
- const ResourceType & getResourceType(
- const ::com::sun::star::uno::Reference<
- ::com::sun::star::ucb::XCommandEnvironment >& xEnv,
- const std::auto_ptr< DAVResourceAccess > & rResAccess )
+ const ResourceType &
+ getResourceType( const ::com::sun::star::uno::Reference<
+ ::com::sun::star::ucb::XCommandEnvironment >& xEnv,
+ const std::auto_ptr< DAVResourceAccess > & rResAccess )
throw ( ::com::sun::star::uno::Exception );
// Command "open"
com::sun::star::uno::Any open(
const com::sun::star::ucb::OpenCommandArgument2 & rArg,
const com::sun::star::uno::Reference<
- com::sun::star::ucb::XCommandEnvironment > & xEnv )
+ com::sun::star::ucb::XCommandEnvironment > & xEnv )
throw( ::com::sun::star::uno::Exception );
// Command "post"
void post( const com::sun::star::ucb::PostCommandArgument2 & rArg,
const com::sun::star::uno::Reference<
- com::sun::star::ucb::XCommandEnvironment > & xEnv )
+ com::sun::star::ucb::XCommandEnvironment > & xEnv )
throw( ::com::sun::star::uno::Exception );
- // Command "insert"
- void insert( const ::com::sun::star::uno::Reference<
- ::com::sun::star::io::XInputStream > & xInputStream,
- sal_Bool bReplaceExisting,
- const com::sun::star::uno::Reference<
- com::sun::star::ucb::XCommandEnvironment >& Environment )
+ // Command "insert"
+ void insert( const ::com::sun::star::uno::Reference<
+ ::com::sun::star::io::XInputStream > & xInputStream,
+ sal_Bool bReplaceExisting,
+ const com::sun::star::uno::Reference<
+ com::sun::star::ucb::XCommandEnvironment >& Environment )
throw( ::com::sun::star::uno::Exception );
// Command "transfer"
void transfer( const ::com::sun::star::ucb::TransferInfo & rArgs,
const com::sun::star::uno::Reference<
- com::sun::star::ucb::XCommandEnvironment >& Environment )
+ com::sun::star::ucb::XCommandEnvironment >& Environment )
throw( ::com::sun::star::uno::Exception );
// Command "delete"
- void destroy( sal_Bool bDeletePhysical )
+ void destroy( sal_Bool bDeletePhysical )
+ throw( ::com::sun::star::uno::Exception );
+
+ // Command "lock"
+ void lock( const com::sun::star::uno::Reference<
+ com::sun::star::ucb::XCommandEnvironment >& Environment )
+ throw( ::com::sun::star::uno::Exception );
+
+ // Command "unlock"
+ void unlock( const com::sun::star::uno::Reference<
+ com::sun::star::ucb::XCommandEnvironment >& Environment )
throw( ::com::sun::star::uno::Exception );
::com::sun::star::uno::Any MapDAVException( const DAVException & e,
@@ -184,57 +191,62 @@ private:
static bool shouldAccessNetworkAfterException( const DAVException & e );
+ bool supportsExclusiveWriteLock(
+ const com::sun::star::uno::Reference<
+ com::sun::star::ucb::XCommandEnvironment >& Environment );
+
public:
- Content( const ::com::sun::star::uno::Reference<
- ::com::sun::star::lang::XMultiServiceFactory >& rxSMgr,
- ContentProvider* pProvider,
- const ::com::sun::star::uno::Reference<
- ::com::sun::star::ucb::XContentIdentifier >& Identifier,
+ Content( const ::com::sun::star::uno::Reference<
+ ::com::sun::star::lang::XMultiServiceFactory >& rxSMgr,
+ ContentProvider* pProvider,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::ucb::XContentIdentifier >& Identifier,
rtl::Reference< DAVSessionFactory > const & rSessionFactory )
throw ( ::com::sun::star::ucb::ContentCreationException );
- Content( const ::com::sun::star::uno::Reference<
- ::com::sun::star::lang::XMultiServiceFactory >& rxSMgr,
- ContentProvider* pProvider,
- const ::com::sun::star::uno::Reference<
- ::com::sun::star::ucb::XContentIdentifier >& Identifier,
+ Content( const ::com::sun::star::uno::Reference<
+ ::com::sun::star::lang::XMultiServiceFactory >& rxSMgr,
+ ContentProvider* pProvider,
+ const ::com::sun::star::uno::Reference<
+ ::com::sun::star::ucb::XContentIdentifier >& Identifier,
rtl::Reference< DAVSessionFactory > const & rSessionFactory,
- sal_Bool isCollection )
+ sal_Bool isCollection )
throw ( ::com::sun::star::ucb::ContentCreationException );
- virtual ~Content();
+ virtual ~Content();
- // XInterface
- XINTERFACE_DECL()
+ // XInterface
+ XINTERFACE_DECL()
// XTypeProvider
XTYPEPROVIDER_DECL()
// XServiceInfo
virtual ::rtl::OUString SAL_CALL
- getImplementationName()
+ getImplementationName()
throw( ::com::sun::star::uno::RuntimeException );
- virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL
- getSupportedServiceNames()
+
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL
+ getSupportedServiceNames()
throw( ::com::sun::star::uno::RuntimeException );
- // XContent
- virtual rtl::OUString SAL_CALL
- getContentType()
+ // XContent
+ virtual rtl::OUString SAL_CALL
+ getContentType()
throw( com::sun::star::uno::RuntimeException );
- // XCommandProcessor
- virtual com::sun::star::uno::Any SAL_CALL
- execute( const com::sun::star::ucb::Command& aCommand,
- sal_Int32 CommandId,
- const com::sun::star::uno::Reference<
- com::sun::star::ucb::XCommandEnvironment >& Environment )
+ // XCommandProcessor
+ virtual com::sun::star::uno::Any SAL_CALL
+ execute( const com::sun::star::ucb::Command& aCommand,
+ sal_Int32 CommandId,
+ const com::sun::star::uno::Reference<
+ com::sun::star::ucb::XCommandEnvironment >& Environment )
throw( com::sun::star::uno::Exception,
- com::sun::star::ucb::CommandAbortedException,
- com::sun::star::uno::RuntimeException );
- virtual void SAL_CALL
- abort( sal_Int32 CommandId )
+ com::sun::star::ucb::CommandAbortedException,
+ com::sun::star::uno::RuntimeException );
+ virtual void SAL_CALL
+ abort( sal_Int32 CommandId )
throw( com::sun::star::uno::RuntimeException );
- // XPropertyContainer
+ // XPropertyContainer
virtual void SAL_CALL
addProperty( const rtl::OUString& Name,
sal_Int16 Attributes,
@@ -250,36 +262,36 @@ public:
com::sun::star::beans::NotRemoveableException,
com::sun::star::uno::RuntimeException );
- //////////////////////////////////////////////////////////////////////
- // Additional interfaces
- //////////////////////////////////////////////////////////////////////
+ //////////////////////////////////////////////////////////////////////
+ // Additional interfaces
+ //////////////////////////////////////////////////////////////////////
- // XContentCreator
+ // XContentCreator
virtual com::sun::star::uno::Sequence<
com::sun::star::ucb::ContentInfo > SAL_CALL
- queryCreatableContentsInfo()
+ queryCreatableContentsInfo()
throw( com::sun::star::uno::RuntimeException );
- virtual com::sun::star::uno::Reference<
- com::sun::star::ucb::XContent > SAL_CALL
- createNewContent( const com::sun::star::ucb::ContentInfo& Info )
+ virtual com::sun::star::uno::Reference<
+ com::sun::star::ucb::XContent > SAL_CALL
+ createNewContent( const com::sun::star::ucb::ContentInfo& Info )
throw( com::sun::star::uno::RuntimeException );
- //////////////////////////////////////////////////////////////////////
- // Non-interface methods.
- //////////////////////////////////////////////////////////////////////
+ //////////////////////////////////////////////////////////////////////
+ // Non-interface methods.
+ //////////////////////////////////////////////////////////////////////
DAVResourceAccess & getResourceAccess() { return *m_xResAccess; }
- // Called from resultset data supplier.
- static ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XRow >
- getPropertyValues( const ::com::sun::star::uno::Reference<
- ::com::sun::star::lang::XMultiServiceFactory >& rSMgr,
+ // Called from resultset data supplier.
+ static ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XRow >
+ getPropertyValues( const ::com::sun::star::uno::Reference<
+ ::com::sun::star::lang::XMultiServiceFactory >& rSMgr,
const ::com::sun::star::uno::Sequence<
- ::com::sun::star::beans::Property >& rProperties,
- const ContentProperties& rData,
+ ::com::sun::star::beans::Property >& rProperties,
+ const ContentProperties& rData,
const rtl::Reference<
::ucbhelper::ContentProviderImplHelper >& rProvider,
- const ::rtl::OUString& rContentId );
+ const ::rtl::OUString& rContentId );
};
}
diff --git a/ucb/source/ucp/webdav/webdavcontentcaps.cxx b/ucb/source/ucp/webdav/webdavcontentcaps.cxx
index 16800fb29c..0af93828ac 100644
--- a/ucb/source/ucp/webdav/webdavcontentcaps.cxx
+++ b/ucb/source/ucp/webdav/webdavcontentcaps.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: webdavcontentcaps.cxx,v $
- * $Revision: 1.21.20.1 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
@@ -31,7 +28,7 @@
// MARKER(update_precomp.py): autogen include statement, do not remove
#include "precompiled_ucb.hxx"
/**************************************************************************
- TODO
+ TODO
**************************************************************************
*************************************************************************/
@@ -41,24 +38,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 +154,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 +223,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 +240,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 +300,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 +313,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 +356,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 +437,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 +493,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 +537,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 ) ) );
- return uno::Sequence< com::sun::star::ucb::CommandInfo >(
- aFolderCommandInfoTable, 8 );
+ sal_Bool bFolder = sal_False;
+
+ 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" ) ),
- -1,
- getCppuType( static_cast<
- com::sun::star::ucb::InsertCommandArgument * >( 0 ) )
- ),
- com::sun::star::ucb::CommandInfo(
- rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "open" ) ),
+ aCmdInfo[ nPos ] =
+ ucb::CommandInfo(
+ rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "transfer" ) ),
-1,
- getCppuType( static_cast<
- com::sun::star::ucb::OpenCommandArgument2 * >( 0 ) )
- ),
-
- ///////////////////////////////////////////////////////////////
- // New commands
- ///////////////////////////////////////////////////////////////
-
- com::sun::star::ucb::CommandInfo(
- rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "post" ) ),
+ 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::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;
}
-
diff --git a/ucb/source/ucp/webdav/webdavdatasupplier.cxx b/ucb/source/ucp/webdav/webdavdatasupplier.cxx
index d36867da6e..0dc4c46fc5 100644
--- a/ucb/source/ucp/webdav/webdavdatasupplier.cxx
+++ b/ucb/source/ucp/webdav/webdavdatasupplier.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: webdavdatasupplier.cxx,v $
- * $Revision: 1.18 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/webdav/webdavdatasupplier.hxx b/ucb/source/ucp/webdav/webdavdatasupplier.hxx
index 4d555982f9..878257e85b 100644
--- a/ucb/source/ucp/webdav/webdavdatasupplier.hxx
+++ b/ucb/source/ucp/webdav/webdavdatasupplier.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: webdavdatasupplier.hxx,v $
- * $Revision: 1.10 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/webdav/webdavprovider.cxx b/ucb/source/ucp/webdav/webdavprovider.cxx
index d6caf7aafe..4cbe267fcb 100644
--- a/ucb/source/ucp/webdav/webdavprovider.cxx
+++ b/ucb/source/ucp/webdav/webdavprovider.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: webdavprovider.cxx,v $
- * $Revision: 1.21 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/webdav/webdavprovider.hxx b/ucb/source/ucp/webdav/webdavprovider.hxx
index 2b9af841f5..c435c2ea64 100644
--- a/ucb/source/ucp/webdav/webdavprovider.hxx
+++ b/ucb/source/ucp/webdav/webdavprovider.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: webdavprovider.hxx,v $
- * $Revision: 1.11 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/webdav/webdavresultset.cxx b/ucb/source/ucp/webdav/webdavresultset.cxx
index 330d49abe2..8234628e71 100644
--- a/ucb/source/ucp/webdav/webdavresultset.cxx
+++ b/ucb/source/ucp/webdav/webdavresultset.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: webdavresultset.cxx,v $
- * $Revision: 1.7 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/webdav/webdavresultset.hxx b/ucb/source/ucp/webdav/webdavresultset.hxx
index f05227e9f9..7b084e6b5c 100644
--- a/ucb/source/ucp/webdav/webdavresultset.hxx
+++ b/ucb/source/ucp/webdav/webdavresultset.hxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: webdavresultset.hxx,v $
- * $Revision: 1.6 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
diff --git a/ucb/source/ucp/webdav/webdavservices.cxx b/ucb/source/ucp/webdav/webdavservices.cxx
index 2bf66572b7..288772231a 100644
--- a/ucb/source/ucp/webdav/webdavservices.cxx
+++ b/ucb/source/ucp/webdav/webdavservices.cxx
@@ -2,13 +2,10 @@
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
- * Copyright 2008 by Sun Microsystems, Inc.
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
*
- * $RCSfile: webdavservices.cxx,v $
- * $Revision: 1.8 $
- *
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify