Modified: openoffice/branches/AOO410/main/ucb/source/ucp/webdav/webdavcontent.cxx URL: http://svn.apache.org/viewvc/openoffice/branches/AOO410/main/ucb/source/ucp/webdav/webdavcontent.cxx?rev=1705247&r1=1705246&r2=1705247&view=diff ============================================================================== --- openoffice/branches/AOO410/main/ucb/source/ucp/webdav/webdavcontent.cxx (original) +++ openoffice/branches/AOO410/main/ucb/source/ucp/webdav/webdavcontent.cxx Fri Sep 25 07:59:46 2015 @@ -53,7 +53,6 @@ #include <com/sun/star/ucb/InsertCommandArgument.hpp> #include <com/sun/star/ucb/InteractiveBadTransferURLException.hpp> #include <com/sun/star/ucb/InteractiveAugmentedIOException.hpp> -#include <com/sun/star/ucb/InteractiveLockingLockNotAvailableException.hpp> #include <com/sun/star/ucb/InteractiveLockingLockedException.hpp> #include <com/sun/star/ucb/InteractiveLockingLockExpiredException.hpp> #include <com/sun/star/ucb/InteractiveLockingNotLockedException.hpp> @@ -85,7 +84,6 @@ #include "ContentProperties.hxx" #include "SerfUri.hxx" #include "UCBDeadPropertyValue.hxx" -#include <boost/current_function.hpp> using namespace com::sun::star; using namespace http_dav_ucp; @@ -730,19 +728,23 @@ uno::Any SAL_CALL Content::execute( post( aArg, Environment ); } else if ( aCommand.Name.equalsAsciiL( - RTL_CONSTASCII_STRINGPARAM( "lock" ) ) ) + RTL_CONSTASCII_STRINGPARAM( "lock" ) ) && + supportsExclusiveWriteLock( Environment ) ) { ////////////////////////////////////////////////////////////////// // lock ////////////////////////////////////////////////////////////////// + lock( Environment ); } else if ( aCommand.Name.equalsAsciiL( - RTL_CONSTASCII_STRINGPARAM( "unlock" ) ) ) + RTL_CONSTASCII_STRINGPARAM( "unlock" ) ) && + supportsExclusiveWriteLock( Environment ) ) { ////////////////////////////////////////////////////////////////// // unlock ////////////////////////////////////////////////////////////////// + unlock( Environment ); } else if ( aCommand.Name.equalsAsciiL( @@ -1452,8 +1454,7 @@ uno::Reference< sdbc::XRow > Content::ge if ( !bHasAll ) { - // Only DAV resources support PROPFIND, - // check already done above in the outer 'if' head + // Only DAV resources support PROPFIND std::vector< rtl::OUString > aPropNames; uno::Sequence< beans::Property > aProperties( @@ -1474,16 +1475,17 @@ uno::Reference< sdbc::XRow > Content::ge while ( it != end ) { - if ( *it == rName ) { - //the failed property in cache is the same as the requested one - //add to the requested properties list - aProperties[ nProps ] = rProperties[ n ]; - nProps++; + if ( *it == rName ) break; - } ++it; } + + if ( it == end ) + { + aProperties[ nProps ] = rProperties[ n ]; + nProps++; + } } aProperties.realloc( nProps ); @@ -3011,23 +3013,6 @@ void Content::lock( const uno::Reference< ucb::XCommandEnvironment >& Environment ) throw( uno::Exception ) { - // i126305 TODO: add a check to see if this is really a DAV resource ? - // currently if the lock is not supported - // we got an error from the server that should be checked by the client (framework) - rtl::OUString aURL; - if ( m_bTransient ) - { - aURL = getParentURL(); - if ( aURL.lastIndexOf( '/' ) != ( aURL.getLength() - 1 ) ) - aURL += rtl::OUString::createFromAscii( "/" ); - - aURL += m_aEscapedTitle; - } - else - { - aURL = m_xIdentifier->getContentIdentifier(); - } - try { std::auto_ptr< DAVResourceAccess > xResAccess; @@ -3036,33 +3021,16 @@ void Content::lock( xResAccess.reset( new DAVResourceAccess( *m_xResAccess.get() ) ); } - // TODO i126305 to discuss: - // the owner string is the string that will be returned when the lock will be - // interrogated, via lockdiscovery. - // It should tell a user who is holding the document lock. - // The string currently set as owner is the one most useful now, telling what application locked the resource. - // May be it would be better put here something better ? - // Some string be added to office config? Or name of the user there? Or a document property user selectable? - // in case of adding it in config, the lock command should be added a string for the owner, and this - // will be in turn filled in by the framework (e.g. the ucb client). - // Of course in case of a configuration item, the string should be checked against internationalization - // and how to manage it in webdav protocol, this was not checked while solving i126305. uno::Any aOwnerAny; aOwnerAny - <<= rtl::OUString::createFromAscii( "Apache OpenOffice - https://www.openoffice.org" ); + <<= rtl::OUString::createFromAscii( "http://ucb.openoffice.org" ); - // TODO i126305 to discuss: - // on some webdav server, the 180 time formerly used appears to be too long, - // in this case, in response to a lock refresh operation we receive an error - // as 'Connection reset by peer', meaning the session was timed out by the other end. - // For now drop the defaul time to 120 seconds, seems better. - // In the future, another way of keeping the connection alive should be devised. ucb::Lock aLock( ucb::LockScope_EXCLUSIVE, ucb::LockType_WRITE, ucb::LockDepth_ZERO, aOwnerAny, - 120, // lock timeout in secs + 180, // lock timeout in secs //-1, // infinite lock uno::Sequence< ::rtl::OUString >() ); @@ -3075,44 +3043,6 @@ void Content::lock( } catch ( DAVException const & e ) { - switch(e.getStatus()) - { - case SC_LOCKED: - { - rtl::OUString aOwner( getLockOwner( Environment ) ); - - throw(ucb::InteractiveLockingLockedException( - rtl::OUString::createFromAscii( "Locked!" ), - static_cast< cppu::OWeakObject * >( this ), - task::InteractionClassification_ERROR, - aURL, - e.getExtendedError(), - sal_False, - aOwner )); - } - break; - case SC_METHOD_NOT_ALLOWED: - // this it's not always received, but the RFC4918 (which supersed RFC2518) - // tells about this in: - // http://tools.ietf.org/html/rfc4918#appendix-D.1 - // throw exception, will be interpreted by the lock requester (framework) - // it is actually a info, not an error - throw ucb::InteractiveLockingLockNotAvailableException( e.getData(), - static_cast< cppu::OWeakObject * >( this ), - task::InteractionClassification_INFO, - aURL, - e.getExtendedError() ); - break; - //i126305 TODO - //see http://tools.ietf.org/html/rfc4918#section-9.10.6 - //not sure how to handle them, for the time being a dialog box is shown, - //the client (framework) should manage it - case SC_CONFLICT: - case SC_PRECONDITION_FAILED: - default: - //fallthrou - ; - } cancelCommandExecution( e, Environment, sal_False ); // Unreachable } @@ -3140,15 +3070,8 @@ void Content::unlock( } catch ( DAVException const & e ) { - //i126305 TODO need to rise an exception of the right type ? - //meaning that the lock can not be released, since there is no such - //exception we use ucb::InteractiveNetworkReadException - throw ucb::InteractiveNetworkReadException( e.getData(), - static_cast< cppu::OWeakObject * >( this ), - task::InteractionClassification_INFO, - e.getData() );//perhaps a more better should be used ? - // Unreachable cancelCommandExecution( e, Environment, sal_False ); + // Unreachable } } @@ -3369,9 +3292,7 @@ uno::Any Content::MapDAVException( const static_cast< cppu::OWeakObject * >( this ), task::InteractionClassification_ERROR, aURL, - e.getExtendedError(), - sal_False, // not SelfOwned - rtl::OUString() ); + sal_False ); // not SelfOwned #else { uno::Sequence< uno::Any > aArgs( 1 ); @@ -3398,9 +3319,7 @@ uno::Any Content::MapDAVException( const static_cast< cppu::OWeakObject * >( this ), task::InteractionClassification_ERROR, aURL, - e.getExtendedError(), - sal_True, // SelfOwned - e.getOwner() ); + sal_True ); // SelfOwned break; case DAVException::DAV_NOT_LOCKED: @@ -3409,8 +3328,7 @@ uno::Any Content::MapDAVException( const rtl::OUString::createFromAscii( "Not locked!" ), static_cast< cppu::OWeakObject * >( this ), task::InteractionClassification_ERROR, - aURL, - rtl::OUString() );//no extended info here + aURL ); break; case DAVException::DAV_LOCK_EXPIRED: @@ -3419,20 +3337,13 @@ uno::Any Content::MapDAVException( const rtl::OUString::createFromAscii( "Lock expired!" ), static_cast< cppu::OWeakObject * >( this ), task::InteractionClassification_ERROR, - aURL, - rtl::OUString() );//no extended info here + aURL ); break; default: - rtl::OUStringBuffer buf( 512 ); - buf.appendAscii( BOOST_CURRENT_FUNCTION ); - buf.appendAscii( ":" ); - buf.append( (sal_Int32) __LINE__ ); - buf.appendAscii( " - Unknown DAV error: " ); - buf.append( (sal_Int32) e.getError() ); aException <<= ucb::InteractiveNetworkGeneralException( - rtl::OUString(buf.makeStringAndClear()), + rtl::OUString(), static_cast< cppu::OWeakObject * >( this ), task::InteractionClassification_ERROR ); break; @@ -3539,7 +3450,7 @@ const Content::ResourceType & Content::g // this is a DAV resource. std::vector< DAVResource > resources; std::vector< rtl::OUString > aPropNames; - uno::Sequence< beans::Property > aProperties( 6 ); + uno::Sequence< beans::Property > aProperties( 5 ); aProperties[ 0 ].Name = rtl::OUString::createFromAscii( "IsFolder" ); aProperties[ 1 ].Name @@ -3550,9 +3461,6 @@ const Content::ResourceType & Content::g = rtl::OUString::createFromAscii( "MediaType" ); aProperties[ 4 ].Name = DAVProperties::SUPPORTEDLOCK; - //we will need this to check for existing locks - aProperties[ 5 ].Name - = DAVProperties::LOCKDISCOVERY; ContentProperties::UCBNamesToDAVNames( aProperties, aPropNames ); @@ -3561,13 +3469,8 @@ const Content::ResourceType & Content::g DAVZERO, aPropNames, resources, xEnv ); // TODO - is this really only one? - // only one resource is received, see at: - // WebDAVResponseParser::endElement() - // case WebDAVName_response - //in file: ucb/source/ucp/webdav/webdavresponseparser.cxx: if ( resources.size() == 1 ) { - // there is a single resource m_xCachedProps.reset( new CachableContentProperties( resources[ 0 ] ) ); m_xCachedProps->containsAllNames( @@ -3604,38 +3507,3 @@ const Content::ResourceType & Content::g { return getResourceType( xEnv, m_xResAccess ); } - -rtl::OUString Content::getLockOwner( const uno::Reference< ucb::XCommandEnvironment >& Environment ) -{ - rtl::OUString aOwner; - try - { - //DAVProperties::LOCKDISCOVERY is not cached, need to get it from the server - uno::Sequence< beans::Property > aProperties( 1 ); - aProperties[ 0 ].Name = DAVProperties::LOCKDISCOVERY; - aProperties[ 0 ].Handle = -1; - - uno::Reference< sdbc::XRow > xRow( getPropertyValues( aProperties, Environment ) ); - - sal_Int32 nCount = aProperties.getLength(); - uno::Sequence< uno::Any > aValues( nCount ); - uno::Any* pValues = aValues.getArray(); - pValues[ 0 ] = xRow->getObject( 1, uno::Reference< container::XNameAccess >() ); - - uno::Sequence< ::com::sun::star::ucb::Lock > aLocks; - - if(aValues.getConstArray()[ 0 ] >>= aLocks) - if(aLocks.getLength() > 0) - { - ucb::Lock aLock = aLocks[0]; - aLock.Owner >>= aOwner; - OSL_TRACE("Content::getLockOwner - aOwner: '%s', <<<<<<<<<<<<<<<<<<<<<<<<<<<<<", - rtl::OUStringToOString(aOwner, RTL_TEXTENCODING_UTF8).getStr()); - - } - } - catch ( uno::Exception&) - { } - - return aOwner; -}
Modified: openoffice/branches/AOO410/main/ucb/source/ucp/webdav/webdavcontent.hxx URL: http://svn.apache.org/viewvc/openoffice/branches/AOO410/main/ucb/source/ucp/webdav/webdavcontent.hxx?rev=1705247&r1=1705246&r2=1705247&view=diff ============================================================================== --- openoffice/branches/AOO410/main/ucb/source/ucp/webdav/webdavcontent.hxx (original) +++ openoffice/branches/AOO410/main/ucb/source/ucp/webdav/webdavcontent.hxx Fri Sep 25 07:59:46 2015 @@ -83,7 +83,6 @@ class Content : public ::ucbhelper::Cont rtl::OUString m_aEscapedTitle; ResourceType m_eResourceType; ContentProvider* m_pProvider; // No need for a ref, base class holds object - // True if the DEV resource is a 'unmapped URL' as it is named in RFC4918 bool m_bTransient; bool m_bCollection; bool m_bDidGetOrHead; @@ -138,20 +137,20 @@ private: const std::auto_ptr< DAVResourceAccess > & rResAccess ) throw ( ::com::sun::star::uno::Exception ); - /// Command "open" + // 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 ) throw( ::com::sun::star::uno::Exception ); - /// Command "post" + // Command "post" void post( const com::sun::star::ucb::PostCommandArgument2 & rArg, const com::sun::star::uno::Reference< com::sun::star::ucb::XCommandEnvironment > & xEnv ) throw( ::com::sun::star::uno::Exception ); - /// Command "insert" + // Command "insert" void insert( const ::com::sun::star::uno::Reference< ::com::sun::star::io::XInputStream > & xInputStream, sal_Bool bReplaceExisting, @@ -159,22 +158,22 @@ private: com::sun::star::ucb::XCommandEnvironment >& Environment ) throw( ::com::sun::star::uno::Exception ); - /// Command "transfer" + // Command "transfer" void transfer( const ::com::sun::star::ucb::TransferInfo & rArgs, const com::sun::star::uno::Reference< com::sun::star::ucb::XCommandEnvironment >& Environment ) throw( ::com::sun::star::uno::Exception ); - /// Command "delete" + // Command "delete" void destroy( sal_Bool bDeletePhysical ) throw( ::com::sun::star::uno::Exception ); - /// Command "lock" + // Command "lock" void lock( const com::sun::star::uno::Reference< com::sun::star::ucb::XCommandEnvironment >& Environment ) throw( ::com::sun::star::uno::Exception ); - /// Command "unlock" + // Command "unlock" void unlock( const com::sun::star::uno::Reference< com::sun::star::ucb::XCommandEnvironment >& Environment ) throw( ::com::sun::star::uno::Exception ); @@ -194,7 +193,7 @@ private: const com::sun::star::uno::Reference< com::sun::star::ucb::XCommandEnvironment >& Environment ); - /// XPropertyContainer replacement + // XPropertyContainer replacement void addProperty( const com::sun::star::ucb::PropertyCommandArgument &aCmdArg, const com::sun::star::uno::Reference< com::sun::star::ucb::XCommandEnvironment >& Environment ) @@ -227,13 +226,13 @@ public: throw ( ::com::sun::star::ucb::ContentCreationException ); virtual ~Content(); - /// XInterface + // XInterface XINTERFACE_DECL() - /// XTypeProvider + // XTypeProvider XTYPEPROVIDER_DECL() - /// XServiceInfo + // XServiceInfo virtual ::rtl::OUString SAL_CALL getImplementationName() throw( ::com::sun::star::uno::RuntimeException ); @@ -242,12 +241,12 @@ public: getSupportedServiceNames() throw( ::com::sun::star::uno::RuntimeException ); - /// XContent + // XContent virtual rtl::OUString SAL_CALL getContentType() throw( com::sun::star::uno::RuntimeException ); - /// XCommandProcessor + // XCommandProcessor virtual com::sun::star::uno::Any SAL_CALL execute( const com::sun::star::ucb::Command& aCommand, sal_Int32 CommandId, @@ -260,7 +259,7 @@ public: abort( sal_Int32 CommandId ) throw( com::sun::star::uno::RuntimeException ); - /// XPropertyContainer + // XPropertyContainer virtual void SAL_CALL addProperty( const rtl::OUString& Name, sal_Int16 Attributes, @@ -296,7 +295,7 @@ public: DAVResourceAccess & getResourceAccess() { return *m_xResAccess; } - /** Called from resultset data supplier. */ + // 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, @@ -306,9 +305,6 @@ public: const rtl::Reference< ::ucbhelper::ContentProviderImplHelper >& rProvider, const ::rtl::OUString& rContentId ); - - /** returns the owner of current resource lock */ - rtl::OUString getLockOwner( const uno::Reference< ucb::XCommandEnvironment >& Environment ); }; } Modified: openoffice/branches/AOO410/main/ucb/source/ucp/webdav/webdavprovider.cxx URL: http://svn.apache.org/viewvc/openoffice/branches/AOO410/main/ucb/source/ucp/webdav/webdavprovider.cxx?rev=1705247&r1=1705246&r2=1705247&view=diff ============================================================================== --- openoffice/branches/AOO410/main/ucb/source/ucp/webdav/webdavprovider.cxx (original) +++ openoffice/branches/AOO410/main/ucb/source/ucp/webdav/webdavprovider.cxx Fri Sep 25 07:59:46 2015 @@ -47,7 +47,6 @@ using namespace http_dav_ucp; rtl::OUString &WebDAVUserAgent::operator()() const { rtl::OUStringBuffer aBuffer; - aBuffer.appendAscii( RTL_CONSTASCII_STRINGPARAM( "Apache " )); aBuffer.appendAscii( RTL_CONSTASCII_STRINGPARAM( "$ooName/$ooSetupVersion" )); #if OSL_DEBUG_LEVEL > 0 #ifdef APR_VERSION Modified: openoffice/branches/AOO410/main/ucb/source/ucp/webdav/webdavresponseparser.cxx URL: http://svn.apache.org/viewvc/openoffice/branches/AOO410/main/ucb/source/ucp/webdav/webdavresponseparser.cxx?rev=1705247&r1=1705246&r2=1705247&view=diff ============================================================================== --- openoffice/branches/AOO410/main/ucb/source/ucp/webdav/webdavresponseparser.cxx (original) +++ openoffice/branches/AOO410/main/ucb/source/ucp/webdav/webdavresponseparser.cxx Fri Sep 25 07:59:46 2015 @@ -29,8 +29,6 @@ #include <com/sun/star/xml/sax/InputSource.hpp> #include <comphelper/processfactory.hxx> #include <comphelper/seqstream.hxx> -#include <com/sun/star/ucb/Lock.hpp> -#include <com/sun/star/ucb/LockDepth.hpp> #include <com/sun/star/ucb/LockEntry.hpp> #include <com/sun/star/ucb/LockScope.hpp> #include <com/sun/star/ucb/LockType.hpp> @@ -96,12 +94,6 @@ namespace WebDAVName_locktype, WebDAVName_write, WebDAVName_shared, - WebDAVName_lockdiscovery, - WebDAVName_activelock, - WebDAVName_depth, - WebDAVName_owner, - WebDAVName_timeout, - WebDAVName_locktoken, WebDAVName_status, WebDAVName_getlastmodified, WebDAVName_creationdate, @@ -133,12 +125,6 @@ namespace aWebDAVNameMapperList.insert(WebDAVNameValueType(rtl::OUString::createFromAscii("locktype"), WebDAVName_locktype)); aWebDAVNameMapperList.insert(WebDAVNameValueType(rtl::OUString::createFromAscii("write"), WebDAVName_write)); aWebDAVNameMapperList.insert(WebDAVNameValueType(rtl::OUString::createFromAscii("shared"), WebDAVName_shared)); - aWebDAVNameMapperList.insert(WebDAVNameValueType(rtl::OUString::createFromAscii("lockdiscovery"), WebDAVName_lockdiscovery)); - aWebDAVNameMapperList.insert(WebDAVNameValueType(rtl::OUString::createFromAscii("activelock"), WebDAVName_activelock)); - aWebDAVNameMapperList.insert(WebDAVNameValueType(rtl::OUString::createFromAscii("depth"), WebDAVName_depth)); - aWebDAVNameMapperList.insert(WebDAVNameValueType(rtl::OUString::createFromAscii("owner"), WebDAVName_owner)); - aWebDAVNameMapperList.insert(WebDAVNameValueType(rtl::OUString::createFromAscii("timeout"), WebDAVName_timeout)); - aWebDAVNameMapperList.insert(WebDAVNameValueType(rtl::OUString::createFromAscii("locktoken"), WebDAVName_locktoken)); aWebDAVNameMapperList.insert(WebDAVNameValueType(rtl::OUString::createFromAscii("status"), WebDAVName_status)); aWebDAVNameMapperList.insert(WebDAVNameValueType(rtl::OUString::createFromAscii("getlastmodified"), WebDAVName_getlastmodified)); aWebDAVNameMapperList.insert(WebDAVNameValueType(rtl::OUString::createFromAscii("creationdate"), WebDAVName_creationdate)); @@ -302,8 +288,7 @@ namespace enum WebDAVResponseParserMode { WebDAVResponseParserMode_PropFind = 0, - WebDAVResponseParserMode_PropName, - WebDAVResponseParserMode_LockResponse + WebDAVResponseParserMode_PropName }; class WebDAVResponseParser : public cppu::WeakImplHelper1< com::sun::star::xml::sax::XDocumentHandler > @@ -311,36 +296,23 @@ namespace private: std::vector< http_dav_ucp::DAVResource > maResult_PropFind; std::vector< http_dav_ucp::DAVResourceInfo > maResult_PropName; - http_dav_ucp::DAVPropertyValue maResult_Lock; WebDAVContext* mpContext; ::rtl::OUString maHref; - ::rtl::OUString maHrefLocks; //this is used for locks, when lockdiscoveryactive - ::rtl::OUString maStatus; std::vector< http_dav_ucp::DAVPropertyValue > maResponseProperties; std::vector< http_dav_ucp::DAVPropertyValue > maPropStatProperties; std::vector< ::rtl::OUString > maResponseNames; std::vector< ::rtl::OUString > maPropStatNames; - uno::Sequence< ::rtl::OUString > maLockTokens; uno::Sequence< ucb::LockEntry > maLockEntries; - uno::Sequence< ucb::Lock > maLocks; //the returned locks following a lockdiscovery request ucb::LockScope maLockScope; ucb::LockType maLockType; - ucb::LockDepth maLockDepth; - ::rtl::OUString maLockOwner; - sal_Int64 maLockTimeout; - ::rtl::OUString maLockToken; - - WebDAVResponseParserMode meWebDAVResponseParserMode; + WebDAVResponseParserMode meWebDAVResponseParserMode; // bitfield bool mbResourceTypeCollection : 1; bool mbLockScopeSet : 1; bool mbLockTypeSet : 1; - bool mbLockTokenSet : 1; - //TODO: add other flag to manage reading od token, depth, timeout, owner - bool mbLockDiscoveryActive : 1; // local helpers bool whitespaceIsAvailable() const @@ -351,8 +323,8 @@ namespace { return mpContext && mpContext->getParent() && aWebDAVName == mpContext->getParent()->getWebDAVName(); } - bool propertyIsReady() const - { + bool propertyIsReady() const + { return hasParent(WebDAVName_prop) && whitespaceIsAvailable(); } bool isCollectingProperties() const @@ -363,10 +335,6 @@ namespace { return WebDAVResponseParserMode_PropName == meWebDAVResponseParserMode; } - bool isWaitingLockResponse() const - { - return WebDAVResponseParserMode_LockResponse == meWebDAVResponseParserMode; - } bool collectThisPropertyAsName() const { return isCollectingPropNames() && hasParent(WebDAVName_prop); @@ -392,8 +360,7 @@ namespace // Methods XDocumentHandler virtual void SAL_CALL startDocument( ) throw (xml::sax::SAXException, uno::RuntimeException); virtual void SAL_CALL endDocument( ) throw (xml::sax::SAXException, uno::RuntimeException); - virtual void SAL_CALL startElement( const ::rtl::OUString& aName, const uno::Reference< xml::sax::XAttributeList >& xAttribs ) - throw (xml::sax::SAXException, uno::RuntimeException); + virtual void SAL_CALL startElement( const ::rtl::OUString& aName, const uno::Reference< xml::sax::XAttributeList >& xAttribs ) throw (xml::sax::SAXException, uno::RuntimeException); virtual void SAL_CALL endElement( const ::rtl::OUString& aName ) throw (xml::sax::SAXException, uno::RuntimeException); virtual void SAL_CALL characters( const ::rtl::OUString& aChars ) throw (xml::sax::SAXException, uno::RuntimeException); virtual void SAL_CALL ignorableWhitespace( const ::rtl::OUString& aWhitespaces ) throw (xml::sax::SAXException, uno::RuntimeException); @@ -402,34 +369,25 @@ namespace const std::vector< http_dav_ucp::DAVResource >& getResult_PropFind() const { return maResult_PropFind; } const std::vector< http_dav_ucp::DAVResourceInfo >& getResult_PropName() const { return maResult_PropName; } - const http_dav_ucp::DAVPropertyValue& getResult_Lock() const { return maResult_Lock; } }; WebDAVResponseParser::WebDAVResponseParser(WebDAVResponseParserMode eWebDAVResponseParserMode) : maResult_PropFind(), maResult_PropName(), - maResult_Lock(), mpContext(0), maHref(), - maHrefLocks(), maStatus(), maResponseProperties(), maPropStatProperties(), maResponseNames(), maPropStatNames(), - maLockTokens(), maLockEntries(), - maLocks(), maLockScope(ucb::LockScope_EXCLUSIVE), maLockType(ucb::LockType_WRITE), - maLockDepth(ucb::LockDepth_ZERO), - maLockOwner(), - maLockTimeout(0), meWebDAVResponseParserMode(eWebDAVResponseParserMode), mbResourceTypeCollection(false), mbLockScopeSet(false), - mbLockTypeSet(false), - mbLockDiscoveryActive(false) + mbLockTypeSet(false) { } @@ -452,8 +410,7 @@ namespace OSL_ENSURE(!mpContext, "Parser end with existing content (!)"); } - void SAL_CALL WebDAVResponseParser::startElement( const ::rtl::OUString& aName, const uno::Reference< xml::sax::XAttributeList >& xAttribs ) - throw (xml::sax::SAXException, uno::RuntimeException) + void SAL_CALL WebDAVResponseParser::startElement( const ::rtl::OUString& aName, const uno::Reference< xml::sax::XAttributeList >& xAttribs ) throw (xml::sax::SAXException, uno::RuntimeException) { const sal_Int32 nLen(aName.getLength()); @@ -461,7 +418,7 @@ namespace { // create new context (push) mpContext = new WebDAVContext(mpContext, aName, xAttribs); - + if(collectThisPropertyAsName()) { // When collecting property names and parent is prop there is no need @@ -534,28 +491,6 @@ namespace mbLockTypeSet = false; break; } - case WebDAVName_lockdiscovery: - { - // lockentry start, reset maLocks - maLocks.realloc(0); - mbLockDiscoveryActive = true; - break; - } - case WebDAVName_activelock: - { - // activelockstart, reset vars - mbLockScopeSet = false; - mbLockTypeSet = false; - mbLockTokenSet = false; - maLockTokens.realloc(0); - maHrefLocks = ::rtl::OUString(); - break; - } - case WebDAVName_locktoken: - { - mbLockTokenSet = true; - break; - } } break; } @@ -602,14 +537,7 @@ namespace // href end, save it if we have whitespace if(whitespaceIsAvailable()) { - if(mbLockDiscoveryActive) - { - maHrefLocks = mpContext->getWhiteSpace(); - } - else - { - maHref = mpContext->getWhiteSpace(); - } + maHref = mpContext->getWhiteSpace(); } break; } @@ -734,7 +662,7 @@ namespace case WebDAVName_exclusive: { // exclusive lockscope end - if(hasParent(WebDAVName_lockscope) || hasParent(WebDAVName_activelock)) + if(hasParent(WebDAVName_lockscope)) { maLockScope = ucb::LockScope_EXCLUSIVE; mbLockScopeSet = true; @@ -744,7 +672,7 @@ namespace case WebDAVName_shared: { // shared lockscope end - if(hasParent(WebDAVName_lockscope) || hasParent(WebDAVName_activelock)) + if(hasParent(WebDAVName_lockscope)) { maLockScope = ucb::LockScope_SHARED; mbLockScopeSet = true; @@ -754,117 +682,13 @@ namespace case WebDAVName_write: { // write locktype end - if(hasParent(WebDAVName_locktype) || hasParent(WebDAVName_activelock)) + if(hasParent(WebDAVName_locktype)) { maLockType = ucb::LockType_WRITE; mbLockTypeSet = true; } break; } - case WebDAVName_lockdiscovery: - { - // lockdiscovery end - if(hasParent(WebDAVName_prop)) - { - static ::rtl::OUString aStr(rtl::OUString::createFromAscii("DAV:lockdiscovery")); - if(isWaitingLockResponse()) - { - maResult_Lock.Name = aStr; - maResult_Lock.Value <<= maLocks; - } - else - { - ::http_dav_ucp::DAVPropertyValue aDAVPropertyValue; - - aDAVPropertyValue.Name = aStr; - aDAVPropertyValue.Value <<= maLocks; - maPropStatProperties.push_back(aDAVPropertyValue); - } - } - mbLockDiscoveryActive = false; - break; - } - case WebDAVName_activelock: - { - if(hasParent(WebDAVName_lockdiscovery) && - mbLockScopeSet && mbLockTypeSet && mbLockTokenSet) - { - const sal_Int32 nLength(maLocks.getLength()); - ucb::Lock aLock; - - aLock.Scope = maLockScope; - aLock.Type = maLockType; - //add tokens, depth, timeout, owner - aLock.LockTokens = maLockTokens; - aLock.Depth = maLockDepth; - aLock.Owner <<= maLockOwner; - aLock.Timeout = maLockTimeout; - maLocks.realloc(nLength + 1); - maLocks[nLength] = aLock; - } - break; - } - case WebDAVName_locktoken: - { - if(hasParent(WebDAVName_activelock)) - { - //add a token to the list of tokens - const sal_Int32 nLength(maLockTokens.getLength()); - maLockTokens.realloc(nLength + 1); - maLockTokens[nLength] = maHrefLocks; - mbLockTokenSet = true; - } - break; - } - case WebDAVName_timeout: - { - if(hasParent(WebDAVName_activelock)) - { - ::rtl::OUString aStr( mpContext->getWhiteSpace().toAsciiLowerCase()); - static ::rtl::OUString aInfinite( ::rtl::OUString::createFromAscii( "infinite" ) ); - static ::rtl::OUString aSecond( ::rtl::OUString::createFromAscii( "second-" ) ); - //look for infinity - sal_Int32 secondIndex; - if(aStr.indexOf(aInfinite) != -1) - { - maLockTimeout = -1; - } - else if((secondIndex = aStr.indexOf(aSecond)) != -1) - { - secondIndex += aSecond.getLength(); - maLockTimeout = aStr.copy(secondIndex).toInt64(); - } - } - break; - } - case WebDAVName_owner: - { - if(whitespaceIsAvailable()) - { - if(hasParent(WebDAVName_activelock)) - { - maLockOwner = mpContext->getWhiteSpace(); - } - } - break; - } - case WebDAVName_depth: - { - if(hasParent(WebDAVName_activelock)) - { - //set depth, one of three values - ::rtl::OUString aStr( mpContext->getWhiteSpace() ); - //default to zero, if not found - maLockDepth = ucb::LockDepth_ZERO; - if(aStr.equalsIgnoreAsciiCase(::rtl::OUString::createFromAscii("0"))) - maLockDepth = ucb::LockDepth_ZERO; - else if(aStr.equalsIgnoreAsciiCase(::rtl::OUString::createFromAscii("1"))) - maLockDepth = ucb::LockDepth_ONE; - else if(aStr.equalsIgnoreAsciiCase(::rtl::OUString::createFromAscii("infinity"))) - maLockDepth = ucb::LockDepth_INFINITY; - } - break; - } case WebDAVName_propstat: { // propstat end, check status @@ -896,7 +720,7 @@ namespace } case WebDAVName_response: { - // response end + // respose end if(maHref.getLength()) { if(isCollectingProperties()) @@ -904,7 +728,7 @@ namespace // create DAVResource when we have content if(maResponseProperties.size()) { - ::http_dav_ucp::DAVResource aDAVResource; + http_dav_ucp::DAVResource aDAVResource; aDAVResource.uri = maHref; aDAVResource.properties = maResponseProperties; @@ -971,8 +795,7 @@ namespace { } - void SAL_CALL WebDAVResponseParser::processingInstruction( const ::rtl::OUString& /*aTarget*/, const ::rtl::OUString& /*aData*/ ) - throw (xml::sax::SAXException, uno::RuntimeException) + void SAL_CALL WebDAVResponseParser::processingInstruction( const ::rtl::OUString& /*aTarget*/, const ::rtl::OUString& /*aData*/ ) throw (xml::sax::SAXException, uno::RuntimeException) { } @@ -990,7 +813,6 @@ namespace const uno::Reference< io::XInputStream >& xInputStream, std::vector< http_dav_ucp::DAVResource >& rPropFind, std::vector< http_dav_ucp::DAVResourceInfo >& rPropName, - http_dav_ucp::DAVPropertyValue& rPropValue, WebDAVResponseParserMode eWebDAVResponseParserMode) { if(xInputStream.is()) @@ -1000,18 +822,18 @@ namespace // prepare ParserInputSrouce xml::sax::InputSource myInputSource; myInputSource.aInputStream = xInputStream; - + // get parser uno::Reference< xml::sax::XParser > xParser( comphelper::getProcessServiceFactory()->createInstance( rtl::OUString::createFromAscii("com.sun.star.xml.sax.Parser") ), uno::UNO_QUERY_THROW ); - + // create parser; connect parser and filter WebDAVResponseParser* pWebDAVResponseParser = new WebDAVResponseParser(eWebDAVResponseParserMode); uno::Reference< xml::sax::XDocumentHandler > xWebDAVHdl(pWebDAVResponseParser); xParser->setDocumentHandler(xWebDAVHdl); - + // finally, parse the stream xParser->parseStream(myInputSource); @@ -1028,11 +850,6 @@ namespace rPropName = pWebDAVResponseParser->getResult_PropName(); break; } - case WebDAVResponseParserMode_LockResponse: - { - rPropValue = pWebDAVResponseParser->getResult_Lock(); - break; - } } } catch(uno::Exception&) @@ -1052,33 +869,19 @@ namespace http_dav_ucp { std::vector< DAVResource > aRetval; std::vector< DAVResourceInfo > aFoo; - DAVPropertyValue aFoo2; - parseWebDAVPropNameResponse(xInputStream, aRetval, aFoo, aFoo2, WebDAVResponseParserMode_PropFind); + parseWebDAVPropNameResponse(xInputStream, aRetval, aFoo, WebDAVResponseParserMode_PropFind); return aRetval; } - + std::vector< DAVResourceInfo > parseWebDAVPropNameResponse(const uno::Reference< io::XInputStream >& xInputStream) { std::vector< DAVResource > aFoo; std::vector< DAVResourceInfo > aRetval; - DAVPropertyValue aFoo2; - - parseWebDAVPropNameResponse(xInputStream, aFoo, aRetval, aFoo2, WebDAVResponseParserMode_PropName); - return aRetval; - } - http_dav_ucp::DAVPropertyValue parseWebDAVLockResponse(const uno::Reference< io::XInputStream >& xInputStream) - { - std::vector< DAVResource > aFoo2; - std::vector< DAVResourceInfo > aFoo; - http_dav_ucp::DAVPropertyValue aRetval; - - - parseWebDAVPropNameResponse(xInputStream, aFoo2, aFoo, aRetval, WebDAVResponseParserMode_LockResponse); + parseWebDAVPropNameResponse(xInputStream, aFoo, aRetval, WebDAVResponseParserMode_PropName); return aRetval; } - } // namespace http_dav_ucp ////////////////////////////////////////////////////////////////////////////// Modified: openoffice/branches/AOO410/main/ucb/source/ucp/webdav/webdavresponseparser.hxx URL: http://svn.apache.org/viewvc/openoffice/branches/AOO410/main/ucb/source/ucp/webdav/webdavresponseparser.hxx?rev=1705247&r1=1705246&r2=1705247&view=diff ============================================================================== --- openoffice/branches/AOO410/main/ucb/source/ucp/webdav/webdavresponseparser.hxx (original) +++ openoffice/branches/AOO410/main/ucb/source/ucp/webdav/webdavresponseparser.hxx Fri Sep 25 07:59:46 2015 @@ -33,7 +33,6 @@ namespace http_dav_ucp { std::vector< DAVResource > parseWebDAVPropFindResponse(const com::sun::star::uno::Reference< com::sun::star::io::XInputStream >& xInputStream); std::vector< DAVResourceInfo > parseWebDAVPropNameResponse(const com::sun::star::uno::Reference< com::sun::star::io::XInputStream >& xInputStream); - DAVPropertyValue parseWebDAVLockResponse(const com::sun::star::uno::Reference< com::sun::star::io::XInputStream >& xInputStream); } // namespace http_dav_ucp ////////////////////////////////////////////////////////////////////////////// Modified: openoffice/branches/AOO410/main/ucbhelper/inc/ucbhelper/content.hxx URL: http://svn.apache.org/viewvc/openoffice/branches/AOO410/main/ucbhelper/inc/ucbhelper/content.hxx?rev=1705247&r1=1705246&r2=1705247&view=diff ============================================================================== --- openoffice/branches/AOO410/main/ucbhelper/inc/ucbhelper/content.hxx (original) +++ openoffice/branches/AOO410/main/ucbhelper/inc/ucbhelper/content.hxx Fri Sep 25 07:59:46 2015 @@ -1029,27 +1029,6 @@ public: throw( ::com::sun::star::ucb::CommandAbortedException, ::com::sun::star::uno::RuntimeException, ::com::sun::star::uno::Exception ); - //->i126305 - /** lock the resource - * - * - */ - void - lock() - throw( ::com::sun::star::ucb::CommandAbortedException, - ::com::sun::star::uno::RuntimeException, - ::com::sun::star::uno::Exception ); - - /** ulock the resource - * - * - */ - void - unlock() - throw( ::com::sun::star::ucb::CommandAbortedException, - ::com::sun::star::uno::RuntimeException, - ::com::sun::star::uno::Exception ); - //<-i126305 }; } /* namespace ucbhelper */ Modified: openoffice/branches/AOO410/main/ucbhelper/source/client/content.cxx URL: http://svn.apache.org/viewvc/openoffice/branches/AOO410/main/ucbhelper/source/client/content.cxx?rev=1705247&r1=1705246&r2=1705247&view=diff ============================================================================== --- openoffice/branches/AOO410/main/ucbhelper/source/client/content.cxx (original) +++ openoffice/branches/AOO410/main/ucbhelper/source/client/content.cxx Fri Sep 25 07:59:46 2015 @@ -1627,41 +1627,6 @@ sal_Bool Content::isDocument() return sal_False; } -//->i126305 =============================================================== -void Content::lock() - throw( CommandAbortedException, RuntimeException, Exception ) -{ - Command aCommand; - aCommand.Name = rtl::OUString::createFromAscii( "lock" ); - aCommand.Handle = -1; // n/a - // aCommand.Argument <<= aArg; - - m_xImpl->executeCommand( aCommand ); - - // return xSink->getInputStream(); -} - -//========================================================================= -void Content::unlock() - throw( CommandAbortedException, RuntimeException, Exception ) -{ - - // OpenCommandArgument2 aArg; - //aArg.Mode = OpenMode::DOCUMENT_SHARE_DENY_NONE; - //aArg.Priority = 0; // unused - //aArg.Sink = xSink; - //aArg.Properties = Sequence< Property >( 0 ); // unused - - Command aCommand; - aCommand.Name = rtl::OUString::createFromAscii( "unlock" ); - aCommand.Handle = -1; // n/a - // aCommand.Argument <<= aArg; - - m_xImpl->executeCommand( aCommand ); - -} -//<-i126305 - //========================================================================= //========================================================================= //
