[Libreoffice-commits] core.git: 3 commits - dbaccess/source editeng/source filter/source forms/source include/xmloff linguistic/source reportdesign/source sc/source starmath/source svx/source sw/source xmloff/inc xmloff/qa xmloff/source

Stephan Bergmann sbergman at redhat.com
Wed Jan 8 05:12:46 PST 2014


 dbaccess/source/filter/xml/xmlExport.cxx       |   19 ++++-
 dbaccess/source/filter/xml/xmlExport.hxx       |   12 ++-
 editeng/source/misc/SvXMLAutoCorrectExport.cxx |    4 -
 editeng/source/xml/xmltxtexp.cxx               |    2 
 filter/source/svg/svgexport.cxx                |    2 
 forms/source/richtext/richtextengine.cxx       |    2 
 forms/source/richtext/richtextmodel.hxx        |    2 
 include/xmloff/xmlexp.hxx                      |   10 ++
 linguistic/source/convdicxml.cxx               |    7 --
 linguistic/source/convdicxml.hxx               |    5 -
 reportdesign/source/filter/xml/xmlExport.cxx   |   33 ++-------
 reportdesign/source/filter/xml/xmlExport.hxx   |    6 -
 sc/source/filter/xml/xmlexprt.cxx              |   86 +++----------------------
 sc/source/filter/xml/xmlexprt.hxx              |    7 --
 starmath/source/mathmlexport.cxx               |   41 ++---------
 starmath/source/mathmlexport.hxx               |    5 -
 svx/source/xml/xmlxtexp.cxx                    |    2 
 sw/source/core/swg/SwXMLBlockExport.cxx        |    4 -
 sw/source/filter/xml/xmlexp.cxx                |   49 +++-----------
 sw/source/filter/xml/xmlexp.hxx                |    6 -
 xmloff/inc/MetaExportComponent.hxx             |    2 
 xmloff/inc/SchXMLExport.hxx                    |    4 -
 xmloff/qa/unit/uxmloff.cxx                     |    5 -
 xmloff/source/chart/SchXMLExport.cxx           |   46 ++-----------
 xmloff/source/core/xmlexp.cxx                  |   17 ++--
 xmloff/source/draw/sdxmlexp.cxx                |   73 ---------------------
 xmloff/source/draw/sdxmlexp_impl.hxx           |    4 -
 xmloff/source/meta/MetaExportComponent.cxx     |    8 +-
 xmloff/source/meta/xmlversion.cxx              |    2 
 xmloff/source/text/XMLAutoTextEventExport.cxx  |    8 +-
 xmloff/source/text/XMLAutoTextEventExport.hxx  |    2 
 31 files changed, 124 insertions(+), 351 deletions(-)

New commits:
commit 31911b3cdcd405973b689e10ee86add6f1c40bd1
Author: Stephan Bergmann <sbergman at redhat.com>
Date:   Wed Jan 8 14:11:58 2014 +0100

    Consolidate XServiceInfo for classes derived from SvXMLExport
    
    Change-Id: Ia3e2b5e682a64844bb6c713912c50c7681393d52

diff --git a/dbaccess/source/filter/xml/xmlExport.cxx b/dbaccess/source/filter/xml/xmlExport.cxx
index 63e80fb..9ac4b0b 100644
--- a/dbaccess/source/filter/xml/xmlExport.cxx
+++ b/dbaccess/source/filter/xml/xmlExport.cxx
@@ -27,6 +27,7 @@
 #include <xmloff/xmlnmspe.hxx>
 #include <xmloff/nmspmap.hxx>
 #include <comphelper/processfactory.hxx>
+#include <comphelper/sequence.hxx>
 #include <comphelper/string.hxx>
 #include <comphelper/types.hxx>
 #include "xmlstrings.hrc"
@@ -187,7 +188,7 @@ namespace dbaxml
         }
     };
 ODBExport::ODBExport(const Reference< XComponentContext >& _rxContext,sal_uInt16 nExportFlag)
-: SvXMLExport( util::MeasureUnit::MM_10TH, _rxContext, XML_DATABASE,
+: SvXMLExport( util::MeasureUnit::MM_10TH, _rxContext, getImplementationName_Static(), XML_DATABASE,
         EXPORT_OASIS | nExportFlag)
 ,m_aTypeCollection(_rxContext)
 ,m_bAllreadyFilled(sal_False)
@@ -252,9 +253,19 @@ ODBExport::ODBExport(const Reference< XComponentContext >& _rxContext,sal_uInt16
         OUString(XML_STYLE_FAMILY_TABLE_ROW_STYLES_PREFIX ));
 }
 
-IMPLEMENT_SERVICE_INFO_IMPLNAME_STATIC(ODBExport, "com.sun.star.comp.sdb.DBExportFilter")
-IMPLEMENT_SERVICE_INFO_SUPPORTS(ODBExport)
-IMPLEMENT_SERVICE_INFO_GETSUPPORTED1_STATIC(ODBExport, "com.sun.star.document.ExportFilter")
+OUString ODBExport::getImplementationName_Static()
+    throw (css::uno::RuntimeException)
+{
+    return OUString("com.sun.star.comp.sdb.DBExportFilter");
+}
+
+css::uno::Sequence<OUString> ODBExport::getSupportedServiceNames_Static()
+    throw (css::uno::RuntimeException)
+{
+    css::uno::Sequence<OUString> s(1);
+    s[0] = "com.sun.star.document.ExportFilter";
+    return s;
+}
 
 ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >
     SAL_CALL ODBExport::Create(const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& _rxORB)
diff --git a/dbaccess/source/filter/xml/xmlExport.hxx b/dbaccess/source/filter/xml/xmlExport.hxx
index a436016..2365f40 100644
--- a/dbaccess/source/filter/xml/xmlExport.hxx
+++ b/dbaccess/source/filter/xml/xmlExport.hxx
@@ -38,7 +38,6 @@
 #include <unotools/ucbstreamhelper.hxx>
 #include <xmloff/xmlexp.hxx>
 #include <xmloff/xmlimp.hxx>
-#include "apitools.hxx"
 #include "dsntypes.hxx"
 #include <comphelper/stl_types.hxx>
 #include <com/sun/star/sdbcx/XColumnsSupplier.hpp>
@@ -175,8 +174,15 @@ protected:
 public:
 
     ODBExport(const Reference< XComponentContext >& _rxContext, sal_uInt16 nExportFlag = EXPORT_CONTENT | EXPORT_AUTOSTYLES | EXPORT_PRETTY | EXPORT_FONTDECLS | EXPORT_SCRIPTS );
-    // XServiceInfo
-    DECLARE_SERVICE_INFO_STATIC( );
+
+    static OUString SAL_CALL getImplementationName_Static()
+        throw (css::uno::RuntimeException);
+
+    static css::uno::Sequence<OUString> SAL_CALL
+    getSupportedServiceNames_Static() throw (css::uno::RuntimeException);
+
+    static css::uno::Reference<css::uno::XInterface> SAL_CALL Create(
+        css::uno::Reference<css::lang::XMultiServiceFactory> const & _rxORB);
 
     UniReference < XMLPropertySetMapper > GetColumnStylesPropertySetMapper() const;
     UniReference < XMLPropertySetMapper > GetCellStylesPropertySetMapper() const;
diff --git a/editeng/source/misc/SvXMLAutoCorrectExport.cxx b/editeng/source/misc/SvXMLAutoCorrectExport.cxx
index dfe0e4e..7b84454 100644
--- a/editeng/source/misc/SvXMLAutoCorrectExport.cxx
+++ b/editeng/source/misc/SvXMLAutoCorrectExport.cxx
@@ -32,7 +32,7 @@ SvXMLAutoCorrectExport::SvXMLAutoCorrectExport(
     const SvxAutocorrWordList *  pNewAutocorr_List,
     const OUString &rFileName,
     com::sun::star::uno::Reference< com::sun::star::xml::sax::XDocumentHandler> &rHandler)
-:   SvXMLExport( xContext, rFileName, util::MeasureUnit::CM, rHandler ),
+:   SvXMLExport( xContext, "", rFileName, util::MeasureUnit::CM, rHandler ),
     pAutocorr_List( pNewAutocorr_List )
 {
     _GetNamespaceMap().Add( GetXMLToken ( XML_NP_BLOCK_LIST),
@@ -76,7 +76,7 @@ SvXMLExceptionListExport::SvXMLExceptionListExport(
     const SvStringsISortDtor &rNewList,
     const OUString &rFileName,
     com::sun::star::uno::Reference< com::sun::star::xml::sax::XDocumentHandler> &rHandler)
-:   SvXMLExport( xContext, rFileName, util::MeasureUnit::CM, rHandler ),
+:   SvXMLExport( xContext, "", rFileName, util::MeasureUnit::CM, rHandler ),
     rList( rNewList )
 {
     _GetNamespaceMap().Add( GetXMLToken ( XML_NP_BLOCK_LIST ),
diff --git a/editeng/source/xml/xmltxtexp.cxx b/editeng/source/xml/xmltxtexp.cxx
index 8dbd165..a738b76 100644
--- a/editeng/source/xml/xmltxtexp.cxx
+++ b/editeng/source/xml/xmltxtexp.cxx
@@ -372,7 +372,7 @@ SvxXMLTextExportComponent::SvxXMLTextExportComponent(
     const ESelection& rSel,
     const OUString& rFileName,
     const com::sun::star::uno::Reference< com::sun::star::xml::sax::XDocumentHandler > & xHandler)
-:   SvXMLExport( xContext, rFileName, xHandler, ((frame::XModel*)new SvxSimpleUnoModel()), MAP_CM ),
+:   SvXMLExport( xContext, "", rFileName, xHandler, ((frame::XModel*)new SvxSimpleUnoModel()), MAP_CM ),
     maSelection( rSel )
 {
     SvxEditEngineSource aEditSource( pEditEngine );
diff --git a/filter/source/svg/svgexport.cxx b/filter/source/svg/svgexport.cxx
index 97eddc7..51a90ad 100644
--- a/filter/source/svg/svgexport.cxx
+++ b/filter/source/svg/svgexport.cxx
@@ -315,7 +315,7 @@ SVGExport::SVGExport(
     const Reference< XDocumentHandler >& rxHandler,
     const Sequence< PropertyValue >& rFilterData )
     : SvXMLExport( util::MeasureUnit::MM_100TH,
-                   xContext,
+                   xContext, "",
                    xmloff::token::XML_TOKEN_INVALID,
                    EXPORT_META|EXPORT_PRETTY )
 {
diff --git a/include/xmloff/xmlexp.hxx b/include/xmloff/xmlexp.hxx
index b80d096..b734777 100644
--- a/include/xmloff/xmlexp.hxx
+++ b/include/xmloff/xmlexp.hxx
@@ -108,6 +108,7 @@ class XMLOFF_DLLPUBLIC SvXMLExport : public ::cppu::WeakImplHelper6<
     SvXMLExport_Impl            *mpImpl;            // dummy
 
     ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext > m_xContext;
+    OUString m_implementationName;
 
     ::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel > mxModel;
     ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XDocumentHandler >            mxHandler;      // the handlers
@@ -266,17 +267,20 @@ public:
     SvXMLExport(
         sal_Int16 const eDefaultMeasureUnit /*css::util::MeasureUnit*/,
         const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext >& xContext,
+        OUString const & implementationName,
         const enum ::xmloff::token::XMLTokenEnum eClass = xmloff::token::XML_TOKEN_INVALID,
         sal_uInt16 nExportFlag = EXPORT_ALL );
 
     SvXMLExport(
         const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext >& xContext,
+        OUString const & implementationName,
         const OUString& rFileName,
         sal_Int16 const eDefaultMeasureUnit /*css::util::MeasureUnit*/,
 		const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XDocumentHandler > & rHandler);
 
     SvXMLExport(
         const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext >& xContext,
+        OUString const & implementationName,
         const OUString& rFileName,
         const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XDocumentHandler > & rHandler,
         const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel > &,
@@ -302,9 +306,9 @@ public:
     virtual void SAL_CALL setName( const OUString& aName ) throw (::com::sun::star::uno::RuntimeException);
 
     // XServiceInfo
-    virtual OUString SAL_CALL getImplementationName(  ) throw(::com::sun::star::uno::RuntimeException);
-    virtual sal_Bool SAL_CALL supportsService( const OUString& ServiceName ) throw(::com::sun::star::uno::RuntimeException);
-    virtual ::com::sun::star::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames(  ) throw(::com::sun::star::uno::RuntimeException);
+    virtual OUString SAL_CALL getImplementationName(  ) throw(::com::sun::star::uno::RuntimeException) SAL_FINAL;
+    virtual sal_Bool SAL_CALL supportsService( const OUString& ServiceName ) throw(::com::sun::star::uno::RuntimeException) SAL_FINAL;
+    virtual ::com::sun::star::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames(  ) throw(::com::sun::star::uno::RuntimeException) SAL_FINAL;
 
     // XUnoTunnel
     virtual sal_Int64 SAL_CALL getSomething( const ::com::sun::star::uno::Sequence< sal_Int8 >& aIdentifier ) throw(::com::sun::star::uno::RuntimeException);
diff --git a/linguistic/source/convdicxml.cxx b/linguistic/source/convdicxml.cxx
index 1928d82..72dbc06 100644
--- a/linguistic/source/convdicxml.cxx
+++ b/linguistic/source/convdicxml.cxx
@@ -383,13 +383,6 @@ void ConvDicXMLExport::_ExportContent()
     }
 }
 
-OUString SAL_CALL ConvDicXMLExport::getImplementationName()
-    throw( uno::RuntimeException )
-{
-    return OUString( "com.sun.star.lingu2.ConvDicXMLExport" );
-}
-
-
 void SAL_CALL ConvDicXMLImport::startDocument(void)
     throw( xml::sax::SAXException, uno::RuntimeException )
 {
diff --git a/linguistic/source/convdicxml.hxx b/linguistic/source/convdicxml.hxx
index 28c816e..82861e5 100644
--- a/linguistic/source/convdicxml.hxx
+++ b/linguistic/source/convdicxml.hxx
@@ -47,7 +47,7 @@ public:
     ConvDicXMLExport( ConvDic &rConvDic,
         const OUString &rFileName,
         com::sun::star::uno::Reference< com::sun::star::xml::sax::XDocumentHandler > &rHandler) :
-        SvXMLExport ( comphelper::getProcessComponentContext(), rFileName,
+        SvXMLExport ( comphelper::getProcessComponentContext(), "com.sun.star.lingu2.ConvDicXMLExport", rFileName,
                       ::com::sun::star::util::MeasureUnit::CM, rHandler ),
         rDic        ( rConvDic ),
         bSuccess    ( sal_False )
@@ -57,9 +57,6 @@ public:
     {
     }
 
-    // XServiceInfo (override parent method)
-    OUString SAL_CALL getImplementationName() throw( ::com::sun::star::uno::RuntimeException );
-
     // SvXMLExport
     void _ExportAutoStyles()    {}
     void _ExportMasterStyles()  {}
diff --git a/reportdesign/source/filter/xml/xmlExport.cxx b/reportdesign/source/filter/xml/xmlExport.cxx
index b11dcf3..0de3eff 100644
--- a/reportdesign/source/filter/xml/xmlExport.cxx
+++ b/reportdesign/source/filter/xml/xmlExport.cxx
@@ -26,7 +26,6 @@
 #include <xmloff/xmluconv.hxx>
 #include <xmloff/nmspmap.hxx>
 #include <comphelper/types.hxx>
-#include <cppuhelper/supportsservice.hxx>
 #include "xmlEnums.hxx"
 #include <xmloff/txtprmap.hxx>
 #include <xmloff/numehelp.hxx>
@@ -74,7 +73,7 @@ namespace rptxml
     //---------------------------------------------------------------------
     Reference< XInterface > ORptExportHelper::create(Reference< XComponentContext > const & xContext)
     {
-        return static_cast< XServiceInfo* >(new ORptExport(xContext,EXPORT_SETTINGS ));
+        return static_cast< XServiceInfo* >(new ORptExport(xContext, getImplementationName_Static(), EXPORT_SETTINGS ));
     }
     //---------------------------------------------------------------------
     OUString ORptExportHelper::getImplementationName_Static(  ) throw (RuntimeException)
@@ -91,7 +90,7 @@ namespace rptxml
     //---------------------------------------------------------------------
     Reference< XInterface > ORptContentExportHelper::create(Reference< XComponentContext > const & xContext)
     {
-        return static_cast< XServiceInfo* >(new ORptExport(xContext,EXPORT_CONTENT ));
+        return static_cast< XServiceInfo* >(new ORptExport(xContext, getImplementationName_Static(), EXPORT_CONTENT ));
     }
     //---------------------------------------------------------------------
     OUString ORptContentExportHelper::getImplementationName_Static(  ) throw (RuntimeException)
@@ -109,7 +108,7 @@ namespace rptxml
     //---------------------------------------------------------------------
     Reference< XInterface > ORptStylesExportHelper::create(Reference< XComponentContext > const & xContext)
     {
-        return static_cast< XServiceInfo* >(new ORptExport(xContext,EXPORT_STYLES | EXPORT_MASTERSTYLES | EXPORT_AUTOSTYLES |
+        return static_cast< XServiceInfo* >(new ORptExport(xContext, getImplementationName_Static(), EXPORT_STYLES | EXPORT_MASTERSTYLES | EXPORT_AUTOSTYLES |
             EXPORT_FONTDECLS|EXPORT_OASIS ));
     }
     //---------------------------------------------------------------------
@@ -128,7 +127,7 @@ namespace rptxml
     //---------------------------------------------------------------------
     Reference< XInterface > ORptMetaExportHelper::create(Reference< XComponentContext > const & xContext)
     {
-        return static_cast< XServiceInfo* >(new ORptExport(xContext, EXPORT_META ));
+        return static_cast< XServiceInfo* >(new ORptExport(xContext, getImplementationName_Static(), EXPORT_META ));
     }
     //---------------------------------------------------------------------
     OUString ORptMetaExportHelper::getImplementationName_Static(  ) throw (RuntimeException)
@@ -146,7 +145,7 @@ namespace rptxml
     //---------------------------------------------------------------------
     Reference< XInterface > ODBFullExportHelper::create(Reference< XComponentContext > const & xContext)
     {
-        return static_cast< XServiceInfo* >(new ORptExport(xContext,EXPORT_ALL));
+        return static_cast< XServiceInfo* >(new ORptExport(xContext, getImplementationName_Static(), EXPORT_ALL));
     }
     //---------------------------------------------------------------------
     OUString ODBFullExportHelper::getImplementationName_Static(  ) throw (RuntimeException)
@@ -214,8 +213,8 @@ void lcl_adjustColumnSpanOverRows(ORptExport::TSectionsGrid& _rGrid)
     }
 }
 // -----------------------------------------------------------------------------
-ORptExport::ORptExport(const Reference< XComponentContext >& _rxContext,sal_uInt16 nExportFlag)
-: SvXMLExport( util::MeasureUnit::MM_100TH, _rxContext, XML_REPORT, EXPORT_OASIS)
+ORptExport::ORptExport(const Reference< XComponentContext >& _rxContext, OUString const & implementationName, sal_uInt16 nExportFlag)
+: SvXMLExport( util::MeasureUnit::MM_100TH, _rxContext, implementationName, XML_REPORT, EXPORT_OASIS)
 ,m_bAllreadyFilled(sal_False)
 {
     setExportFlags( EXPORT_OASIS | nExportFlag);
@@ -306,7 +305,7 @@ ORptExport::ORptExport(const Reference< XComponentContext >& _rxContext,sal_uInt
 // -----------------------------------------------------------------------------
 Reference< XInterface > ORptExport::create(Reference< XComponentContext > const & xContext)
 {
-    return *(new ORptExport(xContext));
+    return *(new ORptExport(xContext, getImplementationName_Static(), EXPORT_CONTENT | EXPORT_AUTOSTYLES | EXPORT_FONTDECLS));
 }
 
 // -----------------------------------------------------------------------------
@@ -316,11 +315,6 @@ OUString ORptExport::getImplementationName_Static(  ) throw(uno::RuntimeExceptio
 }
 
 //--------------------------------------------------------------------------
-OUString SAL_CALL ORptExport::getImplementationName(  ) throw(uno::RuntimeException)
-{
-    return getImplementationName_Static();
-}
-//--------------------------------------------------------------------------
 uno::Sequence< OUString > ORptExport::getSupportedServiceNames_Static(  ) throw(uno::RuntimeException)
 {
     uno::Sequence< OUString > aServices(1);
@@ -328,16 +322,7 @@ uno::Sequence< OUString > ORptExport::getSupportedServiceNames_Static(  ) throw(
 
     return aServices;
 }
-//--------------------------------------------------------------------------
-uno::Sequence< OUString > SAL_CALL ORptExport::getSupportedServiceNames(  ) throw(uno::RuntimeException)
-{
-    return getSupportedServiceNames_Static();
-}
-//------------------------------------------------------------------------------
-sal_Bool SAL_CALL ORptExport::supportsService(const OUString& ServiceName) throw( uno::RuntimeException )
-{
-    return cppu::supportsService(this, ServiceName);
-}
+
 // -----------------------------------------------------------------------------
 void ORptExport::exportFunctions(const Reference<XIndexAccess>& _xFunctions)
 {
diff --git a/reportdesign/source/filter/xml/xmlExport.hxx b/reportdesign/source/filter/xml/xmlExport.hxx
index bf22318..8334c7a 100644
--- a/reportdesign/source/filter/xml/xmlExport.hxx
+++ b/reportdesign/source/filter/xml/xmlExport.hxx
@@ -184,11 +184,7 @@ protected:
     virtual                 ~ORptExport(){};
 public:
 
-    ORptExport(const Reference< XComponentContext >& _rxContext, sal_uInt16 nExportFlag = (EXPORT_CONTENT | EXPORT_AUTOSTYLES | EXPORT_FONTDECLS));
-    // XServiceInfo
-    virtual ::sal_Bool SAL_CALL supportsService( const OUString& ServiceName ) throw (::com::sun::star::uno::RuntimeException);
-    virtual OUString SAL_CALL getImplementationName(  ) throw(::com::sun::star::uno::RuntimeException);
-    virtual ::com::sun::star::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames(  ) throw(::com::sun::star::uno::RuntimeException);
+    ORptExport(const Reference< XComponentContext >& _rxContext, OUString const & implementationName, sal_uInt16 nExportFlag);
 
     static ::com::sun::star::uno::Sequence< OUString > getSupportedServiceNames_Static(void) throw( ::com::sun::star::uno::RuntimeException );
     static OUString getImplementationName_Static(void) throw( ::com::sun::star::uno::RuntimeException );
diff --git a/sc/source/filter/xml/xmlexprt.cxx b/sc/source/filter/xml/xmlexprt.cxx
index 0520e7c..3c1adc1 100644
--- a/sc/source/filter/xml/xmlexprt.cxx
+++ b/sc/source/filter/xml/xmlexprt.cxx
@@ -253,7 +253,7 @@ uno::Sequence< OUString > SAL_CALL ScXMLOOoExport_getSupportedServiceNames() thr
 uno::Reference< uno::XInterface > SAL_CALL ScXMLOOoExport_createInstance(
                 const uno::Reference< lang::XMultiServiceFactory > & rSMgr ) throw( uno::Exception )
 {
-    return (cppu::OWeakObject*)new ScXMLExport( comphelper::getComponentContext(rSMgr), EXPORT_ALL );
+    return (cppu::OWeakObject*)new ScXMLExport( comphelper::getComponentContext(rSMgr), ScXMLOOoExport_getImplementationName(), EXPORT_ALL );
 }
 
 OUString SAL_CALL ScXMLOOoExport_Meta_getImplementationName() throw()
@@ -270,7 +270,7 @@ uno::Sequence< OUString > SAL_CALL ScXMLOOoExport_Meta_getSupportedServiceNames(
 uno::Reference< uno::XInterface > SAL_CALL ScXMLOOoExport_Meta_createInstance(
                 const uno::Reference< lang::XMultiServiceFactory > & rSMgr ) throw( uno::Exception )
 {
-    return (cppu::OWeakObject*)new ScXMLExport( comphelper::getComponentContext(rSMgr), EXPORT_META );
+    return (cppu::OWeakObject*)new ScXMLExport( comphelper::getComponentContext(rSMgr), ScXMLOOoExport_Meta_getImplementationName(), EXPORT_META );
 }
 
 OUString SAL_CALL ScXMLOOoExport_Styles_getImplementationName() throw()
@@ -287,7 +287,7 @@ uno::Sequence< OUString > SAL_CALL ScXMLOOoExport_Styles_getSupportedServiceName
 uno::Reference< uno::XInterface > SAL_CALL ScXMLOOoExport_Styles_createInstance(
                 const uno::Reference< lang::XMultiServiceFactory > & rSMgr ) throw( uno::Exception )
 {
-    return (cppu::OWeakObject*)new ScXMLExport( comphelper::getComponentContext(rSMgr), EXPORT_STYLES|EXPORT_MASTERSTYLES|EXPORT_AUTOSTYLES|EXPORT_FONTDECLS);
+    return (cppu::OWeakObject*)new ScXMLExport( comphelper::getComponentContext(rSMgr), ScXMLOOoExport_Styles_getImplementationName(), EXPORT_STYLES|EXPORT_MASTERSTYLES|EXPORT_AUTOSTYLES|EXPORT_FONTDECLS);
 }
 
 OUString SAL_CALL ScXMLOOoExport_Content_getImplementationName() throw()
@@ -304,7 +304,7 @@ uno::Sequence< OUString > SAL_CALL ScXMLOOoExport_Content_getSupportedServiceNam
 uno::Reference< uno::XInterface > SAL_CALL ScXMLOOoExport_Content_createInstance(
                 const uno::Reference< lang::XMultiServiceFactory > & rSMgr ) throw( uno::Exception )
 {
-    return (cppu::OWeakObject*)new ScXMLExport( comphelper::getComponentContext(rSMgr), EXPORT_AUTOSTYLES|EXPORT_CONTENT|EXPORT_SCRIPTS|EXPORT_FONTDECLS);
+    return (cppu::OWeakObject*)new ScXMLExport( comphelper::getComponentContext(rSMgr), ScXMLOOoExport_Content_getImplementationName(), EXPORT_AUTOSTYLES|EXPORT_CONTENT|EXPORT_SCRIPTS|EXPORT_FONTDECLS);
 }
 
 OUString SAL_CALL ScXMLOOoExport_Settings_getImplementationName() throw()
@@ -321,7 +321,7 @@ uno::Sequence< OUString > SAL_CALL ScXMLOOoExport_Settings_getSupportedServiceNa
 uno::Reference< uno::XInterface > SAL_CALL ScXMLOOoExport_Settings_createInstance(
                 const uno::Reference< lang::XMultiServiceFactory > & rSMgr ) throw( uno::Exception )
 {
-    return (cppu::OWeakObject*)new ScXMLExport( comphelper::getComponentContext(rSMgr), EXPORT_SETTINGS );
+    return (cppu::OWeakObject*)new ScXMLExport( comphelper::getComponentContext(rSMgr), ScXMLOOoExport_Settings_getImplementationName(), EXPORT_SETTINGS );
 }
 
 // Oasis Filter
@@ -341,7 +341,7 @@ uno::Sequence< OUString > SAL_CALL ScXMLOasisExport_getSupportedServiceNames() t
 uno::Reference< uno::XInterface > SAL_CALL ScXMLOasisExport_createInstance(
                 const uno::Reference< lang::XMultiServiceFactory > & rSMgr ) throw( uno::Exception )
 {
-    return (cppu::OWeakObject*)new ScXMLExport(comphelper::getComponentContext(rSMgr), EXPORT_ALL|EXPORT_OASIS);
+    return (cppu::OWeakObject*)new ScXMLExport(comphelper::getComponentContext(rSMgr), ScXMLOasisExport_getImplementationName(), EXPORT_ALL|EXPORT_OASIS);
 }
 
 OUString SAL_CALL ScXMLOasisExport_Meta_getImplementationName() throw()
@@ -359,7 +359,7 @@ uno::Sequence< OUString > SAL_CALL ScXMLOasisExport_Meta_getSupportedServiceName
 uno::Reference< uno::XInterface > SAL_CALL ScXMLOasisExport_Meta_createInstance(
                 const uno::Reference< lang::XMultiServiceFactory > & rSMgr ) throw( uno::Exception )
 {
-    return (cppu::OWeakObject*)new ScXMLExport(comphelper::getComponentContext(rSMgr), EXPORT_META|EXPORT_OASIS);
+    return (cppu::OWeakObject*)new ScXMLExport(comphelper::getComponentContext(rSMgr), ScXMLOasisExport_Meta_getImplementationName(), EXPORT_META|EXPORT_OASIS);
 }
 
 OUString SAL_CALL ScXMLOasisExport_Styles_getImplementationName() throw()
@@ -377,7 +377,7 @@ uno::Sequence< OUString > SAL_CALL ScXMLOasisExport_Styles_getSupportedServiceNa
 uno::Reference< uno::XInterface > SAL_CALL ScXMLOasisExport_Styles_createInstance(
                 const uno::Reference< lang::XMultiServiceFactory > & rSMgr ) throw( uno::Exception )
 {
-    return (cppu::OWeakObject*)new ScXMLExport(comphelper::getComponentContext(rSMgr), EXPORT_STYLES|EXPORT_MASTERSTYLES|EXPORT_AUTOSTYLES|EXPORT_FONTDECLS|EXPORT_OASIS);
+    return (cppu::OWeakObject*)new ScXMLExport(comphelper::getComponentContext(rSMgr), ScXMLOasisExport_Styles_getImplementationName(), EXPORT_STYLES|EXPORT_MASTERSTYLES|EXPORT_AUTOSTYLES|EXPORT_FONTDECLS|EXPORT_OASIS);
 }
 
 OUString SAL_CALL ScXMLOasisExport_Content_getImplementationName() throw()
@@ -395,7 +395,7 @@ uno::Sequence< OUString > SAL_CALL ScXMLOasisExport_Content_getSupportedServiceN
 uno::Reference< uno::XInterface > SAL_CALL ScXMLOasisExport_Content_createInstance(
                 const uno::Reference< lang::XMultiServiceFactory > & rSMgr ) throw( uno::Exception )
 {
-    return (cppu::OWeakObject*)new ScXMLExport(comphelper::getComponentContext(rSMgr), EXPORT_AUTOSTYLES|EXPORT_CONTENT|EXPORT_SCRIPTS|EXPORT_FONTDECLS|EXPORT_OASIS);
+    return (cppu::OWeakObject*)new ScXMLExport(comphelper::getComponentContext(rSMgr), ScXMLOasisExport_Content_getImplementationName(), EXPORT_AUTOSTYLES|EXPORT_CONTENT|EXPORT_SCRIPTS|EXPORT_FONTDECLS|EXPORT_OASIS);
 }
 
 OUString SAL_CALL ScXMLOasisExport_Settings_getImplementationName() throw()
@@ -413,7 +413,7 @@ uno::Sequence< OUString > SAL_CALL ScXMLOasisExport_Settings_getSupportedService
 uno::Reference< uno::XInterface > SAL_CALL ScXMLOasisExport_Settings_createInstance(
                 const uno::Reference< lang::XMultiServiceFactory > & rSMgr ) throw( uno::Exception )
 {
-    return (cppu::OWeakObject*)new ScXMLExport(comphelper::getComponentContext(rSMgr), EXPORT_SETTINGS|EXPORT_OASIS);
+    return (cppu::OWeakObject*)new ScXMLExport(comphelper::getComponentContext(rSMgr), ScXMLOasisExport_Settings_getImplementationName(), EXPORT_SETTINGS|EXPORT_OASIS);
 }
 //----------------------------------------------------------------------------
 
@@ -455,9 +455,9 @@ sal_Int16 ScXMLExport::GetFieldUnit()
 // #110680#
 ScXMLExport::ScXMLExport(
     const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext > xContext,
-    const sal_uInt16 nExportFlag)
+    OUString const & implementationName, sal_uInt16 nExportFlag)
 :   SvXMLExport( SvXMLUnitConverter::GetMeasureUnit(GetFieldUnit()),
-        xContext, XML_SPREADSHEET, nExportFlag ),
+        xContext, implementationName, XML_SPREADSHEET, nExportFlag ),
     pDoc(NULL),
     nSourceStreamPos(0),
     pNumberFormatAttributesExportHelper(NULL),
@@ -5085,68 +5085,6 @@ void SAL_CALL ScXMLExport::initialize( const ::com::sun::star::uno::Sequence< ::
     SvXMLExport::initialize(aArguments);
 }
 
-// XServiceInfo
-OUString SAL_CALL ScXMLExport::getImplementationName(  )
-    throw(::com::sun::star::uno::RuntimeException)
-{
-    SolarMutexGuard aGuard;
-
-    sal_uInt16 nFlags = getExportFlags();
-    if (nFlags & EXPORT_OASIS)
-    {
-        nFlags |= EXPORT_OASIS;
-        switch( nFlags )
-        {
-            case EXPORT_ALL:
-                return ScXMLOasisExport_getImplementationName();
-            case (EXPORT_STYLES|EXPORT_MASTERSTYLES|EXPORT_AUTOSTYLES|EXPORT_FONTDECLS):
-                return ScXMLOasisExport_Styles_getImplementationName();
-            case (EXPORT_AUTOSTYLES|EXPORT_CONTENT|EXPORT_SCRIPTS|EXPORT_FONTDECLS):
-                return ScXMLOasisExport_Content_getImplementationName();
-            case EXPORT_META:
-                return ScXMLOasisExport_Meta_getImplementationName();
-            case EXPORT_SETTINGS:
-                return ScXMLOasisExport_Settings_getImplementationName();
-            default:
-                // generic name for 'unknown' cases
-                return ScXMLOasisExport_getImplementationName();
-        }
-    }
-    else
-    {
-        switch( nFlags )
-        {
-            case EXPORT_ALL:
-                return ScXMLOOoExport_getImplementationName();
-            case (EXPORT_STYLES|EXPORT_MASTERSTYLES|EXPORT_AUTOSTYLES|EXPORT_FONTDECLS):
-                return ScXMLOOoExport_Styles_getImplementationName();
-            case (EXPORT_AUTOSTYLES|EXPORT_CONTENT|EXPORT_SCRIPTS|EXPORT_FONTDECLS):
-                return ScXMLOOoExport_Content_getImplementationName();
-            case EXPORT_META:
-                return ScXMLOOoExport_Meta_getImplementationName();
-            case EXPORT_SETTINGS:
-                return ScXMLOOoExport_Settings_getImplementationName();
-            default:
-                // generic name for 'unknown' cases
-                return ScXMLOOoExport_getImplementationName();
-        }
-    }
-}
-
-sal_Bool SAL_CALL ScXMLExport::supportsService( const OUString& ServiceName )
-    throw(::com::sun::star::uno::RuntimeException)
-{
-    SolarMutexGuard aGuard;
-    return SvXMLExport::supportsService( ServiceName );
-}
-
-::com::sun::star::uno::Sequence< OUString > SAL_CALL ScXMLExport::getSupportedServiceNames(  )
-    throw(::com::sun::star::uno::RuntimeException)
-{
-    SolarMutexGuard aGuard;
-    return SvXMLExport::getSupportedServiceNames();
-}
-
 // XUnoTunnel
 sal_Int64 SAL_CALL ScXMLExport::getSomething( const ::com::sun::star::uno::Sequence< sal_Int8 >& aIdentifier )
     throw(::com::sun::star::uno::RuntimeException)
diff --git a/sc/source/filter/xml/xmlexprt.hxx b/sc/source/filter/xml/xmlexprt.hxx
index 564009d..3364f5b 100644
--- a/sc/source/filter/xml/xmlexprt.hxx
+++ b/sc/source/filter/xml/xmlexprt.hxx
@@ -232,7 +232,7 @@ protected:
 public:
     ScXMLExport(
         const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext > xContext,
-        const sal_uInt16 nExportFlag);
+        OUString const & implementationName, sal_uInt16 nExportFlag);
 
     virtual ~ScXMLExport();
 
@@ -271,11 +271,6 @@ public:
     // XInitialization
     virtual void SAL_CALL initialize( const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any >& aArguments ) throw(::com::sun::star::uno::Exception, ::com::sun::star::uno::RuntimeException);
 
-    // XServiceInfo
-    virtual OUString SAL_CALL getImplementationName(  ) throw(::com::sun::star::uno::RuntimeException);
-    virtual sal_Bool SAL_CALL supportsService( const OUString& ServiceName ) throw(::com::sun::star::uno::RuntimeException);
-    virtual ::com::sun::star::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames(  ) throw(::com::sun::star::uno::RuntimeException);
-
     // XUnoTunnel
     virtual sal_Int64 SAL_CALL getSomething( const ::com::sun::star::uno::Sequence< sal_Int8 >& aIdentifier ) throw(::com::sun::star::uno::RuntimeException);
 
diff --git a/starmath/source/mathmlexport.cxx b/starmath/source/mathmlexport.cxx
index a092750..9efdae0 100644
--- a/starmath/source/mathmlexport.cxx
+++ b/starmath/source/mathmlexport.cxx
@@ -361,8 +361,8 @@ sal_Bool SmXMLExportWrapper::WriteThroughComponent(
 
 SmXMLExport::SmXMLExport(
     const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext > xContext,
-    sal_uInt16 nExportFlags)
-:   SvXMLExport(util::MeasureUnit::INCH, xContext, XML_MATH,
+    OUString const & implementationName, sal_uInt16 nExportFlags)
+:   SvXMLExport(util::MeasureUnit::INCH, xContext, implementationName, XML_MATH,
                 nExportFlags)
 ,   pTree(0) ,
     bSuccess(sal_False)
@@ -411,7 +411,7 @@ uno::Reference< uno::XInterface > SAL_CALL SmXMLExport_createInstance(
     // EXPORT_OASIS is required here allthough there is no differrence between
     // OOo and OASIS, because without the flag, a transformation to OOo would
     // be chained in.
-    return (cppu::OWeakObject*)new SmXMLExport( comphelper::getComponentContext(rSMgr), EXPORT_OASIS|EXPORT_ALL );
+    return (cppu::OWeakObject*)new SmXMLExport( comphelper::getComponentContext(rSMgr), SmXMLExport_getImplementationName(), EXPORT_OASIS|EXPORT_ALL );
 }
 
 OUString SAL_CALL SmXMLExportMetaOOO_getImplementationName() throw()
@@ -431,7 +431,7 @@ uno::Reference< uno::XInterface > SAL_CALL SmXMLExportMetaOOO_createInstance(
     const uno::Reference< lang::XMultiServiceFactory > & rSMgr)
 throw( uno::Exception )
 {
-    return (cppu::OWeakObject*)new SmXMLExport( comphelper::getComponentContext(rSMgr), EXPORT_META );
+    return (cppu::OWeakObject*)new SmXMLExport( comphelper::getComponentContext(rSMgr), SmXMLExportMetaOOO_getImplementationName(), EXPORT_META );
 }
 
 OUString SAL_CALL SmXMLExportMeta_getImplementationName() throw()
@@ -451,7 +451,7 @@ uno::Reference< uno::XInterface > SAL_CALL SmXMLExportMeta_createInstance(
     const uno::Reference< lang::XMultiServiceFactory > & rSMgr)
 throw( uno::Exception )
 {
-    return (cppu::OWeakObject*)new SmXMLExport( comphelper::getComponentContext(rSMgr), EXPORT_OASIS|EXPORT_META );
+    return (cppu::OWeakObject*)new SmXMLExport( comphelper::getComponentContext(rSMgr), SmXMLExportMeta_getImplementationName(), EXPORT_OASIS|EXPORT_META );
 }
 
 OUString SAL_CALL SmXMLExportSettingsOOO_getImplementationName() throw()
@@ -471,7 +471,7 @@ uno::Reference< uno::XInterface > SAL_CALL SmXMLExportSettingsOOO_createInstance
     const uno::Reference< lang::XMultiServiceFactory > & rSMgr)
 throw( uno::Exception )
 {
-    return (cppu::OWeakObject*)new SmXMLExport( comphelper::getComponentContext(rSMgr), EXPORT_SETTINGS );
+    return (cppu::OWeakObject*)new SmXMLExport( comphelper::getComponentContext(rSMgr), SmXMLExportSettingsOOO_getImplementationName(), EXPORT_SETTINGS );
 }
 
 OUString SAL_CALL SmXMLExportSettings_getImplementationName() throw()
@@ -491,7 +491,7 @@ uno::Reference< uno::XInterface > SAL_CALL SmXMLExportSettings_createInstance(
     const uno::Reference< lang::XMultiServiceFactory > & rSMgr)
 throw( uno::Exception )
 {
-    return (cppu::OWeakObject*)new SmXMLExport( comphelper::getComponentContext(rSMgr), EXPORT_OASIS|EXPORT_SETTINGS );
+    return (cppu::OWeakObject*)new SmXMLExport( comphelper::getComponentContext(rSMgr), SmXMLExportSettings_getImplementationName(), EXPORT_OASIS|EXPORT_SETTINGS );
 }
 
 OUString SAL_CALL SmXMLExportContent_getImplementationName() throw()
@@ -513,32 +513,7 @@ throw( uno::Exception )
 {
     // The EXPORT_OASIS flag is only required to avoid that a transformer is
     // chanied in
-    return (cppu::OWeakObject*)new SmXMLExport( comphelper::getComponentContext(rSMgr), EXPORT_OASIS|EXPORT_CONTENT );
-}
-
-// XServiceInfo
-// override empty method from parent class
-OUString SAL_CALL SmXMLExport::getImplementationName()
-throw(uno::RuntimeException)
-{
-    OUString aTxt;
-    switch( getExportFlags() )
-    {
-        case EXPORT_META:
-            aTxt = SmXMLExportMeta_getImplementationName();
-            break;
-        case EXPORT_SETTINGS:
-            aTxt = SmXMLExportSettings_getImplementationName();
-            break;
-        case EXPORT_CONTENT:
-            aTxt = SmXMLExportContent_getImplementationName();
-            break;
-        case EXPORT_ALL:
-        default:
-            aTxt = SmXMLExport_getImplementationName();
-            break;
-    }
-    return aTxt;
+    return (cppu::OWeakObject*)new SmXMLExport( comphelper::getComponentContext(rSMgr), SmXMLExportContent_getImplementationName(), EXPORT_OASIS|EXPORT_CONTENT );
 }
 
 sal_uInt32 SmXMLExport::exportDoc(enum XMLTokenEnum eClass)
diff --git a/starmath/source/mathmlexport.hxx b/starmath/source/mathmlexport.hxx
index 7727fdb..628ce35 100644
--- a/starmath/source/mathmlexport.hxx
+++ b/starmath/source/mathmlexport.hxx
@@ -106,12 +106,9 @@ protected:
 public:
     SmXMLExport(
         const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext > xContext,
-        sal_uInt16 nExportFlags=EXPORT_ALL);
+        OUString const & implementationName, sal_uInt16 nExportFlags);
     virtual ~SmXMLExport() {};
 
-    // XServiceInfo (override parent method)
-    OUString SAL_CALL getImplementationName() throw( ::com::sun::star::uno::RuntimeException );
-
     // XUnoTunnel
     sal_Int64 SAL_CALL getSomething( const ::com::sun::star::uno::Sequence< sal_Int8 >& rId ) throw(::com::sun::star::uno::RuntimeException);
     static const ::com::sun::star::uno::Sequence< sal_Int8 > & getUnoTunnelId() throw();
diff --git a/svx/source/xml/xmlxtexp.cxx b/svx/source/xml/xmlxtexp.cxx
index 4d74dbd..10ab02e 100644
--- a/svx/source/xml/xmlxtexp.cxx
+++ b/svx/source/xml/xmlxtexp.cxx
@@ -151,7 +151,7 @@ SvxXMLXTableExportComponent::SvxXMLXTableExportComponent(
     const uno::Reference<xml::sax::XDocumentHandler> & rHandler,
     const uno::Reference<container::XNameContainer >& xTable,
     uno::Reference<document::XGraphicObjectResolver >& xGrfResolver )
-:   SvXMLExport( xContext, rFileName, rHandler, NULL, MAP_100TH_MM),
+:   SvXMLExport( xContext, "", rFileName, rHandler, NULL, MAP_100TH_MM),
     mxTable( xTable )
 {
 
diff --git a/sw/source/core/swg/SwXMLBlockExport.cxx b/sw/source/core/swg/SwXMLBlockExport.cxx
index 39aa87a..93131a4 100644
--- a/sw/source/core/swg/SwXMLBlockExport.cxx
+++ b/sw/source/core/swg/SwXMLBlockExport.cxx
@@ -32,7 +32,7 @@ SwXMLBlockListExport::SwXMLBlockListExport(
     SwXMLTextBlocks & rBlocks,
     const OUString &rFileName,
     uno::Reference< xml::sax::XDocumentHandler> &rHandler)
-:   SvXMLExport( xContext, rFileName, util::MeasureUnit::CM, rHandler ),
+:   SvXMLExport( xContext, "", rFileName, util::MeasureUnit::CM, rHandler ),
     rBlockList(rBlocks)
 {
     _GetNamespaceMap().Add( GetXMLToken ( XML_NP_BLOCK_LIST ),
@@ -83,7 +83,7 @@ SwXMLTextBlockExport::SwXMLTextBlockExport(
     SwXMLTextBlocks & rBlocks,
     const OUString &rFileName,
     uno::Reference< xml::sax::XDocumentHandler> &rHandler)
-:   SvXMLExport( xContext, rFileName, util::MeasureUnit::CM, rHandler ),
+:   SvXMLExport( xContext, "", rFileName, util::MeasureUnit::CM, rHandler ),
     rBlockList(rBlocks)
 {
     _GetNamespaceMap().Add( GetXMLToken ( XML_NP_BLOCK_LIST ),
diff --git a/sw/source/filter/xml/xmlexp.cxx b/sw/source/filter/xml/xmlexp.cxx
index a971029..df90df5 100644
--- a/sw/source/filter/xml/xmlexp.cxx
+++ b/sw/source/filter/xml/xmlexp.cxx
@@ -80,8 +80,8 @@ using namespace ::xmloff::token;
 
 SwXMLExport::SwXMLExport(
     const uno::Reference< uno::XComponentContext > xContext,
-    sal_uInt16 nExportFlags)
-:   SvXMLExport( util::MeasureUnit::INCH, xContext, XML_TEXT,
+    OUString const & implementationName, sal_uInt16 nExportFlags)
+:   SvXMLExport( util::MeasureUnit::INCH, xContext, implementationName, XML_TEXT,
         nExportFlags ),
     pTableItemMapper( 0 ),
     pTableLines( 0 ),
@@ -534,7 +534,7 @@ Reference< XInterface > SAL_CALL SwXMLExportOOO_createInstance(
         const Reference< XMultiServiceFactory > & rSMgr)
     throw( Exception )
 {
-    return (cppu::OWeakObject*)new SwXMLExport( comphelper::getComponentContext(rSMgr), EXPORT_ALL);
+    return (cppu::OWeakObject*)new SwXMLExport( comphelper::getComponentContext(rSMgr), SwXMLExportOOO_getImplementationName(), EXPORT_ALL);
 }
 
 OUString SAL_CALL SwXMLExportStylesOOO_getImplementationName() throw()
@@ -555,7 +555,7 @@ Reference< XInterface > SAL_CALL SwXMLExportStylesOOO_createInstance(
         const Reference< XMultiServiceFactory > & rSMgr)
     throw( Exception )
 {
-    return (cppu::OWeakObject*)new SwXMLExport( comphelper::getComponentContext(rSMgr),
+    return (cppu::OWeakObject*)new SwXMLExport( comphelper::getComponentContext(rSMgr), SwXMLExportStylesOOO_getImplementationName(),
         EXPORT_STYLES | EXPORT_MASTERSTYLES | EXPORT_AUTOSTYLES |
         EXPORT_FONTDECLS );
 }
@@ -578,7 +578,7 @@ Reference< XInterface > SAL_CALL SwXMLExportContentOOO_createInstance(
         const Reference< XMultiServiceFactory > & rSMgr)
     throw( Exception )
 {
-    return (cppu::OWeakObject*)new SwXMLExport( comphelper::getComponentContext(rSMgr),
+    return (cppu::OWeakObject*)new SwXMLExport( comphelper::getComponentContext(rSMgr), SwXMLExportContentOOO_getImplementationName(),
         EXPORT_AUTOSTYLES | EXPORT_CONTENT | EXPORT_SCRIPTS |
         EXPORT_FONTDECLS );
 }
@@ -601,7 +601,7 @@ Reference< XInterface > SAL_CALL SwXMLExportMetaOOO_createInstance(
         const Reference< XMultiServiceFactory > & rSMgr)
     throw( Exception )
 {
-    return (cppu::OWeakObject*)new SwXMLExport( comphelper::getComponentContext(rSMgr), EXPORT_META);
+    return (cppu::OWeakObject*)new SwXMLExport( comphelper::getComponentContext(rSMgr), SwXMLExportMetaOOO_getImplementationName(), EXPORT_META);
 }
 
 OUString SAL_CALL SwXMLExportSettingsOOO_getImplementationName() throw()
@@ -622,7 +622,7 @@ Reference< XInterface > SAL_CALL SwXMLExportSettingsOOO_createInstance(
         const Reference< XMultiServiceFactory > & rSMgr)
     throw( Exception )
 {
-    return (cppu::OWeakObject*)new SwXMLExport( comphelper::getComponentContext(rSMgr), EXPORT_SETTINGS);
+    return (cppu::OWeakObject*)new SwXMLExport( comphelper::getComponentContext(rSMgr), SwXMLExportSettingsOOO_getImplementationName(), EXPORT_SETTINGS);
 }
 
 // OASIS
@@ -644,7 +644,7 @@ Reference< XInterface > SAL_CALL SwXMLExport_createInstance(
         const Reference< XMultiServiceFactory > & rSMgr)
     throw( Exception )
 {
-    return (cppu::OWeakObject*)new SwXMLExport( comphelper::getComponentContext(rSMgr), EXPORT_ALL|EXPORT_OASIS);
+    return (cppu::OWeakObject*)new SwXMLExport( comphelper::getComponentContext(rSMgr), SwXMLExport_getImplementationName(), EXPORT_ALL|EXPORT_OASIS);
 }
 
 OUString SAL_CALL SwXMLExportStyles_getImplementationName() throw()
@@ -665,7 +665,7 @@ Reference< XInterface > SAL_CALL SwXMLExportStyles_createInstance(
         const Reference< XMultiServiceFactory > & rSMgr)
     throw( Exception )
 {
-    return (cppu::OWeakObject*)new SwXMLExport( comphelper::getComponentContext(rSMgr),
+    return (cppu::OWeakObject*)new SwXMLExport( comphelper::getComponentContext(rSMgr), SwXMLExportStyles_getImplementationName(),
         EXPORT_STYLES | EXPORT_MASTERSTYLES | EXPORT_AUTOSTYLES |
         EXPORT_FONTDECLS|EXPORT_OASIS );
 }
@@ -689,7 +689,7 @@ Reference< XInterface > SAL_CALL SwXMLExportContent_createInstance(
     throw( Exception )
 {
     return (cppu::OWeakObject*)new SwXMLExport(
-        comphelper::getComponentContext(rSMgr),
+        comphelper::getComponentContext(rSMgr), SwXMLExportContent_getImplementationName(),
         EXPORT_AUTOSTYLES | EXPORT_CONTENT | EXPORT_SCRIPTS |
         EXPORT_FONTDECLS|EXPORT_OASIS );
 }
@@ -712,7 +712,7 @@ Reference< XInterface > SAL_CALL SwXMLExportMeta_createInstance(
         const Reference< XMultiServiceFactory > & rSMgr)
     throw( Exception )
 {
-    return (cppu::OWeakObject*)new SwXMLExport( comphelper::getComponentContext(rSMgr), EXPORT_META|EXPORT_OASIS);
+    return (cppu::OWeakObject*)new SwXMLExport( comphelper::getComponentContext(rSMgr), SwXMLExportMeta_getImplementationName(), EXPORT_META|EXPORT_OASIS);
 }
 
 OUString SAL_CALL SwXMLExportSettings_getImplementationName() throw()
@@ -733,7 +733,7 @@ Reference< XInterface > SAL_CALL SwXMLExportSettings_createInstance(
         const Reference< XMultiServiceFactory > & rSMgr)
     throw( Exception )
 {
-    return (cppu::OWeakObject*)new SwXMLExport( comphelper::getComponentContext(rSMgr), EXPORT_SETTINGS|EXPORT_OASIS);
+    return (cppu::OWeakObject*)new SwXMLExport( comphelper::getComponentContext(rSMgr), SwXMLExportSettings_getImplementationName(), EXPORT_SETTINGS|EXPORT_OASIS);
 }
 
 namespace
@@ -758,31 +758,6 @@ sal_Int64 SAL_CALL SwXMLExport::getSomething( const Sequence< sal_Int8 >& rId )
     return SvXMLExport::getSomething( rId );
 }
 
-
-// XServiceInfo
-// override empty method from parent class
-OUString SAL_CALL SwXMLExport::getImplementationName()
-    throw(RuntimeException)
-{
-    switch( getExportFlags() )
-    {
-        case EXPORT_ALL:
-            return SwXMLExport_getImplementationName();
-        case (EXPORT_STYLES|EXPORT_MASTERSTYLES|EXPORT_AUTOSTYLES|EXPORT_FONTDECLS):
-            return SwXMLExportStyles_getImplementationName();
-        case (EXPORT_AUTOSTYLES|EXPORT_CONTENT|EXPORT_SCRIPTS|EXPORT_FONTDECLS):
-            return SwXMLExportContent_getImplementationName();
-        case EXPORT_META:
-            return SwXMLExportMeta_getImplementationName();
-        case EXPORT_SETTINGS:
-            return SwXMLExportSettings_getImplementationName();
-        default:
-            // generic name for 'unknown' cases
-            return OUString(
-                "com.sun.star.comp.Writer.SwXMLExport" );
-    }
-}
-
 SwDoc* SwXMLExport::getDoc()
 {
     if( doc != NULL )
diff --git a/sw/source/filter/xml/xmlexp.hxx b/sw/source/filter/xml/xmlexp.hxx
index 0fa8c6b..335643b 100644
--- a/sw/source/filter/xml/xmlexp.hxx
+++ b/sw/source/filter/xml/xmlexp.hxx
@@ -119,7 +119,7 @@ protected:
 public:
     SwXMLExport(
         const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext > xContext,
-        sal_uInt16 nExportFlags = EXPORT_ALL);
+        OUString const & implementationName, sal_uInt16 nExportFlags);
 
     virtual ~SwXMLExport();
 
@@ -144,10 +144,6 @@ public:
     static const ::com::sun::star::uno::Sequence< sal_Int8 > & getUnoTunnelId() throw();
     virtual sal_Int64 SAL_CALL getSomething( const ::com::sun::star::uno::Sequence< sal_Int8 >& aIdentifier ) throw(::com::sun::star::uno::RuntimeException);
 
-    // XServiceInfo (override parent method)
-    OUString SAL_CALL getImplementationName()
-        throw( ::com::sun::star::uno::RuntimeException );
-
     const SwDoc* getDoc() const;
     SwDoc* getDoc();
 };
diff --git a/xmloff/inc/MetaExportComponent.hxx b/xmloff/inc/MetaExportComponent.hxx
index 54d6ca6..0779818 100644
--- a/xmloff/inc/MetaExportComponent.hxx
+++ b/xmloff/inc/MetaExportComponent.hxx
@@ -32,7 +32,7 @@ class XMLMetaExportComponent : public SvXMLExport
 public:
     XMLMetaExportComponent(
         const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext >& xContext,
-        sal_uInt16 nFlags
+        OUString const & implementationName, sal_uInt16 nFlags
         );
 
     virtual ~XMLMetaExportComponent();
diff --git a/xmloff/inc/SchXMLExport.hxx b/xmloff/inc/SchXMLExport.hxx
index 01dea84..db4b004 100644
--- a/xmloff/inc/SchXMLExport.hxx
+++ b/xmloff/inc/SchXMLExport.hxx
@@ -54,13 +54,11 @@ public:
     // #110680#
     SchXMLExport(
         const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext >& xContext,
+        OUString const & implementationName,
         sal_uInt16 nExportFlags = EXPORT_ALL );
     virtual ~SchXMLExport();
 
     UniReference< XMLPropertySetMapper > GetPropertySetMapper() const;
-
-    // XServiceInfo ( : SvXMLExport )
-    virtual OUString SAL_CALL getImplementationName() throw( ::com::sun::star::uno::RuntimeException );
 };
 
 #endif // INCLUDED_XMLOFF_INC_SCHXMLEXPORT_HXX
diff --git a/xmloff/qa/unit/uxmloff.cxx b/xmloff/qa/unit/uxmloff.cxx
index 9bd6e37..fb0f3bb 100644
--- a/xmloff/qa/unit/uxmloff.cxx
+++ b/xmloff/qa/unit/uxmloff.cxx
@@ -47,8 +47,9 @@ void Test::setUp()
 {
     BootstrapFixture::setUp();
 
-    pExport = new SchXMLExport(/* util::MeasureUnit::CM, */
-                               comphelper::getProcessComponentContext());
+    pExport = new SchXMLExport(
+        comphelper::getProcessComponentContext(), "SchXMLExport.Compact",
+        EXPORT_ALL);
 }
 
 void Test::tearDown()
diff --git a/xmloff/source/chart/SchXMLExport.cxx b/xmloff/source/chart/SchXMLExport.cxx
index 4a46a0f..f350d6e 100644
--- a/xmloff/source/chart/SchXMLExport.cxx
+++ b/xmloff/source/chart/SchXMLExport.cxx
@@ -3516,8 +3516,8 @@ void SchXMLExportHelper_Impl::exportText( const OUString& rText, bool bConvertTa
 
 SchXMLExport::SchXMLExport(
     const Reference< uno::XComponentContext >& xContext,
-    sal_uInt16 nExportFlags )
-:   SvXMLExport( util::MeasureUnit::CM, xContext,
+    OUString const & implementationName, sal_uInt16 nExportFlags )
+:   SvXMLExport( util::MeasureUnit::CM, xContext, implementationName,
         ::xmloff::token::XML_CHART, nExportFlags ),
     maAutoStylePool( *this ),
     maExportHelper( *this, maAutoStylePool )
@@ -3715,7 +3715,7 @@ Reference< uno::XInterface > SAL_CALL SchXMLExport_createInstance(const Referenc
 {
     // #110680#
     // #103997# removed some flags from EXPORT_ALL
-    return (cppu::OWeakObject*)new SchXMLExport( comphelper::getComponentContext(rSMgr), EXPORT_ALL ^ ( EXPORT_SETTINGS | EXPORT_MASTERSTYLES | EXPORT_SCRIPTS ));
+    return (cppu::OWeakObject*)new SchXMLExport( comphelper::getComponentContext(rSMgr), SchXMLExport_getImplementationName(), EXPORT_ALL ^ ( EXPORT_SETTINGS | EXPORT_MASTERSTYLES | EXPORT_SCRIPTS ));
 }
 
 // Oasis format
@@ -3735,6 +3735,7 @@ Reference< uno::XInterface > SAL_CALL SchXMLExport_Oasis_createInstance(const Re
 {
     // #103997# removed some flags from EXPORT_ALL
     return (cppu::OWeakObject*)new SchXMLExport( comphelper::getComponentContext(rSMgr),
+        SchXMLExport_Oasis_getImplementationName(),
         (EXPORT_ALL ^ ( EXPORT_SETTINGS | EXPORT_MASTERSTYLES | EXPORT_SCRIPTS )) | EXPORT_OASIS );
 }
 
@@ -3755,7 +3756,7 @@ OUString SAL_CALL SchXMLExport_Styles_getImplementationName() throw()
 Reference< uno::XInterface > SAL_CALL SchXMLExport_Styles_createInstance(const Reference< lang::XMultiServiceFactory >& rSMgr) throw( uno::Exception )
 {
     // #110680#
-    return (cppu::OWeakObject*)new SchXMLExport( comphelper::getComponentContext(rSMgr), EXPORT_STYLES );
+    return (cppu::OWeakObject*)new SchXMLExport( comphelper::getComponentContext(rSMgr), SchXMLExport_Styles_getImplementationName(), EXPORT_STYLES );
 }
 
 // Oasis format
@@ -3773,7 +3774,7 @@ OUString SAL_CALL SchXMLExport_Oasis_Styles_getImplementationName() throw()
 
 Reference< uno::XInterface > SAL_CALL SchXMLExport_Oasis_Styles_createInstance(const Reference< lang::XMultiServiceFactory > & rSMgr) throw( uno::Exception )
 {
-    return (cppu::OWeakObject*)new SchXMLExport( comphelper::getComponentContext(rSMgr), EXPORT_STYLES | EXPORT_OASIS );
+    return (cppu::OWeakObject*)new SchXMLExport( comphelper::getComponentContext(rSMgr), SchXMLExport_Oasis_Styles_getImplementationName(), EXPORT_STYLES | EXPORT_OASIS );
 }
 
 Sequence< OUString > SAL_CALL SchXMLExport_Content_getSupportedServiceNames() throw()
@@ -3791,7 +3792,7 @@ OUString SAL_CALL SchXMLExport_Content_getImplementationName() throw()
 Reference< uno::XInterface > SAL_CALL SchXMLExport_Content_createInstance(const Reference< lang::XMultiServiceFactory > & rSMgr) throw( uno::Exception )
 {
     // #110680#
-    return (cppu::OWeakObject*)new SchXMLExport( comphelper::getComponentContext(rSMgr), EXPORT_AUTOSTYLES | EXPORT_CONTENT | EXPORT_FONTDECLS );
+    return (cppu::OWeakObject*)new SchXMLExport( comphelper::getComponentContext(rSMgr), SchXMLExport_Content_getImplementationName(), EXPORT_AUTOSTYLES | EXPORT_CONTENT | EXPORT_FONTDECLS );
 }
 
 // Oasis format
@@ -3809,7 +3810,7 @@ OUString SAL_CALL SchXMLExport_Oasis_Content_getImplementationName() throw()
 
 Reference< uno::XInterface > SAL_CALL SchXMLExport_Oasis_Content_createInstance(const Reference< lang::XMultiServiceFactory > & rSMgr) throw( uno::Exception )
 {
-    return (cppu::OWeakObject*)new SchXMLExport( comphelper::getComponentContext(rSMgr), EXPORT_AUTOSTYLES | EXPORT_CONTENT | EXPORT_FONTDECLS | EXPORT_OASIS );
+    return (cppu::OWeakObject*)new SchXMLExport( comphelper::getComponentContext(rSMgr), SchXMLExport_Oasis_Content_getImplementationName(), EXPORT_AUTOSTYLES | EXPORT_CONTENT | EXPORT_FONTDECLS | EXPORT_OASIS );
 }
 
 // Oasis format
@@ -3827,36 +3828,7 @@ OUString SAL_CALL SchXMLExport_Oasis_Meta_getImplementationName() throw()
 
 Reference< uno::XInterface > SAL_CALL SchXMLExport_Oasis_Meta_createInstance(const Reference< lang::XMultiServiceFactory > & rSMgr) throw( uno::Exception )
 {
-    return (cppu::OWeakObject*)new SchXMLExport( comphelper::getComponentContext(rSMgr), EXPORT_META | EXPORT_OASIS  );
-}
-
-// XServiceInfo
-OUString SAL_CALL SchXMLExport::getImplementationName() throw( uno::RuntimeException )
-{
-    switch( getExportFlags())
-    {
-        case EXPORT_ALL:
-            return SchXMLExport_getImplementationName();
-        case EXPORT_STYLES:
-            return SchXMLExport_Styles_getImplementationName();
-        case ( EXPORT_AUTOSTYLES | EXPORT_CONTENT | EXPORT_FONTDECLS ):
-            return SchXMLExport_Content_getImplementationName();
-
-        // Oasis format
-        case ( EXPORT_ALL | EXPORT_OASIS ):
-            return SchXMLExport_Oasis_getImplementationName();
-        case ( EXPORT_STYLES | EXPORT_OASIS ):
-            return SchXMLExport_Oasis_Styles_getImplementationName();
-        case ( EXPORT_AUTOSTYLES | EXPORT_CONTENT | EXPORT_FONTDECLS | EXPORT_OASIS  ):
-            return SchXMLExport_Oasis_Content_getImplementationName();
-        case ( EXPORT_META | EXPORT_OASIS ):
-            return SchXMLExport_Oasis_Meta_getImplementationName();
-
-        case EXPORT_SETTINGS:
-        // there is no settings component in chart
-        default:
-            return OUString( "SchXMLExport" );
-    }
+    return (cppu::OWeakObject*)new SchXMLExport( comphelper::getComponentContext(rSMgr), SchXMLExport_Oasis_Meta_getImplementationName(), EXPORT_META | EXPORT_OASIS  );
 }
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/xmloff/source/core/xmlexp.cxx b/xmloff/source/core/xmlexp.cxx
index c7a29cc..cd9d54f 100644
--- a/xmloff/source/core/xmlexp.cxx
+++ b/xmloff/source/core/xmlexp.cxx
@@ -71,6 +71,7 @@
 #include "XMLBasicExportFilter.hxx"
 #include <cppuhelper/exc_hlp.hxx>
 #include <cppuhelper/implbase1.hxx>
+#include <cppuhelper/supportsservice.hxx>
 #include <comphelper/extract.hxx>
 #include <comphelper/servicehelper.hxx>
 #include "PropertySetMerger.hxx"
@@ -431,9 +432,10 @@ void SvXMLExport::_DetermineModelType()
 SvXMLExport::SvXMLExport(
     sal_Int16 const eDefaultMeasureUnit /*css::util::MeasureUnit*/,
     const uno::Reference< uno::XComponentContext >& xContext,
+    OUString const & implementationName,
     const enum XMLTokenEnum eClass, sal_uInt16 nExportFlags )
 :   mpImpl( new SvXMLExport_Impl ),
-    m_xContext(xContext),
+    m_xContext(xContext), m_implementationName(implementationName),
     mpAttrList( new SvXMLAttributeList ),
     mpNamespaceMap( new SvXMLNamespaceMap ),
     mpUnitConv( new SvXMLUnitConverter( xContext,
@@ -456,11 +458,12 @@ SvXMLExport::SvXMLExport(
 
 SvXMLExport::SvXMLExport(
     const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext >& xContext,
+    OUString const & implementationName,
     const OUString &rFileName,
     sal_Int16 const eDefaultMeasureUnit /*css::util::MeasureUnit*/,
     const uno::Reference< xml::sax::XDocumentHandler > & rHandler)
 :   mpImpl( new SvXMLExport_Impl ),
-    m_xContext(xContext),
+    m_xContext(xContext), m_implementationName(implementationName),
     mxHandler( rHandler ),
     mxExtHandler( rHandler, uno::UNO_QUERY ),
     mpAttrList( new SvXMLAttributeList ),
@@ -490,12 +493,13 @@ SvXMLExport::SvXMLExport(
 
 SvXMLExport::SvXMLExport(
     const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext >& xContext,
+    OUString const & implementationName,
     const OUString &rFileName,
     const uno::Reference< xml::sax::XDocumentHandler > & rHandler,
     const Reference< XModel >& rModel,
     sal_Int16 const eDefaultFieldUnit)
 :   mpImpl( new SvXMLExport_Impl ),
-    m_xContext(xContext),
+    m_xContext(xContext), m_implementationName(implementationName),
     mxModel( rModel ),
     mxHandler( rHandler ),
     mxExtHandler( rHandler, uno::UNO_QUERY ),
@@ -858,15 +862,12 @@ void SAL_CALL SvXMLExport::setName( const OUString& )
 // XServiceInfo
 OUString SAL_CALL SvXMLExport::getImplementationName(  ) throw(uno::RuntimeException)
 {
-    OUString aStr;
-    return aStr;
+    return m_implementationName;
 }
 
 sal_Bool SAL_CALL SvXMLExport::supportsService( const OUString& rServiceName ) throw(uno::RuntimeException)
 {
-    return
-        (rServiceName == "com.sun.star.document.ExportFilter") ||
-        (rServiceName == "com.sun.star.xml.XMLExportFilter");
+    return cppu::supportsService(this, rServiceName);
 }
 
 uno::Sequence< OUString > SAL_CALL SvXMLExport::getSupportedServiceNames(  )
diff --git a/xmloff/source/draw/sdxmlexp.cxx b/xmloff/source/draw/sdxmlexp.cxx
index b4e8cd1..7a5edd5 100644
--- a/xmloff/source/draw/sdxmlexp.cxx
+++ b/xmloff/source/draw/sdxmlexp.cxx
@@ -388,8 +388,9 @@ ImpXMLAutoLayoutInfo::ImpXMLAutoLayoutInfo(sal_uInt16 nTyp, ImpXMLEXPPageMasterI
 // #110680#
 SdXMLExport::SdXMLExport(
     const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext >& xContext,
+    OUString const & implementationName,
     sal_Bool bIsDraw, sal_uInt16 nExportFlags )
-:   SvXMLExport( util::MeasureUnit::CM, xContext,
+:   SvXMLExport( util::MeasureUnit::CM, xContext, implementationName,
         (bIsDraw) ? XML_GRAPHICS : XML_PRESENTATION, nExportFlags ),
     mnDocMasterPageCount(0L),
     mnDocDrawPageCount(0L),
@@ -2743,7 +2744,7 @@ OUString SAL_CALL classname##_getImplementationName() throw()\
 }\
 uno::Reference< uno::XInterface > SAL_CALL classname##_createInstance(const uno::Reference< lang::XMultiServiceFactory > & rSMgr) throw( uno::Exception )\
 {\
-    return (cppu::OWeakObject*)new SdXMLExport( comphelper::getComponentContext(rSMgr), draw, flags );\
+    return (cppu::OWeakObject*)new SdXMLExport( comphelper::getComponentContext(rSMgr), implementationname, draw, flags ); \
 }
 
 SERVICE( XMLImpressExportOasis, "com.sun.star.comp.Impress.XMLOasisExporter", "XMLImpressExportOasis", sal_False, EXPORT_OASIS|EXPORT_META|EXPORT_STYLES|EXPORT_MASTERSTYLES|EXPORT_AUTOSTYLES|EXPORT_CONTENT|EXPORT_SCRIPTS|EXPORT_SETTINGS|EXPORT_FONTDECLS|EXPORT_EMBEDDED );
@@ -2773,74 +2774,6 @@ SERVICE( XMLDrawSettingsExportOOO, "com.sun.star.comp.Draw.XMLSettingsExporter",
 SERVICE( XMLDrawingLayerExport, "com.sun.star.comp.DrawingLayer.XMLExporter", "XMLDrawingLayerExport", sal_True, EXPORT_OASIS|EXPORT_STYLES|EXPORT_AUTOSTYLES|EXPORT_CONTENT|EXPORT_FONTDECLS|EXPORT_EMBEDDED );
 SERVICE( XMLImpressClipboardExport, "com.sun.star.comp.Impress.XMLClipboardExporter", "XMLImpressClipboardExport", sal_False, EXPORT_OASIS|EXPORT_STYLES|EXPORT_AUTOSTYLES|EXPORT_CONTENT|EXPORT_FONTDECLS|EXPORT_EMBEDDED );
 
-// XServiceInfo
-OUString SAL_CALL SdXMLExport::getImplementationName() throw( uno::RuntimeException )
-{
-    if( IsDraw())
-    {
-        // Draw
-
-        switch( getExportFlags())
-        {
-            case EXPORT_META|EXPORT_STYLES|EXPORT_MASTERSTYLES|EXPORT_AUTOSTYLES|EXPORT_CONTENT|EXPORT_SCRIPTS|EXPORT_SETTINGS|EXPORT_FONTDECLS|EXPORT_EMBEDDED:
-                return XMLDrawExportOOO_getImplementationName();
-            case EXPORT_STYLES|EXPORT_MASTERSTYLES|EXPORT_AUTOSTYLES|EXPORT_FONTDECLS:
-                return XMLDrawStylesExportOOO_getImplementationName();
-            case EXPORT_AUTOSTYLES|EXPORT_CONTENT|EXPORT_SCRIPTS|EXPORT_FONTDECLS:
-                return XMLDrawContentExportOOO_getImplementationName();
-            case EXPORT_META:
-                return XMLDrawMetaExportOOO_getImplementationName();
-            case EXPORT_SETTINGS:
-                return XMLDrawSettingsExportOOO_getImplementationName();
-
-            case EXPORT_OASIS|EXPORT_META|EXPORT_STYLES|EXPORT_MASTERSTYLES|EXPORT_AUTOSTYLES|EXPORT_CONTENT|EXPORT_SCRIPTS|EXPORT_SETTINGS|EXPORT_FONTDECLS|EXPORT_EMBEDDED:
-                return XMLDrawExportOasis_getImplementationName();
-            case EXPORT_OASIS|EXPORT_STYLES|EXPORT_MASTERSTYLES|EXPORT_AUTOSTYLES|EXPORT_FONTDECLS:
-                return XMLDrawStylesExportOasis_getImplementationName();
-            case EXPORT_OASIS|EXPORT_AUTOSTYLES|EXPORT_CONTENT|EXPORT_SCRIPTS|EXPORT_FONTDECLS:
-                return XMLDrawContentExportOasis_getImplementationName();
-            case EXPORT_OASIS|EXPORT_META:
-                return XMLDrawMetaExportOasis_getImplementationName();
-            case EXPORT_OASIS|EXPORT_SETTINGS:
-                return XMLDrawSettingsExportOasis_getImplementationName();
-
-            default:
-                return XMLDrawExportOOO_getImplementationName();
-        }
-    }
-    else
-    {
-        // Impress
-
-        switch( getExportFlags())
-        {
-            case EXPORT_META|EXPORT_STYLES|EXPORT_MASTERSTYLES|EXPORT_AUTOSTYLES|EXPORT_CONTENT|EXPORT_SCRIPTS|EXPORT_SETTINGS|EXPORT_FONTDECLS|EXPORT_EMBEDDED:
-                return XMLImpressExportOOO_getImplementationName();
-            case EXPORT_STYLES|EXPORT_MASTERSTYLES|EXPORT_AUTOSTYLES|EXPORT_FONTDECLS:
-                return XMLImpressStylesExportOOO_getImplementationName();
-            case EXPORT_AUTOSTYLES|EXPORT_CONTENT|EXPORT_SCRIPTS|EXPORT_FONTDECLS:
-                return XMLImpressContentExportOOO_getImplementationName();
-            case EXPORT_META:
-                return XMLImpressMetaExportOOO_getImplementationName();
-            case EXPORT_SETTINGS:
-                return XMLImpressSettingsExportOOO_getImplementationName();
-            case EXPORT_OASIS|EXPORT_META|EXPORT_STYLES|EXPORT_MASTERSTYLES|EXPORT_AUTOSTYLES|EXPORT_CONTENT|EXPORT_SCRIPTS|EXPORT_SETTINGS|EXPORT_FONTDECLS|EXPORT_EMBEDDED:
-                return XMLImpressExportOasis_getImplementationName();
-            case EXPORT_OASIS|EXPORT_STYLES|EXPORT_MASTERSTYLES|EXPORT_AUTOSTYLES|EXPORT_FONTDECLS:
-                return XMLImpressStylesExportOasis_getImplementationName();
-            case EXPORT_OASIS|EXPORT_AUTOSTYLES|EXPORT_CONTENT|EXPORT_SCRIPTS|EXPORT_FONTDECLS:
-                return XMLImpressContentExportOasis_getImplementationName();
-            case EXPORT_OASIS|EXPORT_META:
-                return XMLImpressMetaExportOasis_getImplementationName();
-            case EXPORT_OASIS|EXPORT_SETTINGS:
-                return XMLImpressSettingsExportOasis_getImplementationName();
-
-            default:
-                return XMLImpressExportOOO_getImplementationName();
-        }
-    }
-}
-
 XMLFontAutoStylePool* SdXMLExport::CreateFontAutoStylePool()
 {
     bool bEmbedFonts = false;
diff --git a/xmloff/source/draw/sdxmlexp_impl.hxx b/xmloff/source/draw/sdxmlexp_impl.hxx
index 613bf2a..0e0ee73 100644
--- a/xmloff/source/draw/sdxmlexp_impl.hxx
+++ b/xmloff/source/draw/sdxmlexp_impl.hxx
@@ -171,6 +171,7 @@ protected:
 public:
     SdXMLExport(
         const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext >& xContext,
+        OUString const & implementationName,
         sal_Bool bIsDraw, sal_uInt16 nExportFlags = EXPORT_ALL );
     virtual ~SdXMLExport();
 
@@ -196,9 +197,6 @@ public:
     virtual void exportDataStyles();
     virtual void exportAutoDataStyles();
     virtual OUString getDataStyleName(const sal_Int32 nNumberFormat, sal_Bool bTimeFormat = sal_False ) const;
-
-    // XServiceInfo ( : SvXMLExport )
-    virtual OUString SAL_CALL getImplementationName() throw( ::com::sun::star::uno::RuntimeException );
 };
 
 #endif  //  _SDXMLEXP_HXX
diff --git a/xmloff/source/meta/MetaExportComponent.cxx b/xmloff/source/meta/MetaExportComponent.cxx
index 4595f70..5e86d98 100644
--- a/xmloff/source/meta/MetaExportComponent.cxx
+++ b/xmloff/source/meta/MetaExportComponent.cxx
@@ -43,8 +43,8 @@ using namespace ::xmloff::token;
 
 XMLMetaExportComponent::XMLMetaExportComponent(
     const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext >& xContext,
-        sal_uInt16 nFlags )
-:   SvXMLExport( util::MeasureUnit::CM, xContext, XML_TEXT, nFlags )
+    OUString const & implementationName, sal_uInt16 nFlags )
+:   SvXMLExport( util::MeasureUnit::CM, xContext, implementationName, XML_TEXT, nFlags )
 {
 }
 
@@ -199,7 +199,7 @@ uno::Reference< uno::XInterface > SAL_CALL XMLMetaExportComponent_createInstance
         const uno::Reference< lang::XMultiServiceFactory > & rSMgr)
     throw( uno::Exception )
 {
-    return (cppu::OWeakObject*)new XMLMetaExportComponent( comphelper::getComponentContext(rSMgr), EXPORT_META|EXPORT_OASIS);
+    return (cppu::OWeakObject*)new XMLMetaExportComponent( comphelper::getComponentContext(rSMgr), XMLMetaExportComponent_getImplementationName(), EXPORT_META|EXPORT_OASIS);
 }
 
 uno::Sequence< OUString > SAL_CALL XMLMetaExportOOO_getSupportedServiceNames()
@@ -220,7 +220,7 @@ uno::Reference< uno::XInterface > SAL_CALL XMLMetaExportOOO_createInstance(
         const uno::Reference< lang::XMultiServiceFactory > & rSMgr)
     throw( uno::Exception )
 {
-    return (cppu::OWeakObject*)new XMLMetaExportComponent( comphelper::getComponentContext(rSMgr), EXPORT_META);
+    return (cppu::OWeakObject*)new XMLMetaExportComponent( comphelper::getComponentContext(rSMgr), XMLMetaExportOOO_getImplementationName(), EXPORT_META);
 }
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/xmloff/source/meta/xmlversion.cxx b/xmloff/source/meta/xmlversion.cxx
index c940b22..111abc1 100644
--- a/xmloff/source/meta/xmlversion.cxx
+++ b/xmloff/source/meta/xmlversion.cxx
@@ -45,7 +45,7 @@ XMLVersionListExport::XMLVersionListExport(
     const com::sun::star::uno::Sequence < com::sun::star::util::RevisionTag >& rVersions,
     const OUString &rFileName,
     Reference< XDocumentHandler > &rHandler )
-:   SvXMLExport( xContext, rFileName, util::MeasureUnit::CM, rHandler ),
+:   SvXMLExport( xContext, "", rFileName, util::MeasureUnit::CM, rHandler ),
     maVersions( rVersions )
 {
     _GetNamespaceMap().AddAtIndex( XML_NAMESPACE_DC_IDX, xmloff::token::GetXMLToken(xmloff::token::XML_NP_DC),
diff --git a/xmloff/source/text/XMLAutoTextEventExport.cxx b/xmloff/source/text/XMLAutoTextEventExport.cxx
index 0087a95..fe0b57f 100644
--- a/xmloff/source/text/XMLAutoTextEventExport.cxx
+++ b/xmloff/source/text/XMLAutoTextEventExport.cxx
@@ -60,9 +60,9 @@ using ::com::sun::star::xml::sax::XDocumentHandler;
 
 XMLAutoTextEventExport::XMLAutoTextEventExport(
     const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext >& xContext,
-        sal_uInt16 nFlags
+    OUString const & implementationName, sal_uInt16 nFlags
     )
-:   SvXMLExport(util::MeasureUnit::INCH, xContext, XML_AUTO_TEXT, nFlags)
+:   SvXMLExport(util::MeasureUnit::INCH, xContext, implementationName, XML_AUTO_TEXT, nFlags)
 ,
         sEventType("EventType"),
         sNone("None")
@@ -228,7 +228,7 @@ Reference< XInterface > SAL_CALL XMLAutoTextEventExport_createInstance(
         const Reference< XMultiServiceFactory > & rSMgr)
     throw( Exception )
 {
-    return (cppu::OWeakObject*)new XMLAutoTextEventExport( comphelper::getComponentContext(rSMgr), EXPORT_ALL|EXPORT_OASIS);
+    return (cppu::OWeakObject*)new XMLAutoTextEventExport( comphelper::getComponentContext(rSMgr), XMLAutoTextEventExport_getImplementationName(), EXPORT_ALL|EXPORT_OASIS);
 }
 
 // methods to support the component registration
@@ -250,7 +250,7 @@ Reference< XInterface > SAL_CALL XMLAutoTextEventExportOOO_createInstance(
         const Reference< XMultiServiceFactory > & rSMgr)
     throw( Exception )
 {
-    return (cppu::OWeakObject*)new XMLAutoTextEventExport( comphelper::getComponentContext(rSMgr),EXPORT_ALL);
+    return (cppu::OWeakObject*)new XMLAutoTextEventExport( comphelper::getComponentContext(rSMgr), XMLAutoTextEventExportOOO_getImplementationName(), EXPORT_ALL);
 }
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/xmloff/source/text/XMLAutoTextEventExport.hxx b/xmloff/source/text/XMLAutoTextEventExport.hxx
index e30a00e..85f23ef 100644
--- a/xmloff/source/text/XMLAutoTextEventExport.hxx
+++ b/xmloff/source/text/XMLAutoTextEventExport.hxx
@@ -56,7 +56,7 @@ class XMLAutoTextEventExport : public SvXMLExport
 public:
 
     XMLAutoTextEventExport(
-        const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext >& xContext, sal_uInt16 nFlags
+        const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext >& xContext, OUString const & implementationName, sal_uInt16 nFlags
         );
 
     ~XMLAutoTextEventExport();
commit d7a360eb99a403df65574d1e237db04da6e1c4c2
Author: Stephan Bergmann <sbergman at redhat.com>
Date:   Wed Jan 8 14:09:15 2014 +0100

    Lock SolarMutex in RichtTextEngine::Create
    
    ...as always, the question is where exactly to place the mutex guard, but
    without it querying for XServiceInfo of a freshly instantiated
    "stardiv.one.form.component.Edit" (i.e., OFormattedFieldWrapper) would lead to
    failing
    
    > DbgTestSolarMutex () at include/tools/debug.hxx:295
    > OutputDevice::ImplGetGraphics (this=0x2b81dc11e680) at vcl/source/gdi/outdev.cxx:560
    > OutputDevice::DrawRect (this=0x2b81dc11e680, rRect=Rectangle = {...}) at vcl/source/gdi/outdev.cxx:1649
    > OutputDevice::ImplDrawColorWallpaper (this=0x2b81dc11e680, nX=0, nY=0, nWidth=1, nHeight=1, rWallpaper=...) at vcl/source/gdi/outdev6.cxx:778
    > OutputDevice::ImplDrawWallpaper (this=0x2b81dc11e680, nX=0, nY=0, nWidth=1, nHeight=1, rWallpaper=...) at vcl/source/gdi/outdev6.cxx:1083
    > OutputDevice::Erase (this=0x2b81dc11e680) at vcl/source/gdi/outdev6.cxx:1144
    > VirtualDevice::ImplInitVirDev (this=0x2b81dc11e680, pOutDev=0x28dc0a0, nDX=1, nDY=1, nBitCount=0, pData=0x0) at vcl/source/gdi/virdev.cxx:114
    > VirtualDevice::VirtualDevice (this=0x2b81dc11e680, nBitCount=0) at vcl/source/gdi/virdev.cxx:136
    > ImpEditEngine::SetRefDevice (this=0x2b81dc045f10, pRef=0x0) at editeng/source/editeng/impedit2.cxx:195
    > ImpEditEngine::ImpEditEngine (this=0x2b81dc045f10, pEE=0x2b81dc0c8a00, pItemPool=0x2b81dc0a0960) at editeng/source/editeng/impedit2.cxx:156
    > EditEngine::EditEngine (this=0x2b81dc0c8a00, pItemPool=0x2b81dc0a0960) at editeng/source/editeng/editeng.cxx:104
    > frm::RichTextEngine::RichTextEngine (this=0x2b81dc0c8a00, _pPool=0x2b81dc0a0960) at forms/source/richtext/richtextengine.cxx:103
    > frm::RichTextEngine::Create () at forms/source/richtext/richtextengine.cxx:52
    > frm::ORichTextModel::ORichTextModel (this=0x2b81d866ff30, _rxFactory=uno::Reference to (cppu::ComponentContext *) 0x2b813a244dd8) at forms/source/richtext/richtextmodel.cxx:66
    > frm::ORichTextModel::Create (_rxFactory=uno::Reference to (cppuhelper::ServiceManager *) 0x2b813a25a260) at forms/source/richtext/richtextmodel.cxx:243
    > cppu::OSingleFactoryHelper::createInstanceEveryTime (this=0x2b819d66a6a0, xContext=uno::Reference to (cppu::ComponentContext *) 0x2b813a244dd8) at cppuhelper/source/factory.cxx:171
    > cppu::OSingleFactoryHelper::createInstanceWithContext (this=0x2b819d66a6a0, xContext=uno::Reference to (cppu::ComponentContext *) 0x2b813a244dd8) at cppuhelper/source/factory.cxx:203
    > cppu::OFactoryComponentHelper::createInstanceWithContext (this=0x2b819d66a638, xContext=uno::Reference to (cppu::ComponentContext *) 0x2b813a244dd8) at cppuhelper/source/factory.cxx:432
    > non-virtual thunk to cppu::OFactoryComponentHelper::createInstanceWithContext(com::sun::star::uno::Reference<com::sun::star::uno::XComponentContext> const&) () at cppuhelper/source/factory.cxx:433
    > cppuhelper::ServiceManager::createInstanceWithContext (this=0x2b813a25a208, aServiceSpecifier="com.sun.star.form.component.RichTextControl", Context=uno::Reference to (cppu::ComponentContext *) 0x2b813a244dd8) at cppuhelper/source/servicemanager.cxx:979
    > non-virtual thunk to cppuhelper::ServiceManager::createInstanceWithContext(rtl::OUString const&, com::sun::star::uno::Reference<com::sun::star::uno::XComponentContext> const&) () at cppuhelper/source/servicemanager.cxx:987
    > frm::OControlModel::OControlModel (this=0x2b81d8679408, _rxContext=uno::Reference to (cppu::ComponentContext *) 0x2b813a244dd8, _rUnoControlModelTypeName="com.sun.star.form.component.RichTextControl", rDefault="com.sun.star.form.control.TextField", _bSetDelegator=0 '\000') at forms/source/component/FormComponent.cxx:593
    > frm::OBoundControlModel::OBoundControlModel (this=0x2b81d8679408, _rxFactory=uno::Reference to (cppu::ComponentContext *) 0x2b813a244dd8, _rUnoControlModelTypeName="com.sun.star.form.component.RichTextControl", _rDefault="com.sun.star.form.control.TextField", _bCommitable=1 '\001', _bSupportExternalBinding=1 '\001', _bSupportsValidation=1 '\001') at forms/source/component/FormComponent.cxx:1273
    > frm::OEditBaseModel::OEditBaseModel (this=0x2b81d8679408, _rxFactory=uno::Reference to (cppu::ComponentContext *) 0x2b813a244dd8, rUnoControlModelName="com.sun.star.form.component.RichTextControl", rDefault="com.sun.star.form.control.TextField", _bSupportExternalBinding=1 '\001', _bSupportsValidation=1 '\001') at forms/source/component/EditBase.cxx:57
    > frm::OEditModel::OEditModel (this=0x2b81d8679408, _rxFactory=uno::Reference to (cppu::ComponentContext *) 0x2b813a244dd8) at forms/source/component/Edit.cxx:296
    > frm::OEditModel_CreateInstance (_rxFactory=uno::Reference to (cppuhelper::ServiceManager *) 0x2b813a25a260) at forms/source/component/Edit.cxx:280
    > cppu::OSingleFactoryHelper::createInstanceEveryTime (this=0x2b819d66a5c0, xContext=uno::Reference to (cppu::ComponentContext *) 0x2b813a244dd8) at cppuhelper/source/factory.cxx:171
    > cppu::OSingleFactoryHelper::createInstanceWithContext (this=0x2b819d66a5c0, xContext=uno::Reference to (cppu::ComponentContext *) 0x2b813a244dd8) at cppuhelper/source/factory.cxx:203
    > cppu::OFactoryComponentHelper::createInstanceWithContext (this=0x2b819d66a558, xContext=uno::Reference to (cppu::ComponentContext *) 0x2b813a244dd8) at cppuhelper/source/factory.cxx:432
    > non-virtual thunk to cppu::OFactoryComponentHelper::createInstanceWithContext(com::sun::star::uno::Reference<com::sun::star::uno::XComponentContext> const&) () at cppuhelper/source/factory.cxx:433
    > cppuhelper::ServiceManager::createInstanceWithContext (this=0x2b813a25a208, aServiceSpecifier="com.sun.star.form.component.TextField", Context=uno::Reference to (cppu::ComponentContext *) 0x2b813a244dd8) at cppuhelper/source/servicemanager.cxx:979
    > non-virtual thunk to cppuhelper::ServiceManager::createInstanceWithContext(rtl::OUString const&, com::sun::star::uno::Reference<com::sun::star::uno::XComponentContext> const&) () at cppuhelper/source/servicemanager.cxx:987
    > frm::OFormattedFieldWrapper::ensureAggregate (this=0x2b81d8879818) at forms/source/component/FormattedFieldWrapper.cxx:342
    > frm::OFormattedFieldWrapper::queryAggregation (this=0x2b81d8879818, _rType=invalid uno::Type) at forms/source/component/FormattedFieldWrapper.cxx:164
    > cppu::OWeakAggObject::queryInterface (this=0x2b81d8879818, rType=invalid uno::Type) at cppuhelper/source/weak.cxx:281
    > frm::OFormattedFieldWrapper::queryInterface (this=0x2b81d8879818, _rType=invalid uno::Type) at forms/source/component/FormattedFieldWrapper.hxx:68
    > com::sun::star::uno::BaseReference::iquery (pInterface=0x2b81d8879818, rType=invalid uno::Type) at include/com/sun/star/uno/Reference.hxx:43
    > com::sun::star::uno::Reference<com::sun::star::lang::XServiceInfo>::iquery (pInterface=0x2b81d8879818) at include/com/sun/star/uno/Reference.hxx:58
    > com::sun::star::uno::Reference<com::sun::star::lang::XServiceInfo>::Reference (this=0x2b81d8663a98, rRef=...) at include/com/sun/star/uno/Reference.hxx:158
    
    Change-Id: I16ebbb2caf4f0fe943c9e43bddde03b5a2627e35

diff --git a/forms/source/richtext/richtextengine.cxx b/forms/source/richtext/richtextengine.cxx
index 25f1b18..8285819 100644
--- a/forms/source/richtext/richtextengine.cxx
+++ b/forms/source/richtext/richtextengine.cxx
@@ -46,6 +46,8 @@ namespace frm
     //--------------------------------------------------------------------
     RichTextEngine* RichTextEngine::Create()
     {
+        SolarMutexGuard g;
+
         SfxItemPool* pPool = EditEngine::CreatePool();
         pPool->FreezeIdRanges();
 
commit 175f650998d328923eb8a6ecbda3a910fbb508e4
Author: Stephan Bergmann <sbergman at redhat.com>
Date:   Wed Jan 8 14:06:01 2014 +0100

    This can be private
    
    Change-Id: Ida54a46580fb3d1ec49ea5daeb55c0235d2bf85a

diff --git a/forms/source/richtext/richtextmodel.hxx b/forms/source/richtext/richtextmodel.hxx
index e4e8aeb..a9c6500 100644
--- a/forms/source/richtext/richtextmodel.hxx
+++ b/forms/source/richtext/richtextmodel.hxx
@@ -99,7 +99,7 @@ namespace frm
     public:
         static  RichTextEngine* getEditEngine( const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XControlModel >& _rxModel );
 
-    protected:
+    private:
         DECLARE_DEFAULT_LEAF_XTOR( ORichTextModel );
 
         // UNO


More information about the Libreoffice-commits mailing list