From d6b39054fc0d47e01f01954279abf3ba3d8e9242 Mon Sep 17 00:00:00 2001 From: Stephan Bergmann Date: Thu, 23 Feb 2012 10:47:03 +0100 Subject: Adapted Reader to safer-to-use salhelper::Thread ...which required some Reference namespace clean up. --- filter/Library_xsltfilter.mk | 1 + filter/source/xsltdialog/xmlfiltertabpagexslt.cxx | 6 +- filter/source/xsltfilter/LibXSLTTransformer.cxx | 47 +++++++------- filter/source/xsltfilter/LibXSLTTransformer.hxx | 46 +++++++------ filter/source/xsltfilter/OleHandler.hxx | 10 +-- filter/source/xsltfilter/XSLTFilter.cxx | 78 ++++++++++++----------- 6 files changed, 94 insertions(+), 94 deletions(-) (limited to 'filter') diff --git a/filter/Library_xsltfilter.mk b/filter/Library_xsltfilter.mk index 5a103e0c2ed9..b9e7a6ebc0ae 100644 --- a/filter/Library_xsltfilter.mk +++ b/filter/Library_xsltfilter.mk @@ -40,6 +40,7 @@ $(eval $(call gb_Library_add_linked_libs,xsltfilter,\ cppuhelper \ cppu \ sal \ + salhelper \ $(gb_STDLIBS) \ )) diff --git a/filter/source/xsltdialog/xmlfiltertabpagexslt.cxx b/filter/source/xsltdialog/xmlfiltertabpagexslt.cxx index 9df711f327b6..1a581736b05f 100644 --- a/filter/source/xsltdialog/xmlfiltertabpagexslt.cxx +++ b/filter/source/xsltdialog/xmlfiltertabpagexslt.cxx @@ -44,7 +44,9 @@ using namespace ::com::sun::star::uno; using namespace ::com::sun::star::frame; using namespace ::com::sun::star::lang; -XMLFilterTabPageXSLT::XMLFilterTabPageXSLT( Window* pParent, ResMgr& rResMgr, const Reference< XMultiServiceFactory >& rxMSF ) : +namespace css = com::sun::star; + +XMLFilterTabPageXSLT::XMLFilterTabPageXSLT( Window* pParent, ResMgr& rResMgr, const css::uno::Reference< XMultiServiceFactory >& rxMSF ) : TabPage( pParent, ResId( RID_XML_FILTER_TABPAGE_XSLT, rResMgr ) ), maFTDocType( this, ResId( FT_XML_DOCTYPE, rResMgr ) ), @@ -80,7 +82,7 @@ XMLFilterTabPageXSLT::XMLFilterTabPageXSLT( Window* pParent, ResMgr& rResMgr, co try { - Reference< XConfigManager > xCfgMgr( rxMSF->createInstance(OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.config.SpecialConfigManager" ))), UNO_QUERY ); + css::uno::Reference< XConfigManager > xCfgMgr( rxMSF->createInstance(OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.config.SpecialConfigManager" ))), UNO_QUERY ); if( xCfgMgr.is() ) sInstPath = xCfgMgr->substituteVariables( sInstPath ); } diff --git a/filter/source/xsltfilter/LibXSLTTransformer.cxx b/filter/source/xsltfilter/LibXSLTTransformer.cxx index 599b80c92087..ff57fc1f60bd 100644 --- a/filter/source/xsltfilter/LibXSLTTransformer.cxx +++ b/filter/source/xsltfilter/LibXSLTTransformer.cxx @@ -79,6 +79,8 @@ using ::std::list; using ::std::map; using ::std::pair; +namespace css = com::sun::star; + #define _INPUT_BUFFER_SIZE 4096 #define _OUTPUT_BUFFER_SIZE 4096 @@ -228,8 +230,8 @@ namespace XSLT }; Reader::Reader(LibXSLTTransformer* transformer) : - m_transformer(transformer), m_terminated(false), m_readBuf( - INPUT_BUFFER_SIZE), m_writeBuf(OUTPUT_BUFFER_SIZE) + Thread("LibXSLTTransformer"), m_transformer(transformer), + m_readBuf(INPUT_BUFFER_SIZE), m_writeBuf(OUTPUT_BUFFER_SIZE) { LIBXML_TEST_VERSION; } @@ -242,7 +244,7 @@ namespace XSLT if (buffer == NULL || len < 0) return (-1); sal_Int32 n; - Reference xis = this->m_transformer->getInputStream(); + css::uno::Reference xis = this->m_transformer->getInputStream(); n = xis.get()->readBytes(m_readBuf, len); if (n > 0) { @@ -258,7 +260,7 @@ namespace XSLT return -1; if (len > 0) { - Reference xos = m_transformer->getOutputStream(); + css::uno::Reference xos = m_transformer->getOutputStream(); sal_Int32 writeLen = len; sal_Int32 bufLen = ::std::min(writeLen, this->OUTPUT_BUFFER_SIZE); @@ -287,7 +289,7 @@ namespace XSLT int Reader::closeOutput() { - Reference xos = m_transformer->getOutputStream(); + css::uno::Reference xos = m_transformer->getOutputStream(); if (xos.is()) { xos.get()->flush(); @@ -298,7 +300,7 @@ namespace XSLT } void - Reader::run() + Reader::execute() { OSL_ASSERT(m_transformer != NULL); OSL_ASSERT(m_transformer->getInputStream().is()); @@ -362,11 +364,6 @@ namespace XSLT xmlFreeDoc(result); } - void - Reader::onTerminated() - { - m_terminated = true; - } void Reader::registerExtensionModule() { @@ -388,20 +385,20 @@ namespace XSLT } LibXSLTTransformer::LibXSLTTransformer( - const Reference &r) : - m_rServiceFactory(r), m_Reader(NULL) + const css::uno::Reference &r) : + m_rServiceFactory(r) { } void LibXSLTTransformer::setInputStream( - const Reference& inputStream) + const css::uno::Reference& inputStream) throw (RuntimeException) { m_rInputStream = inputStream; } - Reference + css::uno::Reference LibXSLTTransformer::getInputStream() throw (RuntimeException) { return m_rInputStream; @@ -409,20 +406,20 @@ namespace XSLT void LibXSLTTransformer::setOutputStream( - const Reference& outputStream) + const css::uno::Reference& outputStream) throw (RuntimeException) { m_rOutputStream = outputStream; } - Reference + css::uno::Reference LibXSLTTransformer::getOutputStream() throw (RuntimeException) { return m_rOutputStream; } void - LibXSLTTransformer::addListener(const Reference& listener) + LibXSLTTransformer::addListener(const css::uno::Reference& listener) throw (RuntimeException) { m_listeners.insert(m_listeners.begin(), listener); @@ -430,7 +427,7 @@ namespace XSLT void LibXSLTTransformer::removeListener( - const Reference& listener) + const css::uno::Reference& listener) throw (RuntimeException) { m_listeners.remove(listener); @@ -443,12 +440,12 @@ namespace XSLT ListenerList* l = &m_listeners; for (it = l->begin(); it != l->end(); ++it) { - Reference xl = *it; + css::uno::Reference xl = *it; xl.get()->started(); } - OSL_ENSURE(m_Reader == NULL, "Somebody forgot to call terminate *and* holds a reference to this LibXSLTTransformer instance"); + OSL_ENSURE(!m_Reader.is(), "Somebody forgot to call terminate *and* holds a reference to this LibXSLTTransformer instance"); m_Reader = new Reader(this); - m_Reader->create(); + m_Reader->launch(); } void @@ -459,7 +456,7 @@ namespace XSLT arg <<= Exception(msg, *this); for (ListenerList::iterator it = l->begin(); it != l->end(); ++it) { - Reference xl = *it; + css::uno::Reference xl = *it; if (xl.is()) { xl.get()->error(arg); @@ -473,7 +470,7 @@ namespace XSLT ListenerList* l = &m_listeners; for (ListenerList::iterator it = l->begin(); it != l->end(); ++it) { - Reference xl = *it; + css::uno::Reference xl = *it; if (xl.is()) { xl.get()->closed(); @@ -486,7 +483,7 @@ namespace XSLT { m_Reader->terminate(); m_Reader->join(); - delete(m_Reader); + m_Reader.clear(); m_parameters.clear(); } diff --git a/filter/source/xsltfilter/LibXSLTTransformer.hxx b/filter/source/xsltfilter/LibXSLTTransformer.hxx index 379b715b66a1..444cb2f6b9ce 100644 --- a/filter/source/xsltfilter/LibXSLTTransformer.hxx +++ b/filter/source/xsltfilter/LibXSLTTransformer.hxx @@ -45,7 +45,9 @@ #include #include -#include +#include + +#include #include @@ -100,13 +102,13 @@ namespace XSLT static const char* const PARAM_DOCTYPE_PUBLIC; // the UNO ServiceFactory - Reference m_rServiceFactory; + com::sun::star::uno::Reference m_rServiceFactory; - Reference m_rInputStream; + com::sun::star::uno::Reference m_rInputStream; - Reference m_rOutputStream; + com::sun::star::uno::Reference m_rOutputStream; - typedef ::std::list > ListenerList; + typedef ::std::list > ListenerList; ListenerList m_listeners; @@ -114,39 +116,39 @@ namespace XSLT ::std::map m_parameters; - osl::Thread* m_Reader; + rtl::Reference< salhelper::Thread > m_Reader; protected: virtual ~LibXSLTTransformer() { - if (m_Reader) { + if (m_Reader.is()) { m_Reader->terminate(); + m_Reader->join(); } - delete(m_Reader); } public: // ctor... - LibXSLTTransformer(const Reference &r); + LibXSLTTransformer(const com::sun::star::uno::Reference &r); // XActiveDataSink virtual void SAL_CALL - setInputStream(const Reference& inputStream) + setInputStream(const com::sun::star::uno::Reference& inputStream) throw (RuntimeException); - virtual Reference SAL_CALL + virtual com::sun::star::uno::Reference SAL_CALL getInputStream() throw (RuntimeException); // XActiveDataSource virtual void SAL_CALL - setOutputStream(const Reference& outputStream) + setOutputStream(const com::sun::star::uno::Reference& outputStream) throw (RuntimeException); - virtual Reference SAL_CALL + virtual com::sun::star::uno::Reference SAL_CALL getOutputStream() throw (RuntimeException); // XActiveDataControl virtual void SAL_CALL - addListener(const Reference& listener) + addListener(const com::sun::star::uno::Reference& listener) throw (RuntimeException); virtual void SAL_CALL - removeListener(const Reference& listener) + removeListener(const com::sun::star::uno::Reference& listener) throw (RuntimeException); virtual void SAL_CALL start() throw (RuntimeException); @@ -167,7 +169,7 @@ namespace XSLT ::std::map SAL_CALL getParameters(); - virtual Reference SAL_CALL + virtual com::sun::star::uno::Reference SAL_CALL getServiceFactory() { return m_rServiceFactory; } @@ -179,7 +181,7 @@ namespace XSLT * It pipes the streams provided by a LibXSLTTransformer * instance through libxslt. */ - class Reader : public osl::Thread + class Reader : public salhelper::Thread { public: Reader(LibXSLTTransformer* transformer); @@ -192,22 +194,18 @@ namespace XSLT int SAL_CALL closeOutput(); - protected: + private: virtual ~Reader(); - private: static const sal_Int32 OUTPUT_BUFFER_SIZE; static const sal_Int32 INPUT_BUFFER_SIZE; LibXSLTTransformer* m_transformer; - sal_Bool m_terminated; Sequence m_readBuf; Sequence m_writeBuf; - virtual void SAL_CALL - run(); - virtual void SAL_CALL - onTerminated(); + virtual void + execute(); void SAL_CALL registerExtensionModule(); }; diff --git a/filter/source/xsltfilter/OleHandler.hxx b/filter/source/xsltfilter/OleHandler.hxx index 8db4f889796e..bd6aba9fe119 100644 --- a/filter/source/xsltfilter/OleHandler.hxx +++ b/filter/source/xsltfilter/OleHandler.hxx @@ -81,7 +81,7 @@ namespace XSLT class OleHandler { public: - OleHandler(const Reference& msf){ + OleHandler(const com::sun::star::uno::Reference& msf){ m_msf =msf; } void SAL_CALL @@ -90,9 +90,9 @@ namespace XSLT getByName(const OUString& streamName); private: - Reference m_msf; - Reference m_storage; - Reference m_rootStream; + com::sun::star::uno::Reference m_msf; + com::sun::star::uno::Reference m_storage; + com::sun::star::uno::Reference m_rootStream; void SAL_CALL ensureCreateRootStorage(); OString SAL_CALL @@ -101,7 +101,7 @@ namespace XSLT insertSubStorage(const OUString& streamName, const OString& content); void SAL_CALL initRootStorageFromBase64(const OString& content); - Reference SAL_CALL + com::sun::star::uno::Reference SAL_CALL createTempFile(); }; } diff --git a/filter/source/xsltfilter/XSLTFilter.cxx b/filter/source/xsltfilter/XSLTFilter.cxx index 06d4f47f6c08..687192efa6b7 100644 --- a/filter/source/xsltfilter/XSLTFilter.cxx +++ b/filter/source/xsltfilter/XSLTFilter.cxx @@ -93,6 +93,8 @@ using namespace ::com::sun::star::xml::sax; using namespace ::com::sun::star::util; using namespace ::com::sun::star::task; +namespace css = com::sun::star; + namespace XSLT { /* @@ -115,12 +117,12 @@ namespace XSLT private: // the UNO ServiceFactory - Reference m_rServiceFactory; + css::uno::Reference m_rServiceFactory; // DocumentHandler interface of the css::xml::sax::Writer service - Reference m_rOutputStream; + css::uno::Reference m_rOutputStream; - Reference m_tcontrol; + css::uno::Reference m_tcontrol; oslCondition m_cTransformed; sal_Bool m_bTerminated; @@ -136,7 +138,7 @@ namespace XSLT public: // ctor... - XSLTFilter(const Reference &r); + XSLTFilter(const css::uno::Reference &r); // XStreamListener virtual void SAL_CALL @@ -152,7 +154,7 @@ namespace XSLT // XImportFilter virtual sal_Bool SAL_CALL - importer(const Sequence& aSourceData, const Reference< + importer(const Sequence& aSourceData, const css::uno::Reference< XDocumentHandler>& xHandler, const Sequence& msUserData) throw (RuntimeException); @@ -168,7 +170,7 @@ namespace XSLT endDocument() throw (SAXException, RuntimeException); }; - XSLTFilter::XSLTFilter(const Reference &r): + XSLTFilter::XSLTFilter(const css::uno::Reference &r): m_rServiceFactory(r), m_bTerminated(sal_False), m_bError(sal_False) { m_cTransformed = osl_createCondition(); @@ -185,13 +187,13 @@ m_rServiceFactory(r), m_bTerminated(sal_False), m_bError(sal_False) ::rtl::OUString sExpandedUrl; try { - Reference xContext; - Reference xProps(m_rServiceFactory, + css::uno::Reference xContext; + css::uno::Reference xProps(m_rServiceFactory, UNO_QUERY_THROW); xContext.set(xProps->getPropertyValue(::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "DefaultContext" ))), UNO_QUERY_THROW); - Reference + css::uno::Reference xMacroExpander( xContext->getValueByName( ::rtl::OUString( @@ -243,7 +245,7 @@ m_rServiceFactory(r), m_bTerminated(sal_False), m_bError(sal_False) XSLTFilter::rel2abs(const OUString& s) { - Reference + css::uno::Reference subs( m_rServiceFactory->createInstance( OUString( @@ -261,7 +263,7 @@ m_rServiceFactory(r), m_bTerminated(sal_False), m_bError(sal_False) sal_Bool XSLTFilter::importer(const Sequence& aSourceData, - const Reference& xHandler, const Sequence< + const css::uno::Reference& xHandler, const Sequence< OUString>& msUserData) throw (RuntimeException) { if (msUserData.getLength() < 5) @@ -276,8 +278,8 @@ m_rServiceFactory(r), m_bTerminated(sal_False), m_bError(sal_False) // the sax parser that drives the supplied document handler sal_Int32 nLength = aSourceData.getLength(); OUString aName, aFileName, aURL; - Reference xInputStream; - Reference xInterActionHandler; + css::uno::Reference xInputStream; + css::uno::Reference xInterActionHandler; for (sal_Int32 i = 0; i < nLength; i++) { aName = aSourceData[i].Name; @@ -297,7 +299,7 @@ m_rServiceFactory(r), m_bTerminated(sal_False), m_bError(sal_False) // create SAX parser that will read the document file // and provide events to xHandler passed to this call - Reference + css::uno::Reference xSaxParser( m_rServiceFactory->createInstance( OUString( @@ -325,7 +327,7 @@ m_rServiceFactory(r), m_bTerminated(sal_False), m_bError(sal_False) if (!msUserData[1].isEmpty()) serviceName = msUserData[1]; - m_tcontrol = Reference (m_rServiceFactory->createInstanceWithArguments(serviceName, args), UNO_QUERY); + m_tcontrol = css::uno::Reference (m_rServiceFactory->createInstanceWithArguments(serviceName, args), UNO_QUERY); OSL_ASSERT(xHandler.is()); OSL_ASSERT(xInputStream.is()); @@ -335,24 +337,24 @@ m_rServiceFactory(r), m_bTerminated(sal_False), m_bError(sal_False) try { // we want to be notfied when the processing is done... - m_tcontrol->addListener(Reference ( + m_tcontrol->addListener(css::uno::Reference ( this)); // connect input to transformer - Reference tsink(m_tcontrol, UNO_QUERY); + css::uno::Reference tsink(m_tcontrol, UNO_QUERY); tsink->setInputStream(xInputStream); // create pipe - Reference + css::uno::Reference pipeout( m_rServiceFactory->createInstance( OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.io.Pipe" ))), UNO_QUERY); - Reference pipein(pipeout, UNO_QUERY); + css::uno::Reference pipein(pipeout, UNO_QUERY); //connect transformer to pipe - Reference tsource(m_tcontrol, + css::uno::Reference tsource(m_tcontrol, UNO_QUERY); tsource->setOutputStream(pipeout); @@ -381,7 +383,7 @@ m_rServiceFactory(r), m_bTerminated(sal_False), m_bError(sal_False) Any r; r <<= exc; ::comphelper::OInteractionRequest* pRequest = new ::comphelper::OInteractionRequest(r); - Reference< XInteractionRequest > xRequest(pRequest); + css::uno::Reference< XInteractionRequest > xRequest(pRequest); ::comphelper::OInteractionRetry* pRetry = new ::comphelper::OInteractionRetry; ::comphelper::OInteractionAbort* pAbort = new ::comphelper::OInteractionAbort; pRequest->addContinuation(pRetry); @@ -436,7 +438,7 @@ m_rServiceFactory(r), m_bTerminated(sal_False), m_bError(sal_False) sal_Bool bIndent = sal_False; OUString aDoctypePublic; OUString aDoctypeSystem; - // Reference rOutputStream; + // css::uno::Reference rOutputStream; sal_Int32 nLength = aSourceData.getLength(); for (sal_Int32 i = 0; i < nLength; i++) { @@ -456,7 +458,7 @@ m_rServiceFactory(r), m_bTerminated(sal_False), m_bError(sal_False) if (!getDelegate().is()) { // get the document writer - setDelegate(Reference ( + setDelegate(css::uno::Reference ( m_rServiceFactory->createInstance( OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.xml.sax.Writer" ))), @@ -489,35 +491,35 @@ m_rServiceFactory(r), m_bTerminated(sal_False), m_bError(sal_False) if (!msUserData[1].isEmpty()) serviceName = msUserData[1]; - m_tcontrol = Reference (m_rServiceFactory->createInstanceWithArguments(serviceName, args), UNO_QUERY); + m_tcontrol = css::uno::Reference (m_rServiceFactory->createInstanceWithArguments(serviceName, args), UNO_QUERY); OSL_ASSERT(m_rOutputStream.is()); OSL_ASSERT(m_tcontrol.is()); if (m_tcontrol.is() && m_rOutputStream.is()) { // we want to be notfied when the processing is done... - m_tcontrol->addListener(Reference (this)); + m_tcontrol->addListener(css::uno::Reference (this)); // create pipe - Reference + css::uno::Reference pipeout( m_rServiceFactory->createInstance( OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.io.Pipe" ))), UNO_QUERY); - Reference pipein(pipeout, UNO_QUERY); + css::uno::Reference pipein(pipeout, UNO_QUERY); // connect sax writer to pipe - Reference xmlsource(getDelegate(), + css::uno::Reference xmlsource(getDelegate(), UNO_QUERY); xmlsource->setOutputStream(pipeout); // connect pipe to transformer - Reference tsink(m_tcontrol, UNO_QUERY); + css::uno::Reference tsink(m_tcontrol, UNO_QUERY); tsink->setInputStream(pipein); // connect transformer to output - Reference tsource(m_tcontrol, UNO_QUERY); + css::uno::Reference tsource(m_tcontrol, UNO_QUERY); tsource->setOutputStream(m_rOutputStream); // we will start receiving events after returning 'true'. @@ -568,16 +570,16 @@ m_rServiceFactory(r), m_bTerminated(sal_False), m_bError(sal_False) #define TRANSFORMER_SERVICE_NAME "com.sun.star.documentconversion.LibXSLTTransformer" #define TRANSFORMER_IMPL_NAME "com.sun.star.comp.documentconversion.LibXSLTTransformer" - static Reference SAL_CALL - CreateTransformerInstance(const Reference &r) + static css::uno::Reference SAL_CALL + CreateTransformerInstance(const css::uno::Reference &r) { - return Reference ((OWeakObject *) new LibXSLTTransformer(r)); + return css::uno::Reference ((OWeakObject *) new LibXSLTTransformer(r)); } - static Reference SAL_CALL - CreateFilterInstance(const Reference &r) + static css::uno::Reference SAL_CALL + CreateFilterInstance(const css::uno::Reference &r) { - return Reference ((OWeakObject *) new XSLTFilter(r)); + return css::uno::Reference ((OWeakObject *) new XSLTFilter(r)); } } @@ -600,7 +602,7 @@ extern "C" = OUString( RTL_CONSTASCII_USTRINGPARAM( FILTER_SERVICE_NAME )); - Reference + css::uno::Reference xFactory( createSingleFactory( reinterpret_cast (pServiceManager), @@ -621,7 +623,7 @@ extern "C" serviceNames.getArray()[0] = OUString( RTL_CONSTASCII_USTRINGPARAM( TRANSFORMER_SERVICE_NAME )); - Reference + css::uno::Reference xFactory( createSingleFactory( reinterpret_cast (pServiceManager), -- cgit v1.2.3