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