xref: /trunk/main/javaunohelper/com/sun/star/comp/helper/SharedLibraryLoader.java (revision cdf0e10c4e3984b49a9502b011690b615761d4a3)
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 package com.sun.star.comp.helper;
28 
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;
33 
34 /**
35  * @deprecated use class Bootstrap bootstrapping a native UNO installation
36  *             and use the shared library loader service.
37  *
38  * The <code>SharedLibraryLoader</code> class provides the functionality of the <code>com.sun.star.loader.SharedLibrary</code>
39  * service.
40  * <p>
41  * @see         com.sun.star.loader.SharedLibrary
42  * @see         com.sun.star.comp.servicemanager.ServiceManager
43  * @see         com.sun.star.lang.ServiceManager
44  */
45 public class SharedLibraryLoader {
46     /**
47      * The default library which contains the SharedLibraryLoader component
48      */
49     public static final String DEFAULT_LIBRARY = "shlibloader.uno";
50 
51     /**
52      * The default implementation name
53      */
54     public static final String DEFAULT_IMPLEMENTATION = "com.sun.star.comp.stoc.DLLComponentLoader";
55 
56     static {
57         System.loadLibrary("juh");
58     }
59 
60     private static native boolean component_writeInfo(
61             String libName, XMultiServiceFactory smgr, XRegistryKey regKey,
62             ClassLoader loader );
63 
64     private static native Object component_getFactory(
65             String libName, String implName, XMultiServiceFactory smgr,
66             XRegistryKey regKey, ClassLoader loader );
67 
68     /**
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.
73      * <p>
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
80      */
81     public static XSingleServiceFactory getServiceFactory(
82                 XMultiServiceFactory smgr,
83                 XRegistryKey regKey )
84     {
85         return UnoRuntime.queryInterface(
86                     XSingleServiceFactory.class,
87                     component_getFactory(
88                         DEFAULT_LIBRARY, DEFAULT_IMPLEMENTATION, smgr, regKey,
89                         SharedLibraryLoader.class.getClassLoader() ) );
90     }
91 
92     /**
93      * Loads and returns a specific factory for a given library and implementation name.
94      * <p>
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
103      */
104     public static XSingleServiceFactory getServiceFactory(
105                 String libName,
106                 String impName,
107                 XMultiServiceFactory smgr,
108                 XRegistryKey regKey )
109     {
110         return UnoRuntime.queryInterface(
111                     XSingleServiceFactory.class,
112                     component_getFactory(
113                         libName, impName, smgr, regKey,
114                         SharedLibraryLoader.class.getClassLoader() ) );
115     }
116 
117     /**
118      * Registers the SharedLibraryLoader under a RegistryKey.
119      * <p>
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
126      */
127     public static boolean writeRegistryServiceInfo(
128                 com.sun.star.lang.XMultiServiceFactory smgr,
129                 com.sun.star.registry.XRegistryKey regKey )
130     {
131         return component_writeInfo(
132             DEFAULT_LIBRARY, smgr, regKey,
133             SharedLibraryLoader.class.getClassLoader() );
134     }
135 
136     /**
137      * Registers the SharedLibraryLoader under a RegistryKey.
138      * <p>
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
146      */
147     public static boolean writeRegistryServiceInfo(
148                 String libName,
149                 com.sun.star.lang.XMultiServiceFactory smgr,
150                 com.sun.star.registry.XRegistryKey regKey )
151 
152             throws  com.sun.star.registry.InvalidRegistryException,
153                     com.sun.star.uno.RuntimeException
154     {
155         return component_writeInfo(
156             libName, smgr, regKey, SharedLibraryLoader.class.getClassLoader() );
157     }
158 }
159 
160