diff options
author | Mohammed Abdul Azeem <azeemmysore@gmail.com> | 2017-10-01 14:11:11 +0530 |
---|---|---|
committer | Michael Meeks <michael.meeks@collabora.com> | 2018-03-14 14:12:08 +0100 |
commit | bf46b46a1d734348096936284fb8a76e977936d0 (patch) | |
tree | a76c30897cf1e49491bf26580c823701b6d74778 /sc | |
parent | 1b61d0417bf46896ef1f1bd1e1a8209588fc157a (diff) |
Moving XSAXDocumentBuilder2 to use XFastDocumentHandler:
This is used in parsing of meta Contexts across different
modules. This also involved moving to XFastParser for
parsing xml filters in sw, sd, starmath.
Change-Id: Ic663aaac6cb20ee8ce5b97cae87c93220f5a2929
Reviewed-on: https://gerrit.libreoffice.org/42989
Reviewed-by: Michael Meeks <michael.meeks@collabora.com>
Tested-by: Jenkins <ci@libreoffice.org>
Diffstat (limited to 'sc')
-rw-r--r-- | sc/source/filter/xml/xmlimprt.cxx | 92 | ||||
-rw-r--r-- | sc/source/filter/xml/xmlimprt.hxx | 8 |
2 files changed, 20 insertions, 80 deletions
diff --git a/sc/source/filter/xml/xmlimprt.cxx b/sc/source/filter/xml/xmlimprt.cxx index 4e2c3bb56531..c85589ac9a73 100644 --- a/sc/source/filter/xml/xmlimprt.cxx +++ b/sc/source/filter/xml/xmlimprt.cxx @@ -234,10 +234,6 @@ protected: ScXMLImport& GetScImport() { return static_cast<ScXMLImport&>(GetImport()); } public: - ScXMLDocContext_Impl( ScXMLImport& rImport, - sal_uInt16 nPrfx, - const OUString& rLName ); - ScXMLDocContext_Impl( ScXMLImport& rImport ); virtual SvXMLImportContextRef CreateChildContext( sal_uInt16 nPrefix, @@ -256,13 +252,6 @@ public: virtual void SAL_CALL endFastElement(sal_Int32 nElement) override; }; -ScXMLDocContext_Impl::ScXMLDocContext_Impl( ScXMLImport& rImport, sal_uInt16 nPrfx, - const OUString& rLName ) : -SvXMLImportContext( rImport, nPrfx, rLName ) -{ - -} - ScXMLDocContext_Impl::ScXMLDocContext_Impl( ScXMLImport& rImport ) : SvXMLImportContext( rImport ) { @@ -273,38 +262,23 @@ class ScXMLFlatDocContext_Impl : public ScXMLDocContext_Impl, public SvXMLMetaDocumentContext { public: - ScXMLFlatDocContext_Impl( ScXMLImport& i_rImport, - sal_uInt16 i_nPrefix, const OUString & i_rLName, - const uno::Reference<document::XDocumentProperties>& i_xDocProps); ScXMLFlatDocContext_Impl( ScXMLImport& i_rImport, const uno::Reference<document::XDocumentProperties>& i_xDocProps); - virtual SvXMLImportContextRef CreateChildContext( - sal_uInt16 i_nPrefix, const OUString& i_rLocalName, - const uno::Reference<xml::sax::XAttributeList>& i_xAttrList) override; - virtual void SAL_CALL startFastElement (sal_Int32 nElement, const css::uno::Reference< css::xml::sax::XFastAttributeList >& xAttrList) override; virtual void SAL_CALL endFastElement(sal_Int32 nElement) override; + virtual void SAL_CALL characters( const OUString& aChars ) override; + virtual css::uno::Reference< css::xml::sax::XFastContextHandler > SAL_CALL createFastChildContext( sal_Int32 nElement, const css::uno::Reference<css::xml::sax::XFastAttributeList>& xAttrList ) override; }; ScXMLFlatDocContext_Impl::ScXMLFlatDocContext_Impl( ScXMLImport& i_rImport, - sal_uInt16 i_nPrefix, const OUString & i_rLName, - const uno::Reference<document::XDocumentProperties>& i_xDocProps) : -SvXMLImportContext(i_rImport, i_nPrefix, i_rLName), -ScXMLDocContext_Impl(i_rImport, i_nPrefix, i_rLName), -SvXMLMetaDocumentContext(i_rImport, i_nPrefix, i_rLName, - i_xDocProps) -{ -} - -ScXMLFlatDocContext_Impl::ScXMLFlatDocContext_Impl( ScXMLImport& i_rImport, const uno::Reference<document::XDocumentProperties>& i_xDocProps) : SvXMLImportContext(i_rImport), ScXMLDocContext_Impl(i_rImport), @@ -312,29 +286,14 @@ SvXMLMetaDocumentContext(i_rImport, i_xDocProps) { } -SvXMLImportContextRef ScXMLFlatDocContext_Impl::CreateChildContext( - sal_uInt16 i_nPrefix, const OUString& i_rLocalName, - const uno::Reference<xml::sax::XAttributeList>& i_xAttrList) -{ - // behave like meta base class iff we encounter office:meta - const SvXMLTokenMap& rTokenMap = GetScImport().GetDocElemTokenMap(); - if ( XML_TOK_DOC_META == rTokenMap.Get( i_nPrefix, i_rLocalName ) ) { - return SvXMLMetaDocumentContext::CreateChildContext( - i_nPrefix, i_rLocalName, i_xAttrList ); - } else { - return ScXMLDocContext_Impl::CreateChildContext( - i_nPrefix, i_rLocalName, i_xAttrList ); - } -} - uno::Reference< xml::sax::XFastContextHandler > SAL_CALL ScXMLFlatDocContext_Impl::createFastChildContext( sal_Int32 nElement, const uno::Reference< xml::sax::XFastAttributeList > & xAttrList ) { - if ( nElement != XML_ELEMENT( OFFICE, XML_META ) ) - return ScXMLDocContext_Impl::createFastChildContext( nElement, xAttrList ); + if ( nElement == XML_ELEMENT( OFFICE, XML_META ) ) + return SvXMLMetaDocumentContext::createFastChildContext( nElement, xAttrList ); else - return new SvXMLImportContext( GetImport() ); + return ScXMLDocContext_Impl::createFastChildContext( nElement, xAttrList ); } void SAL_CALL ScXMLFlatDocContext_Impl::startFastElement(sal_Int32 nElement, @@ -348,6 +307,11 @@ void SAL_CALL ScXMLFlatDocContext_Impl::endFastElement(sal_Int32 nElement) SvXMLMetaDocumentContext::endFastElement( nElement ); } +void SAL_CALL ScXMLFlatDocContext_Impl::characters(const OUString& rChars) +{ + SvXMLMetaDocumentContext::characters(rChars); +} + class ScXMLBodyContext_Impl : public ScXMLImportContext { public: @@ -659,29 +623,6 @@ sc::PivotTableSources& ScXMLImport::GetPivotTableSources() return *mpPivotSources; } -SvXMLImportContext *ScXMLImport::CreateDocumentContext( sal_uInt16 nPrefix, - const OUString& rLocalName, - const uno::Reference<xml::sax::XAttributeList>& xAttrList ) -{ - SvXMLImportContext *pContext = nullptr; - - if ( (XML_NAMESPACE_OFFICE == nPrefix) && - ( IsXMLToken(rLocalName, XML_DOCUMENT_META)) ) { - pContext = CreateMetaContext(rLocalName); - } else if ( (XML_NAMESPACE_OFFICE == nPrefix) && - ( IsXMLToken(rLocalName, XML_DOCUMENT)) ) { - uno::Reference<document::XDocumentPropertiesSupplier> xDPS( - GetModel(), uno::UNO_QUERY_THROW); - // flat OpenDocument file format - pContext = new ScXMLFlatDocContext_Impl( *this, nPrefix, rLocalName, - xDPS->getDocumentProperties()); - } - else - pContext = SvXMLImport::CreateDocumentContext( nPrefix, rLocalName, xAttrList ); - - return pContext; -} - SvXMLImportContext *ScXMLImport::CreateFastContext( sal_Int32 nElement, const uno::Reference< xml::sax::XFastAttributeList >& /*xAttrList*/ ) { @@ -695,6 +636,10 @@ SvXMLImportContext *ScXMLImport::CreateFastContext( sal_Int32 nElement, pContext = new ScXMLDocContext_Impl( *this ); break; + case XML_ELEMENT( OFFICE, XML_DOCUMENT_META ): + pContext = CreateMetaContext(nElement); + break; + case XML_ELEMENT( OFFICE, XML_DOCUMENT ): { uno::Reference<document::XDocumentPropertiesSupplier> xDPS( @@ -847,7 +792,7 @@ SvXMLImportContext *ScXMLImport::CreateBodyContext(const rtl::Reference<sax_fast } SvXMLImportContext *ScXMLImport::CreateMetaContext( - const OUString& rLocalName ) + const sal_Int32 /*nElement*/ ) { SvXMLImportContext* pContext = nullptr; @@ -857,14 +802,11 @@ SvXMLImportContext *ScXMLImport::CreateMetaContext( GetModel(), uno::UNO_QUERY_THROW); uno::Reference<document::XDocumentProperties> const xDocProps( (IsStylesOnlyMode()) ? nullptr : xDPS->getDocumentProperties()); - pContext = new SvXMLMetaDocumentContext(*this, - XML_NAMESPACE_OFFICE, rLocalName, - xDocProps); + pContext = new SvXMLMetaDocumentContext(*this, xDocProps); } if( !pContext ) - pContext = new SvXMLImportContext( *this, - XML_NAMESPACE_OFFICE, rLocalName ); + pContext = new SvXMLImportContext( *this ); return pContext; } diff --git a/sc/source/filter/xml/xmlimprt.hxx b/sc/source/filter/xml/xmlimprt.hxx index 1639c3285b0b..ed7df03a0f79 100644 --- a/sc/source/filter/xml/xmlimprt.hxx +++ b/sc/source/filter/xml/xmlimprt.hxx @@ -299,10 +299,8 @@ class ScXMLImport: public SvXMLImport protected: - virtual SvXMLImportContext *CreateDocumentContext(sal_uInt16 nPrefix, - const OUString& rLocalName, - const css::uno::Reference<css::xml::sax::XAttributeList>& xAttrList ) override; - + // This method is called after the namespace map has been updated, but + // before a context for the current element has been pushed. virtual SvXMLImportContext *CreateFastContext( sal_Int32 nElement, const ::css::uno::Reference< ::css::xml::sax::XFastAttributeList >& xAttrList ) override; @@ -322,7 +320,7 @@ public: // NB: in contrast to other CreateFooContexts, this particular one handles // the root element (i.e. office:document-meta) SvXMLImportContext *CreateMetaContext( - const OUString& rLocalName ); + const sal_Int32 nElement ); SvXMLImportContext *CreateFontDeclsContext(const sal_uInt16 nPrefix, const OUString& rLocalName, const css::uno::Reference<css::xml::sax::XAttributeList>& xAttrList); SvXMLImportContext *CreateScriptContext( |