tdf#137916 get report xml importer working again
Change-Id: I238373bdfd35001c09a67b73cc38f5a96640e2ba
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/105190
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Tested-by: Jenkins
diff --git a/reportdesign/source/filter/xml/xmlfilter.cxx b/reportdesign/source/filter/xml/xmlfilter.cxx
index d3d495d..487ee30 100644
--- a/reportdesign/source/filter/xml/xmlfilter.cxx
+++ b/reportdesign/source/filter/xml/xmlfilter.cxx
@@ -114,7 +114,7 @@ static ErrCode ReadThroughComponent(
const uno::Reference<XInputStream>& xInputStream,
const uno::Reference<XComponent>& xModelComponent,
const uno::Reference<XComponentContext> & rContext,
const uno::Reference< XDocumentHandler >& _xFilter )
const uno::Reference<XFastParser>& rFastParser )
{
OSL_ENSURE(xInputStream.is(), "input stream missing");
OSL_ENSURE(xModelComponent.is(), "document missing");
@@ -125,27 +125,18 @@ static ErrCode ReadThroughComponent(
aParserInput.aInputStream = xInputStream;
// get filter
SAL_WARN_IF( !_xFilter.is(), "reportdesign", "Can't instantiate filter component." );
if( !_xFilter.is() )
SAL_WARN_IF( !rFastParser.is(), "reportdesign", "Can't instantiate filter component." );
if( !rFastParser.is() )
return ErrCode(1);
// connect model and filter
uno::Reference < XImporter > xImporter( _xFilter, UNO_QUERY );
uno::Reference < XImporter > xImporter( rFastParser, UNO_QUERY );
xImporter->setTargetDocument( xModelComponent );
// finally, parser the stream
try
{
uno::Reference < XFastParser > xFastParser( _xFilter, UNO_QUERY );\
if (xFastParser.is())
xFastParser->parseStream( aParserInput );
else
{
uno::Reference< XParser > xParser = xml::sax::Parser::create(rContext);
// connect parser and filter
xParser->setDocumentHandler( _xFilter );
xParser->parseStream( aParserInput );
}
rFastParser->parseStream( aParserInput );
}
catch (const SAXParseException&)
{
@@ -233,7 +224,8 @@ static ErrCode ReadThroughComponent(
if ( _xProp.is() )
aFilterCompArgs[ nArgs++ ] <<= _xProp;
Reference< xml::sax::XDocumentHandler > xDocHandler(
// the underlying SvXMLImport implements XFastParser, XImporter, XFastDocumentHandler
Reference< XFastParser > xFastParser(
rxContext->getServiceManager()->createInstanceWithArgumentsAndContext(_sFilterName, aFilterCompArgs, rxContext),
uno::UNO_QUERY_THROW );
uno::Reference< XInputStream > xInputStream = xDocStream->getInputStream();
@@ -241,7 +233,7 @@ static ErrCode ReadThroughComponent(
return ReadThroughComponent( xInputStream
,xModelComponent
,rxContext
,xDocHandler );
,xFastParser );
}
// TODO/LATER: better error handling