diff options
author | Kurt Zenker <kz@openoffice.org> | 2004-08-31 14:00:41 +0000 |
---|---|---|
committer | Kurt Zenker <kz@openoffice.org> | 2004-08-31 14:00:41 +0000 |
commit | 63a94b90618672486f6bf78dc5affc851cbbc423 (patch) | |
tree | 85f2814f2b05b5ba86cc7aab824074b2e1275962 /configmgr | |
parent | d6c8ae8a4e8d2811ced3e46c0e2b03fa8c6b7b9e (diff) |
INTEGRATION: CWS cfglogging (1.1.2); FILE ADDED
2004/08/31 13:04:03 jb 1.1.2.2: #25940# Correct error in simple test logger registration
2004/08/27 17:42:18 jb 1.1.2.1: #i31391# Rename conflicting file
Diffstat (limited to 'configmgr')
-rw-r--r-- | configmgr/workben/logger/loggerdfn.cxx | 185 |
1 files changed, 185 insertions, 0 deletions
diff --git a/configmgr/workben/logger/loggerdfn.cxx b/configmgr/workben/logger/loggerdfn.cxx new file mode 100644 index 000000000000..8b355e9031a1 --- /dev/null +++ b/configmgr/workben/logger/loggerdfn.cxx @@ -0,0 +1,185 @@ +/************************************************************************* + * + * $RCSfile: loggerdfn.cxx,v $ + * + * $Revision: 1.2 $ + * + * last change: $Author: kz $ $Date: 2004-08-31 15:00:41 $ + * + * The Contents of this file are made available subject to the terms of + * either of the following licenses + * + * - GNU Lesser General Public License Version 2.1 + * - Sun Industry Standards Source License Version 1.1 + * + * Sun Microsystems Inc., October, 2000 + * + * GNU Lesser General Public License Version 2.1 + * ============================================= + * Copyright 2000 by Sun Microsystems, Inc. + * 901 San Antonio Road, Palo Alto, CA 94303, USA + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License version 2.1, as published by the Free Software Foundation. + * + * This library 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 for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + * + * + * Sun Industry Standards Source License Version 1.1 + * ================================================= + * The contents of this file are subject to the Sun Industry Standards + * Source License Version 1.1 (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.openoffice.org/license.html. + * + * Software provided under this License is provided on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, + * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS, + * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING. + * See the License for the specific provisions governing your rights and + * obligations concerning the Software. + * + * The Initial Developer of the Original Code is: Sun Microsystems, Inc. + * + * Copyright: 2000 by Sun Microsystems, Inc. + * + * All Rights Reserved. + * + * Contributor(s): _______________________________________ + * + * + ************************************************************************/ + +#include "simplelogger.hxx" + +#ifndef _COM_SUN_STAR_REGISTRY_XREGISTRYKEY_HPP_ +#include <com/sun/star/registry/XRegistryKey.hpp> +#endif +#ifndef _CPPUHELPER_IMPLEMENTATIONENTRY_HXX_ +#include <cppuhelper/implementationentry.hxx> +#endif +#include <rtl/ustrbuf.hxx> + +namespace cssuno = com::sun::star::uno; +using rtl::OUString; +using rtl::OUStringBuffer; + +//============================================================================== + +static cssuno::Reference<cssuno::XInterface> SAL_CALL + createSimpleLogger( const cssuno::Reference<cssuno::XComponentContext>& aContext) +{ + return * new logger::SimpleLogger(aContext,"configuration.log") ; +} +//============================================================================== + +// adapted from the corresponding cppuhelper function +static sal_Bool component_writeInfoHelper_withSingleton( + void *pServiceManager, void *pRegistryKey , + const cppu::ImplementationEntry entries[], + char const * const singletons[]) +{ + using namespace com::sun::star::registry; + using rtl::OUString; + + sal_Bool bRet = sal_False; + try + { + if( pRegistryKey ) + { + for( sal_Int32 i = 0; entries[i].create ; i ++ ) + { + rtl::OUStringBuffer buf( 124 ); + buf.appendAscii( RTL_CONSTASCII_STRINGPARAM("/") ); + buf.append( entries[i].getImplementationName() ); + buf.appendAscii(RTL_CONSTASCII_STRINGPARAM( "/UNO/SERVICES" ) ); + cssuno::Reference< XRegistryKey > xNewKey( + static_cast< XRegistryKey * >( pRegistryKey )->createKey( buf.makeStringAndClear() ) ); + + cssuno::Sequence< OUString > const seq = entries[i].getSupportedServiceNames(); + for ( sal_Int32 nPos = 0 ; nPos < seq.getLength(); nPos ++ ) + xNewKey->createKey( seq[nPos] ); + + if (singletons[i]) + { + rtl::OUStringBuffer buf( 124 ); + buf.appendAscii( RTL_CONSTASCII_STRINGPARAM("/") ); + buf.append( entries[i].getImplementationName() ); + buf.appendAscii(RTL_CONSTASCII_STRINGPARAM( "/UNO/SINGLETONS/" ) ); + buf.appendAscii(singletons[i]); + cssuno::Reference< XRegistryKey > xNewKey( + static_cast< XRegistryKey * >( pRegistryKey )->createKey( buf.makeStringAndClear() ) ); + + xNewKey->setStringValue(entries[i].getImplementationName()); + } + } + bRet = sal_True; + } + } + catch ( InvalidRegistryException & ) + { + OSL_ENSURE( sal_False, "### InvalidRegistryException!" ); + } + catch ( cssuno::Exception & ) + { + OSL_ENSURE( sal_False, "### Unexpected UNO Exception!" ); + } + return bRet; +} + +//------------------------------------------------------------------------------ + +static const cppu::ImplementationEntry kImplementations_entries[] = +{ + { + createSimpleLogger, + logger::SimpleLogger::getImplementationName_static, + logger::SimpleLogger::getSupportedServiceNames_static, + cppu::createSingleComponentFactory, + NULL, + 0 + }, + { NULL } +} ; +static const char * const kSingleton_names[] = +{ + "com.sun.star.configuration.theLogger", + NULL +}; + +//------------------------------------------------------------------------------ + +extern "C" void SAL_CALL component_getImplementationEnvironment( + const sal_Char **aEnvTypeName, + uno_Environment **aEnvironment) { + *aEnvTypeName = CPPU_CURRENT_LANGUAGE_BINDING_NAME ; +} +//------------------------------------------------------------------------------ + +extern "C" sal_Bool SAL_CALL component_writeInfo(void *aServiceManager, + void *aRegistryKey) { + return component_writeInfoHelper_withSingleton( aServiceManager, + aRegistryKey, + kImplementations_entries, + kSingleton_names) ; +} +//------------------------------------------------------------------------------ + +extern "C" void *component_getFactory(const sal_Char *aImplementationName, + void *aServiceManager, + void *aRegistryKey) { + return cppu::component_getFactoryHelper(aImplementationName, + aServiceManager, + aRegistryKey, + kImplementations_entries) ; +} +//------------------------------------------------------------------------------ |