diff options
author | Noel Grandin <noel@peralex.com> | 2012-10-15 09:59:33 +0200 |
---|---|---|
committer | Stephan Bergmann <sbergman@redhat.com> | 2012-10-23 14:16:09 +0200 |
commit | 8aa5946afeac9d86f84239bd7ef101493059c3f5 (patch) | |
tree | e3961b25b8702dc22a60aee07f0101d93b2d3b56 /package | |
parent | 468acb7f521317dbededd0c31a6cfae979446104 (diff) |
fdo#46808, Adapt packages::manifest::ManifestWriter UNO service to new style
The service already existed, it just did not have an IDL file
Change-Id: I04c617a97262e9cc96af17fcae9cc084245c0149
Diffstat (limited to 'package')
-rw-r--r-- | package/source/zippackage/ZipPackage.cxx | 65 |
1 files changed, 26 insertions, 39 deletions
diff --git a/package/source/zippackage/ZipPackage.cxx b/package/source/zippackage/ZipPackage.cxx index dd2cf380e027..35484bc26571 100644 --- a/package/source/zippackage/ZipPackage.cxx +++ b/package/source/zippackage/ZipPackage.cxx @@ -30,7 +30,7 @@ #include <com/sun/star/beans/PropertyValue.hpp> #include <com/sun/star/packages/zip/ZipConstants.hpp> #include <com/sun/star/packages/manifest/ManifestReader.hpp> -#include <com/sun/star/packages/manifest/XManifestWriter.hpp> +#include <com/sun/star/packages/manifest/ManifestWriter.hpp> #include <com/sun/star/io/TempFile.hpp> #include <com/sun/star/io/XStream.hpp> #include <com/sun/star/io/XInputStream.hpp> @@ -1012,48 +1012,35 @@ void ZipPackage::WriteMimetypeMagicFile( ZipOutputStream& aZipOut ) void ZipPackage::WriteManifest( ZipOutputStream& aZipOut, const vector< uno::Sequence < PropertyValue > >& aManList ) { // Write the manifest - uno::Reference < XOutputStream > xManOutStream; - uno::Reference < XManifestWriter > xWriter ( m_xFactory->createInstance("com.sun.star.packages.manifest.ManifestWriter"), UNO_QUERY ); - if ( xWriter.is() ) - { - ZipEntry * pEntry = new ZipEntry; - ZipPackageBuffer *pBuffer = new ZipPackageBuffer( n_ConstBufferSize ); - xManOutStream = uno::Reference < XOutputStream > ( *pBuffer, UNO_QUERY ); - - pEntry->sPath = "META-INF/manifest.xml"; - pEntry->nMethod = DEFLATED; - pEntry->nCrc = -1; - pEntry->nSize = pEntry->nCompressedSize = -1; - pEntry->nTime = ZipOutputStream::getCurrentDosTime(); - - // Convert vector into a uno::Sequence - uno::Sequence < uno::Sequence < PropertyValue > > aManifestSequence ( aManList.size() ); - sal_Int32 nInd = 0; - for ( vector < uno::Sequence < PropertyValue > >::const_iterator aIter = aManList.begin(), aEnd = aManList.end(); - aIter != aEnd; - ++aIter, ++nInd ) - { - aManifestSequence[nInd] = ( *aIter ); - } - xWriter->writeManifestSequence ( xManOutStream, aManifestSequence ); + uno::Reference < XManifestWriter > xWriter = ManifestWriter::create( comphelper::getComponentContext(m_xFactory) ); + ZipEntry * pEntry = new ZipEntry; + ZipPackageBuffer *pBuffer = new ZipPackageBuffer( n_ConstBufferSize ); + uno::Reference < XOutputStream > xManOutStream( *pBuffer, UNO_QUERY ); - sal_Int32 nBufferLength = static_cast < sal_Int32 > ( pBuffer->getPosition() ); - pBuffer->realloc( nBufferLength ); + pEntry->sPath = "META-INF/manifest.xml"; + pEntry->nMethod = DEFLATED; + pEntry->nCrc = -1; + pEntry->nSize = pEntry->nCompressedSize = -1; + pEntry->nTime = ZipOutputStream::getCurrentDosTime(); - // the manifest.xml is never encrypted - so pass an empty reference - aZipOut.putNextEntry( *pEntry, NULL ); - aZipOut.write( pBuffer->getSequence(), 0, nBufferLength ); - aZipOut.closeEntry(); - } - else + // Convert vector into a uno::Sequence + uno::Sequence < uno::Sequence < PropertyValue > > aManifestSequence ( aManList.size() ); + sal_Int32 nInd = 0; + for ( vector < uno::Sequence < PropertyValue > >::const_iterator aIter = aManList.begin(), aEnd = aManList.end(); + aIter != aEnd; + ++aIter, ++nInd ) { - OSL_FAIL( "Couldn't get a ManifestWriter!" ); - IOException aException; - throw WrappedTargetException( - OSL_LOG_PREFIX "Couldn't get a ManifestWriter!", - static_cast < OWeakObject * > ( this ), - makeAny( aException ) ); + aManifestSequence[nInd] = ( *aIter ); } + xWriter->writeManifestSequence ( xManOutStream, aManifestSequence ); + + sal_Int32 nBufferLength = static_cast < sal_Int32 > ( pBuffer->getPosition() ); + pBuffer->realloc( nBufferLength ); + + // the manifest.xml is never encrypted - so pass an empty reference + aZipOut.putNextEntry( *pEntry, NULL ); + aZipOut.write( pBuffer->getSequence(), 0, nBufferLength ); + aZipOut.closeEntry(); } //-------------------------------------------------------- |