summaryrefslogtreecommitdiffstats
path: root/javaunohelper/com/sun/star/lib/uno/helper/Factory.java
diff options
context:
space:
mode:
Diffstat (limited to 'javaunohelper/com/sun/star/lib/uno/helper/Factory.java')
-rw-r--r--javaunohelper/com/sun/star/lib/uno/helper/Factory.java291
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;
- }
-}
-