summaryrefslogtreecommitdiff
path: root/xmloff/source/transform/TransformerBase.cxx
diff options
context:
space:
mode:
authorMohammed Abdul Azeem <azeemmysore@gmail.com>2017-03-15 10:20:06 +0530
committerDavid Tardon <dtardon@redhat.com>2017-03-21 09:24:32 +0000
commit9f9e861c6d168e8318b9cdc761a387b0d650e5c0 (patch)
tree02bdb8da78c2b899a5ed9d4132ec02632490c3c2 /xmloff/source/transform/TransformerBase.cxx
parentd7470bab57640a4499500e3c06ace4fb8ab9c4af (diff)
Old-to-new mapping of attributes is moved into a Module:
This should make it easy to reuse the mapping code wherever necessary and restores the loading of writerperfect documents. Change-Id: I505bffa47fe37270b0430d9ae5afec5072762b4c Reviewed-on: https://gerrit.libreoffice.org/35263 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: David Tardon <dtardon@redhat.com>
Diffstat (limited to 'xmloff/source/transform/TransformerBase.cxx')
-rw-r--r--xmloff/source/transform/TransformerBase.cxx59
1 files changed, 5 insertions, 54 deletions
diff --git a/xmloff/source/transform/TransformerBase.cxx b/xmloff/source/transform/TransformerBase.cxx
index cafbc9ac265a..5707f9ddd338 100644
--- a/xmloff/source/transform/TransformerBase.cxx
+++ b/xmloff/source/transform/TransformerBase.cxx
@@ -174,14 +174,10 @@ XMLTransformerActions *XMLTransformerBase::GetUserDefinedActions( sal_uInt16 )
XMLTransformerBase::XMLTransformerBase( XMLTransformerActionInit *pInit,
::xmloff::token::XMLTokenEnum *pTKMapInit )
throw () :
- m_xTokenHandler( new FastTokenHandler() ),
m_pNamespaceMap( new SvXMLNamespaceMap ),
m_pReplaceNamespaceMap( new SvXMLNamespaceMap ),
m_pElemActions( new XMLTransformerActions( pInit ) ),
- m_pTokenMap( new XMLTransformerTokenMap( pTKMapInit ) ),
- m_nElement(0),
- m_xFastAttributes( new sax_fastparser::FastAttributeList( m_xTokenHandler.get(),
- dynamic_cast< sax_fastparser::FastTokenHandlerBase *>( m_xTokenHandler.get() ) ) )
+ m_pTokenMap( new XMLTransformerTokenMap( pTKMapInit ) )
{
GetNamespaceMap().Add( GetXMLToken(XML_NP_XLINK), GetXMLToken(XML_N_XLINK), XML_NAMESPACE_XLINK );
GetNamespaceMap().Add( GetXMLToken(XML_NP_DC), GetXMLToken(XML_N_DC), XML_NAMESPACE_DC );
@@ -413,9 +409,10 @@ void SAL_CALL XMLTransformerBase::initialize( const Sequence< Any >& aArguments
if( cppu::UnoType<XDocumentHandler>::get().isAssignableFrom( pAny->getValueType() ) )
{
m_xHandler.set( *pAny, UNO_QUERY );
- m_xFastHandler.set( m_xHandler.get(), UNO_QUERY );
- if (SvXMLImport *pFastHandler = dynamic_cast<SvXMLImport*>(m_xFastHandler.get()))
- m_xNamespaceHandler = pFastHandler->getNamespaceHandler();
+ // Type change to avoid crashing of dynamic_cast
+ if (SvXMLImport *pFastHandler = dynamic_cast<SvXMLImport*>(
+ uno::Reference< XFastDocumentHandler >( m_xHandler, uno::UNO_QUERY ).get() ) )
+ m_xHandler.set( new SvXMLLegacyToFastDocHandler( pFastHandler ) );
}
// property set to transport data across
@@ -1442,50 +1439,4 @@ bool XMLTransformerBase::isWriter() const
xSI->supportsService("com.sun.star.text.GlobalDocument") );
}
-void XMLTransformerBase::startFastElement( const OUString& rName,
- const uno::Reference< xml::sax::XAttributeList >& xAttrList )
-{
- if( m_xFastHandler.is() )
- {
- OUString aLocalName;
- sal_uInt16 nPrefix = m_pNamespaceMap->GetKeyByAttrName( rName, &aLocalName );
- m_nElement = NAMESPACE_TOKEN( nPrefix ) | m_xTokenHandler->getTokenDirect(
- OUStringToOString( aLocalName, RTL_TEXTENCODING_ASCII_US ).getStr(), aLocalName.getLength() ) ;
- m_xFastAttributes->clear();
-
- sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
- for( sal_Int16 i=0; i < nAttrCount; i++ )
- {
- OUString aLocalAttrName;
- const OUString& rAttrName = xAttrList->getNameByIndex( i );
- const OUString& rAttrValue = xAttrList->getValueByIndex( i );
- sal_uInt16 nAttrPrefix = m_pNamespaceMap->GetKeyByAttrName( rAttrName, &aLocalAttrName );
- if( XML_NAMESPACE_XMLNS == nAttrPrefix )
- {
- if ( m_xNamespaceHandler.is() )
- m_xNamespaceHandler->registerNamespace( aLocalAttrName, rAttrValue );
- }
- else
- {
- sal_Int32 nAttr = NAMESPACE_TOKEN( nAttrPrefix ) | m_xTokenHandler->getTokenDirect(
- OUStringToOString( aLocalAttrName, RTL_TEXTENCODING_ASCII_US ).getStr(), aLocalAttrName.getLength() ) ;
- m_xFastAttributes->add( nAttr, OUStringToOString( rAttrValue, RTL_TEXTENCODING_ASCII_US ).getStr() );
- }
- }
- m_xFastHandler->startFastElement( m_nElement, m_xFastAttributes.get() );
- }
- else
- m_xHandler->startElement( rName, xAttrList );
-}
-
-void XMLTransformerBase::endFastElement( const OUString& rName )
-{
- if( m_xFastHandler.is() )
- m_xFastHandler->endFastElement( m_nElement );
- else
- m_xHandler->endElement( rName );
-}
-
-
-
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */