1 /*************************************************************************
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
5 * Copyright 2000, 2010 Oracle and/or its affiliates.
7 * OpenOffice.org - a multi-platform office productivity suite
9 * This file is part of OpenOffice.org.
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.
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).
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.
26 ************************************************************************/
29 // MARKER(update_precomp.py): autogen include statement, do not remove
30 #include "precompiled_extensions.hxx"
32 #include<osl/module.hxx>
34 #include <rtl/ustring.hxx>
36 #include <cppuhelper/factory.hxx>
37 #include <cppuhelper/servicefactory.hxx>
38 #include <cppuhelper/bootstrap.hxx>
39 #include <com/sun/star/lang/XMultiComponentFactory.hpp>
40 #include <com/sun/star/lang/XSingleServiceFactory.hpp>
41 #include <com/sun/star/lang/XServiceInfo.hpp>
42 #include <com/sun/star/lang/XComponent.hpp>
43 #include <com/sun/star/uno/XComponentContext.hpp>
44 #include <com/sun/star/registry/XSimpleRegistry.hpp>
47 using namespace ::rtl
;
48 using namespace ::osl
;
49 using namespace ::com::sun::star::uno
;
50 using namespace ::com::sun::star::lang
;
51 using namespace ::cppu
;
52 using namespace ::com::sun::star::registry
;
62 sal_Bool bTest1
= test1();
63 sal_Bool bTest2
= test2();
64 sal_Bool bTest3
= test3();
65 sal_Bool bTest4
= test4();
67 if( bTest1
&& bTest2
&& bTest3
&& bTest4
)
68 printf("\n#########################\n Test was successful\n#######################\n");
75 printf("\n Test1: com.sun.star.bridge.oleautomation.BridgeSupplier\n");
76 Reference
<XSimpleRegistry
> xreg
= createSimpleRegistry();
77 xreg
->open( OUString( RTL_CONSTASCII_USTRINGPARAM("services.rdb")),
78 sal_False
, sal_False
);
80 Reference
< XComponentContext
> context
= bootstrap_InitialComponentContext(xreg
);
81 Reference
<XMultiComponentFactory
> fac
= context
->getServiceManager();
82 OUString
sService1( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.bridge.oleautomation.BridgeSupplier"));
83 Reference
<XInterface
> xint1
= fac
->createInstanceWithContext( sService1
, context
);
86 RTL_CONSTASCII_USTRINGPARAM("oleautobridge.uno" SAL_DLLEXTENSION
));
87 oslModule hMod
= osl_loadModule( sModule
.pData
, 0);
88 osl_unloadModule( hMod
);
90 rtl_unloadUnusedModules( NULL
);
92 OUString
sFactoryFunc( RTL_CONSTASCII_USTRINGPARAM("component_getFactory"));
93 void* pSymbol
= osl_getSymbol( hMod
,sFactoryFunc
.pData
);
94 // true, instance alive
95 sal_Bool bTest1
= pSymbol
? sal_True
: sal_False
;
98 rtl_unloadUnusedModules( NULL
);
99 pSymbol
= osl_getSymbol( hMod
,sFactoryFunc
.pData
);
100 sal_Bool bTest2
= pSymbol
? sal_False
: sal_True
;
102 Reference
<XComponent
> xcomp( context
, UNO_QUERY
);
105 return bTest2
&& bTest1
;
110 printf("Test2: com.sun.star.bridge.OleBridgeSupplierVar1\n");
111 Reference
<XSimpleRegistry
> xreg
= createSimpleRegistry();
112 xreg
->open( OUString( RTL_CONSTASCII_USTRINGPARAM("services.rdb")),
113 sal_False
, sal_False
);
115 Reference
< XComponentContext
> context
= bootstrap_InitialComponentContext(xreg
);
116 Reference
<XMultiComponentFactory
> fac
= context
->getServiceManager();
117 OUString
sService2( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.bridge.OleBridgeSupplierVar1"));
118 Reference
<XInterface
> xint
= fac
->createInstanceWithContext( sService2
, context
);
121 RTL_CONSTASCII_USTRINGPARAM("oleautobridge.uno" SAL_DLLEXTENSION
));
122 oslModule hMod
= osl_loadModule( sModule
.pData
, 0);
123 osl_unloadModule( hMod
);
125 rtl_unloadUnusedModules( NULL
);
126 OUString
sFactoryFunc( RTL_CONSTASCII_USTRINGPARAM("component_getFactory"));
127 void* pSymbol
= osl_getSymbol( hMod
,sFactoryFunc
.pData
);
128 // true, instance alive
129 sal_Bool bTest1
= pSymbol
? sal_True
: sal_False
;
132 rtl_unloadUnusedModules( NULL
);
133 pSymbol
= osl_getSymbol( hMod
,sFactoryFunc
.pData
);
134 sal_Bool bTest2
= pSymbol
? sal_False
: sal_True
;
136 Reference
<XComponent
> xcomp( context
, UNO_QUERY
);
138 return bTest1
&& bTest2
;
143 printf("Test3: com.sun.star.bridge.oleautomation.Factory\n");
144 Reference
<XSimpleRegistry
> xreg
= createSimpleRegistry();
145 xreg
->open( OUString( RTL_CONSTASCII_USTRINGPARAM("services.rdb")),
146 sal_False
, sal_False
);
148 Reference
< XComponentContext
> context
= bootstrap_InitialComponentContext(xreg
);
150 Reference
<XMultiComponentFactory
> fac
= context
->getServiceManager();
151 OUString
sService( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.bridge.oleautomation.Factory"));
152 Reference
<XInterface
> xint
= fac
->createInstanceWithContext( sService
, context
);
156 RTL_CONSTASCII_USTRINGPARAM("oleautobridge.uno" SAL_DLLEXTENSION
));
157 oslModule hMod
= osl_loadModule( sModule
.pData
, 0);
158 osl_unloadModule( hMod
);
160 rtl_unloadUnusedModules( NULL
);
161 OUString
sFactoryFunc( RTL_CONSTASCII_USTRINGPARAM("component_getFactory"));
162 void* pSymbol
= osl_getSymbol( hMod
,sFactoryFunc
.pData
);
163 // true, instance alive
164 sal_Bool bTest1
= pSymbol
? sal_True
: sal_False
;
167 rtl_unloadUnusedModules( NULL
);
168 pSymbol
= osl_getSymbol( hMod
,sFactoryFunc
.pData
);
169 sal_Bool bTest2
= pSymbol
? sal_False
: sal_True
;
171 Reference
<XComponent
> xcomp( context
, UNO_QUERY
);
174 // for (int i=0; i < 10; i++)
176 // Reference<XSimpleRegistry> xreg= createSimpleRegistry();
177 // xreg->open( OUString( RTL_CONSTASCII_USTRINGPARAM("applicat.rdb")),
178 // sal_False, sal_False );
179 // Reference< XComponentContext > context= bootstrap_InitialComponentContext(xreg);
180 // Reference<XComponent> xcomp( context, UNO_QUERY);
186 return bTest1
&& bTest2
;
192 sal_Bool bTest1
= sal_False
;
193 sal_Bool bTest2
= sal_False
;
194 oslModule hMod
= NULL
;
196 RTL_CONSTASCII_USTRINGPARAM("oleautobridge.uno" SAL_DLLEXTENSION
));
197 OUString
sFactoryFunc( RTL_CONSTASCII_USTRINGPARAM("component_getFactory"));
199 printf("Test4: com.sun.star.bridge.oleautomation.ApplicationRegistration\n");
200 Reference
<XSimpleRegistry
> xreg
= createSimpleRegistry();
201 xreg
->open( OUString( RTL_CONSTASCII_USTRINGPARAM("services.rdb")),
202 sal_False
, sal_False
);
204 Reference
< XComponentContext
> context
= bootstrap_InitialComponentContext(xreg
);
205 Reference
<XMultiComponentFactory
> fac
= context
->getServiceManager();
206 OUString
sService4( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.bridge.oleautomation.ApplicationRegistration"));
207 Reference
<XInterface
> xint
= fac
->createInstanceWithContext( sService4
, context
);
209 hMod
= osl_loadModule( sModule
.pData
, 0);
210 osl_unloadModule( hMod
);
212 rtl_unloadUnusedModules( NULL
);
213 void* pSymbol
= osl_getSymbol( hMod
,sFactoryFunc
.pData
);
214 // true, instance alive
215 bTest1
= pSymbol
? sal_True
: sal_False
;
216 // ApplicationRegistration is a one-instance-service, therefore kill service manager first
217 Reference
<XComponent
> xcomp( context
, UNO_QUERY
);
221 rtl_unloadUnusedModules( NULL
);
222 pSymbol
= osl_getSymbol( hMod
,sFactoryFunc
.pData
);
223 bTest2
= pSymbol
? sal_False
: sal_True
;
225 return bTest1
&& bTest2
;