xref: /trunk/main/sw/source/ui/uno/unofreg.cxx (revision 1ecadb572e7010ff3b3382ad9bf179dbc6efadbb)
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