1 /************************************************************************* 2 * 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * Copyright 2000, 2010 Oracle and/or its affiliates. 6 * 7 * OpenOffice.org - a multi-platform office productivity suite 8 * 9 * This file is part of OpenOffice.org. 10 * 11 * OpenOffice.org is free software: you can redistribute it and/or modify 12 * it under the terms of the GNU Lesser General Public License version 3 13 * only, as published by the Free Software Foundation. 14 * 15 * OpenOffice.org is distributed in the hope that it will be useful, 16 * but WITHOUT ANY WARRANTY; without even the implied warranty of 17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18 * GNU Lesser General Public License version 3 for more details 19 * (a copy is included in the LICENSE file that accompanied this code). 20 * 21 * You should have received a copy of the GNU Lesser General Public License 22 * version 3 along with OpenOffice.org. If not, see 23 * <http://www.openoffice.org/license.html> 24 * for a copy of the LGPLv3 License. 25 * 26 ************************************************************************/ 27 28 // MARKER(update_precomp.py): autogen include statement, do not remove 29 #include "precompiled_extensions.hxx" 30 #include <string.h> 31 32 #include <usr/reflserv.hxx> // for EXTERN_SERVICE_CALLTYPE 33 34 #include <usr/factoryhlp.hxx> 35 #include "testfactreg.hxx" 36 37 38 using namespace vos; 39 using namespace usr; 40 41 #ifdef __cplusplus 42 extern "C" 43 { 44 #endif 45 46 BOOL EXTERN_SERVICE_CALLTYPE exService_writeRegEntry( 47 const UNO_INTERFACE(XRegistryKey)* xUnoKey) 48 49 { 50 XRegistryKeyRef xKey; 51 uno2smart(xKey, *xUnoKey); 52 53 UString str = UString( L"/" ) + OPipeTest_getImplementationName() + UString( L"/UNO/SERVICES" ); 54 XRegistryKeyRef xNewKey = xKey->createKey( str ); 55 xNewKey->createKey( OPipeTest_getServiceName() ); 56 57 str = UString( L"/" ) + ODataStreamTest_getImplementationName(1) + UString( L"/UNO/SERVICES" ); 58 xNewKey = xKey->createKey( str ); 59 xNewKey->createKey( ODataStreamTest_getServiceName(1) ); 60 61 str = UString( L"/" ) + ODataStreamTest_getImplementationName(2) + UString( L"/UNO/SERVICES" ); 62 xNewKey = xKey->createKey( str ); 63 xNewKey->createKey( ODataStreamTest_getServiceName(2) ); 64 65 str = UString( L"/" ) + OObjectStreamTest_getImplementationName(1) + UString( L"/UNO/SERVICES" ); 66 xNewKey = xKey->createKey( str ); 67 xNewKey->createKey( OObjectStreamTest_getServiceName(1) ); 68 69 str = UString( L"/" ) + OObjectStreamTest_getImplementationName(2) + UString( L"/UNO/SERVICES" ); 70 xNewKey = xKey->createKey( str ); 71 xNewKey->createKey( OObjectStreamTest_getServiceName(2) ); 72 73 str = UString( L"/" ) + OMarkableOutputStreamTest_getImplementationName() + UString( L"/UNO/SERVICES" ); 74 xNewKey = xKey->createKey( str ); 75 xNewKey->createKey( OMarkableOutputStreamTest_getServiceName() ); 76 77 str = UString( L"/" ) + OMarkableInputStreamTest_getImplementationName() + UString( L"/UNO/SERVICES" ); 78 xNewKey = xKey->createKey( str ); 79 xNewKey->createKey( OMarkableInputStreamTest_getServiceName() ); 80 81 str = UString( L"/" ) + OMyPersistObject_getImplementationName() + UString( L"/UNO/SERVICES" ); 82 xNewKey = xKey->createKey( str ); 83 xNewKey->createKey( OMyPersistObject_getServiceName() ); 84 85 return TRUE; 86 } 87 88 89 UNO_INTERFACE(XInterface) EXTERN_SERVICE_CALLTYPE exService_getFactory 90 ( 91 const wchar_t* implementationName, 92 const UNO_INTERFACE(XMultiServiceFactory)* xUnoFact, 93 const UNO_INTERFACE(XRegistryKey)* 94 ) 95 { 96 UNO_INTERFACE(XInterface) xUnoRet = {0, 0}; 97 98 XInterfaceRef xRet; 99 XMultiServiceFactoryRef xSMgr; 100 UString aImplementationName(implementationName); 101 102 uno2smart(xSMgr, *xUnoFact); 103 104 if (aImplementationName == OPipeTest_getImplementationName() ) 105 { 106 xRet = createSingleFactory( xSMgr, implementationName, 107 OPipeTest_CreateInstance, 108 OPipeTest_getSupportedServiceNames() ); 109 } 110 else if( aImplementationName == ODataStreamTest_getImplementationName(1) ) { 111 xRet = createSingleFactory( xSMgr , implementationName, 112 ODataStreamTest_CreateInstance, 113 ODataStreamTest_getSupportedServiceNames(1) ); 114 } 115 else if( aImplementationName == ODataStreamTest_getImplementationName(2) ) { 116 xRet = createSingleFactory( xSMgr , implementationName, 117 ODataStreamTest_CreateInstance, 118 ODataStreamTest_getSupportedServiceNames(2) ); 119 } 120 else if( aImplementationName == OObjectStreamTest_getImplementationName(1) ) { 121 xRet = createSingleFactory( xSMgr , implementationName, 122 OObjectStreamTest_CreateInstance, 123 OObjectStreamTest_getSupportedServiceNames(1) ); 124 } 125 else if( aImplementationName == OObjectStreamTest_getImplementationName(2) ) { 126 xRet = createSingleFactory( xSMgr , implementationName, 127 OObjectStreamTest_CreateInstance, 128 OObjectStreamTest_getSupportedServiceNames(2) ); 129 } 130 else if( aImplementationName == OMarkableOutputStreamTest_getImplementationName() ) { 131 xRet = createSingleFactory( xSMgr , implementationName, 132 OMarkableOutputStreamTest_CreateInstance, 133 OMarkableOutputStreamTest_getSupportedServiceNames() ); 134 } 135 else if( aImplementationName == OMarkableInputStreamTest_getImplementationName() ) { 136 xRet = createSingleFactory( xSMgr , implementationName, 137 OMarkableInputStreamTest_CreateInstance, 138 OMarkableInputStreamTest_getSupportedServiceNames() ); 139 } 140 else if( aImplementationName == OMyPersistObject_getImplementationName() ) { 141 xRet = createSingleFactory( xSMgr , implementationName, 142 OMyPersistObject_CreateInstance, 143 OMyPersistObject_getSupportedServiceNames() ); 144 } 145 if (xRet.is()) 146 { 147 smart2uno(xRet, xUnoRet); 148 } 149 150 return xUnoRet; 151 } 152 153 #ifdef __cplusplus 154 } 155 #endif 156 157 Sequence<BYTE> createSeq( char * p ) 158 { 159 Sequence<BYTE> seq( strlen( p )+1 ); 160 strcpy( (char * ) seq.getArray() , p ); 161 return seq; 162 } 163 164 Sequence<BYTE> createIntSeq( INT32 i ) 165 { 166 char pcCount[20]; 167 sprintf( pcCount , "%d" , i ); 168 return createSeq( pcCount ); 169 } 170 171