summaryrefslogtreecommitdiff
path: root/sfx2
diff options
context:
space:
mode:
authorNoel Grandin <noelgrandin@gmail.com>2020-10-17 08:08:36 +0200
committerNoel Grandin <noel.grandin@collabora.co.uk>2020-10-17 10:28:29 +0200
commitcfe5a5044845a3fc90e3634e996edb4d85808d3c (patch)
tree66c056196534ddecaf2a71bae2c3664895cdf5d2 /sfx2
parent3059f556f6818b66b2fa988c69664f5a98f4c075 (diff)
sfx2: use the fastparser API when possible
part of the process of making SvXMLImport fastparser-only Change-Id: Ib5acae303483eb86338cb39dd97a357ff90b1870 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/104453 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Diffstat (limited to 'sfx2')
-rw-r--r--sfx2/source/doc/SfxDocumentMetaData.cxx22
1 files changed, 9 insertions, 13 deletions
diff --git a/sfx2/source/doc/SfxDocumentMetaData.cxx b/sfx2/source/doc/SfxDocumentMetaData.cxx
index 38ba5b33b472..578322556b60 100644
--- a/sfx2/source/doc/SfxDocumentMetaData.cxx
+++ b/sfx2/source/doc/SfxDocumentMetaData.cxx
@@ -1737,7 +1737,6 @@ SfxDocumentMetaData::loadFromStorage(
// create DOM parser service
css::uno::Reference<css::lang::XMultiComponentFactory> xMsf (
m_xContext->getServiceManager());
- css::uno::Reference<css::xml::sax::XParser> xParser = css::xml::sax::Parser::create(m_xContext);
css::xml::sax::InputSource input;
input.aInputStream = xInStream;
@@ -1761,21 +1760,18 @@ SfxDocumentMetaData::loadFromStorage(
css::uno::Sequence< css::uno::Any > args(1);
args[0] <<= xPropArg;
- css::uno::Reference<css::xml::sax::XDocumentHandler> xDocHandler (
+ // the underlying SvXMLImport implements XFastParser, XImporter, XFastDocumentHandler
+ css::uno::Reference<XInterface> xFilter =
xMsf->createInstanceWithArgumentsAndContext(
- OUString::createFromAscii(pServiceName), args, m_xContext),
- css::uno::UNO_QUERY_THROW);
- css::uno::Reference<css::document::XImporter> xImp (xDocHandler,
- css::uno::UNO_QUERY_THROW);
+ OUString::createFromAscii(pServiceName), args, m_xContext);
+ assert(xFilter);
+ css::uno::Reference<css::xml::sax::XFastParser> xDocHandler(xFilter, css::uno::UNO_QUERY);
+ assert(xDocHandler);
+ css::uno::Reference<css::document::XImporter> xImp(xDocHandler, css::uno::UNO_QUERY);
+ assert(xImp);
xImp->setTargetDocument(css::uno::Reference<css::lang::XComponent>(this));
- xParser->setDocumentHandler(xDocHandler);
- css::uno::Reference< css::xml::sax::XFastParser > xFastParser = dynamic_cast<
- css::xml::sax::XFastParser* >( xDocHandler.get() );
try {
- if( xFastParser.is() )
- xFastParser->parseStream(input);
- else
- xParser->parseStream(input);
+ xDocHandler->parseStream(input);
} catch (const css::xml::sax::SAXException &) {
throw css::io::WrongFormatException(
"SfxDocumentMetaData::loadFromStorage:"