diff options
Diffstat (limited to 'javaunohelper/com/sun/star/lib/uno/helper/Factory.java')
-rw-r--r-- | javaunohelper/com/sun/star/lib/uno/helper/Factory.java | 291 |
1 files changed, 0 insertions, 291 deletions
diff --git a/javaunohelper/com/sun/star/lib/uno/helper/Factory.java b/javaunohelper/com/sun/star/lib/uno/helper/Factory.java deleted file mode 100644 index 056d9549d552..000000000000 --- a/javaunohelper/com/sun/star/lib/uno/helper/Factory.java +++ /dev/null @@ -1,291 +0,0 @@ -/* - * This file is part of the LibreOffice project. - * - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. - * - * This file incorporates work covered by the following license notice: - * - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed - * with this work for additional information regarding copyright - * ownership. The ASF licenses this file to you under the Apache - * License, Version 2.0 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.apache.org/licenses/LICENSE-2.0 . - */ -package com.sun.star.lib.uno.helper; - -import com.sun.star.uno.XComponentContext; -import com.sun.star.lang.XSingleComponentFactory; -import com.sun.star.lang.XServiceInfo; -import com.sun.star.lang.XInitialization; -import com.sun.star.registry.XRegistryKey; -import com.sun.star.uno.UnoRuntime; - - -/** Factory helper class supporting com.sun.star.lang.XServiceInfo and - com.sun.star.lang.XSingleComponentFactory. - - <p> - Note: This factory implementation does not support lang.XSingleServiceFactory. - </p> -*/ -public class Factory - extends ComponentBase - implements XSingleComponentFactory, XServiceInfo -{ - private static final boolean DEBUG = false; - - /** Creates an object factory supporting interfaces - com.sun.star.lang.XSingleComponentFactory and - com.sun.star.lang.XServiceInfo - - @param impl_class - implementation class - @param impl_name - implementation name - @param supported_services - services implemented - @return - object factory - - @since UDK 3.2.13 - */ - public static XSingleComponentFactory createComponentFactory( - Class impl_class, String impl_name, String supported_services [] ) - throws com.sun.star.uno.RuntimeException - { - return new Factory( impl_class, impl_name, supported_services ); - } - - /** Creates an object factory supporting interfaces - com.sun.star.lang.XSingleComponentFactory and - com.sun.star.lang.XServiceInfo - - The implementation name is the name of the implementation class. - - @param impl_class - implementation class - @param supported_services - services implemented - @return - object factory - */ - public static XSingleComponentFactory createComponentFactory( - Class impl_class, String supported_services [] ) - throws com.sun.star.uno.RuntimeException - { - return createComponentFactory( - impl_class, impl_class.getName(), supported_services ); - } - /** Writes component's implementation info to given registry key. - - @param impl_name - name of implementation - @param supported_services - supported services of implementation - @param xKey - registry key to write to - @return - success - */ - public static boolean writeRegistryServiceInfo( - String impl_name, String supported_services [], XRegistryKey xKey ) - { - try - { - XRegistryKey xNewKey = xKey.createKey( "/" + impl_name + "/UNO/SERVICES" ); - for ( int nPos = 0; nPos < supported_services.length; ++nPos ) - { - xNewKey.createKey( supported_services[ nPos ] ); - } - return true; - } - catch (com.sun.star.registry.InvalidRegistryException exc) - { - if (DEBUG) - { - System.err.println( - "##### " + Factory.class.getName() + ".writeRegistryServiceInfo -- exc: " + - exc.toString() ); - } - } - return false; - } - - - private final String m_impl_name; - private final String [] m_supported_services; - private final Class<?> m_impl_class; - private final java.lang.reflect.Method m_method; - private final java.lang.reflect.Constructor m_ctor; - - private Factory( - Class impl_class, String impl_name, String supported_services [] ) - throws com.sun.star.uno.DeploymentException - { - m_impl_name = impl_name; - m_supported_services = supported_services; - m_impl_class = impl_class; - - Class params [] = new Class [] { XComponentContext.class }; - - if (!java.lang.reflect.Modifier.isPublic( impl_class.getModifiers() )) - { - throw new com.sun.star.uno.DeploymentException("class " + impl_class + " is not public"); - } - - java.lang.reflect.Method tmpMethod = null; - try - { - // seeking for "public static Object __create( XComponentContext )" - tmpMethod = m_impl_class.getMethod( "__create", params ); - int mod = tmpMethod.getModifiers(); - if (!tmpMethod.getReturnType().equals( Object.class ) || - !java.lang.reflect.Modifier.isStatic( mod ) || - !java.lang.reflect.Modifier.isPublic( mod )) - { - tmpMethod = null; - } - } - catch (Exception exc) - { - } - m_method = tmpMethod; - - - java.lang.reflect.Constructor tmpCtor = null; - if (null == m_method) - { - try - { - // ctor with context - tmpCtor = m_impl_class.getConstructor( params ); - } - catch (Exception exc) - { - } - if (tmpCtor != null) - { - if (!java.lang.reflect.Modifier.isPublic( tmpCtor.getModifiers() )) - { - throw new com.sun.star.uno.DeploymentException("constructor with XComponentContext param for class " + impl_class + " is not public"); - } - } - else - { - // else take default ctor - java.lang.reflect.Constructor defaultCtor; - try - { - defaultCtor = m_impl_class.getConstructor(new Class[0]); - } - catch (Exception exc2) - { - throw new com.sun.star.uno.DeploymentException(exc2, "class " + impl_class + " has no means of creating it, cannot find a __create method or a useful constructor."); - } - if (!java.lang.reflect.Modifier.isPublic( defaultCtor.getModifiers() )) - { - throw new com.sun.star.uno.DeploymentException("default constructor for class " + impl_class + " is not public"); - } - } - } - m_ctor = tmpCtor; - } - - - private Object instantiate( XComponentContext xContext ) - throws com.sun.star.uno.Exception - { - try - { - if (DEBUG) - System.out.print( "instantiating " + m_impl_class.toString() + " using " ); - if (null != m_method) - { - if (DEBUG) - System.out.println( "__create( XComponentContext )..." ); - return m_method.invoke( null, new Object [] { xContext } ); - } - if (null != m_ctor) - { - if (DEBUG) - System.out.println( "ctor( XComponentContext )..." ); - return m_ctor.newInstance( new Object [] { xContext } ); - } - if (DEBUG) - System.out.println( "default ctor..." ); - return m_impl_class.newInstance(); // default ctor - } - catch (java.lang.reflect.InvocationTargetException exc) - { - Throwable targetException = exc.getTargetException(); - if (targetException instanceof java.lang.RuntimeException) - throw (java.lang.RuntimeException)targetException; - else if (targetException instanceof com.sun.star.uno.RuntimeException) - throw (com.sun.star.uno.RuntimeException)targetException; - else if (targetException instanceof com.sun.star.uno.Exception) - throw (com.sun.star.uno.Exception)targetException; - else - throw new com.sun.star.uno.Exception(targetException, targetException.getMessage(), this); - } - catch (IllegalAccessException exc) - { - throw new com.sun.star.uno.RuntimeException( exc, exc.getMessage(), this); - } - catch (InstantiationException exc) - { - throw new com.sun.star.uno.RuntimeException( exc, exc.getMessage(), this); - } - } - // XSingleComponentFactory impl - - public final Object createInstanceWithContext( - XComponentContext xContext ) - throws com.sun.star.uno.Exception - { - return instantiate( xContext ); - } - - public final Object createInstanceWithArgumentsAndContext( - Object arguments [], XComponentContext xContext ) - throws com.sun.star.uno.Exception - { - Object inst = instantiate( xContext ); - XInitialization xInit = UnoRuntime.queryInterface( - XInitialization.class, inst ); - if (null == xInit) - { - throw new com.sun.star.lang.IllegalArgumentException( - "cannot pass arguments to component; no XInitialization implemented!", this, - (short)0 ); - } - xInit.initialize( arguments ); - return inst; - } - - // XServiceInfo impl - - public final String getImplementationName() - { - return m_impl_name; - } - - public final boolean supportsService( String service_name ) - { - for ( int nPos = 0; nPos < m_supported_services.length; ++nPos ) - { - if (m_supported_services[ nPos ].equals( service_name )) - return true; - } - return false; - } - - public final String [] getSupportedServiceNames() - { - return m_supported_services; - } -} - |