[Libreoffice-commits] core.git: writerperfect/CppunitTest_writerperfect_wpftimport.mk writerperfect/inc writerperfect/source
Noel (via logerrit)
logerrit at kemper.freedesktop.org
Fri Oct 16 12:19:06 UTC 2020
writerperfect/CppunitTest_writerperfect_wpftimport.mk | 1
writerperfect/inc/ImportFilter.hxx | 18 ++++++++++-----
writerperfect/source/calc/MSWorksCalcImportFilter.cxx | 15 ++++++++----
writerperfect/source/writer/WordPerfectImportFilter.cxx | 19 ++++++++++------
4 files changed, 35 insertions(+), 18 deletions(-)
New commits:
commit 90fa4426a1be8874baacd21eff8c7c46f8a4371a
Author: Noel <noelgrandin at gmail.com>
AuthorDate: Fri Oct 16 09:14:52 2020 +0200
Commit: Noel Grandin <noel.grandin at collabora.co.uk>
CommitDate: Fri Oct 16 14:18:19 2020 +0200
writerfilter: use the fastparser API when possible
part of the process of making SvXMLImport fastparser-only
Change-Id: I9bb2d337954354be63984892e1fc4a7950ca3628
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/104411
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin at collabora.co.uk>
diff --git a/writerperfect/CppunitTest_writerperfect_wpftimport.mk b/writerperfect/CppunitTest_writerperfect_wpftimport.mk
index 101908aadeb4..b43836d45e7e 100644
--- a/writerperfect/CppunitTest_writerperfect_wpftimport.mk
+++ b/writerperfect/CppunitTest_writerperfect_wpftimport.mk
@@ -32,6 +32,7 @@ $(eval $(call gb_CppunitTest_use_libraries,writerperfect_wpftimport,\
vcl \
wpftqahelper \
writerperfect \
+ xo \
))
$(eval $(call gb_CppunitTest_use_external,writerperfect_wpftimport,boost_headers))
diff --git a/writerperfect/inc/ImportFilter.hxx b/writerperfect/inc/ImportFilter.hxx
index 4328b902181c..56f352556c73 100644
--- a/writerperfect/inc/ImportFilter.hxx
+++ b/writerperfect/inc/ImportFilter.hxx
@@ -18,7 +18,7 @@
#include <com/sun/star/lang/XServiceInfo.hpp>
#include <com/sun/star/uno/Reference.h>
#include <com/sun/star/uno/XComponentContext.hpp>
-#include <com/sun/star/xml/sax/XDocumentHandler.hpp>
+#include <com/sun/star/xml/sax/XFastDocumentHandler.hpp>
#include <osl/diagnose.h>
#include <cppuhelper/implbase.hxx>
@@ -26,6 +26,7 @@
#include <unotools/mediadescriptor.hxx>
#include <vcl/svapp.hxx>
#include <vcl/weld.hxx>
+#include <xmloff/xmlimp.hxx>
#include "DocumentHandler.hxx"
#include "WPXSvInputStream.hxx"
@@ -70,19 +71,24 @@ public:
aDescriptor["ParentWindow"] >>= xDialogParent;
// An XML import service: what we push sax messages to...
- css::uno::Reference<css::xml::sax::XDocumentHandler> xInternalHandler(
- mxContext->getServiceManager()->createInstanceWithContext(
- DocumentHandlerFor<Generator>::name(), mxContext),
- css::uno::UNO_QUERY_THROW);
+ css::uno::Reference<XInterface> xInternalFilter
+ = mxContext->getServiceManager()->createInstanceWithContext(
+ DocumentHandlerFor<Generator>::name(), mxContext);
+ assert(xInternalFilter);
+ css::uno::Reference<css::xml::sax::XFastDocumentHandler> xInternalHandler(
+ xInternalFilter, css::uno::UNO_QUERY);
+ assert(xInternalHandler);
// The XImporter sets up an empty target document for XDocumentHandler to write to...
css::uno::Reference<css::document::XImporter> xImporter(xInternalHandler,
css::uno::UNO_QUERY);
+ assert(xImporter);
xImporter->setTargetDocument(mxDoc);
// OO Graphics Handler: abstract class to handle document SAX messages, concrete implementation here
// writes to in-memory target doc
- DocumentHandler aHandler(xInternalHandler);
+ DocumentHandler aHandler(
+ new SvXMLLegacyToFastDocHandler(dynamic_cast<SvXMLImport*>(xInternalHandler.get())));
WPXSvInputStream input(xInputStream);
diff --git a/writerperfect/source/calc/MSWorksCalcImportFilter.cxx b/writerperfect/source/calc/MSWorksCalcImportFilter.cxx
index 521b7c0dbf5d..83035d8b9926 100644
--- a/writerperfect/source/calc/MSWorksCalcImportFilter.cxx
+++ b/writerperfect/source/calc/MSWorksCalcImportFilter.cxx
@@ -317,18 +317,23 @@ MSWorksCalcImportFilter::filter(const css::uno::Sequence<css::beans::PropertyVal
}
// An XML import service: what we push sax messages to...
- css::uno::Reference<css::xml::sax::XDocumentHandler> xInternalHandler(
- getXContext()->getServiceManager()->createInstanceWithContext(
- writerperfect::DocumentHandlerFor<OdsGenerator>::name(), getXContext()),
- css::uno::UNO_QUERY_THROW);
+ css::uno::Reference<XInterface> xInternalFilter
+ = getXContext()->getServiceManager()->createInstanceWithContext(
+ writerperfect::DocumentHandlerFor<OdsGenerator>::name(), getXContext());
+ assert(xInternalFilter);
+ css::uno::Reference<css::xml::sax::XFastDocumentHandler> xInternalHandler(xInternalFilter,
+ css::uno::UNO_QUERY);
+ assert(xInternalHandler);
// The XImporter sets up an empty target document for XDocumentHandler to write to...
css::uno::Reference<css::document::XImporter> xImporter(xInternalHandler, css::uno::UNO_QUERY);
+ assert(xImporter);
xImporter->setTargetDocument(getTargetDocument());
// OO Graphics Handler: abstract class to handle document SAX messages, concrete implementation here
// writes to in-memory target doc
- writerperfect::DocumentHandler aHandler(xInternalHandler);
+ writerperfect::DocumentHandler aHandler(
+ new SvXMLLegacyToFastDocHandler(dynamic_cast<SvXMLImport*>(xInternalHandler.get())));
writerperfect::WPXSvInputStream input(xInputStream);
OdsGenerator exporter;
diff --git a/writerperfect/source/writer/WordPerfectImportFilter.cxx b/writerperfect/source/writer/WordPerfectImportFilter.cxx
index ca27d5fbc1ec..8888134e2ebf 100644
--- a/writerperfect/source/writer/WordPerfectImportFilter.cxx
+++ b/writerperfect/source/writer/WordPerfectImportFilter.cxx
@@ -12,7 +12,7 @@
#include <com/sun/star/awt/XWindow.hpp>
#include <com/sun/star/io/XInputStream.hpp>
-#include <com/sun/star/xml/sax/XDocumentHandler.hpp>
+#include <com/sun/star/xml/sax/XFastDocumentHandler.hpp>
#include <com/sun/star/uno/Reference.h>
#include <cppuhelper/supportsservice.hxx>
@@ -22,6 +22,7 @@
#include <sfx2/passwd.hxx>
#include <ucbhelper/content.hxx>
#include <vcl/svapp.hxx>
+#include <xmloff/xmlimp.hxx>
#include <libwpd/libwpd.h>
#include <libwpg/libwpg.h>
@@ -33,7 +34,7 @@ using com::sun::star::uno::Reference;
using com::sun::star::awt::XWindow;
using com::sun::star::document::XImporter;
using com::sun::star::io::XInputStream;
-using com::sun::star::xml::sax::XDocumentHandler;
+using com::sun::star::xml::sax::XFastDocumentHandler;
using writerperfect::DocumentHandler;
using writerperfect::WPXSvInputStream;
@@ -122,10 +123,13 @@ bool WordPerfectImportFilter::importImpl(
}
// An XML import service: what we push sax messages to.
- Reference<XDocumentHandler> xInternalHandler(
- mxContext->getServiceManager()->createInstanceWithContext(
- "com.sun.star.comp.Writer.XMLOasisImporter", mxContext),
- css::uno::UNO_QUERY_THROW);
+ Reference<XInterface> xInternalFilter
+ = mxContext->getServiceManager()->createInstanceWithContext(
+ "com.sun.star.comp.Writer.XMLOasisImporter", mxContext);
+ assert(xInternalFilter);
+ css::uno::Reference<css::xml::sax::XFastDocumentHandler> xInternalHandler(xInternalFilter,
+ css::uno::UNO_QUERY);
+ assert(xInternalHandler);
// The XImporter sets up an empty target document for XDocumentHandler to write to.
Reference<XImporter> xImporter(xInternalHandler, css::uno::UNO_QUERY);
@@ -133,7 +137,8 @@ bool WordPerfectImportFilter::importImpl(
// OO Document Handler: abstract class to handle document SAX messages, concrete implementation here
// writes to in-memory target doc
- DocumentHandler aHandler(xInternalHandler);
+ DocumentHandler aHandler(
+ new SvXMLLegacyToFastDocHandler(dynamic_cast<SvXMLImport*>(xInternalHandler.get())));
OdtGenerator collector;
collector.addDocumentHandler(&aHandler, ODF_FLAT_XML);
More information about the Libreoffice-commits
mailing list