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 ************************************************************************/
27 package com
.sun
.star
.comp
.helper
;
29 import com
.sun
.star
.uno
.UnoRuntime
;
30 import com
.sun
.star
.lang
.XMultiServiceFactory
;
31 import com
.sun
.star
.lang
.XSingleServiceFactory
;
32 import com
.sun
.star
.registry
.XRegistryKey
;
35 * @deprecated use class Bootstrap bootstrapping a native UNO installation
36 * and use the shared library loader service.
38 * The <code>SharedLibraryLoader</code> class provides the functionality of the <code>com.sun.star.loader.SharedLibrary</code>
41 * @see com.sun.star.loader.SharedLibrary
42 * @see "com.sun.star.comp.servicemanager.ServiceManager"
43 * @see com.sun.star.lang.ServiceManager
45 public class SharedLibraryLoader
{
47 * The default library which contains the SharedLibraryLoader component
49 public static final String DEFAULT_LIBRARY
= "shlibloader.uno";
52 * The default implementation name
54 public static final String DEFAULT_IMPLEMENTATION
= "com.sun.star.comp.stoc.DLLComponentLoader";
57 System
.loadLibrary("juh");
60 private static native boolean component_writeInfo(
61 String libName
, XMultiServiceFactory smgr
, XRegistryKey regKey
,
64 private static native Object
component_getFactory(
65 String libName
, String implName
, XMultiServiceFactory smgr
,
66 XRegistryKey regKey
, ClassLoader loader
);
69 * Supplies the ServiceFactory of the default SharedLibraryLoader.
70 * The defaults are "shlibloader.uno"
71 * for the library and "com.sun.star.comp.stoc.DLLComponentLoader"
72 * for the component name.
74 * @return the factory for the "com.sun.star.comp.stoc.DLLComponentLoader" component.
75 * @param smgr the ServiceManager
76 * @param regKey the root registry key
77 * @see com.sun.star.loader.SharedLibrary
78 * @see com.sun.star.lang.ServiceManager
79 * @see com.sun.star.registry.RegistryKey
81 public static XSingleServiceFactory
getServiceFactory(
82 XMultiServiceFactory smgr
,
85 return UnoRuntime
.queryInterface(
86 XSingleServiceFactory
.class,
88 DEFAULT_LIBRARY
, DEFAULT_IMPLEMENTATION
, smgr
, regKey
,
89 SharedLibraryLoader
.class.getClassLoader() ) );
93 * Loads and returns a specific factory for a given library and implementation name.
95 * @return the factory of the component
96 * @param libName the name of the shared library
97 * @param impName the implementation name of the component
98 * @param smgr the ServiceManager
99 * @param regKey the root registry key
100 * @see com.sun.star.loader.SharedLibrary
101 * @see com.sun.star.lang.ServiceManager
102 * @see com.sun.star.registry.RegistryKey
104 public static XSingleServiceFactory
getServiceFactory(
107 XMultiServiceFactory smgr
,
108 XRegistryKey regKey
)
110 return UnoRuntime
.queryInterface(
111 XSingleServiceFactory
.class,
112 component_getFactory(
113 libName
, impName
, smgr
, regKey
,
114 SharedLibraryLoader
.class.getClassLoader() ) );
118 * Registers the SharedLibraryLoader under a RegistryKey.
120 * @return true if the registration was successfull - otherwise false
121 * @param smgr the ServiceManager
122 * @param regKey the root key under that the component should be registered
123 * @see com.sun.star.loader.SharedLibrary
124 * @see com.sun.star.lang.ServiceManager
125 * @see com.sun.star.registry.RegistryKey
127 public static boolean writeRegistryServiceInfo(
128 com
.sun
.star
.lang
.XMultiServiceFactory smgr
,
129 com
.sun
.star
.registry
.XRegistryKey regKey
)
131 return component_writeInfo(
132 DEFAULT_LIBRARY
, smgr
, regKey
,
133 SharedLibraryLoader
.class.getClassLoader() );
137 * Registers the SharedLibraryLoader under a RegistryKey.
139 * @return true if the registration was successfull - otherwise false
140 * @param libName name of the shared library
141 * @param smgr the ServiceManager
142 * @param regKey the root key under that the component should be registered
143 * @see com.sun.star.loader.SharedLibrary
144 * @see com.sun.star.lang.ServiceManager
145 * @see com.sun.star.registry.RegistryKey
147 public static boolean writeRegistryServiceInfo(
149 com
.sun
.star
.lang
.XMultiServiceFactory smgr
,
150 com
.sun
.star
.registry
.XRegistryKey regKey
)
152 throws com
.sun
.star
.registry
.InvalidRegistryException
,
153 com
.sun
.star
.uno
.RuntimeException
155 return component_writeInfo(
156 libName
, smgr
, regKey
, SharedLibraryLoader
.class.getClassLoader() );