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 package com.sun.star.comp.smoketest;
25 
26 import com.sun.star.lib.uno.helper.Factory;
27 import com.sun.star.lang.XMultiComponentFactory;
28 import com.sun.star.lang.XSingleComponentFactory;
29 import com.sun.star.lib.uno.helper.WeakBase;
30 import com.sun.star.uno.UnoRuntime;
31 import com.sun.star.uno.XComponentContext;
32 import com.sun.star.registry.XRegistryKey;
33 import com.sun.star.lang.XInitialization;
34 import com.sun.star.lang.XTypeProvider;
35 import com.sun.star.lang.XServiceInfo;
36 import com.sun.star.uno.Type;
37 
38 /** This class capsulates the class, that implements the minimal component, a
39  * factory for creating the service (<CODE>__getComponentFactory</CODE>) and a
40  * method, that writes the information into the given registry key
41  * (<CODE>__writeRegistryServiceInfo</CODE>).
42  */
43 public class TestExtension {
44     /** This class implements the component. At least the interfaces XServiceInfo,
45      * XTypeProvider, and XInitialization should be provided by the service.
46      */
47     public static class _TestExtension extends WeakBase
48         implements XServiceInfo {
49         /** The service name, that must be used to get an instance of this service.
50          */
51         static private final String __serviceName =
52         "com.sun.star.comp.smoketest.TestExtension";
53 
54         /** The initial component contextr, that gives access to
55          * the service manager, supported singletons, ...
56          * It's often later used
57          */
58         private XComponentContext m_cmpCtx;
59 
60         /** The service manager, that gives access to all registered services.
61          * It's often later used
62          */
63         private XMultiComponentFactory m_xMCF;
64 
65         /** The constructor of the inner class has a XMultiServiceFactory parameter.
66          * @param xmultiservicefactoryInitialization A special service factory
67          * could be introduced while initializing.
68          */
_TestExtension(XComponentContext xCompContext)69         public _TestExtension(XComponentContext xCompContext) {
70             try {
71                 m_cmpCtx = xCompContext;
72                 m_xMCF = m_cmpCtx.getServiceManager();
73             }
74             catch( Exception e ) {
75                 e.printStackTrace();
76             }
77         }
78 
79         /** This method returns an array of all supported service names.
80          * @return Array of supported service names.
81          */
getSupportedServiceNames()82         public String[] getSupportedServiceNames() {
83             return getServiceNames();
84         }
85 
86         /** This method is a simple helper function to used in the
87          * static component initialisation functions as well as in
88          * getSupportedServiceNames.
89          */
getServiceNames()90         public static String[] getServiceNames() {
91             String[] sSupportedServiceNames = { __serviceName };
92             return sSupportedServiceNames;
93         }
94 
95         /** This method returns true, if the given service will be
96          * supported by the component.
97          * @param sServiceName Service name.
98          * @return True, if the given service name will be supported.
99          */
supportsService( String sServiceName )100         public boolean supportsService( String sServiceName ) {
101             return sServiceName.equals( __serviceName );
102         }
103 
104         /** Return the class name of the component.
105          * @return Class name of the component.
106          */
getImplementationName()107         public String getImplementationName() {
108             return  _TestExtension.class.getName();
109         }
110     }
111 
112 
113     /**
114      * Gives a factory for creating the service.
115      * This method is called by the <code>JavaLoader</code>
116      * <p>
117      * @return  returns a <code>XSingleComponentFactory</code> for creating
118      *          the component
119      * @param   sImplName the name of the implementation for which a
120      *          service is desired
121      * @see     com.sun.star.comp.loader.JavaLoader
122      */
__getComponentFactory(String sImplName)123     public static XSingleComponentFactory __getComponentFactory(String sImplName)
124     {
125         XSingleComponentFactory xFactory = null;
126 
127         if ( sImplName.equals( _TestExtension.class.getName() ) )
128             xFactory = Factory.createComponentFactory(_TestExtension.class,
129                                              _TestExtension.getServiceNames());
130 
131         return xFactory;
132     }
133 
134     /**
135      * Writes the service information into the given registry key.
136      * This method is called by the <code>JavaLoader</code>
137      * <p>
138      * @return  returns true if the operation succeeded
139      * @param   regKey the registryKey
140      * @see     com.sun.star.comp.loader.JavaLoader
141      */
__writeRegistryServiceInfo(XRegistryKey regKey)142     public static boolean __writeRegistryServiceInfo(XRegistryKey regKey) {
143         return Factory.writeRegistryServiceInfo(_TestExtension.class.getName(),
144                                                 _TestExtension.getServiceNames(),
145                                                 regKey);
146     }
147         /** This method is a member of the interface for initializing an object
148          * directly after its creation.
149          * @param object This array of arbitrary objects will be passed to the
150          * component after its creation.
151          * @throws Exception Every exception will not be handled, but will be
152          * passed to the caller.
153          */
initialize( Object[] object )154         public void initialize( Object[] object )
155             throws com.sun.star.uno.Exception {
156             /* The component describes what arguments it expects and in which
157              * order! At this point you can read the objects and can initialize
158              * your component using these objects.
159              */
160         }
161 
162 }
163