[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