1*b1cdbd2cSJim Jagielski /************************************************************** 2*b1cdbd2cSJim Jagielski * 3*b1cdbd2cSJim Jagielski * Licensed to the Apache Software Foundation (ASF) under one 4*b1cdbd2cSJim Jagielski * or more contributor license agreements. See the NOTICE file 5*b1cdbd2cSJim Jagielski * distributed with this work for additional information 6*b1cdbd2cSJim Jagielski * regarding copyright ownership. The ASF licenses this file 7*b1cdbd2cSJim Jagielski * to you under the Apache License, Version 2.0 (the 8*b1cdbd2cSJim Jagielski * "License"); you may not use this file except in compliance 9*b1cdbd2cSJim Jagielski * with the License. You may obtain a copy of the License at 10*b1cdbd2cSJim Jagielski * 11*b1cdbd2cSJim Jagielski * http://www.apache.org/licenses/LICENSE-2.0 12*b1cdbd2cSJim Jagielski * 13*b1cdbd2cSJim Jagielski * Unless required by applicable law or agreed to in writing, 14*b1cdbd2cSJim Jagielski * software distributed under the License is distributed on an 15*b1cdbd2cSJim Jagielski * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*b1cdbd2cSJim Jagielski * KIND, either express or implied. See the License for the 17*b1cdbd2cSJim Jagielski * specific language governing permissions and limitations 18*b1cdbd2cSJim Jagielski * under the License. 19*b1cdbd2cSJim Jagielski * 20*b1cdbd2cSJim Jagielski *************************************************************/ 21*b1cdbd2cSJim Jagielski 22*b1cdbd2cSJim Jagielski 23*b1cdbd2cSJim Jagielski 24*b1cdbd2cSJim Jagielski import com.sun.star.lib.uno.helper.Factory; 25*b1cdbd2cSJim Jagielski import com.sun.star.lang.XMultiComponentFactory; 26*b1cdbd2cSJim Jagielski import com.sun.star.lang.XSingleComponentFactory; 27*b1cdbd2cSJim Jagielski import com.sun.star.lib.uno.helper.WeakBase; 28*b1cdbd2cSJim Jagielski import com.sun.star.uno.UnoRuntime; 29*b1cdbd2cSJim Jagielski import com.sun.star.uno.XComponentContext; 30*b1cdbd2cSJim Jagielski import com.sun.star.registry.XRegistryKey; 31*b1cdbd2cSJim Jagielski import com.sun.star.lang.XInitialization; 32*b1cdbd2cSJim Jagielski import com.sun.star.lang.XTypeProvider; 33*b1cdbd2cSJim Jagielski import com.sun.star.lang.XServiceInfo; 34*b1cdbd2cSJim Jagielski import com.sun.star.uno.Type; 35*b1cdbd2cSJim Jagielski 36*b1cdbd2cSJim Jagielski /** This class capsulates the class, that implements the minimal component, a 37*b1cdbd2cSJim Jagielski * factory for creating the service (<CODE>__getComponentFactory</CODE>) and a 38*b1cdbd2cSJim Jagielski * method, that writes the information into the given registry key 39*b1cdbd2cSJim Jagielski * (<CODE>__writeRegistryServiceInfo</CODE>). 40*b1cdbd2cSJim Jagielski */ 41*b1cdbd2cSJim Jagielski public class LicenseTest { 42*b1cdbd2cSJim Jagielski /** This class implements the component. At least the interfaces XServiceInfo, 43*b1cdbd2cSJim Jagielski * XTypeProvider, and XInitialization should be provided by the service. 44*b1cdbd2cSJim Jagielski */ 45*b1cdbd2cSJim Jagielski public static class _LicenseTest extends WeakBase 46*b1cdbd2cSJim Jagielski implements XServiceInfo { 47*b1cdbd2cSJim Jagielski /** The service name, that must be used to get an instance of this service. 48*b1cdbd2cSJim Jagielski */ 49*b1cdbd2cSJim Jagielski static private final String __serviceName = 50*b1cdbd2cSJim Jagielski "org.openoffice.LicenseTest"; 51*b1cdbd2cSJim Jagielski 52*b1cdbd2cSJim Jagielski /** The initial component contextr, that gives access to 53*b1cdbd2cSJim Jagielski * the service manager, supported singletons, ... 54*b1cdbd2cSJim Jagielski * It's often later used 55*b1cdbd2cSJim Jagielski */ 56*b1cdbd2cSJim Jagielski private XComponentContext m_cmpCtx; 57*b1cdbd2cSJim Jagielski 58*b1cdbd2cSJim Jagielski /** The service manager, that gives access to all registered services. 59*b1cdbd2cSJim Jagielski * It's often later used 60*b1cdbd2cSJim Jagielski */ 61*b1cdbd2cSJim Jagielski private XMultiComponentFactory m_xMCF; 62*b1cdbd2cSJim Jagielski 63*b1cdbd2cSJim Jagielski /** The constructor of the inner class has a XMultiServiceFactory parameter. 64*b1cdbd2cSJim Jagielski * @param xmultiservicefactoryInitialization A special service factory 65*b1cdbd2cSJim Jagielski * could be introduced while initializing. 66*b1cdbd2cSJim Jagielski */ _LicenseTest(XComponentContext xCompContext)67*b1cdbd2cSJim Jagielski public _LicenseTest(XComponentContext xCompContext) { 68*b1cdbd2cSJim Jagielski try { 69*b1cdbd2cSJim Jagielski m_cmpCtx = xCompContext; 70*b1cdbd2cSJim Jagielski m_xMCF = m_cmpCtx.getServiceManager(); 71*b1cdbd2cSJim Jagielski } 72*b1cdbd2cSJim Jagielski catch( Exception e ) { 73*b1cdbd2cSJim Jagielski e.printStackTrace(); 74*b1cdbd2cSJim Jagielski } 75*b1cdbd2cSJim Jagielski } 76*b1cdbd2cSJim Jagielski 77*b1cdbd2cSJim Jagielski /** This method returns an array of all supported service names. 78*b1cdbd2cSJim Jagielski * @return Array of supported service names. 79*b1cdbd2cSJim Jagielski */ getSupportedServiceNames()80*b1cdbd2cSJim Jagielski public String[] getSupportedServiceNames() { 81*b1cdbd2cSJim Jagielski return getServiceNames(); 82*b1cdbd2cSJim Jagielski } 83*b1cdbd2cSJim Jagielski 84*b1cdbd2cSJim Jagielski /** This method is a simple helper function to used in the 85*b1cdbd2cSJim Jagielski * static component initialisation functions as well as in 86*b1cdbd2cSJim Jagielski * getSupportedServiceNames. 87*b1cdbd2cSJim Jagielski */ getServiceNames()88*b1cdbd2cSJim Jagielski public static String[] getServiceNames() { 89*b1cdbd2cSJim Jagielski String[] sSupportedServiceNames = { __serviceName }; 90*b1cdbd2cSJim Jagielski return sSupportedServiceNames; 91*b1cdbd2cSJim Jagielski } 92*b1cdbd2cSJim Jagielski 93*b1cdbd2cSJim Jagielski /** This method returns true, if the given service will be 94*b1cdbd2cSJim Jagielski * supported by the component. 95*b1cdbd2cSJim Jagielski * @param sServiceName Service name. 96*b1cdbd2cSJim Jagielski * @return True, if the given service name will be supported. 97*b1cdbd2cSJim Jagielski */ supportsService( String sServiceName )98*b1cdbd2cSJim Jagielski public boolean supportsService( String sServiceName ) { 99*b1cdbd2cSJim Jagielski return sServiceName.equals( __serviceName ); 100*b1cdbd2cSJim Jagielski } 101*b1cdbd2cSJim Jagielski 102*b1cdbd2cSJim Jagielski /** Return the class name of the component. 103*b1cdbd2cSJim Jagielski * @return Class name of the component. 104*b1cdbd2cSJim Jagielski */ getImplementationName()105*b1cdbd2cSJim Jagielski public String getImplementationName() { 106*b1cdbd2cSJim Jagielski return _LicenseTest.class.getName(); 107*b1cdbd2cSJim Jagielski } 108*b1cdbd2cSJim Jagielski } 109*b1cdbd2cSJim Jagielski 110*b1cdbd2cSJim Jagielski 111*b1cdbd2cSJim Jagielski /** 112*b1cdbd2cSJim Jagielski * Gives a factory for creating the service. 113*b1cdbd2cSJim Jagielski * This method is called by the <code>JavaLoader</code> 114*b1cdbd2cSJim Jagielski * <p> 115*b1cdbd2cSJim Jagielski * @return returns a <code>XSingleComponentFactory</code> for creating 116*b1cdbd2cSJim Jagielski * the component 117*b1cdbd2cSJim Jagielski * @param sImplName the name of the implementation for which a 118*b1cdbd2cSJim Jagielski * service is desired 119*b1cdbd2cSJim Jagielski * @see com.sun.star.comp.loader.JavaLoader 120*b1cdbd2cSJim Jagielski */ __getComponentFactory(String sImplName)121*b1cdbd2cSJim Jagielski public static XSingleComponentFactory __getComponentFactory(String sImplName) 122*b1cdbd2cSJim Jagielski { 123*b1cdbd2cSJim Jagielski XSingleComponentFactory xFactory = null; 124*b1cdbd2cSJim Jagielski 125*b1cdbd2cSJim Jagielski if ( sImplName.equals( _LicenseTest.class.getName() ) ) 126*b1cdbd2cSJim Jagielski xFactory = Factory.createComponentFactory(_LicenseTest.class, 127*b1cdbd2cSJim Jagielski _LicenseTest.getServiceNames()); 128*b1cdbd2cSJim Jagielski 129*b1cdbd2cSJim Jagielski return xFactory; 130*b1cdbd2cSJim Jagielski } 131*b1cdbd2cSJim Jagielski 132*b1cdbd2cSJim Jagielski /** 133*b1cdbd2cSJim Jagielski * Writes the service information into the given registry key. 134*b1cdbd2cSJim Jagielski * This method is called by the <code>JavaLoader</code> 135*b1cdbd2cSJim Jagielski * <p> 136*b1cdbd2cSJim Jagielski * @return returns true if the operation succeeded 137*b1cdbd2cSJim Jagielski * @param regKey the registryKey 138*b1cdbd2cSJim Jagielski * @see com.sun.star.comp.loader.JavaLoader 139*b1cdbd2cSJim Jagielski */ 140*b1cdbd2cSJim Jagielski // This method not longer necessary since OOo 3.4 where the component registration 141*b1cdbd2cSJim Jagielski // was changed to passive component registration. For more details see 142*b1cdbd2cSJim Jagielski // http://wiki.services.openoffice.org/wiki/Passive_Component_Registration 143*b1cdbd2cSJim Jagielski 144*b1cdbd2cSJim Jagielski // public static boolean __writeRegistryServiceInfo(XRegistryKey regKey) { 145*b1cdbd2cSJim Jagielski // return Factory.writeRegistryServiceInfo(_LicenseTest.class.getName(), 146*b1cdbd2cSJim Jagielski // _LicenseTest.getServiceNames(), 147*b1cdbd2cSJim Jagielski // regKey); 148*b1cdbd2cSJim Jagielski // } 149*b1cdbd2cSJim Jagielski /** This method is a member of the interface for initializing an object 150*b1cdbd2cSJim Jagielski * directly after its creation. 151*b1cdbd2cSJim Jagielski * @param object This array of arbitrary objects will be passed to the 152*b1cdbd2cSJim Jagielski * component after its creation. 153*b1cdbd2cSJim Jagielski * @throws Exception Every exception will not be handled, but will be 154*b1cdbd2cSJim Jagielski * passed to the caller. 155*b1cdbd2cSJim Jagielski */ initialize( Object[] object )156*b1cdbd2cSJim Jagielski public void initialize( Object[] object ) 157*b1cdbd2cSJim Jagielski throws com.sun.star.uno.Exception { 158*b1cdbd2cSJim Jagielski /* The component describes what arguments its expected and in which 159*b1cdbd2cSJim Jagielski * order!At this point you can read the objects and can intialize 160*b1cdbd2cSJim Jagielski * your component using these objects. 161*b1cdbd2cSJim Jagielski */ 162*b1cdbd2cSJim Jagielski } 163*b1cdbd2cSJim Jagielski 164*b1cdbd2cSJim Jagielski } 165