summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatúš Kukan <matus.kukan@collabora.com>2014-01-09 19:36:11 +0100
committerMatúš Kukan <matus.kukan@collabora.com>2014-01-10 16:29:12 +0100
commita6cade128fceafe94665206d9fdd13fb83aa6dbe (patch)
tree78d29f8ea8be0965855ba2fbb9b1bb779324d650
parent7e3d6c54f629f5a84b1fd09525d506b708acb386 (diff)
fwk: Use constructor feature for SubstitutePathVariables.
Change-Id: Ibd626f00bb844ae8ec1cab773093b8c94bf8d936
-rw-r--r--framework/inc/services/substitutepathvars.hxx285
-rw-r--r--framework/source/register/registerservices.cxx2
-rw-r--r--framework/source/services/substitutepathvars.cxx259
-rw-r--r--framework/util/fwk.component3
4 files changed, 254 insertions, 295 deletions
diff --git a/framework/inc/services/substitutepathvars.hxx b/framework/inc/services/substitutepathvars.hxx
deleted file mode 100644
index 7b5b352f2452..000000000000
--- a/framework/inc/services/substitutepathvars.hxx
+++ /dev/null
@@ -1,285 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*
- * This file is part of the LibreOffice project.
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * This file incorporates work covered by the following license notice:
- *
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed
- * with this work for additional information regarding copyright
- * ownership. The ASF licenses this file to you under the Apache
- * License, Version 2.0 (the "License"); you may not use this file
- * except in compliance with the License. You may obtain a copy of
- * the License at http://www.apache.org/licenses/LICENSE-2.0 .
- */
-
-#ifndef INCLUDED_FRAMEWORK_INC_SERVICES_SUBSTITUTEPATHVARS_HXX
-#define INCLUDED_FRAMEWORK_INC_SERVICES_SUBSTITUTEPATHVARS_HXX
-
-/** Attention: stl headers must(!) be included at first. Otherwise it can make trouble
- with solaris headers ...
-*/
-#include <vector>
-#include <list>
-#include <boost/unordered_map.hpp>
-
-#include <threadhelp/threadhelpbase.hxx>
-#include <macros/generic.hxx>
-#include <macros/xinterface.hxx>
-#include <macros/xtypeprovider.hxx>
-#include <macros/xserviceinfo.hxx>
-#include <stdtypes.h>
-
-#include <com/sun/star/lang/XServiceInfo.hpp>
-#include <com/sun/star/lang/XTypeProvider.hpp>
-#include <com/sun/star/container/NoSuchElementException.hpp>
-#include <com/sun/star/util/XStringSubstitution.hpp>
-
-#include <cppuhelper/implbase2.hxx>
-#include <rtl/ustring.hxx>
-#include <unotools/configitem.hxx>
-#include <tools/link.hxx>
-#include <i18nlangtag/lang.h>
-
-namespace framework
-{
-
-// Must be zero value based
-enum EnvironmentType
-{
- ET_HOST = 0 ,
- ET_YPDOMAIN ,
- ET_DNSDOMAIN ,
- ET_NTDOMAIN ,
- ET_OS ,
- ET_UNKNOWN ,
- ET_COUNT
-};
-
-// Must be zero value based
-enum OperatingSystem
-{
- OS_WINDOWS = 0,
- OS_UNIX ,
- OS_SOLARIS ,
- OS_LINUX ,
- OS_UNKNOWN ,
- OS_COUNT
-};
-
-struct SubstituteRule
-{
- SubstituteRule() {}
- SubstituteRule( const OUString& aVarName,
- const OUString& aValue,
- const com::sun::star::uno::Any& aVal,
- EnvironmentType aType ) :
- aSubstVariable( aVarName ), aSubstValue( aValue ), aEnvValue( aVal ), aEnvType( aType ) {}
-
- OUString aSubstVariable;
- OUString aSubstValue;
- com::sun::star::uno::Any aEnvValue;
- EnvironmentType aEnvType;
-};
-
-struct SubstitutePathNotify
-{
- SubstitutePathNotify() {};
-
- const com::sun::star::uno::Sequence<OUString> aPropertyNames;
-};
-
-class SubstituteVariables : public ::boost::unordered_map< OUString,
- SubstituteRule,
- OUStringHash,
- ::std::equal_to< OUString > >
-{
- public:
- inline void free()
- {
- SubstituteVariables().swap( *this );
- }
-};
-
-typedef std::vector< SubstituteRule > SubstituteRuleVector;
-class SubstitutePathVariables_Impl : public utl::ConfigItem
-{
- public:
- SubstitutePathVariables_Impl( const Link& aNotifyLink );
- virtual ~SubstitutePathVariables_Impl();
-
- static OperatingSystem GetOperatingSystemFromString( const OUString& );
- static EnvironmentType GetEnvTypeFromString( const OUString& );
-
- void GetSharePointsRules( SubstituteVariables& aSubstVarMap );
-
- /** is called from the ConfigManager before application ends or from the
- PropertyChangeListener if the sub tree broadcasts changes. */
- virtual void Notify( const com::sun::star::uno::Sequence< OUString >& aPropertyNames );
- virtual void Commit();
-
- private:
- // Wrapper methods for low-level functions
- OperatingSystem GetOperatingSystem();
- const OUString& GetYPDomainName();
- const OUString& GetDNSDomainName();
- const OUString& GetNTDomainName();
- const OUString& GetHostName();
-
- bool FilterRuleSet( const SubstituteRuleVector& aRuleSet, SubstituteRule& aActiveRule );
-
- void ReadSharePointsFromConfiguration( com::sun::star::uno::Sequence< OUString >& aSharePointsSeq );
- void ReadSharePointRuleSetFromConfiguration( const OUString& aSharePointName,
- const OUString& aSharePointNodeName,
- SubstituteRuleVector& aRuleSet );
-
- // Stored values for domains and host
- bool m_bYPDomainRetrieved;
- OUString m_aYPDomain;
- bool m_bDNSDomainRetrieved;
- OUString m_aDNSDomain;
- bool m_bNTDomainRetrieved;
- OUString m_aNTDomain;
- bool m_bHostRetrieved;
- OUString m_aHost;
-
- Link m_aListenerNotify;
- const OUString m_aSharePointsNodeName;
- const OUString m_aDirPropertyName;
- const OUString m_aEnvPropertyName;
- const OUString m_aLevelSep;
-};
-
-enum PreDefVariable
-{
- PREDEFVAR_INST,
- PREDEFVAR_PROG,
- PREDEFVAR_USER,
- PREDEFVAR_WORK,
- PREDEFVAR_HOME,
- PREDEFVAR_TEMP,
- PREDEFVAR_PATH,
- PREDEFVAR_LANG,
- PREDEFVAR_LANGID,
- PREDEFVAR_VLANG,
- PREDEFVAR_INSTPATH,
- PREDEFVAR_PROGPATH,
- PREDEFVAR_USERPATH,
- PREDEFVAR_INSTURL,
- PREDEFVAR_PROGURL,
- PREDEFVAR_USERURL,
- PREDEFVAR_WORKDIRURL,
- // New variable of hierachy service (#i32656#)
- PREDEFVAR_BASEINSTURL,
- PREDEFVAR_USERDATAURL,
- PREDEFVAR_BRANDBASEURL,
- PREDEFVAR_COUNT
-};
-
-struct PredefinedPathVariables
-{
- // Predefined variables supported by substitute variables
- LanguageType m_eLanguageType; // Lanuage type of Office
- OUString m_FixedVar[ PREDEFVAR_COUNT ]; // Variable value access by PreDefVariable
- OUString m_FixedVarNames[ PREDEFVAR_COUNT ]; // Variable name access by PreDefVariable
-};
-
-struct ReSubstFixedVarOrder
-{
- sal_Int32 nVarValueLength;
- PreDefVariable eVariable;
-
- bool operator< ( const ReSubstFixedVarOrder& aFixedVarOrder ) const
- {
- // Reverse operator< to have high to low ordering
- return ( nVarValueLength > aFixedVarOrder.nVarValueLength );
- }
-};
-
-struct ReSubstUserVarOrder
-{
- sal_Int32 nVarValueLength;
- OUString aVarName;
-
- bool operator< ( const ReSubstUserVarOrder& aUserVarOrder ) const
- {
- // Reverse operator< to have high to low ordering
- return ( nVarValueLength > aUserVarOrder.nVarValueLength );
- }
-};
-
-typedef std::list< ReSubstFixedVarOrder > ReSubstFixedVarOrderVector;
-typedef std::list< ReSubstUserVarOrder > ReSubstUserVarOrderVector;
-
-class SubstitutePathVariables : private ThreadHelpBase, // Struct for right initalization of mutex member! Must be first of baseclasses.
- public ::cppu::WeakImplHelper2< ::com::sun::star::util::XStringSubstitution, css::lang::XServiceInfo >
-{
- friend class SubstitutePathVariables_Impl;
-
- public:
- SubstitutePathVariables( const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext >& xContext );
- virtual ~SubstitutePathVariables();
-
- // XInterface, XTypeProvider, XServiceInfo
- DECLARE_XSERVICEINFO
-
- // XStringSubstitution
- virtual OUString SAL_CALL substituteVariables( const OUString& aText, sal_Bool bSubstRequired )
- throw (::com::sun::star::container::NoSuchElementException, ::com::sun::star::uno::RuntimeException);
- virtual OUString SAL_CALL reSubstituteVariables( const OUString& aText )
- throw (::com::sun::star::uno::RuntimeException);
- virtual OUString SAL_CALL getSubstituteVariableValue( const OUString& variable )
- throw (::com::sun::star::container::NoSuchElementException, ::com::sun::star::uno::RuntimeException);
-
- protected:
- DECL_LINK(implts_ConfigurationNotify, void *);
-
- void SetPredefinedPathVariables( PredefinedPathVariables& );
- OUString ConvertOSLtoUCBURL( const OUString& aOSLCompliantURL ) const;
-
- // Special case (transient) values can change during runtime!
- // Don't store them in the pre defined struct
- OUString GetWorkPath() const;
- OUString GetWorkVariableValue() const;
- OUString GetPathVariableValue() const;
-
- OUString GetHomeVariableValue() const;
-
- // XStringSubstitution implementation methods
- OUString impl_substituteVariable( const OUString& aText, bool bSustRequired )
- throw (::com::sun::star::container::NoSuchElementException, ::com::sun::star::uno::RuntimeException);
- OUString impl_reSubstituteVariables( const OUString& aText )
- throw (::com::sun::star::uno::RuntimeException);
- OUString impl_getSubstituteVariableValue( const OUString& variable )
- throw (::com::sun::star::container::NoSuchElementException, ::com::sun::star::uno::RuntimeException);
-
- private:
- class VarNameToIndexMap : public boost::unordered_map< OUString,
- PreDefVariable,
- OUStringHash,
- ::std::equal_to< OUString > >
- {
- inline void free()
- {
- VarNameToIndexMap().swap( *this );
- }
- };
-
- VarNameToIndexMap m_aPreDefVarMap; // Mapping from pre-def variable names to enum for array access
- SubstituteVariables m_aSubstVarMap; // Active rule set map indexed by variable name!
- PredefinedPathVariables m_aPreDefVars; // All predefined variables
- SubstitutePathVariables_Impl m_aImpl; // Implementation class that access the configuration
- ReSubstFixedVarOrderVector m_aReSubstFixedVarOrder; // To speed up resubstitution fixed variables (order for lookup)
- ReSubstUserVarOrderVector m_aReSubstUserVarOrder; // To speed up resubstitution user variables
- com::sun::star::uno::Reference< com::sun::star::uno::XComponentContext > m_xContext;
-};
-
-}
-
-#endif // INCLUDED_FRAMEWORK_INC_SERVICES_SUBSTITUTEPATHVARS_HXX
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/framework/source/register/registerservices.cxx b/framework/source/register/registerservices.cxx
index a5ad5bca8492..05784cf45efc 100644
--- a/framework/source/register/registerservices.cxx
+++ b/framework/source/register/registerservices.cxx
@@ -50,7 +50,6 @@
#include <services/sessionlistener.hxx>
#include <uiconfiguration/imagemanager.hxx>
-#include <services/substitutepathvars.hxx>
#include <services/pathsettings.hxx>
#include <services/ContextChangeEventMultiplexer.hxx>
@@ -72,7 +71,6 @@ COMPONENTGETFACTORY ( fwk,
IFFACTORY( ::framework::SessionListener ) else
IFFACTORY( ::framework::SessionListener ) else
IFFACTORY( ::framework::ImageManager ) else
- IFFACTORY( ::framework::SubstitutePathVariables ) else
IFFACTORY( ::framework::PathSettings ) else
IFFACTORY( ::framework::ContextChangeEventMultiplexer )
)
diff --git a/framework/source/services/substitutepathvars.cxx b/framework/source/services/substitutepathvars.cxx
index 7839c1ba6b57..bdcae12f4074 100644
--- a/framework/source/services/substitutepathvars.cxx
+++ b/framework/source/services/substitutepathvars.cxx
@@ -19,13 +19,15 @@
#include <config_folders.h>
-#include "services/substitutepathvars.hxx"
#include <threadhelp/resetableguard.hxx>
+#include <threadhelp/threadhelpbase.hxx>
#include <helper/networkdomain.hxx>
+#include <macros/xserviceinfo.hxx>
#include "services.h"
#include <com/sun/star/beans/XPropertySet.hpp>
+#include <cppuhelper/implbase2.hxx>
#include <unotools/configitem.hxx>
#include <unotools/localfilehelper.hxx>
#include <unotools/configmgr.hxx>
@@ -37,17 +39,23 @@
#include <osl/socket.hxx>
#include <osl/process.h>
#include <i18nlangtag/languagetag.hxx>
+#include <tools/link.hxx>
#include <tools/urlobj.hxx>
#include <tools/resmgr.hxx>
#include <tools/wldcrd.hxx>
+#include <rtl/ref.hxx>
#include <rtl/ustrbuf.hxx>
#include <rtl/bootstrap.hxx>
#include <officecfg/Office/Paths.hxx>
+#include <com/sun/star/lang/XServiceInfo.hpp>
+#include <com/sun/star/lang/XTypeProvider.hpp>
+#include <com/sun/star/container/NoSuchElementException.hpp>
#include <com/sun/star/container/XHierarchicalNameAccess.hpp>
+#include <com/sun/star/util/XStringSubstitution.hpp>
-
+#include <boost/unordered_map.hpp>
#include <string.h>
using namespace com::sun::star::uno;
@@ -55,13 +63,239 @@ using namespace com::sun::star::beans;
using namespace com::sun::star::util;
using namespace com::sun::star::lang;
using namespace com::sun::star::container;
+using namespace framework;
-//_________________________________________________________________________________________________________________
-// Namespace
-//_________________________________________________________________________________________________________________
+namespace {
+
+// Must be zero value based
+enum EnvironmentType
+{
+ ET_HOST = 0 ,
+ ET_YPDOMAIN ,
+ ET_DNSDOMAIN ,
+ ET_NTDOMAIN ,
+ ET_OS ,
+ ET_UNKNOWN ,
+ ET_COUNT
+};
+
+// Must be zero value based
+enum OperatingSystem
+{
+ OS_WINDOWS = 0,
+ OS_UNIX ,
+ OS_SOLARIS ,
+ OS_LINUX ,
+ OS_UNKNOWN ,
+ OS_COUNT
+};
+
+struct SubstituteRule
+{
+ SubstituteRule() {}
+ SubstituteRule( const OUString& aVarName,
+ const OUString& aValue,
+ const com::sun::star::uno::Any& aVal,
+ EnvironmentType aType ) :
+ aSubstVariable( aVarName ), aSubstValue( aValue ), aEnvValue( aVal ), aEnvType( aType ) {}
+
+ OUString aSubstVariable;
+ OUString aSubstValue;
+ com::sun::star::uno::Any aEnvValue;
+ EnvironmentType aEnvType;
+};
+
+struct SubstitutePathNotify
+{
+ SubstitutePathNotify() {};
+
+ const com::sun::star::uno::Sequence<OUString> aPropertyNames;
+};
+
+class SubstituteVariables : public ::boost::unordered_map< OUString,
+ SubstituteRule,
+ OUStringHash,
+ ::std::equal_to< OUString > >
+{
+ public:
+ inline void free()
+ {
+ SubstituteVariables().swap( *this );
+ }
+};
+
+typedef std::vector< SubstituteRule > SubstituteRuleVector;
+class SubstitutePathVariables_Impl : public utl::ConfigItem
+{
+ public:
+ SubstitutePathVariables_Impl( const Link& aNotifyLink );
+ virtual ~SubstitutePathVariables_Impl();
+
+ static OperatingSystem GetOperatingSystemFromString( const OUString& );
+ static EnvironmentType GetEnvTypeFromString( const OUString& );
+
+ void GetSharePointsRules( SubstituteVariables& aSubstVarMap );
+
+ /** is called from the ConfigManager before application ends or from the
+ PropertyChangeListener if the sub tree broadcasts changes. */
+ virtual void Notify( const com::sun::star::uno::Sequence< OUString >& aPropertyNames );
+ virtual void Commit();
+
+ private:
+ // Wrapper methods for low-level functions
+ OperatingSystem GetOperatingSystem();
+ const OUString& GetYPDomainName();
+ const OUString& GetDNSDomainName();
+ const OUString& GetNTDomainName();
+ const OUString& GetHostName();
+
+ bool FilterRuleSet( const SubstituteRuleVector& aRuleSet, SubstituteRule& aActiveRule );
+
+ void ReadSharePointsFromConfiguration( com::sun::star::uno::Sequence< OUString >& aSharePointsSeq );
+ void ReadSharePointRuleSetFromConfiguration( const OUString& aSharePointName,
+ const OUString& aSharePointNodeName,
+ SubstituteRuleVector& aRuleSet );
+
+ // Stored values for domains and host
+ bool m_bYPDomainRetrieved;
+ OUString m_aYPDomain;
+ bool m_bDNSDomainRetrieved;
+ OUString m_aDNSDomain;
+ bool m_bNTDomainRetrieved;
+ OUString m_aNTDomain;
+ bool m_bHostRetrieved;
+ OUString m_aHost;
+
+ Link m_aListenerNotify;
+ const OUString m_aSharePointsNodeName;
+ const OUString m_aDirPropertyName;
+ const OUString m_aEnvPropertyName;
+ const OUString m_aLevelSep;
+};
+
+enum PreDefVariable
+{
+ PREDEFVAR_INST,
+ PREDEFVAR_PROG,
+ PREDEFVAR_USER,
+ PREDEFVAR_WORK,
+ PREDEFVAR_HOME,
+ PREDEFVAR_TEMP,
+ PREDEFVAR_PATH,
+ PREDEFVAR_LANG,
+ PREDEFVAR_LANGID,
+ PREDEFVAR_VLANG,
+ PREDEFVAR_INSTPATH,
+ PREDEFVAR_PROGPATH,
+ PREDEFVAR_USERPATH,
+ PREDEFVAR_INSTURL,
+ PREDEFVAR_PROGURL,
+ PREDEFVAR_USERURL,
+ PREDEFVAR_WORKDIRURL,
+ // New variable of hierachy service (#i32656#)
+ PREDEFVAR_BASEINSTURL,
+ PREDEFVAR_USERDATAURL,
+ PREDEFVAR_BRANDBASEURL,
+ PREDEFVAR_COUNT
+};
+
+struct PredefinedPathVariables
+{
+ // Predefined variables supported by substitute variables
+ LanguageType m_eLanguageType; // Lanuage type of Office
+ OUString m_FixedVar[ PREDEFVAR_COUNT ]; // Variable value access by PreDefVariable
+ OUString m_FixedVarNames[ PREDEFVAR_COUNT ]; // Variable name access by PreDefVariable
+};
+
+struct ReSubstFixedVarOrder
+{
+ sal_Int32 nVarValueLength;
+ PreDefVariable eVariable;
+
+ bool operator< ( const ReSubstFixedVarOrder& aFixedVarOrder ) const
+ {
+ // Reverse operator< to have high to low ordering
+ return ( nVarValueLength > aFixedVarOrder.nVarValueLength );
+ }
+};
+
+struct ReSubstUserVarOrder
+{
+ sal_Int32 nVarValueLength;
+ OUString aVarName;
-namespace framework
+ bool operator< ( const ReSubstUserVarOrder& aUserVarOrder ) const
+ {
+ // Reverse operator< to have high to low ordering
+ return ( nVarValueLength > aUserVarOrder.nVarValueLength );
+ }
+};
+
+typedef std::list< ReSubstFixedVarOrder > ReSubstFixedVarOrderVector;
+typedef std::list< ReSubstUserVarOrder > ReSubstUserVarOrderVector;
+
+class SubstitutePathVariables : private ThreadHelpBase, // Struct for right initalization of mutex member! Must be first of baseclasses.
+ public ::cppu::WeakImplHelper2< ::com::sun::star::util::XStringSubstitution, css::lang::XServiceInfo >
{
+ friend class SubstitutePathVariables_Impl;
+
+ public:
+ SubstitutePathVariables( const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext >& xContext );
+ virtual ~SubstitutePathVariables();
+
+ // XInterface, XTypeProvider, XServiceInfo
+ DECLARE_XSERVICEINFO
+
+ // XStringSubstitution
+ virtual OUString SAL_CALL substituteVariables( const OUString& aText, sal_Bool bSubstRequired )
+ throw (::com::sun::star::container::NoSuchElementException, ::com::sun::star::uno::RuntimeException);
+ virtual OUString SAL_CALL reSubstituteVariables( const OUString& aText )
+ throw (::com::sun::star::uno::RuntimeException);
+ virtual OUString SAL_CALL getSubstituteVariableValue( const OUString& variable )
+ throw (::com::sun::star::container::NoSuchElementException, ::com::sun::star::uno::RuntimeException);
+
+ protected:
+ DECL_LINK(implts_ConfigurationNotify, void *);
+
+ void SetPredefinedPathVariables( PredefinedPathVariables& );
+ OUString ConvertOSLtoUCBURL( const OUString& aOSLCompliantURL ) const;
+
+ // Special case (transient) values can change during runtime!
+ // Don't store them in the pre defined struct
+ OUString GetWorkPath() const;
+ OUString GetWorkVariableValue() const;
+ OUString GetPathVariableValue() const;
+
+ OUString GetHomeVariableValue() const;
+
+ // XStringSubstitution implementation methods
+ OUString impl_substituteVariable( const OUString& aText, bool bSustRequired )
+ throw (::com::sun::star::container::NoSuchElementException, ::com::sun::star::uno::RuntimeException);
+ OUString impl_reSubstituteVariables( const OUString& aText )
+ throw (::com::sun::star::uno::RuntimeException);
+ OUString impl_getSubstituteVariableValue( const OUString& variable )
+ throw (::com::sun::star::container::NoSuchElementException, ::com::sun::star::uno::RuntimeException);
+
+ private:
+ class VarNameToIndexMap : public boost::unordered_map< OUString,
+ PreDefVariable,
+ OUStringHash,
+ ::std::equal_to< OUString > >
+ {
+ inline void free()
+ {
+ VarNameToIndexMap().swap( *this );
+ }
+ };
+
+ VarNameToIndexMap m_aPreDefVarMap; // Mapping from pre-def variable names to enum for array access
+ SubstituteVariables m_aSubstVarMap; // Active rule set map indexed by variable name!
+ PredefinedPathVariables m_aPreDefVars; // All predefined variables
+ SubstitutePathVariables_Impl m_aImpl; // Implementation class that access the configuration
+ ReSubstFixedVarOrderVector m_aReSubstFixedVarOrder; // To speed up resubstitution fixed variables (order for lookup)
+ ReSubstUserVarOrderVector m_aReSubstUserVarOrder; // To speed up resubstitution user variables
+ com::sun::star::uno::Reference< com::sun::star::uno::XComponentContext > m_xContext;
+};
struct FixedVariable
{
@@ -1109,6 +1343,17 @@ void SubstitutePathVariables::SetPredefinedPathVariables( PredefinedPathVariable
aPreDefPathVariables.m_FixedVar[ PREDEFVAR_TEMP ] = ConvertOSLtoUCBURL( aTmp );
}
-} // namespace framework
+}
+
+extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface * SAL_CALL
+com_sun_star_comp_framework_PathSubstitution_get_implementation(
+ css::uno::XComponentContext * context,
+ uno_Sequence * arguments)
+{
+ assert(arguments != 0 && arguments->nElements == 0); (void) arguments;
+ rtl::Reference<SubstitutePathVariables> x(new SubstitutePathVariables(context));
+ x->acquire();
+ return static_cast<cppu::OWeakObject *>(x.get());
+}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/framework/util/fwk.component b/framework/util/fwk.component
index a39e355adc6c..b469434a6ea2 100644
--- a/framework/util/fwk.component
+++ b/framework/util/fwk.component
@@ -82,7 +82,8 @@
<implementation name="com.sun.star.comp.framework.PathSettings">
<service name="com.sun.star.util.PathSettings"/>
</implementation>
- <implementation name="com.sun.star.comp.framework.PathSubstitution">
+ <implementation name="com.sun.star.comp.framework.PathSubstitution"
+ constructor="com_sun_star_comp_framework_PathSubstitution_get_implementation">
<service name="com.sun.star.util.PathSubstitution"/>
</implementation>
<implementation name="com.sun.star.comp.framework.PopupMenuControllerFactory"