summaryrefslogtreecommitdiff
path: root/configmgr/source/backendhelper
diff options
context:
space:
mode:
Diffstat (limited to 'configmgr/source/backendhelper')
-rw-r--r--configmgr/source/backendhelper/backendlayerhelper.cxx364
-rw-r--r--configmgr/source/backendhelper/backendlayerhelper.hxx168
-rw-r--r--configmgr/source/backendhelper/behelper.uno.xml35
-rw-r--r--configmgr/source/backendhelper/componentdf.cxx91
-rw-r--r--configmgr/source/backendhelper/exports.dxp3
-rw-r--r--configmgr/source/backendhelper/makefile.mk73
6 files changed, 734 insertions, 0 deletions
diff --git a/configmgr/source/backendhelper/backendlayerhelper.cxx b/configmgr/source/backendhelper/backendlayerhelper.cxx
new file mode 100644
index 000000000000..b6a9fcda9869
--- /dev/null
+++ b/configmgr/source/backendhelper/backendlayerhelper.cxx
@@ -0,0 +1,364 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2008 by Sun Microsystems, Inc.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * $RCSfile: backendlayerhelper.cxx,v $
+ * $Revision: 1.5 $
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_configmgr.hxx"
+
+
+#include "backendlayerhelper.hxx"
+#include <com/sun/star/configuration/backend/PropertyInfo.hpp>
+
+namespace configmgr { namespace backendhelper {
+
+//==============================================================================
+
+//------------------------------------------------------------------------------
+uno::Type toType(const ::rtl::OUString& _rType)
+ {
+ uno::Type aRet;
+
+ if (_rType.equalsIgnoreAsciiCase(::rtl::OUString::createFromAscii("boolean")))
+ aRet = ::getBooleanCppuType();
+
+ else if(_rType.equalsIgnoreAsciiCase(::rtl::OUString::createFromAscii("short")))
+ aRet = ::getCppuType(static_cast<sal_Int16 const*>(0));
+
+ else if(_rType.equalsIgnoreAsciiCase(::rtl::OUString::createFromAscii("int")))
+ aRet = ::getCppuType(static_cast<sal_Int32 const*>(0));
+
+ else if(_rType.equalsIgnoreAsciiCase(::rtl::OUString::createFromAscii("integer")))
+ aRet = ::getCppuType(static_cast<sal_Int32 const*>(0));
+
+ else if(_rType.equalsIgnoreAsciiCase(::rtl::OUString::createFromAscii("long")))
+ aRet = ::getCppuType(static_cast<sal_Int64 const*>(0));
+
+ else if(_rType.equalsIgnoreAsciiCase(::rtl::OUString::createFromAscii("double")))
+ aRet = ::getCppuType(static_cast<double const*>(0));
+
+ else if(_rType.equalsIgnoreAsciiCase(::rtl::OUString::createFromAscii("string")))
+ aRet = ::getCppuType(static_cast<rtl::OUString const*>(0));
+
+ else if(_rType.equalsIgnoreAsciiCase(::rtl::OUString::createFromAscii("binary")))
+ aRet = ::getCppuType(static_cast<uno::Sequence<sal_Int8> const*>(0));
+
+ else if(_rType.equalsIgnoreAsciiCase(::rtl::OUString::createFromAscii("any")))
+ aRet = ::getCppuType(static_cast<uno::Any const*>(0));
+
+ else if(_rType.equalsIgnoreAsciiCase(::rtl::OUString::createFromAscii("boolean-list")))
+ aRet = ::getCppuType(static_cast<uno::Sequence<sal_Bool> const*>(0));
+
+ else if(_rType.equalsIgnoreAsciiCase(::rtl::OUString::createFromAscii("short-list")))
+ aRet = ::getCppuType(static_cast<uno::Sequence<sal_Int16> const*>(0));
+
+ else if(_rType.equalsIgnoreAsciiCase(::rtl::OUString::createFromAscii("int-list")))
+ aRet = ::getCppuType(static_cast<uno::Sequence<sal_Int32> const*>(0));
+
+ else if(_rType.equalsIgnoreAsciiCase(::rtl::OUString::createFromAscii("integer-list")))
+ aRet = ::getCppuType(static_cast<uno::Sequence<sal_Int32> const*>(0));
+
+ else if(_rType.equalsIgnoreAsciiCase(::rtl::OUString::createFromAscii("long-list")))
+ aRet = ::getCppuType(static_cast<uno::Sequence<sal_Int64> const*>(0));
+
+ else if(_rType.equalsIgnoreAsciiCase(::rtl::OUString::createFromAscii("double-list")))
+ aRet = ::getCppuType(static_cast<uno::Sequence<double> const*>(0));
+
+ else if(_rType.equalsIgnoreAsciiCase(::rtl::OUString::createFromAscii("string-list")))
+ aRet = ::getCppuType(static_cast<uno::Sequence<rtl::OUString> const*>(0));
+
+ else if(_rType.equalsIgnoreAsciiCase(::rtl::OUString::createFromAscii("binary-list")))
+ aRet = ::getCppuType(static_cast<uno::Sequence<uno::Sequence<sal_Int8> > const*>(0));
+
+ else
+ {
+ ::rtl::OString aStr("Unknown type! ");
+ aStr += rtl::OUStringToOString(_rType,RTL_TEXTENCODING_ASCII_US);
+ OSL_ENSURE(0,aStr.getStr());
+ }
+
+ return aRet;
+ }
+
+//------------------------------------------------------------------------------
+
+IOONode::IOONode(const rtl::OUString& sName):
+ mName(sName)
+{
+}
+
+//------------------------------------------------------------------------------
+OOProperty::OOProperty(
+ const rtl::OUString& sName,const rtl::OUString& sPropType,
+ const uno::Any& aPropValue,sal_Bool bProtected)
+ :IOONode(sName), mPropType(sPropType), mPropValue(aPropValue),
+ mbProtected(bProtected)
+{
+}
+//------------------------------------------------------------------------------
+OONode::OONode(const rtl::OUString& sName)
+ :IOONode(sName)
+{
+}
+
+OONode::OONode()
+ :IOONode(rtl::OUString())
+{
+}
+IOONode* OONode::addChild(IOONode* aChild)
+{
+ mChildList.push_back(aChild);
+ return aChild;
+}
+const std::vector<IOONode*>& OONode::getChildren()
+{
+ return mChildList;
+}
+
+IOONode* OONode::getChild(const rtl::OUString& aChildName)
+{
+ for (sal_uInt32 i=0; i< mChildList.size();++i)
+ {
+ if (mChildList[i]->getName() == aChildName)
+ return mChildList[i];
+ }
+ return NULL;
+}
+OONode::~OONode()
+{
+ for (sal_uInt32 i=0; i< mChildList.size();++i)
+ {
+ delete mChildList[i];
+ }
+ mChildList.clear();
+}
+//------------------------------------------------------------------------------
+ sal_Bool addChildrenToNodeTree(
+ OONode * aNode,
+ sal_Int32 nNextToken,
+ const backend::PropertyInfo& aPropInfo,
+ const uno::Reference<uno::XInterface>& xContext)
+{
+ do
+ {
+ rtl::OUString aName = aPropInfo.Name.getToken(0, '/',nNextToken);
+ if (aName.getLength() == 0)
+ {
+ throw backend::MalformedDataException(
+ rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(
+ "Malformed OpenOffice Key specified")),
+ xContext, uno::Any()) ;
+ }
+ //Check if Property -> nNextToken == -1
+ if(nNextToken != -1)
+ {
+ //check if child already exists
+ IOONode* aChildNode= aNode->getChild(aName);
+ if (aChildNode == NULL)
+ {
+ aChildNode = new OONode(aName);
+ if (aChildNode != 0)
+ {
+ aNode->addChild( aChildNode);
+ }
+ }
+
+ sal_Bool bFinished =addChildrenToNodeTree(
+ aChildNode->getComposite(),
+ nNextToken,
+ aPropInfo,
+ xContext);
+ //Check that if you have finished parsing string therefore no
+ //more children
+ if (bFinished)
+ break;
+ }
+ else
+ {
+ //Add Property
+ IOONode* aProperty = new OOProperty(aName,
+ aPropInfo.Type,
+ aPropInfo.Value,
+ aPropInfo.Protected);
+ if (aProperty != 0)
+ {
+ aNode->addChild( aProperty);
+ }
+ //Return finished is true when you are finished parsing the string
+ if( nNextToken == -1)
+ {
+ return sal_True;
+ }
+ }
+ }
+ while (nNextToken >= 0 ) ;
+ return sal_True;
+}
+//------------------------------------------------------------------------------
+void processChildren(
+ std::vector<IOONode*> aChildList,
+ const uno::Reference<backend::XLayerHandler>& xHandler)
+{
+ for(sal_uInt32 i=0; i <aChildList.size(); ++i)
+ {
+ OONode * aTestOONode = aChildList[i]->getComposite();
+ if (aTestOONode)
+ {
+ xHandler->overrideNode(aTestOONode->getName(),0,false);
+ processChildren(aTestOONode->getChildren(),xHandler);
+ xHandler->endNode();
+ }
+ else
+ {
+ OOProperty* aProperty = aChildList[i]->asOOProperty();
+ sal_Int16 aAttributes = aProperty->isProtected() ? 256:0;
+ //Convert Type either simple or list
+ uno::Type aType = toType( aProperty->getType());
+
+ xHandler->overrideProperty(aProperty->getName(),
+ aAttributes,
+ aType,
+ false);
+
+ xHandler->setPropertyValue(aProperty->getValue());
+ xHandler->endProperty();
+ }
+
+ }
+}
+//------------------------------------------------------------------------------
+void buildNodeTree(
+ const uno::Sequence< backend::PropertyInfo >& aPropertyInfos,
+ const uno::Reference<uno::XInterface>& xContext,
+ OONode& aNodeTree)
+{
+ sal_Int32 nNextToken =0;
+ rtl::OUString aName = aPropertyInfos[0].Name.getToken(0, '/',nNextToken);
+ if((nNextToken ==-1)||(aName.getLength()==0))
+ {
+ throw backend::MalformedDataException(
+ rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(
+ "Malformed OpenOffice Key specified")),
+ xContext, uno::Any()) ;
+
+ }
+ aNodeTree.setName(aName);
+ sal_Int32 size = aPropertyInfos.getLength();
+ for (sal_Int32 i =0; i < size; ++i)
+ {
+ addChildrenToNodeTree(&aNodeTree, nNextToken,aPropertyInfos[i],xContext);
+ }
+
+}
+//------------------------------------------------------------------------------
+BackendLayerHelper::BackendLayerHelper(
+ const uno::Reference<uno::XComponentContext>& /*xContext*/)
+ :cppu::WeakComponentImplHelper2<backend::XLayerContentDescriber, lang::XServiceInfo>(mMutex)
+{
+}
+//------------------------------------------------------------------------------
+
+BackendLayerHelper::~BackendLayerHelper(void) {}
+
+//------------------------------------------------------------------------------
+
+rtl::OUString SAL_CALL BackendLayerHelper::
+ getBackendLayerHelperName(void)
+{
+ static const rtl::OUString kImplementationName(
+ RTL_CONSTASCII_USTRINGPARAM(
+ "com.sun.star.comp.configuration.backend.LayerDescriber")) ;
+
+ return kImplementationName ;
+}
+//------------------------------------------------------------------------------
+void SAL_CALL BackendLayerHelper::describeLayer(
+ const uno::Reference< backend::XLayerHandler >& xHandler,
+ const uno::Sequence< backend::PropertyInfo >& aPropertyInfos )
+ throw (lang::NullPointerException,
+ backend::MalformedDataException,
+ uno::RuntimeException)
+
+
+
+{
+ OONode aNodeTree;
+ buildNodeTree(aPropertyInfos, *this, aNodeTree);
+
+ //Descirbe the Layer to the XHandler Object
+ xHandler->startLayer();
+ xHandler->overrideNode(aNodeTree.getName(),0,false);
+ std::vector<IOONode*> aChildList = aNodeTree.getChildren();
+ processChildren(aChildList,xHandler);
+ xHandler->endNode();
+ xHandler->endLayer();
+
+
+}
+//------------------------------------------------------------------------------
+
+rtl::OUString SAL_CALL BackendLayerHelper::getImplementationName(void)
+ throw (uno::RuntimeException)
+{
+ return getBackendLayerHelperName() ;
+}
+//------------------------------------------------------------------------------
+
+uno::Sequence<rtl::OUString> SAL_CALL BackendLayerHelper::
+ getBackendLayerHelperServiceNames(void)
+{
+ uno::Sequence<rtl::OUString> aServices(1) ;
+ aServices[0] = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.configuration.backend.LayerDescriber")) ;
+ return aServices ;
+}
+//------------------------------------------------------------------------------
+
+sal_Bool SAL_CALL BackendLayerHelper::supportsService(
+ const rtl::OUString& aServiceName)
+ throw (uno::RuntimeException)
+{
+ uno::Sequence< rtl::OUString > const svc = getBackendLayerHelperServiceNames();
+
+ for(sal_Int32 i = 0; i < svc.getLength(); ++i )
+ if(svc[i] == aServiceName)
+ return true;
+ return false;
+}
+//------------------------------------------------------------------------------
+
+uno::Sequence<rtl::OUString>
+SAL_CALL BackendLayerHelper::getSupportedServiceNames(void)
+ throw (uno::RuntimeException)
+{
+ return getBackendLayerHelperServiceNames() ;
+}
+//------------------------------------------------------------------------------
+
+} // backendhelper
+} // configmgr
diff --git a/configmgr/source/backendhelper/backendlayerhelper.hxx b/configmgr/source/backendhelper/backendlayerhelper.hxx
new file mode 100644
index 000000000000..2a6dee1ecae0
--- /dev/null
+++ b/configmgr/source/backendhelper/backendlayerhelper.hxx
@@ -0,0 +1,168 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2008 by Sun Microsystems, Inc.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * $RCSfile: backendlayerhelper.hxx,v $
+ * $Revision: 1.4 $
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef CONFIGMGR_BACKENDHELPER_BACKENDLAYERHELPER_HXX_
+#define CONFIGMGR_BACKENDHELPER_BACKENDLAYERHELPER_HXX_
+
+#include <com/sun/star/configuration/backend/XLayerContentDescriber.hpp>
+
+
+#include <com/sun/star/lang/XServiceInfo.hpp>
+#include <com/sun/star/uno/XComponentContext.hpp>
+#include <cppuhelper/compbase2.hxx>
+
+namespace configmgr { namespace backendhelper {
+
+namespace css = com::sun::star ;
+namespace uno = css::uno ;
+namespace lang = css::lang ;
+namespace backend = css::configuration::backend ;
+//------------------------------------------------------------------------------
+
+/**
+ * Implements the LayerContentDescriber service.
+ * Describes a set of configuration data to an XLayerHandler
+ * Object
+ */
+class BackendLayerHelper : public cppu::WeakComponentImplHelper2<backend::XLayerContentDescriber, lang::XServiceInfo> {
+public :
+ /**
+ Service constructor from a service factory.
+ @param xContext component context
+ */
+ BackendLayerHelper(const uno::Reference<uno::XComponentContext>& xContext) ;
+
+ /** Destructor */
+ ~BackendLayerHelper(void) ;
+
+
+ // XServiceInfo
+ virtual rtl::OUString SAL_CALL
+ getImplementationName( )
+ throw (uno::RuntimeException) ;
+
+ virtual sal_Bool SAL_CALL
+ supportsService( const rtl::OUString& aServiceName )
+ throw (uno::RuntimeException) ;
+
+ virtual uno::Sequence<rtl::OUString> SAL_CALL
+ getSupportedServiceNames( )
+ throw (uno::RuntimeException) ;
+
+
+ //XLayerContentDescriber
+ virtual void SAL_CALL
+ describeLayer( const uno::Reference< backend::XLayerHandler >& xHandler,
+ const uno::Sequence< backend::PropertyInfo >& aPropertyInfos )
+ throw (lang::NullPointerException,
+ backend::MalformedDataException,
+ uno::RuntimeException);
+
+ /**
+ Provides the implementation name.
+
+ @return implementation name
+ */
+ static rtl::OUString SAL_CALL getBackendLayerHelperName(void) ;
+ /**
+ Provides the supported services names
+
+ @return service names
+ */
+ static uno::Sequence<rtl::OUString> SAL_CALL getBackendLayerHelperServiceNames(void) ;
+private:
+ osl::Mutex mMutex;
+
+} ;
+//------------------------------------------------------------------------------
+class OONode;
+class OOProperty;
+
+/**
+ Base class for representing OO properties and nodes
+*/
+class IOONode
+{
+public:
+ virtual OONode* getComposite(){return NULL;}
+ virtual ~IOONode(){};
+ virtual OOProperty* asOOProperty(){return NULL;}
+ rtl::OUString getName(){return mName;}
+ void setName(const rtl::OUString& sName){mName = sName;}
+protected:
+ IOONode(const rtl::OUString& sName);
+private:
+ rtl::OUString mName;
+};
+//------------------------------------------------------------------------------
+class OONode :public IOONode
+{
+public:
+
+ OONode(const rtl::OUString& sName);
+ OONode();
+ ~OONode();
+
+ IOONode* addChild(IOONode* aChild);
+ OONode* getComposite(){return this;}
+ const std::vector<IOONode*>& getChildren();
+ IOONode* getChild(const rtl::OUString& aChildName);
+
+private:
+ std::vector<IOONode*> mChildList;
+};
+//------------------------------------------------------------------------------
+class OOProperty :public IOONode
+{
+public:
+ OOProperty(const rtl::OUString& sName,
+ const rtl::OUString& sPropType,
+ const uno::Any& aPropValue,
+ sal_Bool bProtected);
+ ~OOProperty(){};
+
+ const rtl::OUString& getType(){return mPropType;}
+ uno::Any getValue(){return mPropValue;}
+ sal_Bool isProtected(){return mbProtected;}
+ OOProperty* asOOProperty(){return this;}
+
+private:
+ rtl::OUString mPropType;
+ uno::Any mPropValue;
+ sal_Bool mbProtected;
+};
+//------------------------------------------------------------------------------
+
+
+} } // configmgr.backendhelper
+
+#endif // CONFIGMGR_BACKENDHELPER_BACKENDLAYERHELPER_HXX_
+
+
diff --git a/configmgr/source/backendhelper/behelper.uno.xml b/configmgr/source/backendhelper/behelper.uno.xml
new file mode 100644
index 000000000000..a160360c5ec2
--- /dev/null
+++ b/configmgr/source/backendhelper/behelper.uno.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE module-description PUBLIC "-//StarOffice/DTD ComponentDescription 1.0//EN" "module-description.dtd">
+<module-description xmlns:xlink="http://www.w3.org/1999/xlink">
+ <module-name>behelper.uno</module-name>
+ <component-description>
+ <author>Sarah Smith</author>
+ <name>com.sun.star.comp.configuration.backend.LayerDescriber</name>
+ <description>Describes the contents of a Layer to an XLayerHandler object. The contents of the layer
+is contained in a sequence of PropertyInfo structs</description>
+ <loader-name>com.sun.star.loader.SharedLibrary</loader-name>
+ <language>C++</language>
+ <status value="final"/>
+ <supported-services>com.sun.star.configuration.backend.LayerDescriber</supported-services>
+ <type>com.sun.star.configuration.backend.XLayerContentDescriber</type>
+ <type>com.sun.star.lang.XServiceInfo</type>
+ <type>com.sun.star.lang.XSingleServiceFactory</type>
+ <type>com.sun.star.lang.XSingleComponentFactory</type>
+ <type>com.sun.star.lang.XTypeProvider</type>
+ <type>com.sun.star.registry.XRegistryKey</type>
+ <type>com.sun.star.uno.Any</type>
+ <type>com.sun.star.uno.Sequence</type>
+ </component-description>
+ <project-build-dependency> comphelper </project-build-dependency>
+ <project-build-dependency> vos </project-build-dependency>
+ <project-build-dependency> cppuhelper </project-build-dependency>
+ <project-build-dependency> salhelper </project-build-dependency>
+ <project-build-dependency> cppu </project-build-dependency>
+ <project-build-dependency> sal </project-build-dependency>
+ <runtime-module-dependency> comphelp2$(COM) </runtime-module-dependency>
+ <runtime-module-dependency> vos2$(COM) </runtime-module-dependency>
+ <runtime-module-dependency> cppuhelper3$(COM) </runtime-module-dependency>
+ <runtime-module-dependency> salhelper3$(COM) </runtime-module-dependency>
+ <runtime-module-dependency> cppu3 </runtime-module-dependency>
+ <runtime-module-dependency> sal3 </runtime-module-dependency>
+</module-description>
diff --git a/configmgr/source/backendhelper/componentdf.cxx b/configmgr/source/backendhelper/componentdf.cxx
new file mode 100644
index 000000000000..ff36f410ceda
--- /dev/null
+++ b/configmgr/source/backendhelper/componentdf.cxx
@@ -0,0 +1,91 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2008 by Sun Microsystems, Inc.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * $RCSfile: componentdf.cxx,v $
+ * $Revision: 1.6 $
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_configmgr.hxx"
+#include "backendlayerhelper.hxx"
+#include <com/sun/star/registry/XRegistryKey.hpp>
+#ifndef _CPPUHELPER_IMPLEMENTATIONENTRY_HXX_
+#include <cppuhelper/implementationentry.hxx>
+#endif // _CPPUHELPER_IMPLEMENTATIONENTRY_HXX_
+
+//==============================================================================
+
+static com::sun::star::uno::Reference<com::sun::star::uno::XInterface> SAL_CALL createBackendLayerHelper(
+ const com::sun::star::uno::Reference<com::sun::star::uno::XComponentContext>& aContext) {
+ return * new configmgr::backendhelper::BackendLayerHelper(aContext) ;
+}
+//==============================================================================
+
+//------------------------------------------------------------------------------
+
+static const cppu::ImplementationEntry kImplementations_entries[] =
+{
+ {
+ createBackendLayerHelper,
+ configmgr::backendhelper::BackendLayerHelper::getBackendLayerHelperName,
+ configmgr::backendhelper::BackendLayerHelper::getBackendLayerHelperServiceNames,
+ cppu::createSingleComponentFactory,
+ NULL,
+ 0
+ },
+ { NULL, NULL, NULL, NULL, NULL, 0 }
+} ;
+//------------------------------------------------------------------------------
+
+extern "C" SAL_DLLPUBLIC_EXPORT void SAL_CALL
+component_getImplementationEnvironment(
+ const sal_Char **ppEnvTypeName,
+ uno_Environment ** /* ppEnv */
+ )
+{
+ *ppEnvTypeName = CPPU_CURRENT_LANGUAGE_BINDING_NAME ;
+}
+//------------------------------------------------------------------------------
+
+extern "C" SAL_DLLPUBLIC_EXPORT sal_Bool SAL_CALL component_writeInfo(
+ void *aServiceManager, void *aRegistryKey)
+{
+ return cppu::component_writeInfoHelper(aServiceManager,
+ aRegistryKey,
+ kImplementations_entries) ;
+}
+//------------------------------------------------------------------------------
+
+extern "C" SAL_DLLPUBLIC_EXPORT void *component_getFactory(
+ const sal_Char *aImplementationName, void *aServiceManager,
+ void *aRegistryKey)
+{
+ return cppu::component_getFactoryHelper(aImplementationName,
+ aServiceManager,
+ aRegistryKey,
+ kImplementations_entries) ;
+}
+//------------------------------------------------------------------------------
diff --git a/configmgr/source/backendhelper/exports.dxp b/configmgr/source/backendhelper/exports.dxp
new file mode 100644
index 000000000000..9630d7e06768
--- /dev/null
+++ b/configmgr/source/backendhelper/exports.dxp
@@ -0,0 +1,3 @@
+component_getImplementationEnvironment
+component_writeInfo
+component_getFactory
diff --git a/configmgr/source/backendhelper/makefile.mk b/configmgr/source/backendhelper/makefile.mk
new file mode 100644
index 000000000000..f9a27c8167b0
--- /dev/null
+++ b/configmgr/source/backendhelper/makefile.mk
@@ -0,0 +1,73 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2008 by Sun Microsystems, Inc.
+#
+# OpenOffice.org - a multi-platform office productivity suite
+#
+# $RCSfile: makefile.mk,v $
+#
+# $Revision: 1.5 $
+#
+# This file is part of OpenOffice.org.
+#
+# OpenOffice.org is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Lesser General Public License version 3
+# only, as published by the Free Software Foundation.
+#
+# OpenOffice.org is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Lesser General Public License version 3 for more details
+# (a copy is included in the LICENSE file that accompanied this code).
+#
+# You should have received a copy of the GNU Lesser General Public License
+# version 3 along with OpenOffice.org. If not, see
+# <http://www.openoffice.org/license.html>
+# for a copy of the LGPLv3 License.
+#
+#*************************************************************************
+
+PRJ=..$/..
+
+PRJINC=$(PRJ)$/source
+PRJNAME=configmgr
+TARGET=behelper
+ENABLE_EXCEPTIONS=TRUE
+
+# --- Settings ---
+
+.INCLUDE : settings.mk
+.IF "$(L10N_framework)"==""
+.INCLUDE : $(PRJ)$/makefile.pmk
+DLLPRE =
+
+# --- Files ---
+
+
+SLOFILES=\
+ $(SLO)$/backendlayerhelper.obj \
+ $(SLO)$/componentdf.obj
+
+LIB1TARGET=$(SLB)$/_$(TARGET).lib
+LIB1OBJFILES=$(SLOFILES)
+
+SHL1TARGET=$(TARGET).uno
+SHL1DEF=$(MISC)$/$(SHL1TARGET).def
+SHL1LIBS=$(LIB1TARGET)
+SHL1IMPLIB=i$(SHL1TARGET)
+SHL1STDLIBS= \
+ $(CPPUHELPERLIB) \
+ $(CPPULIB) \
+ $(SALLIB)
+
+DEF1NAME=$(SHL1TARGET)
+DEF1EXPORTFILE=exports.dxp
+DEF1DES=Configuration: Backend Helper
+
+# --- Targets ---
+.ENDIF # L10N_framework
+
+.INCLUDE : target.mk
+