xref: /aoo41x/main/sw/source/ui/uno/unofreg.cxx (revision cdf0e10c)
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_sw.hxx"
30 #include "SwXFilterOptions.hxx"
31 #include "sal/types.h"
32 #include <osl/diagnose.h>
33 #include <uno/lbnames.h>
34 #include <cppuhelper/factory.hxx>
35 #include <sfx2/sfxmodelfactory.hxx>
36 #ifndef INCLUDED_STRING_H
37 #include <string.h>
38 #define INCLUDED_STRING_H
39 #endif
40 
41 using namespace rtl;
42 using namespace ::com::sun::star;
43 using namespace ::com::sun::star::lang;
44 
45 // module
46 extern uno::Sequence< OUString > SAL_CALL SwUnoModule_getSupportedServiceNames() throw();
47 extern OUString SAL_CALL SwUnoModule_getImplementationName() throw();
48 extern uno::Reference< uno::XInterface > SAL_CALL SwUnoModule_createInstance( const uno::Reference< XMultiServiceFactory > &rSMgr ) throw( uno::Exception );
49 
50 // writer documents
51 extern uno::Sequence< OUString > SAL_CALL SwTextDocument_getSupportedServiceNames() throw();
52 extern OUString SAL_CALL SwTextDocument_getImplementationName() throw();
53 extern uno::Reference< uno::XInterface > SAL_CALL SwTextDocument_createInstance( const uno::Reference< XMultiServiceFactory > &rSMgr, const sal_uInt64 _nCreationFlags ) throw( uno::Exception );
54 extern uno::Sequence< OUString > SAL_CALL SwWebDocument_getSupportedServiceNames() throw();
55 extern OUString SAL_CALL SwWebDocument_getImplementationName() throw();
56 extern uno::Reference< uno::XInterface > SAL_CALL SwWebDocument_createInstance( const uno::Reference< XMultiServiceFactory > &rSMgr ) throw( uno::Exception );
57 extern uno::Sequence< OUString > SAL_CALL SwGlobalDocument_getSupportedServiceNames() throw();
58 extern OUString SAL_CALL SwGlobalDocument_getImplementationName() throw();
59 extern uno::Reference< uno::XInterface > SAL_CALL SwGlobalDocument_createInstance( const uno::Reference< XMultiServiceFactory > &rSMgr ) throw( uno::Exception );
60 
61 // xml import
62 extern uno::Sequence< OUString > SAL_CALL SwXMLImport_getSupportedServiceNames() throw();
63 extern OUString SAL_CALL SwXMLImport_getImplementationName() throw();
64 extern uno::Reference< uno::XInterface > SAL_CALL SwXMLImport_createInstance(const uno::Reference< XMultiServiceFactory > & rSMgr)	throw( uno::Exception );
65 extern uno::Sequence< OUString > SAL_CALL SwXMLImportStyles_getSupportedServiceNames() throw();
66 extern OUString SAL_CALL SwXMLImportStyles_getImplementationName() throw();
67 extern uno::Reference< uno::XInterface > SAL_CALL SwXMLImportStyles_createInstance(const uno::Reference< XMultiServiceFactory > & rSMgr)	throw( uno::Exception );
68 extern uno::Sequence< OUString > SAL_CALL SwXMLImportContent_getSupportedServiceNames() throw();
69 extern OUString SAL_CALL SwXMLImportContent_getImplementationName() throw();
70 extern uno::Reference< uno::XInterface > SAL_CALL SwXMLImportContent_createInstance(const uno::Reference< XMultiServiceFactory > & rSMgr)	throw( uno::Exception );
71 
72 extern uno::Sequence< OUString > SAL_CALL     SwXMLImportMeta_getSupportedServiceNames() throw();
73 extern OUString SAL_CALL     SwXMLImportMeta_getImplementationName() throw();
74 extern uno::Reference< uno::XInterface > SAL_CALL SwXMLImportMeta_createInstance(const uno::Reference< XMultiServiceFactory > & rSMgr)	throw( uno::Exception );
75 
76 extern uno::Sequence< OUString > SAL_CALL SwXMLImportSettings_getSupportedServiceNames() throw();
77 extern OUString SAL_CALL SwXMLImportSettings_getImplementationName() throw();
78 extern uno::Reference< uno::XInterface > SAL_CALL SwXMLImportSettings_createInstance(const uno::Reference< XMultiServiceFactory > & rSMgr)	throw( uno::Exception );
79 
80 // xml export (OOo)
81 extern uno::Sequence< OUString > SAL_CALL SwXMLExportOOO_getSupportedServiceNames() throw();
82 extern OUString SAL_CALL SwXMLExportOOO_getImplementationName() throw();
83 extern uno::Reference< uno::XInterface > SAL_CALL SwXMLExportOOO_createInstance(const uno::Reference< XMultiServiceFactory > & rSMgr)	throw( uno::Exception );
84 extern uno::Sequence< OUString > SAL_CALL SwXMLExportContentOOO_getSupportedServiceNames() throw();
85 extern OUString SAL_CALL SwXMLExportContentOOO_getImplementationName() throw();
86 extern uno::Reference< uno::XInterface > SAL_CALL SwXMLExportContentOOO_createInstance(const uno::Reference< XMultiServiceFactory > & rSMgr)	throw( uno::Exception );
87 extern uno::Sequence< OUString > SAL_CALL SwXMLExportStylesOOO_getSupportedServiceNames() throw();
88 extern OUString SAL_CALL SwXMLExportStylesOOO_getImplementationName() throw();
89 extern uno::Reference< uno::XInterface > SAL_CALL SwXMLExportStylesOOO_createInstance(const uno::Reference< XMultiServiceFactory > & rSMgr)	throw( uno::Exception );
90 extern uno::Sequence< OUString > SAL_CALL SwXMLExportMetaOOO_getSupportedServiceNames() throw();
91 extern OUString SAL_CALL SwXMLExportMetaOOO_getImplementationName() throw();
92 extern uno::Reference< uno::XInterface > SAL_CALL SwXMLExportMetaOOO_createInstance(const uno::Reference< XMultiServiceFactory > & rSMgr)	throw( uno::Exception );
93 extern uno::Sequence< OUString > SAL_CALL SwXMLExportSettingsOOO_getSupportedServiceNames() throw();
94 extern OUString SAL_CALL SwXMLExportSettingsOOO_getImplementationName() throw();
95 extern uno::Reference< uno::XInterface > SAL_CALL SwXMLExportSettingsOOO_createInstance(const uno::Reference< XMultiServiceFactory > & rSMgr)	throw( uno::Exception );
96 
97 // xml export (OASIS)
98 extern uno::Sequence< OUString > SAL_CALL SwXMLExport_getSupportedServiceNames() throw();
99 extern OUString SAL_CALL SwXMLExport_getImplementationName() throw();
100 extern uno::Reference< uno::XInterface > SAL_CALL SwXMLExport_createInstance(const uno::Reference< XMultiServiceFactory > & rSMgr)	throw( uno::Exception );
101 extern uno::Sequence< OUString > SAL_CALL SwXMLExportContent_getSupportedServiceNames() throw();
102 extern OUString SAL_CALL SwXMLExportContent_getImplementationName() throw();
103 extern uno::Reference< uno::XInterface > SAL_CALL SwXMLExportContent_createInstance(const uno::Reference< XMultiServiceFactory > & rSMgr)	throw( uno::Exception );
104 extern uno::Sequence< OUString > SAL_CALL SwXMLExportStyles_getSupportedServiceNames() throw();
105 extern OUString SAL_CALL SwXMLExportStyles_getImplementationName() throw();
106 extern uno::Reference< uno::XInterface > SAL_CALL SwXMLExportStyles_createInstance(const uno::Reference< XMultiServiceFactory > & rSMgr)	throw( uno::Exception );
107 extern uno::Sequence< OUString > SAL_CALL SwXMLExportMeta_getSupportedServiceNames() throw();
108 extern OUString SAL_CALL SwXMLExportMeta_getImplementationName() throw();
109 extern uno::Reference< uno::XInterface > SAL_CALL SwXMLExportMeta_createInstance(const uno::Reference< XMultiServiceFactory > & rSMgr)	throw( uno::Exception );
110 extern uno::Sequence< OUString > SAL_CALL SwXMLExportSettings_getSupportedServiceNames() throw();
111 extern OUString SAL_CALL SwXMLExportSettings_getImplementationName() throw();
112 extern uno::Reference< uno::XInterface > SAL_CALL SwXMLExportSettings_createInstance(const uno::Reference< XMultiServiceFactory > & rSMgr)	throw( uno::Exception );
113 
114 //API objects
115 extern uno::Sequence< OUString > SAL_CALL SwXAutoTextContainer_getSupportedServiceNames() throw();
116 extern OUString SAL_CALL SwXAutoTextContainer_getImplementationName() throw();
117 extern uno::Reference< uno::XInterface > SAL_CALL SwXAutoTextContainer_createInstance(const uno::Reference< XMultiServiceFactory > & rSMgr) throw( uno::Exception );
118 
119 extern uno::Sequence< OUString > SAL_CALL SwXModule_getSupportedServiceNames() throw();
120 extern OUString SAL_CALL SwXModule_getImplementationName() throw();
121 extern uno::Reference< uno::XInterface > SAL_CALL SwXModule_createInstance(const uno::Reference< XMultiServiceFactory > & rSMgr) throw( uno::Exception );
122 
123 extern uno::Sequence< OUString > SAL_CALL SwXMailMerge_getSupportedServiceNames() throw();
124 extern OUString SAL_CALL SwXMailMerge_getImplementationName() throw();
125 extern uno::Reference< uno::XInterface > SAL_CALL SwXMailMerge_createInstance(const uno::Reference< XMultiServiceFactory > & rSMgr) throw( uno::Exception );
126 
127 extern uno::Sequence< OUString > SAL_CALL SwXMailMerge_getSupportedServiceNames() throw();
128 extern OUString SAL_CALL SwXMailMerge_getImplementationName() throw();
129 extern uno::Reference< uno::XInterface > SAL_CALL SwXMailMerge_createInstance(const uno::Reference< XMultiServiceFactory > & rSMgr) throw( uno::Exception );
130 
131 // --> OD 2007-05-24 #i73788#
132 #include "cppuhelper/implementationentry.hxx"
133 namespace comp_FinalThreadManager {
134 
135 // component and service helper functions:
136 ::rtl::OUString SAL_CALL _getImplementationName();
137 com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL _getSupportedServiceNames();
138 com::sun::star::uno::Reference< com::sun::star::uno::XInterface > SAL_CALL _create(
139     com::sun::star::uno::Reference< com::sun::star::uno::XComponentContext > const & context );
140 
141 }
142 // <--
143 
144 //
145 #ifdef __cplusplus
146 extern "C"
147 {
148 #endif
149 
150 SAL_DLLPUBLIC_EXPORT void SAL_CALL component_getImplementationEnvironment(
151 		const sal_Char ** ppEnvTypeName,
152         uno_Environment ** /*ppEnv*/ )
153 {
154 	*ppEnvTypeName = CPPU_CURRENT_LANGUAGE_BINDING_NAME;
155 }
156 
157 static ::cppu::ImplementationEntry const entries[] = {
158     { &comp_FinalThreadManager::_create,
159       &comp_FinalThreadManager::_getImplementationName,
160       &comp_FinalThreadManager::_getSupportedServiceNames,
161       &::cppu::createSingleComponentFactory, 0, 0 },
162     { 0, 0, 0, 0, 0, 0 }
163 };
164 
165 SAL_DLLPUBLIC_EXPORT void * SAL_CALL component_getFactory(
166 	const sal_Char * pImplName,
167 	void * pServiceManager,
168     void * pRegistryKey )
169 {
170 	void * pRet = 0;
171 	if( pServiceManager )
172 	{
173 		uno::Reference< XMultiServiceFactory > xMSF(
174 			reinterpret_cast< XMultiServiceFactory * >( pServiceManager ) );
175 
176 		uno::Reference< XSingleServiceFactory > xFactory;
177 
178 		const sal_Int32 nImplNameLen = strlen( pImplName );
179 		if( SwXMLImport_getImplementationName().equalsAsciiL( pImplName,
180 															  nImplNameLen ) )
181 		{
182 			xFactory = ::cppu::createSingleFactory( xMSF,
183 				SwXMLImport_getImplementationName(),
184 				SwXMLImport_createInstance,
185 				SwXMLImport_getSupportedServiceNames() );
186 		}
187 		else if( SwXMLImportStyles_getImplementationName().equalsAsciiL(
188 													pImplName, nImplNameLen ) )
189 		{
190 			xFactory = ::cppu::createSingleFactory( xMSF,
191 				SwXMLImportStyles_getImplementationName(),
192 				SwXMLImportStyles_createInstance,
193 				SwXMLImportStyles_getSupportedServiceNames() );
194 		}
195 		else if( SwXMLImportContent_getImplementationName().equalsAsciiL(
196 													pImplName, nImplNameLen ) )
197 		{
198 			xFactory = ::cppu::createSingleFactory( xMSF,
199 				SwXMLImportContent_getImplementationName(),
200 				SwXMLImportContent_createInstance,
201 				SwXMLImportContent_getSupportedServiceNames() );
202 		}
203 		else if( SwXMLImportMeta_getImplementationName().equalsAsciiL(
204 													pImplName, nImplNameLen ) )
205 		{
206 			xFactory = ::cppu::createSingleFactory( xMSF,
207 				SwXMLImportMeta_getImplementationName(),
208 				SwXMLImportMeta_createInstance,
209 				SwXMLImportMeta_getSupportedServiceNames() );
210 		}
211 		else if( SwXMLImportSettings_getImplementationName().equalsAsciiL(
212 													pImplName, nImplNameLen ) )
213 		{
214 			xFactory = ::cppu::createSingleFactory( xMSF,
215 				SwXMLImportSettings_getImplementationName(),
216 				SwXMLImportSettings_createInstance,
217 				SwXMLImportSettings_getSupportedServiceNames() );
218 		}
219 		else if( SwXMLExportOOO_getImplementationName().equalsAsciiL( pImplName,
220 															nImplNameLen ) )
221 		{
222 			xFactory = ::cppu::createSingleFactory( xMSF,
223 				SwXMLExportOOO_getImplementationName(),
224 				SwXMLExportOOO_createInstance,
225 				SwXMLExportOOO_getSupportedServiceNames() );
226 		}
227 		else if( SwXMLExportStylesOOO_getImplementationName().equalsAsciiL(
228 													pImplName, nImplNameLen ) )
229 		{
230 			xFactory = ::cppu::createSingleFactory( xMSF,
231 				SwXMLExportStylesOOO_getImplementationName(),
232 				SwXMLExportStylesOOO_createInstance,
233 				SwXMLExportStylesOOO_getSupportedServiceNames() );
234 		}
235 		else if( SwXMLExportContentOOO_getImplementationName().equalsAsciiL(
236 													pImplName, nImplNameLen ) )
237 		{
238 			xFactory = ::cppu::createSingleFactory( xMSF,
239 				SwXMLExportContentOOO_getImplementationName(),
240 				SwXMLExportContentOOO_createInstance,
241 				SwXMLExportContentOOO_getSupportedServiceNames() );
242 		}
243 		else if( SwXMLExportMetaOOO_getImplementationName().equalsAsciiL(
244 													pImplName, nImplNameLen ) )
245 		{
246 			xFactory = ::cppu::createSingleFactory( xMSF,
247 				SwXMLExportMetaOOO_getImplementationName(),
248 				SwXMLExportMetaOOO_createInstance,
249 				SwXMLExportMetaOOO_getSupportedServiceNames() );
250 		}
251 		else if( SwXMLExportSettingsOOO_getImplementationName().equalsAsciiL(
252 													pImplName, nImplNameLen ) )
253 		{
254 			xFactory = ::cppu::createSingleFactory( xMSF,
255 				SwXMLExportSettingsOOO_getImplementationName(),
256 				SwXMLExportSettingsOOO_createInstance,
257 				SwXMLExportSettingsOOO_getSupportedServiceNames() );
258 		}
259 		else if( SwXMLExport_getImplementationName().equalsAsciiL( pImplName,
260 															nImplNameLen ) )
261 		{
262 			xFactory = ::cppu::createSingleFactory( xMSF,
263 				SwXMLExport_getImplementationName(),
264 				SwXMLExport_createInstance,
265 				SwXMLExport_getSupportedServiceNames() );
266 		}
267 		else if( SwXMLExportStyles_getImplementationName().equalsAsciiL(
268 													pImplName, nImplNameLen ) )
269 		{
270 			xFactory = ::cppu::createSingleFactory( xMSF,
271 				SwXMLExportStyles_getImplementationName(),
272 				SwXMLExportStyles_createInstance,
273 				SwXMLExportStyles_getSupportedServiceNames() );
274 		}
275 		else if( SwXMLExportContent_getImplementationName().equalsAsciiL(
276 													pImplName, nImplNameLen ) )
277 		{
278 			xFactory = ::cppu::createSingleFactory( xMSF,
279 				SwXMLExportContent_getImplementationName(),
280 				SwXMLExportContent_createInstance,
281 				SwXMLExportContent_getSupportedServiceNames() );
282 		}
283 		else if( SwXMLExportMeta_getImplementationName().equalsAsciiL(
284 													pImplName, nImplNameLen ) )
285 		{
286 			xFactory = ::cppu::createSingleFactory( xMSF,
287 				SwXMLExportMeta_getImplementationName(),
288 				SwXMLExportMeta_createInstance,
289 				SwXMLExportMeta_getSupportedServiceNames() );
290 		}
291 		else if( SwXMLExportSettings_getImplementationName().equalsAsciiL(
292 													pImplName, nImplNameLen ) )
293 		{
294 			xFactory = ::cppu::createSingleFactory( xMSF,
295 				SwXMLExportSettings_getImplementationName(),
296 				SwXMLExportSettings_createInstance,
297 				SwXMLExportSettings_getSupportedServiceNames() );
298 		}
299         else if( SwXAutoTextContainer_getImplementationName().equalsAsciiL(
300 													pImplName, nImplNameLen ) )
301 		{
302 			xFactory = ::cppu::createSingleFactory( xMSF,
303                 SwXAutoTextContainer_getImplementationName(),
304                 SwXAutoTextContainer_createInstance,
305                 SwXAutoTextContainer_getSupportedServiceNames() );
306 		}
307         else if( SwXModule_getImplementationName().equalsAsciiL(
308 													pImplName, nImplNameLen ) )
309 		{
310 			xFactory = ::cppu::createSingleFactory( xMSF,
311                 SwXModule_getImplementationName(),
312                 SwXModule_createInstance,
313                 SwXModule_getSupportedServiceNames() );
314 		}
315         else if( SwXMailMerge_getImplementationName().equalsAsciiL(
316                                                     pImplName, nImplNameLen ) )
317         {
318             xFactory = ::cppu::createSingleFactory( xMSF,
319                 SwXMailMerge_getImplementationName(),
320                 SwXMailMerge_createInstance,
321                 SwXMailMerge_getSupportedServiceNames() );
322         }
323         else if( SwXFilterOptions::getImplementationName_Static().equalsAsciiL(
324 													pImplName, nImplNameLen ) )
325 		{
326 			xFactory = ::cppu::createSingleFactory( xMSF,
327                 SwXFilterOptions::getImplementationName_Static(),
328                 SwXFilterOptions_createInstance,
329                 SwXFilterOptions::getSupportedServiceNames_Static() );
330 		}
331         else if( SwTextDocument_getImplementationName().equalsAsciiL(
332 													pImplName, nImplNameLen ) )
333 		{
334 			xFactory = ::sfx2::createSfxModelFactory( xMSF,
335                 SwTextDocument_getImplementationName(),
336                 SwTextDocument_createInstance,
337                 SwTextDocument_getSupportedServiceNames() );
338 		}
339         else if( SwWebDocument_getImplementationName().equalsAsciiL(
340 													pImplName, nImplNameLen ) )
341 		{
342 			xFactory = ::cppu::createSingleFactory( xMSF,
343                 SwWebDocument_getImplementationName(),
344                 SwWebDocument_createInstance,
345                 SwWebDocument_getSupportedServiceNames() );
346 		}
347         else if( SwGlobalDocument_getImplementationName().equalsAsciiL(
348 													pImplName, nImplNameLen ) )
349 		{
350 			xFactory = ::cppu::createSingleFactory( xMSF,
351                 SwGlobalDocument_getImplementationName(),
352                 SwGlobalDocument_createInstance,
353                 SwGlobalDocument_getSupportedServiceNames() );
354 		}
355         else if( SwUnoModule_getImplementationName().equalsAsciiL(
356 													pImplName, nImplNameLen ) )
357 		{
358 			xFactory = ::cppu::createSingleFactory( xMSF,
359                 SwUnoModule_getImplementationName(),
360                 SwUnoModule_createInstance,
361                 SwUnoModule_getSupportedServiceNames() );
362 		}
363         // --> OD 2007-05-24 #i73788#
364         else if( comp_FinalThreadManager::_getImplementationName().equalsAsciiL(
365                                                     pImplName, nImplNameLen ) )
366         {
367             pRet = ::cppu::component_getFactoryHelper(
368                         pImplName, pServiceManager, pRegistryKey, entries);
369         }
370         // <--
371 
372         if( xFactory.is())
373 		{
374 			xFactory->acquire();
375 			pRet = xFactory.get();
376 		}
377 	}
378 	return pRet;
379 }
380 
381 #ifdef __cplusplus
382 }
383 #endif
384