Kaydet (Commit) 551a5066 authored tarafından Mohammed Abdul Azeem's avatar Mohammed Abdul Azeem Kaydeden (comit) Michael Meeks

GSoC: Mapping legacy sax parser and XFastParser

This implements legacy parser interface using XFastParser, and
unit test is also added.

Change-Id: Ia2eb7d517d80a3f7ec0cf26ffa2e5747ad22b186
Reviewed-on: https://gerrit.libreoffice.org/26229Reviewed-by: 's avatarMichael Meeks <michael.meeks@collabora.com>
Tested-by: 's avatarMichael Meeks <michael.meeks@collabora.com>
üst 4561119a
......@@ -44,6 +44,7 @@ $(eval $(call gb_Library_add_exception_objects,expwrap,\
sax/source/expatwrap/saxwriter \
sax/source/expatwrap/xml2utf \
sax/source/fastparser/fastparser \
sax/source/fastparser/legacyfastparser \
))
# vim: set noet sw=4 ts=4:
......@@ -83,6 +83,7 @@ private:
public:
TestDocumentHandler() {}
const OUString& getString() { return m_aStr; }
void setString( const OUString aStr ) { m_aStr = aStr; }
// XDocumentHandler
virtual void SAL_CALL startDocument() throw (SAXException, RuntimeException, exception) override;
......@@ -319,15 +320,43 @@ public:
}
};
class TestLegacyDocumentHandler : public TestDocumentHandler
{
public:
virtual void SAL_CALL startElement( const OUString& aName, const Reference< XAttributeList >& xAttribs ) throw (SAXException, RuntimeException, exception) override;
virtual void SAL_CALL endElement( const OUString& aName ) throw (SAXException, RuntimeException, exception) override;
};
void SAL_CALL TestLegacyDocumentHandler::startElement( const OUString& aName, const Reference< XAttributeList >& xAttribs )
throw( SAXException, RuntimeException, exception )
{
setString( getString() + aName );
sal_uInt16 len = xAttribs->getLength();
for (sal_uInt16 i = 0; i < len; i++)
{
OUString sAttrName = xAttribs->getNameByIndex(i);
OUString sAttrValue = xAttribs->getValueByIndex(i);
setString( getString() + sAttrName + sAttrValue );
}
}
void SAL_CALL TestLegacyDocumentHandler::endElement( const OUString& aName )
throw( SAXException, RuntimeException, exception )
{
setString( getString() + aName );
}
class XMLImportTest : public test::BootstrapFixture
{
private:
OUString m_sDirPath;
rtl::Reference< TestDocumentHandler > m_xDocumentHandler;
rtl::Reference< TestFastDocumentHandler > m_xFastDocumentHandler;
Reference< TestDocumentHandler > m_xDocumentHandler;
Reference< TestFastDocumentHandler > m_xFastDocumentHandler;
Reference< XParser > m_xParser;
Reference< XFastParser > m_xFastParser;
Reference< XParser > m_xLegacyFastParser;
Reference< TestLegacyDocumentHandler > m_xLegacyDocumentHandler;
Reference< XFastTokenHandler > m_xFastTokenHandler;
public:
......@@ -345,16 +374,19 @@ public:
void XMLImportTest::setUp()
{
test::BootstrapFixture::setUp();
Reference< XComponentContext > xContext = comphelper::getProcessComponentContext();
m_xDocumentHandler.set( new TestDocumentHandler() );
m_xFastDocumentHandler.set( new TestFastDocumentHandler() );
m_xLegacyDocumentHandler.set( new TestLegacyDocumentHandler() );
m_xFastTokenHandler.set( new TestTokenHandler() );
m_xParser = Parser::create(
::comphelper::getProcessComponentContext() );
m_xFastParser = FastParser::create(
::comphelper::getProcessComponentContext() );
m_xParser->setDocumentHandler( m_xDocumentHandler.get() );
m_xFastParser->setFastDocumentHandler( m_xFastDocumentHandler.get() );
m_xParser = Parser::create( xContext );
m_xFastParser = FastParser::create( xContext );
m_xParser->setDocumentHandler( m_xDocumentHandler );
m_xFastParser->setFastDocumentHandler( m_xFastDocumentHandler );
m_xFastParser->setTokenHandler( m_xFastTokenHandler );
m_xLegacyFastParser.set( xContext->getServiceManager()->createInstanceWithContext
( "com.sun.star.xml.sax.LegacyFastParser", xContext ), UNO_QUERY );
m_xLegacyFastParser->setDocumentHandler( m_xLegacyDocumentHandler );
m_sDirPath = m_directories.getPathFromSrc( "/sax/qa/data/" );
}
......@@ -382,7 +414,12 @@ void XMLImportTest::parse()
m_xFastParser->parseStream(source);
const OUString& rFastParserStr = m_xFastDocumentHandler->getString();
source.aInputStream = createStreamFromFile( m_sDirPath + fileNames[i] );
m_xLegacyFastParser->parseStream(source);
const OUString& rLegacyFastParserStr = m_xLegacyDocumentHandler->getString();
CPPUNIT_ASSERT_EQUAL( rParserStr, rFastParserStr );
CPPUNIT_ASSERT_EQUAL( rFastParserStr, rLegacyFastParserStr );
// OString o = OUStringToOString( Str, RTL_TEXTENCODING_ASCII_US );
// CPPUNIT_ASSERT_MESSAGE( string(o.pData->buffer), false );
}
......
......@@ -31,4 +31,8 @@
constructor="com_sun_star_comp_extensions_xml_sax_FastParser_get_implementation">
<service name="com.sun.star.xml.sax.FastParser"/>
</implementation>
<implementation name="com.sun.star.comp.extensions.xml.sax.LegacyFastParser"
constructor="com_sun_star_comp_extensions_xml_sax_LegacyFastParser_get_implementation">
<service name="com.sun.star.xml.sax.LegacyFastParser"/>
</implementation>
</component>
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment