dbaccess/source/core/dataaccess/databasecontext.cxx | 16 +++++++++++----- sw/source/uibase/dbui/dbmgr.cxx | 9 ++++++--- 2 files changed, 17 insertions(+), 8 deletions(-)
New commits: commit 12bb6a054d697efddee76269605ed2450a2fae9c Author: Miklos Vajna <vmik...@collabora.co.uk> Date: Fri May 8 16:49:06 2015 +0200 dbaccess, sw: use vnd.sun.star.pkg:// for embedded data source handling Change-Id: I69eaf2e4dd051d62f56caef962d40889cc3a3876 diff --git a/dbaccess/source/core/dataaccess/databasecontext.cxx b/dbaccess/source/core/dataaccess/databasecontext.cxx index 4e6c185..2332ced 100644 --- a/dbaccess/source/core/dataaccess/databasecontext.cxx +++ b/dbaccess/source/core/dataaccess/databasecontext.cxx @@ -315,9 +315,15 @@ Reference< XInterface > ODatabaseContext::loadObjectFromURL(const OUString& _rNa OUString _sURL(rURL); INetURLObject aURL( _sURL ); - OUString aMark = aURL.GetMark(INetURLObject::DECODE_WITH_CHARSET); - if (!aMark.isEmpty()) - _sURL = aURL.GetURLNoMark(); + OUString sStreamRelPath; + if (_sURL.startsWithIgnoreAsciiCase("vnd.sun.star.pkg:")) + { + // In this case the host contains the real path, and the the path is the embedded stream name. + _sURL = aURL.GetHost(INetURLObject::DECODE_WITH_CHARSET); + sStreamRelPath = aURL.GetURLPath(INetURLObject::DECODE_WITH_CHARSET); + if (sStreamRelPath.startsWith("/")) + sStreamRelPath = sStreamRelPath.copy(1); + } if ( aURL.GetProtocol() == INetProtocol::NotValid ) throw NoSuchElementException( _rName, *this ); @@ -367,8 +373,8 @@ Reference< XInterface > ODatabaseContext::loadObjectFromURL(const OUString& _rNa aArgs.put( "URL", _sURL ); aArgs.put( "MacroExecutionMode", MacroExecMode::USE_CONFIG ); aArgs.put( "InteractionHandler", task::InteractionHandler::createWithParent(m_aContext, 0) ); - if (!aMark.isEmpty()) - aArgs.put("StreamRelPath", aMark); + if (!sStreamRelPath.isEmpty()) + aArgs.put("StreamRelPath", sStreamRelPath); Sequence< PropertyValue > aResource( aArgs.getPropertyValues() ); xLoad->load( aResource ); diff --git a/sw/source/uibase/dbui/dbmgr.cxx b/sw/source/uibase/dbui/dbmgr.cxx index 042a0bd..3f81f2e 100644 --- a/sw/source/uibase/dbui/dbmgr.cxx +++ b/sw/source/uibase/dbui/dbmgr.cxx @@ -2631,9 +2631,12 @@ void SwDBManager::LoadAndRegisterEmbeddedDataSource(const SwDBData& rData, const if (xDatabaseContext->hasByName(rData.sDataSource)) xDatabaseContext->revokeObject(rData.sDataSource); - INetURLObject aURLObject(rDocShell.GetMedium()->GetURLObject()); - aURLObject.SetMark(rData.sEmbeddedName); - OUString aURL = aURLObject.GetMainURL(INetURLObject::DECODE_WITH_CHARSET); + // Encode the stream name and the real path into a single URL. + const INetURLObject& rURLObject = rDocShell.GetMedium()->GetURLObject(); + OUString aURL = "vnd.sun.star.pkg://"; + aURL += INetURLObject::encode(rURLObject.GetMainURL(INetURLObject::DECODE_WITH_CHARSET), INetURLObject::PART_AUTHORITY, INetURLObject::ENCODE_ALL); + aURL += "/" + INetURLObject::encode(rData.sEmbeddedName, INetURLObject::PART_FPATH, INetURLObject::ENCODE_ALL); + uno::Reference<uno::XInterface> xDataSource(xDatabaseContext->getByName(aURL), uno::UNO_QUERY); xDatabaseContext->registerObject(rData.sDataSource, xDataSource); } _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits