summaryrefslogtreecommitdiff
path: root/javaunohelper/com/sun
diff options
context:
space:
mode:
authorMichael Stahl <mstahl@redhat.com>2012-01-28 20:57:40 +0100
committerMichael Stahl <mstahl@redhat.com>2012-01-28 20:57:40 +0100
commit2716f7dce26f16a2b677c178aa7d01cea096ae47 (patch)
tree9e9f67205cd5b72f1031721273e1534a3a1e5b0f /javaunohelper/com/sun
parent10ac9e750447fd57e3cef7993b0ad6c6538d6269 (diff)
replace obsolete "master" branch with README that points at new repoHEADmaster-deletedmaster
Diffstat (limited to 'javaunohelper/com/sun')
-rw-r--r--javaunohelper/com/sun/star/comp/JavaUNOHelperServices.java64
-rw-r--r--javaunohelper/com/sun/star/comp/helper/Bootstrap.java329
-rw-r--r--javaunohelper/com/sun/star/comp/helper/BootstrapException.java91
-rw-r--r--javaunohelper/com/sun/star/comp/helper/ComponentContext.java310
-rw-r--r--javaunohelper/com/sun/star/comp/helper/ComponentContextEntry.java73
-rw-r--r--javaunohelper/com/sun/star/comp/helper/RegistryServiceFactory.java168
-rw-r--r--javaunohelper/com/sun/star/comp/helper/SharedLibraryLoader.java159
-rw-r--r--javaunohelper/com/sun/star/comp/helper/UnoInfo.java115
-rw-r--r--javaunohelper/com/sun/star/comp/helper/makefile.mk54
-rw-r--r--javaunohelper/com/sun/star/comp/juhtest/SmoketestCommandEnvironment.java151
-rw-r--r--javaunohelper/com/sun/star/comp/juhtest/makefile.mk50
-rw-r--r--javaunohelper/com/sun/star/comp/makefile.mk49
-rwxr-xr-xjavaunohelper/com/sun/star/lib/uno/adapter/ByteArrayToXInputStreamAdapter.java161
-rw-r--r--javaunohelper/com/sun/star/lib/uno/adapter/InputStreamToXInputStreamAdapter.java166
-rw-r--r--javaunohelper/com/sun/star/lib/uno/adapter/OutputStreamToXOutputStreamAdapter.java87
-rw-r--r--javaunohelper/com/sun/star/lib/uno/adapter/XInputStreamToInputStreamAdapter.java207
-rwxr-xr-xjavaunohelper/com/sun/star/lib/uno/adapter/XOutputStreamToByteArrayAdapter.java121
-rw-r--r--javaunohelper/com/sun/star/lib/uno/adapter/XOutputStreamToOutputStreamAdapter.java111
-rw-r--r--javaunohelper/com/sun/star/lib/uno/adapter/makefile.mk54
-rw-r--r--javaunohelper/com/sun/star/lib/uno/helper/ComponentBase.java141
-rw-r--r--javaunohelper/com/sun/star/lib/uno/helper/Factory.java268
-rw-r--r--javaunohelper/com/sun/star/lib/uno/helper/InterfaceContainer.java856
-rw-r--r--javaunohelper/com/sun/star/lib/uno/helper/MultiTypeInterfaceContainer.java165
-rw-r--r--javaunohelper/com/sun/star/lib/uno/helper/PropertySet.java1102
-rw-r--r--javaunohelper/com/sun/star/lib/uno/helper/PropertySetMixin.java1093
-rw-r--r--javaunohelper/com/sun/star/lib/uno/helper/UnoUrl.java412
-rw-r--r--javaunohelper/com/sun/star/lib/uno/helper/WeakAdapter.java102
-rw-r--r--javaunohelper/com/sun/star/lib/uno/helper/WeakBase.java143
-rw-r--r--javaunohelper/com/sun/star/lib/uno/helper/makefile.mk49
29 files changed, 0 insertions, 6851 deletions
diff --git a/javaunohelper/com/sun/star/comp/JavaUNOHelperServices.java b/javaunohelper/com/sun/star/comp/JavaUNOHelperServices.java
deleted file mode 100644
index 7df6497a1..000000000
--- a/javaunohelper/com/sun/star/comp/JavaUNOHelperServices.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-package com.sun.star.comp;
-
-import com.sun.star.lib.uno.helper.Factory;
-import com.sun.star.lang.XSingleComponentFactory;
-import com.sun.star.comp.juhtest.SmoketestCommandEnvironment;
-
-
-/** This class is the registration class for all services in this module.
- *
- * Note that not all files which can be used as service need to be registered
- * by this class.
- */
-public class JavaUNOHelperServices {
-
- static private final String __service_smoketestCommandEnv =
- "com.sun.star.deployment.test.SmoketestCommandEnvironment";
-
- /**
- * Gives a factory for creating the service.
- * This method is called by the <code>JavaLoader</code>
- * <p>
- * @return returns a <code>XSingleComponentFactory</code> for creating
- * the component
- * @param sImplName the name of the implementation for which a
- * service is desired
- * @see com.sun.star.comp.loader.JavaLoader
- */
- public static XSingleComponentFactory __getComponentFactory(String sImplName)
- {
- XSingleComponentFactory xFactory = null;
-
- if ( sImplName.equals( SmoketestCommandEnvironment.class.getName() ) )
- xFactory = Factory.createComponentFactory(SmoketestCommandEnvironment.class,
- SmoketestCommandEnvironment.getServiceNames());
-
- return xFactory;
- }
-}
diff --git a/javaunohelper/com/sun/star/comp/helper/Bootstrap.java b/javaunohelper/com/sun/star/comp/helper/Bootstrap.java
deleted file mode 100644
index 3156bbabb..000000000
--- a/javaunohelper/com/sun/star/comp/helper/Bootstrap.java
+++ /dev/null
@@ -1,329 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-package com.sun.star.comp.helper;
-
-import com.sun.star.bridge.UnoUrlResolver;
-import com.sun.star.bridge.XUnoUrlResolver;
-import com.sun.star.comp.loader.JavaLoader;
-import com.sun.star.container.XSet;
-import com.sun.star.lang.XInitialization;
-import com.sun.star.lang.XMultiServiceFactory;
-import com.sun.star.lang.XMultiComponentFactory;
-import com.sun.star.lang.XSingleComponentFactory;
-import com.sun.star.lib.util.NativeLibraryLoader;
-import com.sun.star.loader.XImplementationLoader;
-import com.sun.star.uno.UnoRuntime;
-import com.sun.star.uno.XComponentContext;
-
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.PrintStream;
-import java.util.Enumeration;
-import java.util.Hashtable;
-import java.util.Random;
-
-/** Bootstrap offers functionality to obtain a context or simply
- a service manager.
- The service manager can create a few basic services, whose implementations are:
- <ul>
- <li>com.sun.star.comp.loader.JavaLoader</li>
- <li>com.sun.star.comp.urlresolver.UrlResolver</li>
- <li>com.sun.star.comp.bridgefactory.BridgeFactory</li>
- <li>com.sun.star.comp.connections.Connector</li>
- <li>com.sun.star.comp.connections.Acceptor</li>
- <li>com.sun.star.comp.servicemanager.ServiceManager</li>
- </ul>
-
- Other services can be inserted into the service manager by
- using its XSet interface:
- <pre>
- XSet xSet = UnoRuntime.queryInterface( XSet.class, aMultiComponentFactory );
- // insert the service manager
- xSet.insert( aSingleComponentFactory );
- </pre>
-*/
-public class Bootstrap {
-
- private static void insertBasicFactories(
- XSet xSet, XImplementationLoader xImpLoader )
- throws Exception
- {
- // insert the factory of the loader
- xSet.insert( xImpLoader.activate(
- "com.sun.star.comp.loader.JavaLoader", null, null, null ) );
-
- // insert the factory of the URLResolver
- xSet.insert( xImpLoader.activate(
- "com.sun.star.comp.urlresolver.UrlResolver", null, null, null ) );
-
- // insert the bridgefactory
- xSet.insert( xImpLoader.activate(
- "com.sun.star.comp.bridgefactory.BridgeFactory", null, null, null ) );
-
- // insert the connector
- xSet.insert( xImpLoader.activate(
- "com.sun.star.comp.connections.Connector", null, null, null ) );
-
- // insert the acceptor
- xSet.insert( xImpLoader.activate(
- "com.sun.star.comp.connections.Acceptor", null, null, null ) );
- }
-
- /** Bootstraps an initial component context with service manager and basic
- jurt components inserted.
- @param context_entries the hash table contains mappings of entry names (type string) to
- context entries (type class ComponentContextEntry).
- @return a new context.
- */
- static public XComponentContext createInitialComponentContext( Hashtable context_entries )
- throws Exception
- {
- XImplementationLoader xImpLoader = UnoRuntime.queryInterface(
- XImplementationLoader.class, new JavaLoader() );
-
- // Get the factory of the ServiceManager
- XSingleComponentFactory smgr_fac = UnoRuntime.queryInterface(
- XSingleComponentFactory.class, xImpLoader.activate(
- "com.sun.star.comp.servicemanager.ServiceManager", null, null, null ) );
-
- // Create an instance of the ServiceManager
- XMultiComponentFactory xSMgr = UnoRuntime.queryInterface(
- XMultiComponentFactory.class, smgr_fac.createInstanceWithContext( null ) );
-
- // post init loader
- XInitialization xInit = UnoRuntime.queryInterface(
- XInitialization.class, xImpLoader );
- Object[] args = new Object [] { xSMgr };
- xInit.initialize( args );
-
- // initial component context
- if (context_entries == null)
- context_entries = new Hashtable( 1 );
- // add smgr
- context_entries.put(
- "/singletons/com.sun.star.lang.theServiceManager",
- new ComponentContextEntry( null, xSMgr ) );
- // ... xxx todo: add standard entries
- XComponentContext xContext = new ComponentContext( context_entries, null );
-
- // post init smgr
- xInit = UnoRuntime.queryInterface(
- XInitialization.class, xSMgr );
- args = new Object [] { null, xContext }; // no registry, default context
- xInit.initialize( args );
-
- XSet xSet = UnoRuntime.queryInterface( XSet.class, xSMgr );
- // insert the service manager
- xSet.insert( smgr_fac );
- // and basic jurt factories
- insertBasicFactories( xSet, xImpLoader );
-
- return xContext;
- }
-
- /**
- * Bootstraps a servicemanager with the jurt base components registered.
- * <p>
- * @return a freshly boostrapped service manager
- * @see com.sun.star.lang.ServiceManager
- */
- static public XMultiServiceFactory createSimpleServiceManager() throws Exception
- {
- return UnoRuntime.queryInterface(
- XMultiServiceFactory.class, createInitialComponentContext( null ).getServiceManager() );
- }
-
-
- /** Bootstraps the initial component context from a native UNO installation.
-
- @see "cppuhelper/defaultBootstrap_InitialComponentContext()"
- */
- static public final XComponentContext defaultBootstrap_InitialComponentContext()
- throws Exception
- {
- return defaultBootstrap_InitialComponentContext( null, null );
- }
- /** Bootstraps the initial component context from a native UNO installation.
-
- @param ini_file
- ini_file (may be null: uno.rc besides cppuhelper lib)
- @param bootstrap_parameters
- bootstrap parameters (maybe null)
-
- @see "cppuhelper/defaultBootstrap_InitialComponentContext()"
- */
- static public final XComponentContext defaultBootstrap_InitialComponentContext(
- String ini_file, Hashtable bootstrap_parameters )
- throws Exception
- {
- // jni convenience: easier to iterate over array than calling Hashtable
- String pairs [] = null;
- if (null != bootstrap_parameters)
- {
- pairs = new String [ 2 * bootstrap_parameters.size() ];
- Enumeration keys = bootstrap_parameters.keys();
- int n = 0;
- while (keys.hasMoreElements())
- {
- String name = (String)keys.nextElement();
- pairs[ n++ ] = name;
- pairs[ n++ ] = (String)bootstrap_parameters.get( name );
- }
- }
-
- if (! m_loaded_juh)
- {
- NativeLibraryLoader.loadLibrary( Bootstrap.class.getClassLoader(), "juh" );
- m_loaded_juh = true;
- }
- return UnoRuntime.queryInterface(
- XComponentContext.class,
- cppuhelper_bootstrap(
- ini_file, pairs, Bootstrap.class.getClassLoader() ) );
- }
-
- static private boolean m_loaded_juh = false;
- static private native Object cppuhelper_bootstrap(
- String ini_file, String bootstrap_parameters [], ClassLoader loader )
- throws Exception;
-
- /**
- * Bootstraps the component context from a UNO installation.
- *
- * @return a bootstrapped component context.
- *
- * @since UDK 3.1.0
- */
- public static final XComponentContext bootstrap()
- throws BootstrapException {
-
- XComponentContext xContext = null;
-
- try {
- // create default local component context
- XComponentContext xLocalContext =
- createInitialComponentContext( null );
- if ( xLocalContext == null )
- throw new BootstrapException( "no local component context!" );
-
- // find office executable relative to this class's class loader
- String sOffice =
- System.getProperty( "os.name" ).startsWith( "Windows" ) ?
- "soffice.exe" : "soffice";
- File fOffice = NativeLibraryLoader.getResource(
- Bootstrap.class.getClassLoader(), sOffice );
- if ( fOffice == null )
- throw new BootstrapException( "no office executable found!" );
-
- // create random pipe name
- String sPipeName = "uno" +
- Long.toString( (new Random()).nextLong() & 0x7fffffffffffffffL );
-
- // create call with arguments
- String[] cmdArray = new String[7];
- cmdArray[0] = fOffice.getPath();
- cmdArray[1] = "-nologo";
- cmdArray[2] = "-nodefault";
- cmdArray[3] = "-norestore";
- cmdArray[4] = "-nocrashreport";
- cmdArray[5] = "-nolockcheck";
- cmdArray[6] = "-accept=pipe,name=" + sPipeName + ";urp;";
-
- // start office process
- Process p = Runtime.getRuntime().exec( cmdArray );
- pipe( p.getInputStream(), System.out, "CO> " );
- pipe( p.getErrorStream(), System.err, "CE> " );
-
- // initial service manager
- XMultiComponentFactory xLocalServiceManager =
- xLocalContext.getServiceManager();
- if ( xLocalServiceManager == null )
- throw new BootstrapException( "no initial service manager!" );
-
- // create a URL resolver
- XUnoUrlResolver xUrlResolver =
- UnoUrlResolver.create( xLocalContext );
-
- // connection string
- String sConnect = "uno:pipe,name=" + sPipeName +
- ";urp;StarOffice.ComponentContext";
-
- // wait until office is started
- for (int i = 0;; ++i) {
- try {
- // try to connect to office
- Object context = xUrlResolver.resolve( sConnect );
- xContext = UnoRuntime.queryInterface(
- XComponentContext.class, context);
- if ( xContext == null )
- throw new BootstrapException( "no component context!" );
- break;
- } catch ( com.sun.star.connection.NoConnectException ex ) {
- // Wait 500 ms, then try to connect again, but do not wait
- // longer than 5 min (= 600 * 500 ms) total:
- if (i == 600) {
- throw new BootstrapException(ex.toString());
- }
- Thread.currentThread().sleep( 500 );
- }
- }
- } catch ( BootstrapException e ) {
- throw e;
- } catch ( java.lang.RuntimeException e ) {
- throw e;
- } catch ( java.lang.Exception e ) {
- throw new BootstrapException( e );
- }
-
- return xContext;
- }
-
- private static void pipe(
- final InputStream in, final PrintStream out, final String prefix ) {
-
- new Thread( "Pipe: " + prefix) {
- public void run() {
- BufferedReader r = new BufferedReader(
- new InputStreamReader( in ) );
- try {
- for ( ; ; ) {
- String s = r.readLine();
- if ( s == null ) {
- break;
- }
- out.println( prefix + s );
- }
- } catch ( java.io.IOException e ) {
- e.printStackTrace( System.err );
- }
- }
- }.start();
- }
-}
diff --git a/javaunohelper/com/sun/star/comp/helper/BootstrapException.java b/javaunohelper/com/sun/star/comp/helper/BootstrapException.java
deleted file mode 100644
index 3136358c2..000000000
--- a/javaunohelper/com/sun/star/comp/helper/BootstrapException.java
+++ /dev/null
@@ -1,91 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-package com.sun.star.comp.helper;
-
-/**
- * BootstrapException is a checked exception that wraps an exception
- * thrown by the original target.
- *
- * @since UDK 3.1.0
- */
-public class BootstrapException extends java.lang.Exception {
-
- /**
- * This field holds the target exception.
- */
- private Exception m_target = null;
-
- /**
- * Constructs a <code>BootstrapException</code> with <code>null</code> as
- * the target exception.
- */
- public BootstrapException() {
- super();
- }
-
- /**
- * Constructs a <code>BootstrapException</code> with the specified
- * detail message.
- *
- * @param message the detail message
- */
- public BootstrapException( String message ) {
- super( message );
- }
-
- /**
- * Constructs a <code>BootstrapException</code> with the specified
- * detail message and a target exception.
- *
- * @param message the detail message
- * @param target the target exception
- */
- public BootstrapException( String message, Exception target ) {
- super( message );
- m_target = target;
- }
-
- /**
- * Constructs a <code>BootstrapException</code> with a target exception.
- *
- * @param target the target exception
- */
- public BootstrapException( Exception target ) {
- super();
- m_target = target;
- }
-
- /**
- * Get the thrown target exception.
- *
- * @return the target exception
- */
- public Exception getTargetException() {
- return m_target;
- }
-}
diff --git a/javaunohelper/com/sun/star/comp/helper/ComponentContext.java b/javaunohelper/com/sun/star/comp/helper/ComponentContext.java
deleted file mode 100644
index 27c57adc5..000000000
--- a/javaunohelper/com/sun/star/comp/helper/ComponentContext.java
+++ /dev/null
@@ -1,310 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-package com.sun.star.comp.helper;
-
-import com.sun.star.uno.UnoRuntime;
-import com.sun.star.uno.Any;
-
-import com.sun.star.uno.XComponentContext;
-import com.sun.star.lang.XMultiComponentFactory;
-import com.sun.star.lang.XSingleComponentFactory;
-import com.sun.star.lang.XComponent;
-import com.sun.star.lang.XEventListener;
-import com.sun.star.lang.EventObject;
-
-import java.util.Hashtable;
-import java.util.Enumeration;
-import java.util.Vector;
-
-
-//==================================================================================================
-class Disposer implements XEventListener
-{
- private XComponent m_xComp;
-
- //----------------------------------------------------------------------------------------------
- Disposer( XComponent xComp )
- {
- m_xComp = xComp;
- }
- //______________________________________________________________________________________________
- public void disposing( EventObject Source )
- {
- m_xComp.dispose();
- }
-}
-
-/** Component context implementation.
-*/
-public class ComponentContext implements XComponentContext, XComponent
-{
- private static final boolean DEBUG = false;
- private static final String SMGR_NAME = "/singletons/com.sun.star.lang.theServiceManager";
- private static final String TDMGR_NAME = "/singletons/com.sun.star.reflection.theTypeDescriptionManager";
-
- private Hashtable m_table;
- private XComponentContext m_xDelegate;
-
- private XMultiComponentFactory m_xSMgr;
- private boolean m_bDisposeSMgr;
-
- private Vector m_eventListener;
-
- /** Ctor to create a component context passing a hashtable for values and a delegator
- reference. Entries of the passed hashtable are either direct values or
- ComponentContextEntry objects.
-
- @param table
- entries
- @param xDelegate
- if values are not found, request is delegated to this object
- */
- public ComponentContext( Hashtable table, XComponentContext xDelegate )
- {
- m_eventListener = new Vector();
- m_table = table;
- m_xDelegate = xDelegate;
- m_xSMgr = null;
- m_bDisposeSMgr = false;
-
- Object o = table.get( SMGR_NAME );
- if (o != null)
- {
- if (o instanceof ComponentContextEntry)
- {
- o = ((ComponentContextEntry)o).m_value;
- }
- m_xSMgr = UnoRuntime.queryInterface(
- XMultiComponentFactory.class, o );
- }
- if (m_xSMgr != null)
- {
- m_bDisposeSMgr = true;
- }
- else if (m_xDelegate != null)
- {
- m_xSMgr = m_xDelegate.getServiceManager();
- }
-
- // listen for delegate
- XComponent xComp = UnoRuntime.queryInterface(
- XComponent.class, m_xDelegate );
- if (xComp != null)
- {
- xComp.addEventListener( new Disposer( this ) );
- }
- }
-
- // XComponentContext impl
- //______________________________________________________________________________________________
- public Object getValueByName( String rName )
- {
- Object o = m_table.get( rName );
- if (o != null)
- {
- if (o instanceof ComponentContextEntry)
- {
- ComponentContextEntry entry = (ComponentContextEntry)o;
- if (entry.m_lateInit != null)
- {
- Object xInstance = null;
-
- try
- {
- String serviceName = (String)entry.m_lateInit;
- if (serviceName != null)
- {
- if (m_xSMgr != null)
- {
- xInstance = m_xSMgr.createInstanceWithContext( serviceName, this );
- }
- else
- {
- if (DEBUG)
- System.err.println( "### no service manager instance for late init of singleton instance \"" + rName + "\"!" );
- }
- }
- else
- {
- XSingleComponentFactory xCompFac =
- UnoRuntime.queryInterface(
- XSingleComponentFactory.class, entry.m_lateInit );
- if (xCompFac != null)
- {
- xInstance = xCompFac.createInstanceWithContext( this );
- }
- else
- {
- if (DEBUG)
- System.err.println( "### neither service name nor service factory given for late init of singleton instance \"" + rName + "\"!" );
- }
- }
- }
- catch (com.sun.star.uno.Exception exc)
- {
- if (DEBUG)
- System.err.println( "### exception occurred on late init of singleton instance \"" + rName + "\": " + exc.getMessage() );
- }
-
- if (xInstance != null)
- {
- synchronized (entry)
- {
- if (entry.m_lateInit != null)
- {
- entry.m_value = xInstance;
- entry.m_lateInit = null;
- }
- else // inited in the meantime
- {
- // dispose fresh service instance
- XComponent xComp = UnoRuntime.queryInterface(
- XComponent.class, xInstance );
- if (xComp != null)
- {
- xComp.dispose();
- }
- }
- }
- }
- else
- {
- if (DEBUG)
- System.err.println( "### failed late init of singleton instance \"" + rName + "\"!" );
- }
- }
- return entry.m_value;
- }
- else // direct value in map
- {
- return o;
- }
- }
- else if (m_xDelegate != null)
- {
- return m_xDelegate.getValueByName( rName );
- }
- else
- {
- return Any.VOID;
- }
- }
- //______________________________________________________________________________________________
- public XMultiComponentFactory getServiceManager()
- {
- return m_xSMgr;
- }
-
- // XComponent impl
- //______________________________________________________________________________________________
- public void dispose()
- {
- if (DEBUG)
- System.err.print( "> disposing context " + this );
-
- // fire events
- EventObject evt = new EventObject( this );
- Enumeration eventListener = m_eventListener.elements();
- while (eventListener.hasMoreElements())
- {
- XEventListener listener = (XEventListener)eventListener.nextElement();
- listener.disposing( evt );
- }
- m_eventListener.removeAllElements();
-
- XComponent tdmgr = null;
- // dispose values, then service manager, then typdescription manager
- Enumeration keys = m_table.keys();
- while (keys.hasMoreElements())
- {
- String name = (String)keys.nextElement();
- if (! name.equals( SMGR_NAME ))
- {
- Object o = m_table.get( name );
- if (o instanceof ComponentContextEntry)
- {
- o = ((ComponentContextEntry)o).m_value;
- }
-
- XComponent xComp = UnoRuntime.queryInterface( XComponent.class, o );
- if (xComp != null)
- {
- if (name.equals( TDMGR_NAME ))
- {
- tdmgr = xComp;
- }
- else
- {
- xComp.dispose();
- }
- }
- }
- }
- m_table.clear();
-
- // smgr
- if (m_bDisposeSMgr)
- {
- XComponent xComp = UnoRuntime.queryInterface(
- XComponent.class, m_xSMgr );
- if (xComp != null)
- {
- xComp.dispose();
- }
- }
- m_xSMgr = null;
-
- // tdmgr
- if (tdmgr != null)
- {
- tdmgr.dispose();
- }
-
- if (DEBUG)
- System.err.println( "... finished" );
- }
- //______________________________________________________________________________________________
- public void addEventListener( XEventListener xListener )
- {
- if (xListener == null)
- throw new com.sun.star.uno.RuntimeException( "Listener must not be null" );
- if (m_eventListener.contains( xListener ))
- throw new com.sun.star.uno.RuntimeException( "Listener already registred." );
-
- m_eventListener.addElement( xListener );
- }
- //______________________________________________________________________________________________
- public void removeEventListener( XEventListener xListener )
- {
- if (xListener == null)
- throw new com.sun.star.uno.RuntimeException( "Listener must not be null" );
- if (! m_eventListener.contains( xListener ))
- throw new com.sun.star.uno.RuntimeException( "Listener is not registered." );
-
- m_eventListener.removeElement( xListener );
- }
-}
diff --git a/javaunohelper/com/sun/star/comp/helper/ComponentContextEntry.java b/javaunohelper/com/sun/star/comp/helper/ComponentContextEntry.java
deleted file mode 100644
index 48e999d57..000000000
--- a/javaunohelper/com/sun/star/comp/helper/ComponentContextEntry.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-package com.sun.star.comp.helper;
-
-/** Component context entry for constructing ComponentContext objects.
- <p>
- A ComponentContextEntry is separated into a late-init and direct-value
- purpose.
- The first one is commonly used for singleton objects of the component
- context, that are raised on first-time retrieval of the key.
- You have to pass a com.sun.star.lang.XSingleComponentFactory
- or string (=> service name) object for this.
- </p>
-*/
-public class ComponentContextEntry
-{
- /** if late init of service instance, set service name (String) or
- component factory (XSingleComponentFactory), null otherwise
- */
- public Object m_lateInit;
- /** set entry value
- */
- public Object m_value;
-
- /** Creating a late-init singleton entry component context entry.
- The second parameter will be ignored and overwritten during
- instanciation of the singleton instance.
-
- @param lateInit
- object factory or service string
- @param value
- pass null (dummy separating from second ctor signature)
- */
- public ComponentContextEntry( Object lateInit, Object value )
- {
- this.m_lateInit = lateInit;
- this.m_value = value;
- }
- /** Creating a direct value component context entry.
-
- @param value
- pass null
- */
- public ComponentContextEntry( Object value )
- {
- this.m_lateInit = null;
- this.m_value = value;
- }
-}
diff --git a/javaunohelper/com/sun/star/comp/helper/RegistryServiceFactory.java b/javaunohelper/com/sun/star/comp/helper/RegistryServiceFactory.java
deleted file mode 100644
index c748187ba..000000000
--- a/javaunohelper/com/sun/star/comp/helper/RegistryServiceFactory.java
+++ /dev/null
@@ -1,168 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-
-package com.sun.star.comp.helper;
-
-
-import com.sun.star.lang.XMultiServiceFactory;
-import com.sun.star.uno.UnoRuntime;
-import com.sun.star.uno.RuntimeException;
-
-/** The class provides a set of methods which create instances of the
- com.sun.star.lang.RegistryServiceManager service.
-
- @deprecated use class Bootstrap instead
-*/
-public class RegistryServiceFactory {
- static {
- System.loadLibrary("juh");
- }
-
- private static native Object createRegistryServiceFactory(
- String writeRegistryFile,
- String readRegistryFile,
- boolean readOnly,
- ClassLoader loader);
-
- /**
- * This bootstraps an initial service factory working on a registry. If the first or both
- * parameters contain a value then the service factory is initialized with a simple registry
- * or a nested registry. Otherwise the service factory must be initialized later with a valid
- * registry.
- *<BR>
- * @param writeRegistryFile file name of the simple registry or the first registry file of
- * the nested registry which will be opened with read/write rights. This
- * file will be created if necessary.
- * @param readRegistryFile file name of the second registry file of the nested registry
- * which will be opened with readonly rights.
- * @return a new RegistryServiceFactory.
- */
- public static XMultiServiceFactory create(String writeRegistryFile, String readRegistryFile)
- throws com.sun.star.uno.Exception
- {
- return create(writeRegistryFile, readRegistryFile, false);
- }
-
- /**
- * This bootstraps an initial service factory working on a registry. If the first or both
- * parameters contain a value then the service factory is initialized with a simple registry
- * or a nested registry. Otherwise the service factory must be initialized later with a valid
- * registry.
- *<BR>
- * @param writeRegistryFile file name of the simple registry or the first registry file of
- * the nested registry which will be opened with read/write rights. This
- * file will be created if necessary.
- * @param readRegistryFile file name of the second registry file of the nested registry
- * which will be opened with readonly rights.
- * @param readOnly flag which specify that the first registry file will be opened with
- * readonly rights. Default is FALSE. If this flag is used the registry
- * will not be created if not exist.
- *
- * @return a new RegistryServiceFactory
- */
- public static XMultiServiceFactory create(String writeRegistryFile, String readRegistryFile, boolean readOnly)
- throws com.sun.star.uno.Exception
- {
- // Ensure that we are on a native threads vm
- // (binary UNO does use native threads).
- String vm_info = System.getProperty("java.vm.info");
- if(vm_info != null && vm_info.indexOf("green") != -1)
- throw new RuntimeException(RegistryServiceFactory.class.toString() + ".create - can't use binary UNO with green threads");
-
-
- if (writeRegistryFile == null && readRegistryFile == null)
- throw new com.sun.star.uno.Exception("No registry is specified!");
-
-// if (writeRegistryFile != null) {
-// java.io.File file = new java.io.File(writeRegistryFile);
-
-// if (file.exists()) {
-// if (!file.isFile())
-// throw new com.sun.star.uno.Exception(writeRegistryFile + " is not a file!");
-// } else
-// throw new com.sun.star.uno.Exception(writeRegistryFile + " doese not exist!");
-// }
-
-// if (readRegistryFile != null) {
-// java.io.File file = new java.io.File(readRegistryFile);
-
-// if (file.exists()) {
-// if (!file.isFile())
-// throw new com.sun.star.uno.Exception(readRegistryFile + " is not a file!");
-// } else
-// throw new com.sun.star.uno.Exception(readRegistryFile + " doese not exist!");
-// }
-
- Object obj = createRegistryServiceFactory(
- writeRegistryFile, readRegistryFile, readOnly,
- RegistryServiceFactory.class.getClassLoader() );
- return UnoRuntime.queryInterface(
- XMultiServiceFactory.class, obj );
- }
-
- /**
- * This bootstraps an initial service factory working on a registry file.
- *<BR>
- * @param registryFile file name of the registry to use/ create; if this is an empty
- * string, the default registry is used instead
- *
- * @return a new RegistryServiceFactory.
- */
- public static XMultiServiceFactory create(String registryFile)
- throws com.sun.star.uno.Exception
- {
- return create(registryFile, null, false);
- }
-
- /**
- * This bootstraps an initial service factory working on a registry file.
- *<BR>
- * @param registryFile file name of the registry to use/ create; if this is an empty
- * string, the default registry is used instead
- * @param readOnly flag which specify that the registry file will be opened with
- * readonly rights. Default is FALSE. If this flag is used the registry
- * will not be created if not exist.
- *
- * @return a new RegistryServiceFactory.
- */
- public static XMultiServiceFactory create(String registryFile, boolean readOnly)
- throws com.sun.star.uno.Exception
- {
- return create(registryFile, null, readOnly);
- }
-
- /**
- * This bootstraps a service factory without initialize a registry.
- *<BR>
- * @return a new RegistryServiceFactory.
- */
- public static XMultiServiceFactory create() throws com.sun.star.uno.Exception {
- return create( null, null, false );
- }
-}
-
diff --git a/javaunohelper/com/sun/star/comp/helper/SharedLibraryLoader.java b/javaunohelper/com/sun/star/comp/helper/SharedLibraryLoader.java
deleted file mode 100644
index 590c6251f..000000000
--- a/javaunohelper/com/sun/star/comp/helper/SharedLibraryLoader.java
+++ /dev/null
@@ -1,159 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-package com.sun.star.comp.helper;
-
-import com.sun.star.uno.UnoRuntime;
-import com.sun.star.lang.XMultiServiceFactory;
-import com.sun.star.lang.XSingleServiceFactory;
-import com.sun.star.registry.XRegistryKey;
-
-/**
- * @deprecated use class Bootstrap bootstrapping a native UNO installation
- * and use the shared library loader service.
- *
- * The <code>SharedLibraryLoader</code> class provides the functionality of the <code>com.sun.star.loader.SharedLibrary</code>
- * service.
- * <p>
- * @see com.sun.star.loader.SharedLibrary
- * @see "com.sun.star.comp.servicemanager.ServiceManager"
- * @see com.sun.star.lang.ServiceManager
- */
-public class SharedLibraryLoader {
- /**
- * The default library which contains the SharedLibraryLoader component
- */
- public static final String DEFAULT_LIBRARY = "shlibloader.uno";
-
- /**
- * The default implementation name
- */
- public static final String DEFAULT_IMPLEMENTATION = "com.sun.star.comp.stoc.DLLComponentLoader";
-
- static {
- System.loadLibrary("juh");
- }
-
- private static native boolean component_writeInfo(
- String libName, XMultiServiceFactory smgr, XRegistryKey regKey,
- ClassLoader loader );
-
- private static native Object component_getFactory(
- String libName, String implName, XMultiServiceFactory smgr,
- XRegistryKey regKey, ClassLoader loader );
-
- /**
- * Supplies the ServiceFactory of the default SharedLibraryLoader.
- * The defaults are "shlibloader.uno"
- * for the library and "com.sun.star.comp.stoc.DLLComponentLoader"
- * for the component name.
- * <p>
- * @return the factory for the "com.sun.star.comp.stoc.DLLComponentLoader" component.
- * @param smgr the ServiceManager
- * @param regKey the root registry key
- * @see com.sun.star.loader.SharedLibrary
- * @see com.sun.star.lang.ServiceManager
- * @see com.sun.star.registry.RegistryKey
- */
- public static XSingleServiceFactory getServiceFactory(
- XMultiServiceFactory smgr,
- XRegistryKey regKey )
- {
- return UnoRuntime.queryInterface(
- XSingleServiceFactory.class,
- component_getFactory(
- DEFAULT_LIBRARY, DEFAULT_IMPLEMENTATION, smgr, regKey,
- SharedLibraryLoader.class.getClassLoader() ) );
- }
-
- /**
- * Loads and returns a specific factory for a given library and implementation name.
- * <p>
- * @return the factory of the component
- * @param libName the name of the shared library
- * @param impName the implementation name of the component
- * @param smgr the ServiceManager
- * @param regKey the root registry key
- * @see com.sun.star.loader.SharedLibrary
- * @see com.sun.star.lang.ServiceManager
- * @see com.sun.star.registry.RegistryKey
- */
- public static XSingleServiceFactory getServiceFactory(
- String libName,
- String impName,
- XMultiServiceFactory smgr,
- XRegistryKey regKey )
- {
- return UnoRuntime.queryInterface(
- XSingleServiceFactory.class,
- component_getFactory(
- libName, impName, smgr, regKey,
- SharedLibraryLoader.class.getClassLoader() ) );
- }
-
- /**
- * Registers the SharedLibraryLoader under a RegistryKey.
- * <p>
- * @return true if the registration was successfull - otherwise false
- * @param smgr the ServiceManager
- * @param regKey the root key under that the component should be registered
- * @see com.sun.star.loader.SharedLibrary
- * @see com.sun.star.lang.ServiceManager
- * @see com.sun.star.registry.RegistryKey
- */
- public static boolean writeRegistryServiceInfo(
- com.sun.star.lang.XMultiServiceFactory smgr,
- com.sun.star.registry.XRegistryKey regKey )
- {
- return component_writeInfo(
- DEFAULT_LIBRARY, smgr, regKey,
- SharedLibraryLoader.class.getClassLoader() );
- }
-
- /**
- * Registers the SharedLibraryLoader under a RegistryKey.
- * <p>
- * @return true if the registration was successfull - otherwise false
- * @param libName name of the shared library
- * @param smgr the ServiceManager
- * @param regKey the root key under that the component should be registered
- * @see com.sun.star.loader.SharedLibrary
- * @see com.sun.star.lang.ServiceManager
- * @see com.sun.star.registry.RegistryKey
- */
- public static boolean writeRegistryServiceInfo(
- String libName,
- com.sun.star.lang.XMultiServiceFactory smgr,
- com.sun.star.registry.XRegistryKey regKey )
-
- throws com.sun.star.registry.InvalidRegistryException,
- com.sun.star.uno.RuntimeException
- {
- return component_writeInfo(
- libName, smgr, regKey, SharedLibraryLoader.class.getClassLoader() );
- }
-}
-
diff --git a/javaunohelper/com/sun/star/comp/helper/UnoInfo.java b/javaunohelper/com/sun/star/comp/helper/UnoInfo.java
deleted file mode 100644
index 896974b9e..000000000
--- a/javaunohelper/com/sun/star/comp/helper/UnoInfo.java
+++ /dev/null
@@ -1,115 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-package com.sun.star.comp.helper;
-
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.net.URLClassLoader;
-
-/**
- * UnoInfo offers functionality to obtain the UNO jar files.
- */
-public final class UnoInfo {
-
- /**
- * do not instantiate
- */
- private UnoInfo() {}
-
- /**
- * Gets the URL base.
- *
- * @return the URL base
- */
- private static String getBase() {
-
- final String JUHJAR = "/juh.jar";
-
- String base = null;
-
- URLClassLoader cl = (URLClassLoader) UnoInfo.class.getClassLoader();
- URL[] urls = cl.getURLs();
- for ( int i = 0; i < urls.length; i++ ) {
- String url = urls[i].toString();
- if ( url.endsWith( JUHJAR ) )
- {
- int index = url.lastIndexOf( JUHJAR );
- if ( index >= 0 ) {
- base = url.substring( 0, index + 1 );
- break;
- }
- }
- }
-
- return base;
- }
-
- /**
- * Gets a list of URLs for the given jar files.
- *
- * @return the list of URLs
- */
- private static URL[] getURLs( String[] jarFileNames ) {
-
- URL[] jars = new URL[jarFileNames.length];
- String base = getBase();
- for ( int i = 0; i < jarFileNames.length; i++ ) {
- try {
- jars[i] = new URL( base + jarFileNames[i] );
- } catch ( MalformedURLException e ) {
- return null;
- }
- }
-
- return jars;
- }
-
- /**
- * Gets the UNO jar files.
- *
- * @return the UNO jar files
- */
- public static URL[] getJars() {
-
- String[] jarFileNames = new String[] {
- "jurt.jar",
- "ridl.jar",
- "juh.jar" };
-
- return getURLs( jarFileNames );
- }
-
- /**
- * Gets the extra UNO types.
- *
- * @return the extra UNO types
- */
- public static URL[] getExtraTypes() {
- return new URL[0];
- }
-}
diff --git a/javaunohelper/com/sun/star/comp/helper/makefile.mk b/javaunohelper/com/sun/star/comp/helper/makefile.mk
deleted file mode 100644
index 3752abc7d..000000000
--- a/javaunohelper/com/sun/star/comp/helper/makefile.mk
+++ /dev/null
@@ -1,54 +0,0 @@
-#*************************************************************************
-#
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# Copyright 2000, 2010 Oracle and/or its affiliates.
-#
-# OpenOffice.org - a multi-platform office productivity suite
-#
-# This file is part of OpenOffice.org.
-#
-# OpenOffice.org is free software: you can redistribute it and/or modify
-# it under the terms of the GNU Lesser General Public License version 3
-# only, as published by the Free Software Foundation.
-#
-# OpenOffice.org is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU Lesser General Public License version 3 for more details
-# (a copy is included in the LICENSE file that accompanied this code).
-#
-# You should have received a copy of the GNU Lesser General Public License
-# version 3 along with OpenOffice.org. If not, see
-# <http://www.openoffice.org/license.html>
-# for a copy of the LGPLv3 License.
-#
-#*************************************************************************
-
-PRJ=..$/..$/..$/..$/..
-
-PRJNAME = juhelper
-PACKAGE = com$/sun$/star$/comp$/helper
-TARGET = com_sun_star_comp_helper
-
-# --- Settings -----------------------------------------------------
-
-.INCLUDE : settings.mk
-.INCLUDE: $(PRJ)$/util$/settings.pmk
-
-# --- Files --------------------------------------------------------
-
-JAVAFILES= \
- ComponentContextEntry.java \
- ComponentContext.java \
- Bootstrap.java \
- SharedLibraryLoader.java \
- RegistryServiceFactory.java \
- BootstrapException.java \
- UnoInfo.java
-
-JAVACLASSFILES= $(foreach,i,$(JAVAFILES) $(CLASSDIR)$/$(PACKAGE)$/$(i:b).class)
-
-# --- Targets ------------------------------------------------------
-
-.INCLUDE : target.mk
diff --git a/javaunohelper/com/sun/star/comp/juhtest/SmoketestCommandEnvironment.java b/javaunohelper/com/sun/star/comp/juhtest/SmoketestCommandEnvironment.java
deleted file mode 100644
index a28d3a145..000000000
--- a/javaunohelper/com/sun/star/comp/juhtest/SmoketestCommandEnvironment.java
+++ /dev/null
@@ -1,151 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-package com.sun.star.comp.juhtest;
-
-import com.sun.star.lang.XMultiComponentFactory;
-import com.sun.star.lib.uno.helper.WeakBase;
-import com.sun.star.uno.UnoRuntime;
-import com.sun.star.uno.XComponentContext;
-import com.sun.star.lang.XServiceInfo;
-import com.sun.star.ucb.XCommandEnvironment;
-
-/** This service is for use by the smoketest which checks the installation of
- * extensions. The service provides the XCommandEnvironment interface, which
- * is needed for adding extensions.
- */
-public class SmoketestCommandEnvironment extends WeakBase
- implements XServiceInfo, XCommandEnvironment {
-
- static private final String __serviceName =
- "com.sun.star.deployment.test.SmoketestCommandEnvironment";
-
- private XComponentContext m_cmpCtx;
- private XMultiComponentFactory m_xMCF;
-
-
- public SmoketestCommandEnvironment(XComponentContext xCompContext) {
- try {
- m_cmpCtx = xCompContext;
- m_xMCF = m_cmpCtx.getServiceManager();
- }
- catch( Exception e ) {
- e.printStackTrace();
- }
- }
-
- public static String[] getServiceNames() {
- String[] sSupportedServiceNames = { __serviceName};
- return sSupportedServiceNames;
- }
-
- //XServiceInfo -------------------------------------------------------------
- public String[] getSupportedServiceNames() {
- return getServiceNames();
- }
-
-
- public boolean supportsService( String sServiceName ) {
- boolean bSupported = false;
- if (sServiceName.equals(__serviceName))
- bSupported = true;
- return bSupported;
- }
-
- public String getImplementationName() {
- return SmoketestCommandEnvironment.class.getName();
- }
-
- //XCommandEnvironment ================================================
- public com.sun.star.task.XInteractionHandler getInteractionHandler()
- {
- return new InteractionImpl();
- }
-
- public com.sun.star.ucb.XProgressHandler getProgressHandler()
- {
- return new ProgressImpl();
- }
-}
-
-
-
-
-class InteractionImpl implements com.sun.star.task.XInteractionHandler
-{
- public void handle( com.sun.star.task.XInteractionRequest xRequest )
- {
- Object request = xRequest.getRequest();
-
- boolean approve = true;
- boolean abort = false;
-// Object install_Exception =
-// AnyConverter.toObject(
-// com.sun.star.deployment.InstallException.class, request);
-// if (install_Exception != null)
-// {
-// approve = true;
-// }
-
- com.sun.star.task.XInteractionContinuation[] conts = xRequest.getContinuations();
- for (int i = 0; i < conts.length; i++)
- {
- if (approve)
- {
- com.sun.star.task.XInteractionApprove xApprove =
- UnoRuntime.queryInterface(com.sun.star.task.XInteractionApprove.class, conts[i]);
- if (xApprove != null)
- xApprove.select();
- //don't query again for ongoing extensions
- approve = false;
- }
- else if (abort)
- {
- com.sun.star.task.XInteractionAbort xAbort =
- UnoRuntime.queryInterface(com.sun.star.task.XInteractionAbort.class, conts[i]);
- if (xAbort != null)
- xAbort.select();
- //don't query again for ongoing extensions
- abort = false;
- }
- }
- }
-}
-
-class ProgressImpl implements com.sun.star.ucb.XProgressHandler
-{
- public void push(Object status)
- {
- }
-
- public void update(Object status)
- {
- }
-
- public void pop()
- {
- }
-}
diff --git a/javaunohelper/com/sun/star/comp/juhtest/makefile.mk b/javaunohelper/com/sun/star/comp/juhtest/makefile.mk
deleted file mode 100644
index 0d65b961a..000000000
--- a/javaunohelper/com/sun/star/comp/juhtest/makefile.mk
+++ /dev/null
@@ -1,50 +0,0 @@
-#*************************************************************************
-#
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# Copyright 2000, 2010 Oracle and/or its affiliates.
-#
-# OpenOffice.org - a multi-platform office productivity suite
-#
-# This file is part of OpenOffice.org.
-#
-# OpenOffice.org is free software: you can redistribute it and/or modify
-# it under the terms of the GNU Lesser General Public License version 3
-# only, as published by the Free Software Foundation.
-#
-# OpenOffice.org is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU Lesser General Public License version 3 for more details
-# (a copy is included in the LICENSE file that accompanied this code).
-#
-# You should have received a copy of the GNU Lesser General Public License
-# version 3 along with OpenOffice.org. If not, see
-# <http://www.openoffice.org/license.html>
-# for a copy of the LGPLv3 License.
-#
-#*************************************************************************
-
-PRJ=..$/..$/..$/..$/..
-
-PRJNAME = juhelper
-PACKAGE = com$/sun$/star$/comp$/juhtest
-TARGET = com_sun_star_comp_juhtest
-
-# --- Settings -----------------------------------------------------
-
-.INCLUDE : settings.mk
-.INCLUDE: $(PRJ)$/util$/settings.pmk
-
-# --- Files --------------------------------------------------------
-#todo: we do not want include juh.jar here but use the output tree.
-JARFILES = unoil.jar ridl.jar jurt.jar
-
-JAVAFILES= \
- SmoketestCommandEnvironment.java
-
-JAVACLASSFILES= $(foreach,i,$(JAVAFILES) $(CLASSDIR)$/$(PACKAGE)$/$(i:b).class)
-
-# --- Targets ------------------------------------------------------
-
-.INCLUDE : target.mk
diff --git a/javaunohelper/com/sun/star/comp/makefile.mk b/javaunohelper/com/sun/star/comp/makefile.mk
deleted file mode 100644
index bde016b47..000000000
--- a/javaunohelper/com/sun/star/comp/makefile.mk
+++ /dev/null
@@ -1,49 +0,0 @@
-#*************************************************************************
-#
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# Copyright 2000, 2010 Oracle and/or its affiliates.
-#
-# OpenOffice.org - a multi-platform office productivity suite
-#
-# This file is part of OpenOffice.org.
-#
-# OpenOffice.org is free software: you can redistribute it and/or modify
-# it under the terms of the GNU Lesser General Public License version 3
-# only, as published by the Free Software Foundation.
-#
-# OpenOffice.org is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU Lesser General Public License version 3 for more details
-# (a copy is included in the LICENSE file that accompanied this code).
-#
-# You should have received a copy of the GNU Lesser General Public License
-# version 3 along with OpenOffice.org. If not, see
-# <http://www.openoffice.org/license.html>
-# for a copy of the LGPLv3 License.
-#
-#*************************************************************************
-
-PRJ=..$/..$/..$/..
-
-PRJNAME = juhelper
-PACKAGE = com$/sun$/star$/comp
-TARGET = com_sun_star_comp
-
-# --- Settings -----------------------------------------------------
-
-.INCLUDE : settings.mk
-.INCLUDE: $(PRJ)$/util$/settings.pmk
-
-# --- Files --------------------------------------------------------
-JARFILES = ridl.jar jurt.jar unoil.jar
-JAVAFILES= \
- JavaUNOHelperServices.java
-
-
-JAVACLASSFILES= $(foreach,i,$(JAVAFILES) $(CLASSDIR)$/$(PACKAGE)$/$(i:b).class)
-
-# --- Targets ------------------------------------------------------
-
-.INCLUDE : target.mk
diff --git a/javaunohelper/com/sun/star/lib/uno/adapter/ByteArrayToXInputStreamAdapter.java b/javaunohelper/com/sun/star/lib/uno/adapter/ByteArrayToXInputStreamAdapter.java
deleted file mode 100755
index 60b4fe009..000000000
--- a/javaunohelper/com/sun/star/lib/uno/adapter/ByteArrayToXInputStreamAdapter.java
+++ /dev/null
@@ -1,161 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-/*
- * ByteArrayXInputStram.java
- *
- * Created on 10. April 2003, 15:45
- */
-
-package com.sun.star.lib.uno.adapter;
-
-/**
- *
- * @author lo119109
- */
-
-import com.sun.star.io.XInputStream;
-import com.sun.star.io.XSeekable;
-import com.sun.star.lib.uno.helper.ComponentBase;
-
-public class ByteArrayToXInputStreamAdapter
- extends ComponentBase
- implements XInputStream, XSeekable
-{
-
- byte[] m_bytes;
- int m_length;
- int m_pos;
-
- boolean m_open;
-
- /** Creates a new instance of ByteArrayXInputStram */
- public ByteArrayToXInputStreamAdapter(byte[] bytes) {
- init(bytes);
- }
-
- public void init(byte[] bytes) {
- // System.err.println("ByteArrayXInputStream");
- m_bytes = bytes;
- m_length = bytes.length;
- m_pos = 0;
- m_open = true;
- }
-
- private void _check() throws com.sun.star.io.NotConnectedException, com.sun.star.io.IOException {
- if (m_bytes == null) {
- // System.err.println("check failed no bytes!");
- throw new com.sun.star.io.NotConnectedException("no bytes");
- }
- if(!m_open) {
- // System.err.println("check failed: closed");
- throw new com.sun.star.io.IOException("input closed");
- }
- }
-
- public int available() throws com.sun.star.io.NotConnectedException, com.sun.star.io.IOException {
- _check();
- long a = m_length - m_pos;
- if (a != (int)a)
- throw new com.sun.star.io.IOException("integer overflow");
- else {
- // System.err.println("available() -> "+a);
- return (int)a;
- }
- }
-
- public void closeInput() throws com.sun.star.io.NotConnectedException, com.sun.star.io.IOException {
- // System.err.println("closeInput()");
- _check();
- m_open = false;
- }
-
- public int readBytes(byte[][] values, int param) throws com.sun.star.io.NotConnectedException, com.sun.star.io.BufferSizeExceededException, com.sun.star.io.IOException {
- // System.err.println("readbytes(..., "+param+")");
- _check();
- try {
- int remain = (int)(m_length - m_pos);
- if (param > remain) param = remain;
- /* ARGH!!! */
- if (values[0] == null){
- values[0] = new byte[param];
- // System.err.println("allocated new buffer of "+param+" bytes");
- }
- System.arraycopy(m_bytes, m_pos, values[0], 0, param);
- // System.err.println("readbytes() -> "+param);
- m_pos += param;
- return param;
- } catch (ArrayIndexOutOfBoundsException ae) {
- // System.err.println("readbytes() -> ArrayIndexOutOfBounds");
- ae.printStackTrace();
- throw new com.sun.star.io.BufferSizeExceededException("buffer overflow");
- } catch (Exception e) {
- // System.err.println("readbytes() -> Exception: "+e.getMessage());
- e.printStackTrace();
- throw new com.sun.star.io.IOException("error accessing buffer");
- }
- }
-
- public int readSomeBytes(byte[][] values, int param) throws com.sun.star.io.NotConnectedException, com.sun.star.io.BufferSizeExceededException, com.sun.star.io.IOException {
- // System.err.println("readSomebytes()");
- return readBytes(values, param);
- }
-
- public void skipBytes(int param) throws com.sun.star.io.NotConnectedException, com.sun.star.io.BufferSizeExceededException, com.sun.star.io.IOException {
- // System.err.println("skipBytes("+param+")");
- _check();
- if (param > (m_length - m_pos))
- throw new com.sun.star.io.BufferSizeExceededException("buffer overflow");
- m_pos += param;
- }
-
- public long getLength() throws com.sun.star.io.IOException {
- // System.err.println("getLength() -> "+m_length);
- if (m_bytes != null) return m_length;
- else throw new com.sun.star.io.IOException("no bytes");
- }
-
- public long getPosition() throws com.sun.star.io.IOException {
- // System.err.println("getPosition() -> "+m_pos);
- if (m_bytes != null) return m_pos;
- else throw new com.sun.star.io.IOException("no bytes");
- }
-
- public void seek(long param) throws com.sun.star.lang.IllegalArgumentException, com.sun.star.io.IOException {
- // System.err.println("seek("+param+")");
- if (m_bytes != null){
- if (param < 0 || param > m_length) throw new com.sun.star.lang.IllegalArgumentException("invalid seek position");
- else m_pos = (int)param;
- }else throw new com.sun.star.io.IOException("no bytes");
- }
-
- public void finalize() throws Throwable{
- // System.err.println("finalizer called for ByteArrayXInputStream!");
- super.finalize();
- }
-
-}
diff --git a/javaunohelper/com/sun/star/lib/uno/adapter/InputStreamToXInputStreamAdapter.java b/javaunohelper/com/sun/star/lib/uno/adapter/InputStreamToXInputStreamAdapter.java
deleted file mode 100644
index f143bf82f..000000000
--- a/javaunohelper/com/sun/star/lib/uno/adapter/InputStreamToXInputStreamAdapter.java
+++ /dev/null
@@ -1,166 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-package com.sun.star.lib.uno.adapter;
-
-import java.io.IOException;
-import com.sun.star.io.XInputStream;
-import java.io.InputStream;
-
-/** The <code>InputStreamToInputXStreamAdapter</code> wraps the
- Java <code>InputStream</code> object into a
- UNO <code>XInputStream</code> object.
- This allows users to access an <code>InputStream</code>
- as if it were an <code>XInputStream</code>.
- */
-public class InputStreamToXInputStreamAdapter implements XInputStream {
-
- /**
- * Internal store to the InputStream
- */
- private InputStream iIn;
-
- /**
- * Constructor.
- *
- * @param in The <code>XInputStream</code> to be
- * accessed as an <code>InputStream</code>.
- */
- public InputStreamToXInputStreamAdapter (InputStream in)
- {
- iIn = in;
- }
-
- public int available() throws
- com.sun.star.io.IOException
- {
-
- int bytesAvail;
-
- try {
- bytesAvail = iIn.available();
- } catch (IOException e) {
- throw new com.sun.star.io.IOException(e.toString());
- }
-
- return(bytesAvail);
- }
-
- public void closeInput() throws
- com.sun.star.io.IOException
- {
- try {
- iIn.close();
- } catch (IOException e) {
- throw new com.sun.star.io.IOException(e.toString());
- }
- }
-
- public int readBytes(byte[][] b, int len) throws
- com.sun.star.io.IOException
- {
- int count = 0;
- try {
- long bytesRead=0;
- if (len >iIn.available()) {
- bytesRead = iIn.read(b[0], 0, iIn.available());
- }
- else{
- bytesRead = iIn.read(b[0], 0, len);
- }
- // Casting bytesRead to an int is okay, since the user can
- // only pass in an integer length to read, so the bytesRead
- // must <= len.
- //
- if (bytesRead <= 0) {
- return(0);
- }
- return ((int)bytesRead);
-
-
- } catch (IOException e) {
- throw new com.sun.star.io.IOException("reader error: "+e.toString());
- }
- }
-
- public int readSomeBytes(byte[][] b, int len) throws
- com.sun.star.io.IOException
- {
- int count = 0;
- try {
- long bytesRead=0;
- if (len >iIn.available()) {
- bytesRead = iIn.read(b[0], 0, iIn.available());
- }
- else{
- bytesRead = iIn.read(b[0], 0, len);
- }
- // Casting bytesRead to an int is okay, since the user can
- // only pass in an integer length to read, so the bytesRead
- // must <= len.
- //
- if (bytesRead <= 0) {
- return(0);
- }
- return ((int)bytesRead);
-
-
- } catch (IOException e) {
- throw new com.sun.star.io.IOException("reader error: "+e.toString());
- }
- }
-
- public void skipBytes(int n) throws
- com.sun.star.io.IOException
- {
- int avail;
- int tmpLongVal = n;
- int tmpIntVal;
-
- try {
- avail = iIn.available();
- } catch (IOException e) {
- throw new com.sun.star.io.IOException(e.toString());
- }
-
- do {
- if (tmpLongVal >= Integer.MAX_VALUE) {
- tmpIntVal = Integer.MAX_VALUE;
- } else {
- // Casting is safe here.
- tmpIntVal = (int)tmpLongVal;
- }
- tmpLongVal -= tmpIntVal;
-
- try {
- iIn.skip(tmpIntVal);
- } catch (IOException e) {
- throw new com.sun.star.io.IOException(e.toString());
- }
- } while (tmpLongVal > 0);
- }
-}
-
diff --git a/javaunohelper/com/sun/star/lib/uno/adapter/OutputStreamToXOutputStreamAdapter.java b/javaunohelper/com/sun/star/lib/uno/adapter/OutputStreamToXOutputStreamAdapter.java
deleted file mode 100644
index 0f69faffa..000000000
--- a/javaunohelper/com/sun/star/lib/uno/adapter/OutputStreamToXOutputStreamAdapter.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-package com.sun.star.lib.uno.adapter;
-
-import java.io.IOException;
-import com.sun.star.io.XOutputStream;
-import java.io.OutputStream;
-
-/** The <code>OutputStreamToXOutputStreamAdapter</code> wraps
- a a UNO <code>XOutputStream</code> into a Java <code>OutputStream</code>
- object in a Java. This allows users to access an <code>OutputStream</code>
- as if it were an <code>XOutputStream</code>.
- */
-public class OutputStreamToXOutputStreamAdapter implements XOutputStream {
-
- /**
- * Internal handle to the OutputStream
- */
- OutputStream iOut;
-
- /**
- * Constructor.
- *
- * @param out The <code>XOutputStream</code> to be
- * accessed as an <code>OutputStream</code>.
- */
- public OutputStreamToXOutputStreamAdapter(OutputStream out) {
- iOut = out;
- }
-
- public void closeOutput() throws
- com.sun.star.io.IOException
- {
- try {
- iOut.close();
- } catch (IOException e) {
- throw new com.sun.star.io.IOException(e.toString());
- }
- }
-
- public void flush() throws
- com.sun.star.io.IOException
- {
- try {
- iOut.flush();
- } catch (IOException e) {
- throw new com.sun.star.io.IOException(e.toString());
- }
- }
-
- public void writeBytes(byte[] b) throws
- com.sun.star.io.IOException
- {
-
- try {
- iOut.write(b);
- } catch (IOException e) {
- throw new com.sun.star.io.IOException(e.toString());
- }
- }
-
-}
diff --git a/javaunohelper/com/sun/star/lib/uno/adapter/XInputStreamToInputStreamAdapter.java b/javaunohelper/com/sun/star/lib/uno/adapter/XInputStreamToInputStreamAdapter.java
deleted file mode 100644
index 696956964..000000000
--- a/javaunohelper/com/sun/star/lib/uno/adapter/XInputStreamToInputStreamAdapter.java
+++ /dev/null
@@ -1,207 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-package com.sun.star.lib.uno.adapter;
-
-import java.io.IOException;
-import com.sun.star.io.XInputStream;
-import java.io.InputStream;
-
-/**
- * The <code>XInputStreamToInputStreamAdapter</code> wraps
- * the UNO <code>XInputStream</code> object in a Java
- * <code>InputStream</code>. This allows users to access
- * an <code>XInputStream</code> as if it were an
- * <code>InputStream</code>.
- *
- * @author Brian Cameron
- */
-public class XInputStreamToInputStreamAdapter extends InputStream {
-
- /**
- * Internal handle to the XInputStream
- */
- private XInputStream xin;
-
- /**
- * Constructor.
- *
- * @param in The <code>XInputStream</code> to be
- * accessed as an <code>InputStream</code>.
- */
- public XInputStreamToInputStreamAdapter (XInputStream in) {
- xin = in;
- }
-
- public int available() throws IOException {
-
- int bytesAvail;
-
- try {
- bytesAvail = xin.available();
- } catch (Exception e) {
- throw new IOException(e.toString());
- }
-
- return(bytesAvail);
- }
-
- public void close() throws IOException {
- try {
- xin.closeInput();
- } catch (Exception e) {
- throw new IOException(e.toString());
- }
- }
-
- public int read () throws IOException {
- byte [][] tmp = new byte [1][1];
- try {
- long bytesRead = xin.readBytes(tmp, 1);
-
- if (bytesRead <= 0) {
- return (-1);
- } else {
- int tmpInt = tmp[0][0];
- if (tmpInt< 0 ){
- tmpInt = 256 +tmpInt;
- }
- return(tmpInt);
- }
-
- } catch (Exception e) {
- throw new IOException(e.toString());
- }
- }
-
- public int read (byte[] b) throws IOException {
-
- byte [][] tmp = new byte [1][b.length];
- int bytesRead;
-
- try {
- bytesRead = xin.readBytes(tmp, b.length);
- if (bytesRead <= 0) {
- return(-1);
- } else if (bytesRead < b.length) {
- System.arraycopy(tmp[0], 0, b, 0, bytesRead);
- } else {
- System.arraycopy(tmp[0], 0, b, 0, b.length);
- }
- } catch (Exception e) {
- throw new IOException(e.toString());
- }
-
- return (bytesRead);
- }
-
- public int read(byte[] b, int off, int len) throws IOException {
- int count = 0;
- byte [][] tmp = new byte [1][b.length];
- try {
- long bytesRead=0;
- int av = xin.available();
- if ( av != 0 && len > av) {
- bytesRead = xin.readBytes(tmp, av);
- }
- else{
- bytesRead = xin.readBytes(tmp,len);
- }
- // Casting bytesRead to an int is okay, since the user can
- // only pass in an integer length to read, so the bytesRead
- // must <= len.
- //
- if (bytesRead <= 0) {
- return(-1);
- } else if (bytesRead < len) {
- System.arraycopy(tmp[0], 0, b, off, (int)bytesRead);
- } else {
- System.arraycopy(tmp[0], 0, b, off, len);
- }
-
- return ((int)bytesRead);
-
-
- } catch (Exception e) {
- throw new IOException("reader error: "+e.toString());
- }
- }
-
- public long skip(long n) throws IOException {
-
- int avail;
- long tmpLongVal = n;
- int tmpIntVal;
-
- try {
- avail = xin.available();
- } catch (Exception e) {
- throw new IOException(e.toString());
- }
-
- do {
- if (tmpLongVal >= Integer.MAX_VALUE) {
- tmpIntVal = Integer.MAX_VALUE;
- } else {
- // Casting is safe here.
- tmpIntVal = (int)tmpLongVal;
- }
- tmpLongVal -= tmpIntVal;
-
- try {
- xin.skipBytes(tmpIntVal);
- } catch (Exception e) {
- throw new IOException(e.toString());
- }
- } while (tmpLongVal > 0);
-
- if ( avail != 0 && avail < n) {
- return(avail);
- } else {
- return(n);
- }
- }
-
- /**
- * Tests if this input stream supports the mark and reset methods.
- * The markSupported method of
- * <code>XInputStreamToInputStreamAdapter</code> returns false.
- *
- * @returns false
- */
- public boolean markSupported() {
- return false;
- }
-
- public void mark(int readlimit) {
- // Not supported.
- }
-
- public void reset() throws IOException {
- // Not supported.
- }
-}
-
diff --git a/javaunohelper/com/sun/star/lib/uno/adapter/XOutputStreamToByteArrayAdapter.java b/javaunohelper/com/sun/star/lib/uno/adapter/XOutputStreamToByteArrayAdapter.java
deleted file mode 100755
index 8812f02b0..000000000
--- a/javaunohelper/com/sun/star/lib/uno/adapter/XOutputStreamToByteArrayAdapter.java
+++ /dev/null
@@ -1,121 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-/*
- * ByteArrayXOutputStream.java
- *
- * Created on 11. April 2003, 14:20
- */
-
-package com.sun.star.lib.uno.adapter;
-
-/**
- *
- * @author lo119109
- */
-
-import com.sun.star.io.*;
-import com.sun.star.lib.uno.helper.ComponentBase;
-
-public class XOutputStreamToByteArrayAdapter
- extends ComponentBase
- implements XOutputStream
-{
- private int initialSize = 100240; // 10 kb
- private int size = 0;
- private int position = 0;
- private boolean externalBuffer = false;
- private boolean closed = false;
- private byte[] buffer;
-
- /** Creates a new instance of ByteArrayXOutputStream */
- public XOutputStreamToByteArrayAdapter() {
- this(null);
- }
-
- public XOutputStreamToByteArrayAdapter(byte[] aBuffer) {
- if (aBuffer != null) {
- externalBuffer = true;
- buffer = aBuffer;
- size = buffer.length;
- // System.err.println("new outputbuffer with external storage");
- } else {
- size = initialSize;
- buffer = new byte[size];
- // System.err.println("new outputbuffer with internal storage");
- }
- }
-
- public byte[] getBuffer() {
- return buffer;
- }
-
- public void closeOutput()
- throws com.sun.star.io.NotConnectedException,
- com.sun.star.io.BufferSizeExceededException,
- com.sun.star.io.IOException
- {
- // trim buffer
- if ( buffer.length > position && !externalBuffer )
- {
- byte[] newBuffer = new byte[position];
- System.arraycopy(buffer, 0, newBuffer, 0, position);
- buffer = newBuffer;
- }
- closed = true;
- }
-
- public void flush()
- throws com.sun.star.io.NotConnectedException,
- com.sun.star.io.BufferSizeExceededException,
- com.sun.star.io.IOException
- {
- }
-
- public void writeBytes(byte[] values)
- throws com.sun.star.io.NotConnectedException,
- com.sun.star.io.BufferSizeExceededException,
- com.sun.star.io.IOException
- {
- // System.err.println("writeBytes("+values.length+")");
- if ( values.length > size-position )
- {
- if ( externalBuffer )
- throw new BufferSizeExceededException("out of buffer space, cannot grow external buffer");
- byte[] newBuffer = null;
- while ( values.length > size-position )
- size *= 2;
- // System.err.println("new buffer size is "+size+" bytes.");
- newBuffer = new byte[size];
- System.arraycopy(buffer, 0, newBuffer, 0, position);
- buffer = newBuffer;
- }
- System.arraycopy(values, 0, buffer, position, values.length);
- position += values.length;
- }
-
-}
diff --git a/javaunohelper/com/sun/star/lib/uno/adapter/XOutputStreamToOutputStreamAdapter.java b/javaunohelper/com/sun/star/lib/uno/adapter/XOutputStreamToOutputStreamAdapter.java
deleted file mode 100644
index e8f521b5e..000000000
--- a/javaunohelper/com/sun/star/lib/uno/adapter/XOutputStreamToOutputStreamAdapter.java
+++ /dev/null
@@ -1,111 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-package com.sun.star.lib.uno.adapter;
-
-import java.io.IOException;
-import com.sun.star.io.XOutputStream;
-import java.io.OutputStream;
-
-/**
- * The <code>XOutputStreamToOutputStreamAdapter</code> wraps
- * the UNO <code>XOutputStream</code> object in a Java
- * <code>OutputStream</code>. This allows users to access
- * an <code>XOutputStream</code> as if it were an
- * <code>OutputStream</code>.
- *
- * @author Brian Cameron
- */
-public class XOutputStreamToOutputStreamAdapter extends OutputStream {
-
- /**
- * Internal handle to the XInputStream
- */
- XOutputStream xout;
-
- /**
- * Constructor.
- *
- * @param out The <code>XOutputStream</code> to be
- * accessed as an <code>OutputStream</code>.
- */
- public XOutputStreamToOutputStreamAdapter(XOutputStream out) {
- xout = out;
- }
-
- public void close() throws IOException {
- try {
- xout.closeOutput();
- } catch (Exception e) {
- throw new IOException(e.toString());
- }
- }
-
- public void flush() throws IOException {
- try {
- xout.flush();
- } catch (Exception e) {
- throw new IOException(e.toString());
- }
- }
-
- public void write(byte[] b) throws IOException {
-
- try {
- xout.writeBytes(b);
- } catch (Exception e) {
- throw new IOException(e.toString());
- }
- }
-
- public void write(byte[] b, int off, int len) throws IOException {
-
- byte[] tmp = new byte[len];
-
- // Copy the input array into a temp array, and write it out.
- //
- System.arraycopy(b, off, tmp, 0, len);
-
- try {
- xout.writeBytes(tmp);
- } catch (Exception e) {
- throw new IOException(e.toString());
- }
- }
-
- public void write(int b) throws IOException {
-
- byte [] oneByte = new byte [1];
- oneByte[0] = (byte) b;
-
- try {
- xout.writeBytes(oneByte);
- } catch (Exception e) {
- throw new IOException(e.toString());
- }
- }
-}
diff --git a/javaunohelper/com/sun/star/lib/uno/adapter/makefile.mk b/javaunohelper/com/sun/star/lib/uno/adapter/makefile.mk
deleted file mode 100644
index 793f5fb1d..000000000
--- a/javaunohelper/com/sun/star/lib/uno/adapter/makefile.mk
+++ /dev/null
@@ -1,54 +0,0 @@
-#*************************************************************************
-#
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# Copyright 2000, 2010 Oracle and/or its affiliates.
-#
-# OpenOffice.org - a multi-platform office productivity suite
-#
-# This file is part of OpenOffice.org.
-#
-# OpenOffice.org is free software: you can redistribute it and/or modify
-# it under the terms of the GNU Lesser General Public License version 3
-# only, as published by the Free Software Foundation.
-#
-# OpenOffice.org is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU Lesser General Public License version 3 for more details
-# (a copy is included in the LICENSE file that accompanied this code).
-#
-# You should have received a copy of the GNU Lesser General Public License
-# version 3 along with OpenOffice.org. If not, see
-# <http://www.openoffice.org/license.html>
-# for a copy of the LGPLv3 License.
-#
-#*************************************************************************
-
-PRJ=..$/..$/..$/..$/..$/..
-
-PRJNAME = juhelper
-PACKAGE = com$/sun$/star$/lib$/uno$/adapter
-TARGET = com_sun_star_lib_uno_adapter
-
-# --- Settings -----------------------------------------------------
-
-.INCLUDE : settings.mk
-.INCLUDE: $(PRJ)$/util$/settings.pmk
-
-# --- Files --------------------------------------------------------
-
-JAVAFILES= \
- XInputStreamToInputStreamAdapter.java \
- XOutputStreamToOutputStreamAdapter.java \
- InputStreamToXInputStreamAdapter.java \
- OutputStreamToXOutputStreamAdapter.java \
- ByteArrayToXInputStreamAdapter.java \
- XOutputStreamToByteArrayAdapter.java
-
-
-JAVACLASSFILES= $(foreach,i,$(JAVAFILES) $(CLASSDIR)$/$(PACKAGE)$/$(i:b).class)
-
-# --- Targets ------------------------------------------------------
-
-.INCLUDE : target.mk
diff --git a/javaunohelper/com/sun/star/lib/uno/helper/ComponentBase.java b/javaunohelper/com/sun/star/lib/uno/helper/ComponentBase.java
deleted file mode 100644
index 283391832..000000000
--- a/javaunohelper/com/sun/star/lib/uno/helper/ComponentBase.java
+++ /dev/null
@@ -1,141 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-package com.sun.star.lib.uno.helper;
-import com.sun.star.lang.XComponent;
-import com.sun.star.lang.XEventListener;
-import com.sun.star.lang.EventObject;
-import com.sun.star.uno.Type;
-
-/** This class can be used as the base class for UNO components. In addition to the functionality ,which
- * is inherited from WeakBase, it implements com.sun.star.lang.XComponent.
- */
-public class ComponentBase extends WeakBase implements XComponent
-{
- private final boolean DEBUG= false;
- protected MultiTypeInterfaceContainer listenerContainer;
- protected boolean bInDispose= false;
- protected boolean bDisposed= false;
- static final Type EVT_LISTENER_TYPE= new Type(XEventListener.class);
-
-
- /** Creates a new instance of CompBase */
- public ComponentBase()
- {
- super();
- listenerContainer= new MultiTypeInterfaceContainer();
- }
-
- /** Override to perform extra clean-up work. Provided for subclasses. It is
- called during dispose()
- */
- protected void preDisposing()
- {
- }
- /** Override to become notified right before the disposing action is performed.
- */
- protected void postDisposing()
- {
- }
-
-
- /** Method of XComponent. It is called by the owning client when the component is not needed
- * anymore. The registered listeners are notified that this method has been called.
- */
- public void dispose()
- {
- // Determine in a thread-safe way if this is the first call to this method.
- // Only then we proceed with the notification of event listeners.
- // It is an error to call this method more then once.
- boolean bDoDispose= false;
- synchronized (this)
- {
- if ( ! bInDispose && ! bDisposed)
- {
- bDoDispose= true;
- bInDispose= true;
- }
- }
- // The notification occures in an unsynchronized block in order to avoid
- // deadlocks if one of the listeners calls back in a different thread on
- // a synchronized method which uses the same object.
- if (bDoDispose)
- {
- try
- {
- preDisposing();
- listenerContainer.disposeAndClear(new EventObject(this));
- //notify subclasses that disposing is in progress
- postDisposing();
- }
- finally
- {
- // finally makes sure that the flags are set even if a RuntimeException is thrown.
- // That ensures that this function is only called once.
- bDisposed= true;
- bInDispose= false;
- }
- }
- else
- {
- // in a multithreaded environment, it can't be avoided, that dispose is called twice.
- // However this condition is traced, because it MAY indicate an error.
- if (DEBUG)
- System.out.println("OComponentHelper::dispose() - dispose called twice" );
- }
- }
-
- /** Method of XComponent.
- */
- public void removeEventListener(XEventListener xEventListener)
- {
- listenerContainer.removeInterface( EVT_LISTENER_TYPE, xEventListener);
- }
-
- public void addEventListener(XEventListener listener)
- {
- boolean bDoDispose= false;
- synchronized (this)
- {
- if (bDisposed || bInDispose)
- bDoDispose= true;
- else
- listenerContainer.addInterface(EVT_LISTENER_TYPE, listener);
- }
- if (bDoDispose )
- {
- listener.disposing( new EventObject(this));
- }
- }
-
- protected void finalize() throws Throwable
- {
- if ( ! bInDispose && ! bDisposed)
- dispose();
- super.finalize();
- }
-}
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 aa67282ca..000000000
--- a/javaunohelper/com/sun/star/lib/uno/helper/Factory.java
+++ /dev/null
@@ -1,268 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-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.
-
- @attention
- This factory implementation does not support lang.XSingleServiceFactory.
-*/
-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 String m_impl_name;
- private String [] m_supported_services;
- private Class m_impl_class;
- private java.lang.reflect.Method m_method;
- private java.lang.reflect.Constructor m_ctor;
-
- private Factory(
- Class impl_class, String impl_name, String supported_services [] )
- {
- m_impl_name = impl_name;
- m_supported_services = supported_services;
- m_impl_class = impl_class;
- m_method = null;
- m_ctor = null;
-
- Class params [] = new Class [] { XComponentContext.class };
-
- try
- {
- // seeking for "public static Object __create( XComponentContext )"
- m_method = m_impl_class.getMethod( "__create", params );
- int mod = m_method.getModifiers();
- if (!m_method.getReturnType().equals( Object.class ) ||
- !java.lang.reflect.Modifier.isStatic( mod ) ||
- !java.lang.reflect.Modifier.isPublic( mod ))
- {
- m_method = null;
- }
- }
- catch (Exception exc)
- {
- }
-
- if (null == m_method)
- {
- try
- {
- // ctor with context
- m_ctor = m_impl_class.getConstructor( params );
- }
- catch (Exception exc)
- {
- // else take default ctor
- }
- }
- }
-
- //______________________________________________________________________________________________
- private final 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.toString(), this );
- }
- catch (IllegalAccessException exc)
- {
- throw new com.sun.star.uno.RuntimeException( exc.toString(), this );
- }
- catch (InstantiationException exc)
- {
- throw new com.sun.star.uno.RuntimeException( exc.toString(), 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;
- }
-}
-
diff --git a/javaunohelper/com/sun/star/lib/uno/helper/InterfaceContainer.java b/javaunohelper/com/sun/star/lib/uno/helper/InterfaceContainer.java
deleted file mode 100644
index c029fcf54..000000000
--- a/javaunohelper/com/sun/star/lib/uno/helper/InterfaceContainer.java
+++ /dev/null
@@ -1,856 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-package com.sun.star.lib.uno.helper;
-import java.util.Iterator;
-import java.util.ListIterator;
-import java.util.NoSuchElementException;
-import java.util.Collection;
-import com.sun.star.lang.EventObject;
-import com.sun.star.lang.XEventListener;
-import com.sun.star.uno.UnoRuntime;
-
-/**
- * This class is a container for interfaces.
- *
- * It is intended to be used as storage for UNO interface of a specific type.
- * The client has to ensure that the container contains only elements of the same
- * type. If one needs to store different types, then one uses OMultiTypeInterfaceContainer.
- * When the client calls disposeAndClear, the contained objects are queried for
- * com.sun.star.lang.XEventListener and disposing is called. Afterwards
- * the list cannot be used anymore.
- *
- * This list does not allow null values.
- * All methods are thread-safe. The same holds true for
- * iterators, issued by this class. Several iterators can exist at the same time and can also
- * be modified (java.util.ListIterator.add, java.util.ListIterator.remove etc.). To make this work,
- * the InterfaceContainer provides the iterators with copys of the list's data.
- * The add and remove calls on the iterator modify the data in the iterator's list as well as
- * in InterfaceContainer. Modification on InterfaceContainer, however, are not
- * synchronized with existing iterators. For example
- * <pre>
- * InterfaceContainer cont= new InterfaceContainer();
- * ListIterator it= cont.listIterator();
- *
- * cont.add( someInterface);
- * // one cannot obtain someInterface through iterator it,
- * // instead get a new iterator
- * it= cont.listIterator();
- * // it now keeps a fresh copy of cont and hence contains someInterface
- *
- * // Adding an interface on the iterator will cause the interface also to be added
- * // to InterfaceContainer
- * it.add( someOtherInterface);
- * // someOtherInterface is now in it and cont
- * ListIterator it2= cont.listIterator();
- * //someOtherInterface can also be obtained by all newly created iterators, e.g. it2.
- * </pre>
- *
- * The add and remove methods of an iterator work on a particular location within a list,
- * dependent on what the value of the iterator's cursor is. After the call the value at the
- * appropriate position has been modified. Since the iterator received a copy of InterfaceContainer's
- * data, InterfaceContainer may have been modified (by List methods or through other iterators).
- * Therefore both data sets may not contain the same elements anymore. Consequently, a List method
- * that modifies data, does not modify InterfaceContainer's data at a certain index
- * (according to the iterators cursor). Instead, new elements are added at the end of list. When
- * Iterator.remove is called, then the first occurrence of that element in InterfaceContainer
- * is removed.
- * ListIterator.set is not supported.
- *
- * A lot of methods resemble those of the to java.util.List interface, allthough
- * this class does not implement it. However, the list iterators returned, for example by
- * the listIterator method implement the java.util.ListIterator interface.
- * Implementing the List interface would mean to support all none - optional methods as
- * prescribed by the interface declaration. Among those is the subList method which returns
- * a range of values of the list's data wrapped in a List implementation. Changes to the sub
- * list have to cause changes in the main list. This is a problem, since this class is to be
- * used in a multi-threaded environment. The sub list could work on a copy as the iterators
- * do, but all the functions which work on an given index could not be properly supported.
- * Unfortunatly, the List interface documentation states that all optional methods implemented
- * by the list have to be implemented in the sub list. That would mean to do without all those
- * critical methods, allthough they might work well in the "main list" (as opposed to sub list).
- */
-public class InterfaceContainer implements Cloneable
-{
- final boolean DEBUG= false;
- /**
- * The array buffer into which the elements of the ArrayList are stored.
- * The capacity of the ArrayList is the length of this array buffer.
- */
- Object elementData[];
-
- /**
- * The size of the ArrayList (the number of elements it contains).
- *
- * @serial
- */
- private int size;
-
-
- //private ArrayList data= new ArrayList();
- /** Creates a new instance of InterfaceContainer */
- public InterfaceContainer()
- {
- this(10);
- }
- /**
- * Constructs an empty list with the specified initial capacity.
- *
- * @param initialCapacity the initial capacity of the list.
- * @exception IllegalArgumentException if the specified initial capacity
- * is negative
- */
- public InterfaceContainer(int initialCapacity)
- {
- if (initialCapacity < 0)
- throw new java.lang.IllegalArgumentException("Illegal Capacity: "+
- initialCapacity);
- this.elementData = new Object[initialCapacity];
- }
-
- /**
- * Trims the capacity of this <tt>ArrayList</tt> instance to be the
- * list's current size. An application can use this operation to minimize
- * the storage of an <tt>ArrayList</tt> instance.
- */
- synchronized public void trimToSize()
- {
- int oldCapacity = elementData.length;
- if (size < oldCapacity)
- {
- Object oldData[] = elementData;
- elementData = new Object[size];
- System.arraycopy(oldData, 0, elementData, 0, size);
- }
- }
-
- /**
- * Increases the capacity of this <tt>ArrayList</tt> instance, if
- * necessary, to ensure that it can hold at least the number of elements
- * specified by the minimum capacity argument.
- *
- * @param minCapacity the desired minimum capacity.
- */
- synchronized public void ensureCapacity(int minCapacity)
- {
- int oldCapacity = elementData.length;
- if (minCapacity > oldCapacity)
- {
- Object oldData[] = elementData;
- int newCapacity = (oldCapacity * 3)/2 + 1;
- if (newCapacity < minCapacity)
- newCapacity = minCapacity;
- elementData = new Object[newCapacity];
- System.arraycopy(oldData, 0, elementData, 0, size);
- }
- }
-
- /**
- * Appends the specified element to the end of this list.
- *
- * @param o element to be appended to this list.
- * @return <tt>true</tt> (as per the general contract of Collection.add).
- */
- synchronized public boolean add(Object o)
- {
- boolean ret= false;
- if (elementData != null && o != null)
- {
- ensureCapacity(size + 1); // Increments modCount!!
- elementData[size++] = o;
- ret= true;
- }
- return ret;
- }
-
- /**
- * Inserts the specified element at the specified position in this
- * list. Shifts the element currently at that position (if any) and
- * any subsequent elements to the right (adds one to their indices).
- *
- * @param index index at which the specified element is to be inserted.
- * @param element element to be inserted.
- * @throws IndexOutOfBoundsException if index is out of range
- * <tt>(index &lt; 0 || index &gt; size())</tt>.
- */
- synchronized public void add(int index, Object element)
- {
- if (elementData != null && element != null)
- {
- if (index > size || index < 0)
- throw new IndexOutOfBoundsException(
- "Index: "+index+", Size: "+size);
-
- ensureCapacity(size+1);
- System.arraycopy(elementData, index, elementData, index + 1,
- size - index);
- elementData[index] = element;
- size++;
- }
- }
-
-
- /**
- * Appends all of the elements in the specified Collection to the end of
- * this list, in the order that they are returned by the
- * specified Collection's Iterator. The behavior of this operation is
- * undefined if the specified Collection is modified while the operation
- * is in progress. (This implies that the behavior of this call is
- * undefined if the specified Collection is this list, and this
- * list is nonempty.)
- *
- * @param c the elements to be inserted into this list.
- * @throws IndexOutOfBoundsException if index out of range <tt>(index
- * &lt; 0 || index &gt; size())</tt>.
- */
- synchronized public boolean addAll(Collection c)
- {
- int numNew = c.size();
- ensureCapacity(size + numNew);
-
- Iterator e = c.iterator();
- for (int i=0; i<numNew; i++)
- {
- Object o= e.next();
- if (o != null)
- elementData[size++] = o;
- }
- return numNew != 0;
- }
- /**
- * Inserts all of the elements in the specified Collection into this
- * list, starting at the specified position. Shifts the element
- * currently at that position (if any) and any subsequent elements to
- * the right (increases their indices). The new elements will appear
- * in the list in the order that they are returned by the
- * specified Collection's iterator.
- *
- * @param index index at which to insert first element
- * from the specified collection.
- * @param c elements to be inserted into this list.
- * @throws IndexOutOfBoundsException if index out of range <tt>(index
- * &lt; 0 || index &gt; size())</tt>.
- */
- synchronized public boolean addAll(int index, Collection c)
- {
- boolean ret= false;
- if (elementData != null)
- {
- if (index > size || index < 0)
- throw new IndexOutOfBoundsException(
- "Index: "+index+", Size: "+size);
- // only add the non-null elements
- int sizeCol= c.size();
- Object[] arColl= new Object[sizeCol];
- Iterator icol= c.iterator();
- int curIndex= 0;
- for (int i=0; i < sizeCol; i++)
- {
- Object o= icol.next();
- if (o != null)
- arColl[curIndex++]= o;
- }
- int numNew = curIndex;
- ensureCapacity(size + numNew); // Increments modCount!!
-
- int numMoved = size - index;
- if (numMoved > 0)
- System.arraycopy(elementData, index, elementData, index + numNew,
- numMoved);
-
- for (int i=0; i<numNew; i++)
- {
- elementData[index++]= arColl[i];
- }
- size += numNew;
- ret= numNew != 0;
- }
- return ret;
- }
-
- /**
- * Removes all of the elements from this list. The list will
- * be empty after this call returns.
- */
- synchronized public void clear()
- {
- if (elementData != null)
- {
- // Let gc do its work
- for (int i = 0; i < size; i++)
- elementData[i] = null;
-
- size = 0;
- }
- }
- /**
- * Returns <tt>true</tt> if this list contains the specified element.
- *
- * @param elem element whose presence in this List is to be tested.
- */
- synchronized public boolean contains(Object elem)
- {
- return indexOf(elem) >= 0;
- }
-
- synchronized public boolean containsAll(Collection collection)
- {
- boolean retVal= true;
- if (elementData != null && collection != null)
- {
- Iterator it= collection.iterator();
- while (it.hasNext())
- {
- Object obj= it.next();
- if (false == contains(obj))
- {
- retVal= false;
- break;
- }
- }
- }
- return retVal;
- }
- /**
- * Returns the element at the specified position in this list.
- *
- * @param index index of element to return.
- * @return the element at the specified position in this list.
- * @throws IndexOutOfBoundsException if index is out of range <tt>(index
- * &lt; 0 || index &gt;= size())</tt>.
- */
- synchronized public Object get(int index)
- {
- if (elementData != null)
- {
- RangeCheck(index);
- return elementData[index];
- }
- return null;
- }
-
- /**
- * Searches for the first occurrence of the given argument, testing
- * for equality using the <tt>equals</tt> method.
- *
- * @param elem an object.
- * @return the index of the first occurrence of the argument in this
- * list; returns <tt>-1</tt> if the object is not found.
- * @see Object#equals(Object)
- */
- synchronized public int indexOf(Object elem)
- {
- int index= -1;
- if (elementData != null && elem != null)
- {
- for (int i = 0; i < size; i++)
- {
- if (elem == elementData[i])
- {
- index= i;
- break;
- }
- }
-
- if (index == -1)
- {
- for (int i = 0; i < size; i++)
- {
- if (UnoRuntime.areSame(elem, elementData[i]))
- {
- index= i;
- break;
- }
- }
- }
- }
- return index;
- }
- /**
- * Tests if this list has no elements.
- *
- * @return <tt>true</tt> if this list has no elements;
- * <tt>false</tt> otherwise.
- */
- synchronized public boolean isEmpty()
- {
- return size == 0;
- }
-
- synchronized public Iterator iterator()
- {
- if (elementData != null)
- {
- InterfaceContainer aCopy= (InterfaceContainer) clone();
- return new Itr(aCopy);
- }
- return null;
- }
- /**
- * Returns the index of the last occurrence of the specified object in
- * this list.
- *
- * @param elem the desired element.
- * @return the index of the last occurrence of the specified object in
- * this list; returns -1 if the object is not found.
- */
- synchronized public int lastIndexOf(Object elem)
- {
- int index= -1;
- if (elementData != null && elem != null)
- {
- for (int i = size-1; i >= 0; i--)
- {
- if (elem == elementData[i])
- {
- index= i;
- break;
- }
- }
- if (index == -1)
- {
- for (int i = size-1; i >= 0; i--)
- {
- if (UnoRuntime.areSame(elem, elementData[i]))
- {
- index= i;
- break;
- }
- }
- }
- }
- return index;
- }
-
- /**
- * Returns a shallow copy of this <tt>ArrayList</tt> instance. The contained
- * references are copied but the objects not.
- *
- * @return a clone of this <tt>List</tt> instance.
- */
- synchronized public Object clone()
- {
- Object ret= null;
- if (elementData != null)
- {
- InterfaceContainer cont= new InterfaceContainer();
- cont.elementData = new Object[size];
- cont.size= size;
- System.arraycopy(elementData, 0, cont.elementData, 0, size);
- ret= cont;
- }
- return ret;
- }
- synchronized public ListIterator listIterator()
- {
- return listIterator(0);
- }
-
- /** The iterator keeps a copy of the list. Changes to InterfaceContainer do not
- * affect the data of the iterator. Conversly, changes to the iterator are effect
- * InterfaceContainer.
- */
- synchronized public ListIterator listIterator(int index)
- {
- if (elementData != null)
- {
- InterfaceContainer aCopy= (InterfaceContainer) clone();
- return new LstItr(aCopy, index);
- }
- return null;
- }
- /**
- * Removes the element at the specified position in this list.
- * Shifts any subsequent elements to the left (subtracts one from their
- * indices).
- *
- * @param index the index of the element to removed.
- * @return the element that was removed from the list.
- * @throws IndexOutOfBoundsException if index out of range <tt>(index
- * &lt; 0 || index &gt;= size())</tt>.
- */
- synchronized public Object remove(int index)
- {
- Object ret= null;
- if (elementData != null)
- {
- RangeCheck(index);
- ret= elementData[index];
-
- int numMoved = size - index - 1;
- if (numMoved > 0)
- System.arraycopy(elementData, index+1, elementData, index,
- numMoved);
- elementData[--size] = null; // Let gc do its work
- }
- return ret;
- }
-
-
- /** Parameter obj may */
- synchronized public boolean remove(Object obj)
- {
- boolean ret= false;
- if (elementData != null && obj != null)
- {
- int index= indexOf(obj);
- if (index != -1)
- {
- ret= true;
- remove(index);
- }
- }
- return ret;
- }
-
- synchronized public boolean removeAll(Collection collection)
- {
- boolean retVal= false;
- if (elementData != null && collection != null)
- {
- Iterator it= collection.iterator();
- while (it.hasNext())
- {
- Object obj= it.next();
- boolean bMod= remove( obj);
- if (bMod)
- retVal= true;
- }
- }
- return retVal;
- }
-
- synchronized public boolean retainAll(Collection collection)
- {
- boolean retVal= false;
- if (elementData != null && collection != null)
- {
- // iterate over data
- Object[] arRetained= new Object[size];
- int indexRetained= 0;
- for(int i= 0; i < size; i++)
- {
- Object curElem= elementData[i];
- // try to find the element in collection
- Iterator itColl= collection.iterator();
- boolean bExists= false;
- while (itColl.hasNext())
- {
- if (curElem == itColl.next())
- {
- // current element is in collection
- bExists= true;
- break;
- }
- }
- if (bExists == false)
- {
- itColl= collection.iterator();
- while (itColl.hasNext())
- {
- Object o= itColl.next();
- if (o != null)
- {
- if (UnoRuntime.areSame(o, curElem))
- {
- bExists= true;
- break;
- }
- }
- }
- }
- if (bExists == true)
- arRetained[indexRetained++]= curElem;
- }
- retVal= size != indexRetained;
- if (indexRetained > 0)
- {
- elementData= arRetained;
- size= indexRetained;
- }
- }
- return retVal;
- }
-
-
- /** Not supported.
- * @param index index of element to replace.
- * @param element element to be stored at the specified position.
- * @return the element previously at the specified position.
- * @throws IndexOutOfBoundsException if index out of range
- * <tt>(index &lt; 0 || index &gt;= size())</tt>.
- */
- synchronized public Object set(int index, Object element)
- {
- Object ret= null;
- if (elementData != null && element != null)
- {
- RangeCheck(index);
- ret = elementData[index];
- elementData[index] = element;
- }
- return ret;
- }
-
- /**
- * Returns the number of elements in this list.
- *
- * @return the number of elements in this list.
- */
- synchronized public int size()
- {
- if (elementData != null)
- return size;
- return 0;
- }
-
-
- /**
- * Returns an array containing all of the elements in this list
- * in the correct order.
- *
- * @return an array containing all of the elements in this list
- * in the correct order.
- */
- synchronized public Object[] toArray()
- {
- if (elementData != null)
- {
- Object[] result = new Object[size];
- System.arraycopy(elementData, 0, result, 0, size);
- return result;
- }
- return null;
- }
-
- /**
- * Returns an array containing all of the elements in this list in the
- * correct order. The runtime type of the returned array is that of the
- * specified array. If the list fits in the specified array, it is
- * returned therein. Otherwise, a new array is allocated with the runtime
- * type of the specified array and the size of this list.<p>
- *
- * If the list fits in the specified array with room to spare (i.e., the
- * array has more elements than the list), the element in the array
- * immediately following the end of the collection is set to
- * <tt>null</tt>. This is useful in determining the length of the list
- * <i>only</i> if the caller knows that the list does not contain any
- * <tt>null</tt> elements.
- *
- * @param a the array into which the elements of the list are to
- * be stored, if it is big enough; otherwise, a new array of the
- * same runtime type is allocated for this purpose.
- * @return an array containing the elements of the list.
- * @throws ArrayStoreException if the runtime type of a is not a supertype
- * of the runtime type of every element in this list.
- */
- synchronized public Object[] toArray(Object a[])
- {
- if (a.length < size)
- a = (Object[])java.lang.reflect.Array.newInstance(
- a.getClass().getComponentType(), size);
- if (elementData != null)
- System.arraycopy(elementData, 0, a, 0, size);
-
- if (a.length > size)
- a[size] = null;
-
- return a;
- }
-
- /**
- * Check if the given index is in range. If not, throw an appropriate
- * runtime exception.
- */
- private void RangeCheck(int index)
- {
- if (index >= size || index < 0)
- throw new IndexOutOfBoundsException(
- "Index: "+index+", Size: "+size);
- }
-
- public void disposeAndClear(EventObject evt)
- {
- Iterator aIt;
- synchronized (this)
- {
- aIt= iterator();
- // Container freigeben, falls im disposing neue Eintraege kommen
- // set the member to null, the iterator delete the values
- clear();
- elementData= null;
- size= 0;
- }
- if (aIt != null)
- {
- while( aIt.hasNext() )
- {
- try
- {
- Object o= aIt.next();
- XEventListener evtListener= UnoRuntime.queryInterface(
- XEventListener.class, o);
- if( evtListener != null )
- evtListener.disposing( evt );
- }
- catch ( RuntimeException e)
- {
- // be robust, if e.g. a remote bridge has disposed already.
- // there is no way, to delegate the error to the caller :o(.
- }
- }
- }
- }
-
-
- private class Itr implements Iterator
- {
- InterfaceContainer dataIt;
- /**
- * Index of element to be returned by subsequent call to next.
- */
- int cursor= 0;
- /**
- * Index of element returned by most recent call to next or
- * previous. Reset to -1 if this element is deleted by a call
- * to remove.
- */
- int lastRet = -1;
-
- /** The object that has been returned by most recent call to next
- * or previous. Reset to null if this element is deleted by a call
- * to remove.
- */
- Object lastRetObj= null;
-
- Itr(InterfaceContainer _data)
- {
- dataIt= _data;
- }
-
- synchronized public boolean hasNext()
- {
- return cursor !=dataIt.size();
- }
-
- public synchronized Object next()
- {
- try
- {
- Object next = dataIt.get(cursor);
- lastRet = cursor++;
- lastRetObj= next;
- return next;
- }
- catch(java.lang.IndexOutOfBoundsException e)
- {
- throw new java.util.NoSuchElementException();
- }
- }
-
- /** Removes the interface from the list, that has been last returned by a
- * call to next(). This is done according to the specification of the interface
- * method. The element is also removed from InterfaceContainer but independent
- * of the location. If the element is multiple times in InterfaceContainer then
- * it is up to the java.util.ArrayList implementation what element is removed.
- */
- public synchronized void remove()
- {
- if (lastRet == -1)
- throw new IllegalStateException();
- // Remove the entry from InterfaceContainer.
- InterfaceContainer.this.remove(lastRetObj);
- dataIt.remove(lastRet);
-
- if (lastRet < cursor)
- cursor--;
- lastRet = -1;
- lastRetObj= null;
- }
- }
-
- private class LstItr extends Itr implements ListIterator
- {
-
- LstItr(InterfaceContainer _data, int _index)
- {
- super(_data);
- cursor= _index;
- }
-
- /** Inserts an element to the iterators list according to the specification
- * of this interface method. The element is also added to InterfaceContainer
- * but its location within the list cannot be guaranteed.
- */
- public synchronized void add(Object o)
- {
- InterfaceContainer.this.add(o);
- dataIt.add(cursor++, o);
- lastRet = -1;
- lastRetObj= null;
- }
-
- synchronized public boolean hasPrevious()
- {
- return cursor != 0;
- }
-
- synchronized public int nextIndex()
- {
- return cursor;
- }
-
- public synchronized Object previous()
- {
- try
- {
- Object previous = dataIt.get(--cursor);
- lastRet = cursor;
- lastRetObj= previous;
- return previous;
- } catch(IndexOutOfBoundsException e)
- {
- throw new NoSuchElementException();
- }
- }
-
- synchronized public int previousIndex()
- {
- return cursor-1;
- }
-
- /** This is not possible since several iterators can modify InterfaceContainer
- */
- public synchronized void set(Object o)
- {
- throw new UnsupportedOperationException();
- }
-
-
- } // class LstItr
-}
-
diff --git a/javaunohelper/com/sun/star/lib/uno/helper/MultiTypeInterfaceContainer.java b/javaunohelper/com/sun/star/lib/uno/helper/MultiTypeInterfaceContainer.java
deleted file mode 100644
index e61362b2b..000000000
--- a/javaunohelper/com/sun/star/lib/uno/helper/MultiTypeInterfaceContainer.java
+++ /dev/null
@@ -1,165 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-package com.sun.star.lib.uno.helper;
-import com.sun.star.uno.Type;
-import com.sun.star.lang.EventObject;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Iterator;
-
-public class MultiTypeInterfaceContainer
-{
-
- private Map map= new HashMap();
-
- /** Creates a new instance of MultiTypeInterfaceContainer */
- public MultiTypeInterfaceContainer()
- {
- }
-
- /** only returns types which have at least one value in InterfaceContainer
- * return value can contain an element null, if someone called
- * addInterface (null, interf)
- */
- synchronized public Type[] getContainedTypes()
- {
- int size;
- Type[] retVal= null;
-
- if ( (size=map.size()) > 0)
- {
- Type [] arTypes= new Type[size];
- Iterator it= map.keySet().iterator();
-
- int countTypes= 0;
- while (it.hasNext())
- {
- Object key= it.next();
- InterfaceContainer cont= (InterfaceContainer) map.get(key);
- if (cont != null && cont.size() > 0)
- {
- if (key == null)
- arTypes[countTypes++]= new Type();
- else if (key instanceof Type)
- arTypes[countTypes++]= (Type) key;
- else if (key instanceof Class)
- arTypes[countTypes++]= new Type((Class) key);
- else
- arTypes[countTypes++]= new Type(key.getClass());
- }
- }
-
- if (countTypes != size)
- {
- retVal= new Type[countTypes];
- System.arraycopy(arTypes, 0, retVal, 0, countTypes);
- }
- else
- retVal= arTypes;
- }
- if (retVal == null)
- retVal= new Type[0];
- return retVal;
- }
-
- /** param key can be null */
- synchronized public InterfaceContainer getContainer(Object key)
- {
- InterfaceContainer retVal= null;
- Iterator it= map.keySet().iterator();
- while (it.hasNext())
- {
- Object obj= it.next();
- if (obj == null && key == null)
- {
- retVal= (InterfaceContainer) map.get(null);
- break;
- }
- else if( obj != null && obj.equals(key))
- {
- retVal= (InterfaceContainer) map.get(obj);
- break;
- }
- }
- return retVal;
- }
-
-
- synchronized public int addInterface(Object ckey, Object iface)
- {
- //If the key is a Type then it does not matter if the objects are different
- // if they represent the same type. This is because Types overrides hashCode and
- // equals. For example:
- // Type a= new Type(XInterface.class);
- // Type b= new Type(XInterface.class);
- // Allthough a != b , the map interprets both as being the same.
- InterfaceContainer cont= (InterfaceContainer) map.get(ckey);
- if (cont != null)
- {
- cont.add(iface);
- }
- else
- {
- cont= new InterfaceContainer();
- cont.add(iface);
- map.put(ckey, cont);
- }
- return cont.size();
- }
-
-
- synchronized public int removeInterface(Object key, Object iface)
- {
- int retVal= 0;
- InterfaceContainer cont= (InterfaceContainer) map.get(key);
- if (cont != null)
- {
- cont.remove(iface);
- retVal= cont.size();
- }
- return retVal;
- }
-
- public void disposeAndClear(EventObject evt)
- {
- Iterator it= null;
- synchronized(this)
- {
- it= map.values().iterator();
- }
- while (it.hasNext() )
- ((InterfaceContainer) it.next()).disposeAndClear(evt);
- }
-
- synchronized public void clear()
- {
- Iterator it= map.values().iterator();
- while (it.hasNext())
- ((InterfaceContainer) it.next()).clear();
- }
-}
diff --git a/javaunohelper/com/sun/star/lib/uno/helper/PropertySet.java b/javaunohelper/com/sun/star/lib/uno/helper/PropertySet.java
deleted file mode 100644
index d50e6d837..000000000
--- a/javaunohelper/com/sun/star/lib/uno/helper/PropertySet.java
+++ /dev/null
@@ -1,1102 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-package com.sun.star.lib.uno.helper;
-
-import com.sun.star.uno.Type;
-import com.sun.star.lang.EventObject;
-import com.sun.star.lang.WrappedTargetException;
-import com.sun.star.uno.TypeClass;
-import com.sun.star.uno.AnyConverter;
-import com.sun.star.uno.XInterface;
-import com.sun.star.uno.Any;
-import com.sun.star.uno.UnoRuntime;
-import com.sun.star.beans.XPropertyChangeListener;
-import com.sun.star.beans.XVetoableChangeListener;
-import com.sun.star.beans.PropertyChangeEvent;
-import com.sun.star.beans.XPropertySet;
-import com.sun.star.beans.Property;
-import com.sun.star.beans.PropertyAttribute;
-import com.sun.star.beans.UnknownPropertyException;
-import com.sun.star.beans.XPropertiesChangeListener;
-import com.sun.star.beans.XPropertySetInfo;
-import com.sun.star.beans.XFastPropertySet;
-import com.sun.star.beans.PropertyVetoException;
-import com.sun.star.beans.XMultiPropertySet;
-import java.util.Iterator;
-import java.util.Collection;
-import java.util.HashMap;
-import java.lang.reflect.Field;
-import com.sun.star.lang.DisposedException;
-
-
-/** This class is an implementation of the interfaces com.sun.star.beans.XPropertySet,
- * com.sun.star.beans.XFastPropertySet and com.sun.star.beans.XMultiPropertySet. This
- * class has to be inherited to be used. The values of properties are stored in member
- * variables of the inheriting class. By overriding the methods
- * {@link #convertPropertyValue convertPropertyValue},
- * {@link #setPropertyValueNoBroadcast setPropertyValueNoBroadcast} and
- * {@link #getPropertyValue(Property)} one can determine how
- * property values are stored.
- * When using the supplied implementations of this class then the member variables which
- * hold property values have to be declared in the class which inherits last in the inheriting
- * chain and they have to be public<p>
- * Properties have to be registered by one of the registerProperty methods. They take among other
- * arguments an Object named <em>id</em> which has to be a String that represents the name of
- * the member variable. The registering has to occur in the constructor of the inheriting class.
- * It is no allowed to add or change properties later on.<p>
- * Example:
- * <pre>
- * public class Foo extends PropertySet
- * {
- * protected int intProp;
- *
- * public Foo()
- * {
- * registerProperty("PropertyA", 0, new Type(int.class), (short)0, "intProp");
- * }
- * }
- *
- * </pre>
- */
-public class PropertySet extends ComponentBase implements XPropertySet, XFastPropertySet,
-XMultiPropertySet
-{
- private HashMap _nameToPropertyMap;
- private HashMap _handleToPropertyMap;
- private HashMap _propertyToIdMap;
- private Property[] arProperties;
-
- private int lastHandle= 1;
-
- protected XPropertySetInfo propertySetInfo;
- protected MultiTypeInterfaceContainer aBoundLC= new MultiTypeInterfaceContainer();
- protected MultiTypeInterfaceContainer aVetoableLC= new MultiTypeInterfaceContainer();
- public PropertySet()
- {
- super();
- initMappings();
- }
-
- /** Registers a property with this helper class and associates the argument <em>id</em> with it.
- * <em>id</em> is used to identify the storage of the property value. How property values are stored
- * and retrieved is determined by the methods {@link #convertPropertyValue convertPropertyValue},
- * {@link #setPropertyValueNoBroadcast setPropertyValueNoBroadcast} and {@link #getPropertyValue(Property) getPropertyValue}
- * These methods expect <em>id</em> to be a java.lang.String which represents the name of a member variable
- * which holds the property value.
- * Only properties which are registered can be accessed. Registration has to occur during
- * initialization of the inheriting class (i.e. within the contructor).
- * @param prop The property to be registered.
- * @param id Identifies the properties storage.
- * @see #getPropertyId
- */
- protected void registerProperty(Property prop, Object id)
- {
- putProperty(prop);
- assignPropertyId(prop, id);
- }
-
- /** Registers a property with this helper class and associates the argument id with it.
- * It does the same as {@link #registerProperty(Property, Object)}. The first four
- * arguments are used to construct a Property object.
- * Registration has to occur during
- * initialization of the inheriting class (i.e. within the contructor)
- * @param name The property's name (Property.Name).
- * @param handle The property's handle (Property.Handle).
- * @param Type The property's type (Property.Type).
- * @param attributes The property's attributes (Property.Attributes).
- * @param id Identifies the property's storage.
- */
- protected void registerProperty(String name, int handle, Type type, short attributes, Object id)
- {
- Property p= new Property(name, handle, type, attributes);
- registerProperty(p, id);
- }
-
- /** Registers a property with this class and associates the argument id with it.
- * It does the same as {@link #registerProperty(Property, Object)}. The first three
- * arguments are used to construct a Property object. The value for the Property.Handle
- * is generated and does not have to be specified here. Use this method for registering
- * a property if you do not care about the Property's handles.
- * Registration has to occur during
- * initialization of the inheriting class (i.e. within the contructor).
- * @param name The property's name (Property.Name).
- * @param handle The property's handle (Property.Handle).
- * @param Type The property's type (Property.Type).
- * @param attributes The property's attributes (Property.Attributes).
- * @param id Identifies the property's storage.
- */
- protected void registerProperty(String name, Type type, short attributes, Object id)
- {
- Property p= new Property(name, lastHandle++, type, attributes);
- registerProperty(p, id);
- }
-
- /** Registers a property with this class. This method expects that property values
- * are stored in member variables as is the case if the methods convertPropertyValue,
- * setPropertyValueNoBroadcast and getPropertyValue(Property) are not overridden.
- * It is presumed that the type of the member variable
- * corresponds Property.Type. For example, if the TypeClass of Property.Type is to be
- * a TypeClass.SHORT then the member must be a short or java.lang.Short.
- * The handle for the property is generated.<br>
- * If there is no member with the specified name or if the member has an incompatible type
- * then a com.sun.star.uno.RuntimeException is thrown.
- * @param propertyName The name of the property.
- * @param memberName The name of the member variable that holds the value of the property.
- * @param attributes The property attributes.
- */
- protected void registerProperty(String propertyName, String memberName, short attributes)
- {
- Field propField= null;
- try
- {
- propField= getClass().getDeclaredField(memberName);
- }
- catch (NoSuchFieldException e)
- {
- throw new com.sun.star.uno.RuntimeException("there is no member variable: " + memberName);
- }
- Class cl= propField.getType();
- Type t= new Type(cl);
- if (t.getTypeClass() != TypeClass.UNKNOWN)
- {
- Property p= new Property(propertyName, lastHandle++, t, attributes);
- registerProperty(p,memberName);
- }
- else
- throw new com.sun.star.uno.RuntimeException("the member has an unknown type: " + memberName);
- }
-
- /** Registers a property with this class.
- * It is presumed that the name of property is equal to the name of the member variable
- * that holds the property value.
- * @param propertyName The name of the property and the member variable that holds the property's value.
- * @param attributes The property attributes.
- * @see #registerProperty(String, String, short)
- */
- protected void registerProperty(String propertyName, short attributes)
- {
- registerProperty(propertyName, propertyName, attributes);
- }
-
-
-
- /** Returns the Property object for a given property name or null if that property does
- * not exists (i.e. it has not been registered). Override this method
- * if you want to implement your own mapping from property names to Property objects.
- * Then you also have to override {@link #initMappings}, {@link #getProperties()} and
- * {@link #putProperty(Property)}.
- * @param propertyName The name of the property (Property.Name)
- * @return The Property object with the name <em>propertyName</em>.
- */
- protected Property getProperty(String propertyName)
- {
- return (Property) _nameToPropertyMap.get(propertyName);
- }
-
- /** Returns the Property object with a handle (Property.Handle) as specified by the argument
- * <em>nHandle</em>. The method returns null if there is no such property (i.e. it has not
- * been registered). Override this method if you want to implement your own mapping from handles
- * to Property objects. Then you also have to override {@link #initMappings}, {@link #putProperty(Property)}.
- * @param nHandle The handle of the property (Property.Handle).
- * @return The Property object with the handle <em>nHandle</em>
- */
- protected Property getPropertyByHandle(int nHandle)
- {
- return (Property) _handleToPropertyMap.get(new Integer(nHandle));
- }
-
- /** Returns an array of all Property objects or an array of length null if there
- * are no properties. Override this method if you want to implement your own mapping from names
- * to Property objects. Then you also have to override {@link #initMappings}, {@link #getProperty(String)} and
- * {@link #putProperty}.
- * @return Array of all Property objects.
- */
- protected Property[] getProperties()
- {
- if (arProperties == null)
- {
- Collection values= _nameToPropertyMap.values();
- arProperties= (Property[]) values.toArray(new Property[_nameToPropertyMap.size()]);
- }
- return arProperties;
- }
-
- /** Stores a Property object so that it can be retrieved subsequently by
- * {@link #getProperty(String)},{@link #getProperties()},{@link #getPropertyByHandle(int)}.
- * Override this method if you want to implement your own mapping from handles
- * to Property objects and names to Property objects. Then you also need to override {@link #initMappings},
- * {@link #getProperty(String)},{@link #getProperties()},{@link #getPropertyByHandle(int)}.
- * @param prop The Property object that is to be stored.
- */
- protected void putProperty(Property prop)
- {
- _nameToPropertyMap.put(prop.Name, prop);
- if (prop.Handle != -1)
- _handleToPropertyMap.put(new Integer(prop.Handle), prop);
- }
-
- /** Assigns an identifyer object to a Property object so that the identifyer
- * can be obtained by {@link #getPropertyId getPropertyId} later on. The identifyer
- * is used to specify a certain storage for the property's value. If you do not
- * override {@link #setPropertyValueNoBroadcast setPropertyValueNoBroadcast} or {@link #getPropertyValue(Property)}
- * then the argument <em>id</em> has to be a java.lang.String that equals the name of
- * the member variable that holds the Property's value.
- * Override this method if you want to implement your own mapping from Property objects to ids or
- * if you need ids of a type other then java.lang.String.
- * Then you also need to override {@link #initMappings initMappings} and {@link #getPropertyId getPropertyId}.
- * @param prop The Property object that is being assigned an id.
- * @param id The object which identifies the storage used for the property's value.
- * @see #registerProperty(Property, Object)
- */
- protected void assignPropertyId(Property prop, Object id)
- {
- if (id instanceof String && ((String) id).equals("") == false)
- _propertyToIdMap.put(prop, id);
- }
-
- /** Returns the identifyer object for a certain Property. The object must have been
- * previously assigned to the Property object by {@link #assignPropertyId assignPropertyId}.
- * Override this method if you want to implement your own mapping from Property objects to ids.
- * Then you also need to override {@link #initMappings initMappings} and {@link #assignPropertyId assignPropertyId}.
- * @param prop The property for which the id is to be retrieved.
- * @return The id object that identifies the storage used for the property's value.
- * @see #registerProperty(Property, Object)
- */
- protected Object getPropertyId(Property prop)
- {
- return _propertyToIdMap.get(prop);
- }
-
- /** Initializes data structures used for mappings of property names to property object,
- * property handles to property objects and property objects to id objects.
- * Override this method if you want to implement your own mappings. Then you also need to
- * override {@link #putProperty putProperty},{@link #getProperty getProperty}, {@link #getPropertyByHandle},
- * {@link #assignPropertyId assignPropertyId} and {@link #getPropertyId getPropertyId}.
- */
- protected void initMappings()
- {
- _nameToPropertyMap= new HashMap();
- _handleToPropertyMap= new HashMap();
- _propertyToIdMap= new HashMap();
- }
-
- /** Makes sure that listeners which are kept in aBoundLC (XPropertyChangeListener) and aVetoableLC
- * (XVetoableChangeListener) receive a disposing call. Also those listeners are relesased.
- */
- protected void postDisposing()
- {
- // Create an event with this as sender
- EventObject aEvt= new EventObject(this);
-
- // inform all listeners to reelease this object
- aBoundLC.disposeAndClear(aEvt);
- aVetoableLC.disposeAndClear(aEvt);
- }
-
- //XPropertySet ----------------------------------------------------
- synchronized public void addPropertyChangeListener(String str, XPropertyChangeListener xPropertyChangeListener)
- throws UnknownPropertyException, WrappedTargetException
- {
- // only add listeners if you are not disposed
- if (! bInDispose && ! bDisposed)
- {
- if (str.length() > 0)
- {
- Property prop= getProperty(str);
- if (prop == null)
- throw new UnknownPropertyException("Property " + str + " is unknown");
-
- // Add listener for a certain property
- if ((prop.Attributes & PropertyAttribute.BOUND) > 0)
- aBoundLC.addInterface(str, xPropertyChangeListener);
- else
- //ignore silently
- return;
- }
- else
- // Add listener for all properties
- listenerContainer.addInterface(XPropertyChangeListener.class, xPropertyChangeListener);
- }
- }
- //XPropertySet ----------------------------------------------------
- synchronized public void addVetoableChangeListener(String str, com.sun.star.beans.XVetoableChangeListener xVetoableChangeListener) throws com.sun.star.beans.UnknownPropertyException, com.sun.star.lang.WrappedTargetException
- {
- // only add listeners if you are not disposed
- if (! bInDispose && ! bDisposed)
- {
- if (str.length() > 0)
- {
- Property prop= getProperty(str);
- if (prop == null)
- throw new UnknownPropertyException("Property " + str + " is unknown");
-
- // Add listener for a certain property
- if ((prop.Attributes & PropertyAttribute.CONSTRAINED) > 0)
- aVetoableLC.addInterface(str, xVetoableChangeListener);
- else
- //ignore silently
- return;
- }
- else
- // Add listener for all properties
- listenerContainer.addInterface(XVetoableChangeListener.class, xVetoableChangeListener);
- }
- }
- //XPropertySet ----------------------------------------------------
- public com.sun.star.beans.XPropertySetInfo getPropertySetInfo()
- {
- if (propertySetInfo == null)
- {
- synchronized (this)
- {
- if (propertySetInfo == null)
- propertySetInfo= new PropertySetInfo();
- }
- }
- return propertySetInfo;
- }
- //XPropertySet ----------------------------------------------------
- public Object getPropertyValue(String name) throws UnknownPropertyException, WrappedTargetException
- {
- Object ret= null;
- if (bInDispose || bDisposed)
- throw new com.sun.star.lang.DisposedException("The component has been disposed already");
-
- Property prop= getProperty(name);
- if (prop == null)
- throw new UnknownPropertyException("The property " + name + " is unknown");
-
- synchronized (this)
- {
- ret= getPropertyValue(prop);
- }
- // null must not be returned. Either a void any is returned or an any containing
- // an interface type and a null reference.
- if (ret == null)
- {
- if (prop.Type.getTypeClass() == TypeClass.INTERFACE)
- ret= new Any(prop.Type, null);
- else
- ret= new Any(new Type(void.class), null);
- }
- return ret;
- }
-
- //XPropertySet ----------------------------------------------------
- synchronized public void removePropertyChangeListener(String propName, XPropertyChangeListener listener) throws UnknownPropertyException, WrappedTargetException
- { // all listeners are automaticly released in a dispose call
- if (!bInDispose && !bDisposed)
- {
- if (propName.length() > 0)
- {
- Property prop = getProperty(propName);
- if (prop == null)
- throw new UnknownPropertyException("Property " + propName + " is unknown");
- aBoundLC.removeInterface(propName, listener);
- }
- else
- listenerContainer.removeInterface(XPropertyChangeListener.class, listener);
- }
- }
-
- //XPropertySet ----------------------------------------------------
- synchronized public void removeVetoableChangeListener(String propName, XVetoableChangeListener listener) throws UnknownPropertyException, WrappedTargetException
- {// all listeners are automaticly released in a dispose call
- if (!bInDispose && !bDisposed)
- {
- if (propName.length() > 0)
- {
- Property prop = getProperty(propName);
- if (prop == null)
- throw new UnknownPropertyException("Property " + propName + " is unknown");
- aVetoableLC.removeInterface(propName, listener);
- }
- else
- listenerContainer.removeInterface(XVetoableChangeListener.class, listener);
- }
- }
-
- //XPropertySet ----------------------------------------------------
- /** Sets the value of a property.
- * The idl description for this interfaces, stipulates that the argument value is an Any. Since a java.lang.Object
- * reference has the same meaning as an Any this function accepts
- * java anys (com.sun.star.uno.Any) and all other appropriate objects as arguments. The value argument can be one
- * of these:
- * <ul>
- * <li>java.lang.Boolean</li>
- * <li>java.lang.Character</li>
- * <li>java.lang.Byte</li>
- * <li>java.lang.Short</li>
- * <li>java.lang.Integer</li>
- * <li>java.lang.Long</li>
- * <li>java.lang.Float</li>
- * <li>java.lang.Double</li>
- * <li>java.lang.String</li>
- * <li>com.sun.star.uno.Type</li>
- * <li><em>objects which implement UNO interfaces</em></li>
- * <li><em>arrays which contain elements of the types above</em></li>
- * <li>com.sun.star.uno.Any containing an instance of one of the above types</li>
- * </ul>
- *
- * Properties can have the attribute com.sun.star.beans.PropertyAttribute.MAYBEVOID, which means that the value
- * (not the type) can be void. In order to assign a void value to a property one can either pass an Any which
- * contains a null reference or pass null directly. In bothe cases the null reference is only accepted if
- * the PropertyAttribute.MAYBEVOID attribute is set for the property.
- *
- * Properties which have the attribute MAYBEVOID set (Property.Attributes) can have a void value. The following
- * considerations presume that the Property has that attribute set. Further, when mentioning an Any's value we
- * actually refer to the object returned by Any.getObject.
- * If the argument <em>value</em> is null, or it is an Any whose value is null (but with a valid Type)
- * then the member variable used for storing the property's value is set to null.
- * Therefore those properties can only be stored in objects
- * and primitive types are not allowed (one can use the wrapper classes instead,e.g. java.lang.Byte) .
- * If a property's value is kept in a member variable of type Any and that reference is still null
- * then when setPropertyValue is called with
- * <em>value</em> = null then the member variable is assigned an Any with type void and a null value.
- * Or if the argument is an Any with a null value then it is assigned to the member variable.
- * Further, if the variable already
- * references an Any and setPropertyValue is called with <em>value</em> = null, then the variable is assigned
- * a new Any with the same type as the previously referenced Any and with a null value.
- * @param name The name of the property.
- * @param value The new value of the property.
- * * */
- public void setPropertyValue(String name, Object value) throws UnknownPropertyException,
- PropertyVetoException, com.sun.star.lang.IllegalArgumentException, WrappedTargetException
- {
- Property prop= getProperty(name);
- if (prop == null)
- throw new UnknownPropertyException("Property " + name + " is unknown");
- setPropertyValue(prop, value);
- }
-
- /** Sets the value of a property. It checks if the property's attributes (READONLY,MAYBEVOID), allow that the
- * new value can be set. It also causes the notification of listeners.
- * @param prop The property whose value is to be set.
- * @param value The new value for the property.
- */
- protected void setPropertyValue(Property prop, Object value) throws UnknownPropertyException,
- PropertyVetoException, com.sun.star.lang.IllegalArgumentException, WrappedTargetException
- {
- if ((prop.Attributes & PropertyAttribute.READONLY) == PropertyAttribute.READONLY)
- throw new com.sun.star.beans.PropertyVetoException();
- // The value may be null only if MAYBEVOID attribute is set
- boolean bVoidValue= false;
- if (value instanceof Any)
- bVoidValue= ((Any) value).getObject() == null;
- else
- bVoidValue= value == null;
- if (bVoidValue && (prop.Attributes & PropertyAttribute.MAYBEVOID) == 0)
- throw new com.sun.star.lang.IllegalArgumentException("The property must have a value; the MAYBEVOID attribute is not set!");
- if (bInDispose || bDisposed)
- throw new DisposedException("Component is already disposed");
-
- //Check if the argument is allowed
- boolean bValueOk= false;
- if (value instanceof Any)
- bValueOk= checkType(((Any) value).getObject());
- else
- bValueOk= checkType(value);
- if (! bValueOk)
- throw new com.sun.star.lang.IllegalArgumentException("No valid UNO type");
-
-
- boolean bConversionOk= false;
- Object[] outConvertedVal= new Object[1];
- Object[] outOldValue= new Object[1];
- synchronized (this)
- {
- bConversionOk= convertPropertyValue(prop, outConvertedVal, outOldValue, value);
- }
-
- //The next step following the conversion is to set the new value of the property. Prior to this
- // the XVetoableChangeListener s have to be notified.
- if (bConversionOk)
- {
- // If the property is CONSTRAINED, then we must notify XVetoableChangeListener. The listener can throw a com.sun.star.lang.beans.PropertyVetoException which
- // will cause this method to return (the exception is not caught here).
- fire( new Property[]{prop}, outConvertedVal, outOldValue, true);
-
- synchronized (this)
- {
- setPropertyValueNoBroadcast(prop, outConvertedVal[0]);
- }
- // fire a change event (XPropertyChangeListener, PropertyAttribute.BOUND
- fire( new Property[]{prop}, outConvertedVal, outOldValue, false);
- }
- }
-
- /** Converts a value in a way so that it is appropriate for storing as a property value, that is
- * {@link #setPropertyValueNoBroadcast setPropertyValueNoBroadcast} can process the value without any further
- * conversion. This implementation presumes that
- * the values are stored in member variables of the furthest inheriting class. For example,
- * class A inherits this class then members of class A
- * can hold property values. If there is a class B which inherits A then only members of B can hold
- * property values. The variables must be public. A property must have been registered (e.g. by
- * {@link #registerProperty(Property, Object)} in order for this method to work. The identifyer argument (type Object)
- * used in the registerProperty methods must
- * be a java.lang.String, which is, the name of the member variable that holds the property value.
- * If one opts to store values differently then one may override
- * this method, as well as {@link #setPropertyValueNoBroadcast setPropertyValueNoBroadcast} and
- * {@link #getPropertyValue(Property) getPropertyValue(Property)}.
- * This method is always called as a result of a call to one of the setter methods, such as
- * {@link #setPropertyValue(String,Object) XPropertySet.setPropertyValue},
- * {@link #setFastPropertyValue XFastPropertySet.setFastPropertyValue}
- * and {@link #setPropertyValues XMultiPropertySet.setPropertyValues}.
- * If this method fails, that is, it returns false or throws an exception, then no listeners are notified and the
- * property value, that was intended to be changed, remains untouched.<br /> This method does not have to deal with property attributes, such as
- * PropertyAttribute.READONLY or PropertyAttribute.MAYBEVOID. The processing of these attributes occurs
- * in the calling methods.<br />
- * Only if this method returns successfully further processing, such
- * as listener notification and finally the modifiction of the property's value, will occur.<br />
- *
- * The actual modification of a property's value is done by {@link #setPropertyValueNoBroadcast setPropertyValueNoBroadcast}
- * which is called subsequent to convertPropertyValue.
- *<p>
- * This method converts values by help of the com.sun.star.uno.AnyConverter which only does a few widening
- * conversions on integer types and floating point types. For example, there is the property PropA with a Type equivalent
- * to int.class and the
- * value of the property is to be stored in a member variable of type int with name intProp. Then setPropertyValue is
- * called:
- * <pre>
- * set.setPropertyValue( "PropA", new Byte( (byte)111));
- * </pre>
- * At some point setPropertyValue will call convertPropertyValue and pass in the Byte object. Since we allow
- * that Byte values can be used with the property and know that the value is to be stored in intProp (type int)
- * we convert the Byte object into an Integer object which is then returned in the out-parameter <em>newVal</em>. This
- * conversion is actually performed by the AnyConverter. Later
- * the setPropertyValueNoBroadcast is called with that Integer object and the int value can be easily extracted
- * from the object and be assigned to the member intProp.
- * <p>
- * The method handles Any arguments the same as Object arguments. That is, the <em>setVal</em> argument can
- * be a java.lang.Boolean or a com.sun.star.uno.Any containing a java.lang.Boolean. Likewise, a member
- * containing a property value can be a com.sun.star.uno.Any or an java.lang.Object.
- * Then, no conversion is necessary, since they can hold all possible values. However, if
- * the member is an Object and <em>setVal</em> is an Any then the object contained in the any is assigned to
- * the member. The extra type information which exists as Type object in the Any will get lost. If this is not
- * intended then use an Any variable rather then an Object.<br />
- * If a member is an Object or Any and the argument <em>setVal</em> is an Object, other than String or array,
- * then it is presumed to be an UNO object and queried for XInterface. If successful, the out-param <em>newVal</em>
- * returns the XInterface.<br />
- * If a member is an UNO interface, then <em>setVal</em> is queried for this interface and the result is returned.
- * If <em>setVal</em> is null then <em>newVal</em> will be null too after return.
- * <p>
- * If a property value is stored using a primitive type the the out-parameters
- * <em>curVal</em> and <em>newVal</em> contain the respective wrapper class (e.g.java.lang.Byte, etc.).
- * curVal is used in calls to the XVetoableChangeListener and XPropertyChangeListener.
- *
- * @param property - in-param property for which the data is to be converted.
- * @param newVal - out-param which contains the converted value on return.
- * @param curVal - out-param the current value of the property. It is used in calls to the
- * XVetoableChangeListener and XPropertyChangeListener.
- * @param setVal - in-param. The value that is to be converted so that it matches Property and the internally used
- * dataformat for that property.
- * @return true - Conversion was successful. <em>newVal</em> contains a valid value for the property. false -
- * conversion failed for some reason.
- * @throws com.sun.star.lang.IllegalArgumentException The value provided is unfit for the property.
- * @throws com.sun.star.lang.WrappedTargetException - An exception occurred during the conversion, that is to be made known
- * to the caller.
- */
- protected boolean convertPropertyValue(Property property, Object[] newVal, Object[]curVal, Object setVal)
- throws com.sun.star.lang.IllegalArgumentException, WrappedTargetException, UnknownPropertyException
- {
- boolean ret= true;
- try
- {
- // get the member name
- String sMember= (String) getPropertyId(property);
- if (sMember != null)
- {
- // use reflection to obtain the field that holds the property value
- // Class.getDeclaredFields does not return inherited fields. One could use Class.getFields to
- // also get inherited fields, but only those which are public.
- Field propField= getClass().getDeclaredField(sMember);
- if (propField != null)
- {
- curVal[0]= propField.get(this);
- Class memberClass= propField.getType();
-
- // MAYBEVOID: if setVal == null or it is an Any and getObject returns null, then a void value is to be set
- // This works only if there are no primitive types. For those we use the respective wrapper classes.
- // In this implementation, a null reference means void value.
- boolean bVoidValue= false;
- boolean bAnyVal= setVal instanceof Any;
- if (bAnyVal)
- bVoidValue= ((Any) setVal).getObject() == null;
- else
- bVoidValue= setVal == null;
- if (bVoidValue && memberClass.isPrimitive())
- throw new com.sun.star.lang.IllegalArgumentException("The implementation does not support the MAYBEVOID attribute for this property");
-
- Object convObj= null;
- //The member that keeps the value of the Property is an Any. It can contain all possible
- //types, therefore a conversion is not necessary.
- if (memberClass.equals(Any.class))
- {
- if (bAnyVal)
- //parameter setVal is also an Any and can be used without further processing
- convObj= setVal;
- else
- {
- // Parameter setVal is not an Any. We need to construct an Any that contains
- // the argument setVal.
- // If setVal is an interface implementation then, we cannot constuct the
- // Any with setVal.getClass(), because the Any.Type._typeClass would be TypeClass.UNKNOWN.
- // We try to get an XInterface of setVal and set an XInterface type.
- if (setVal instanceof XInterface)
- {
- XInterface xint= UnoRuntime.queryInterface(XInterface.class, setVal);
- if (xint != null)
- convObj= new Any(new Type(XInterface.class), xint);
- }
- // The member is an any, and the past in argument was null reference (MAYBEVOID is set)
- else if (setVal == null)
- {
- // if the any member is still null we create a void any
- if (curVal[0] == null)
- convObj= new Any(new Type(), null);
- else
- {
- //otherwise we create an Any with the same type as a value of null;
- convObj= new Any( ((Any)curVal[0]).getType(), null);
- }
- }
- else
- convObj= new Any(new Type(setVal.getClass()), setVal);
- }
- }
- else
- convObj= convert(memberClass, setVal);
- newVal[0]= convObj;
- }
- }
- else
- throw new UnknownPropertyException("Property " + property.Name + " is unknown");
- }
- catch (java.lang.NoSuchFieldException e)
- {
- throw new WrappedTargetException("Field does not exist", this, e);
- }
- catch (java.lang.IllegalAccessException e)
- {
- throw new WrappedTargetException("", this ,e);
- }
- return ret;
- }
-
- private boolean checkType(Object obj)
- {
- if (obj == null
- || obj instanceof Boolean
- || obj instanceof Character
- || obj instanceof Number
- || obj instanceof String
- || obj instanceof XInterface
- || obj instanceof Type
- || obj instanceof com.sun.star.uno.Enum
- || obj.getClass().isArray())
- return true;
- return false;
- }
-
- // Param object can be an Any or other object. If obj is null then the return value is null
- private Object convert( Class cl, Object obj) throws com.sun.star.lang.IllegalArgumentException
- {
- Object retVal= null;
- //The member that keeps the value of the Property is an Object.Objects are similar to Anys in that they can
- // hold all types.
- if (obj == null || (obj instanceof Any && ((Any) obj).getObject() == null))
- retVal= null;
- else if(cl.equals(Object.class))
- {
- if (obj instanceof Any)
- obj= ((Any) obj).getObject();
- retVal= obj;
- }
- else if(cl.equals(boolean.class))
- retVal= new Boolean(AnyConverter.toBoolean(obj));
- else if (cl.equals(char.class))
- retVal= new Character(AnyConverter.toChar(obj));
- else if (cl.equals(byte.class))
- retVal= new Byte(AnyConverter.toByte(obj));
- else if (cl.equals(short.class))
- retVal= new Short(AnyConverter.toShort(obj));
- else if (cl.equals(int.class))
- retVal= new Integer(AnyConverter.toInt(obj));
- else if (cl.equals(long.class))
- retVal= new Long(AnyConverter.toLong(obj));
- else if (cl.equals(float.class))
- retVal= new Float(AnyConverter.toFloat(obj));
- else if (cl.equals(double.class))
- retVal= new Double(AnyConverter.toDouble(obj));
- else if (cl.equals(String.class))
- retVal= AnyConverter.toString(obj);
- else if (cl.isArray())
- retVal= AnyConverter.toArray(obj);
- else if (cl.equals(Type.class))
- retVal= AnyConverter.toType(obj);
- else if (cl.equals(Boolean.class))
- retVal= new Boolean(AnyConverter.toBoolean(obj));
- else if (cl.equals(Character.class))
- retVal= new Character(AnyConverter.toChar(obj));
- else if (cl.equals(Byte.class))
- retVal= new Byte(AnyConverter.toByte(obj));
- else if (cl.equals(Short.class))
- retVal= new Short(AnyConverter.toShort(obj));
- else if (cl.equals(Integer.class))
- retVal= new Integer(AnyConverter.toInt(obj));
- else if (cl.equals(Long.class))
- retVal= new Long(AnyConverter.toLong(obj));
- else if (cl.equals(Float.class))
- retVal= new Float(AnyConverter.toFloat(obj));
- else if (cl.equals(Double.class))
- retVal= new Double(AnyConverter.toDouble(obj));
- else if (XInterface.class.isAssignableFrom(cl))
- retVal= AnyConverter.toObject(new Type(cl), obj);
- else if (com.sun.star.uno.Enum.class.isAssignableFrom(cl))
- retVal= AnyConverter.toObject(new Type(cl), obj);
- else
- throw new com.sun.star.lang.IllegalArgumentException("Could not convert the argument");
- return retVal;
- }
-
- /** Sets the value of a property. In this implementation property values are stored in member variables
- * (see {@link #convertPropertyValue convertPropertyValue} Notification of property listeners
- * does not occur in this method. By overriding this method one can take full control about how property values
- * are stored. But then, the {@link #convertPropertyValue convertPropertyValue} and
- * {@link #getPropertyValue(Property)} must be overridden too.
- *
- * A Property with the MAYBEVOID attribute set, is stored as null value. Therefore the member variable must be
- * an Object in order to make use of the property attribute. An exception is Any. The Any variable can be initially null, but
- * once it is set the reference will not become null again. If the value is to be set to
- * void then a new Any will be stored
- * with a valid type but without a value (i.e. Any.getObject returns null).
- * If a property has the READONLY attribute set, and one of the setter methods, such as setPropertyValue, has been
- * called, then this method is not going to be called.
- * @param property the property for which the new value is set
- * @param value the new value for the property.
- * @throws com.sun.star.lang.WrappedTargetException An exception, which has to be made known to the caller,
- * occurred during the setting of the value.
- */
- protected void setPropertyValueNoBroadcast(Property property, Object newVal)
- throws WrappedTargetException
- {
- try
- {
- // get the member name
- String sMember= (String) getPropertyId(property);
- if (sMember != null)
- {
- // use reflection to obtain the field that holds the property value
- // Class.getDeclaredFields does not return inherited fields. One could use Class.getFields to
- // also get inherited fields, but only those which are public.
- Field propField= getClass().getDeclaredField(sMember);
- if (propField != null)
- propField.set(this, newVal);
- }
- }
- catch(java.lang.Exception e)
- {
- throw new WrappedTargetException("PropertySet.setPropertyValueNoBroadcast", this, e);
- }
- }
- /** Retrieves the value of a property. This implementation presumes that the values are stored in member variables
- * of the furthest inheriting class (see {@link #convertPropertyValue convertPropertyValue}) and that the
- * variables are public. The property must have
- * been registered, for example by {@link #registerProperty(Property, Object)}. The identifyer Object argument
- * must have been a java.lang.String which was the name of the member variable holding the property value.
- * When properties are to be stored differently one has to override this method as well as
- * {@link #convertPropertyValue} and {@link #setPropertyValueNoBroadcast}. <br>
- * If a value is stored in a variable of a primitive type then this method returns an instance of the respective
- * wrapper class (e.g. java.lang.Boolean).
- * @param property The property for which the value is to be retrieved.
- * @return The value of the property.
- */
- protected Object getPropertyValue(Property property)
- {
- Object ret= null;
- try
- {
- // get the member name
- String sMember= (String) getPropertyId(property);
- if (sMember != null)
- {
- // use reflection to obtain the field that holds the property value
- // Class.getDeclaredFields does not return inherited fields. One could use Class.getFields to
- // also get inherited fields, but only those which are public.
- Field propField= getClass().getDeclaredField(sMember);
- if (propField != null)
- ret= propField.get(this);
- }
- }
- catch(java.lang.NoSuchFieldException e)
- {
- throw new java.lang.RuntimeException(e);
- }
- catch(java.lang.IllegalAccessException e)
- {
- throw new java.lang.RuntimeException(e);
- }
- return ret;
- }
-
- /**
- * This method fires events to XPropertyChangeListener,XVetoableChangeListener and
- * XPropertiesChangeListener event sinks.
- * To distinguish what listeners are to be called the argument <em>bVetoable</em> is to be set to true if
- * a XVetoableChangeListener is meant. For XPropertyChangeListener and XPropertiesChangeListener
- * it is to be set to false.
- *
- * @param properties Properties wich will be or have been affected.
- * @param newValues the new values of the properties.
- * @param oldValues the old values of the properties.
- * @param bVetoable true means fire to VetoableChangeListener, false means fire to
- * XPropertyChangedListener and XMultiPropertyChangedListener.
- */
- protected void fire(
- Property[] properties,
- Object[] newValues,
- Object[] oldValues,
- boolean bVetoable ) throws PropertyVetoException
- {
- // Only fire, if one or more properties changed
- int nNumProps= properties.length;
- if (nNumProps > 0)
- {
- PropertyChangeEvent[] arEvts= new PropertyChangeEvent[nNumProps];
- int nAffectedProps= 0;
- // Loop over all changed properties to fill the event struct
- for (int i= 0; i < nNumProps; i++)
- {
- if ((bVetoable && (properties[i].Attributes & PropertyAttribute.CONSTRAINED) > 0)
- || (!bVetoable && (properties[i].Attributes & PropertyAttribute.BOUND) > 0))
- {
- arEvts[i]= new PropertyChangeEvent(this, properties[i].Name, false,
- properties[i].Handle, oldValues[i], newValues[i]);
- nAffectedProps++;
- }
- }
- // fire the events for all changed properties
- for (int i= 0; i < nAffectedProps; i++)
- {
- // get the listener container for the property name
- InterfaceContainer lc= null;
- if (bVetoable)
- lc= aVetoableLC.getContainer(arEvts[i].PropertyName);
- else
- lc= aBoundLC.getContainer(arEvts[i].PropertyName);
- if (lc != null)
- {
- Iterator it= lc.iterator();
- while( it.hasNext())
- {
- Object listener= it.next();
- if (bVetoable)
- ((XVetoableChangeListener) listener).vetoableChange(arEvts[i]);
- else
- ((XPropertyChangeListener) listener).propertyChange(arEvts[i]);
- }
- }
- // broadcast to all listeners with "" property name
- if(bVetoable)
- lc= listenerContainer.getContainer(XVetoableChangeListener.class);
- else
- lc= listenerContainer.getContainer(XPropertyChangeListener.class);
- if(lc != null)
- {
- Iterator it= lc.iterator();
- while(it.hasNext() )
- {
- Object listener= it.next();
- if( bVetoable ) // fire change Events?
- ((XVetoableChangeListener) listener).vetoableChange(arEvts[i]);
- else
- ((XPropertyChangeListener) listener).propertyChange(arEvts[i]);
- }
- }
- }
- // fire at XPropertiesChangeListeners
- // if nAffectedProps == 0 then there are no BOUND properties
- if (!bVetoable && nAffectedProps > 0)
- {
-
- PropertyChangeEvent[] arReduced= new PropertyChangeEvent[nAffectedProps];
- System.arraycopy(arEvts, 0, arReduced, 0, nAffectedProps);
- InterfaceContainer lc= listenerContainer.getContainer(XPropertiesChangeListener.class);
- if (lc != null)
- {
- Iterator it= lc.iterator();
- while (it.hasNext())
- {
- XPropertiesChangeListener listener = (XPropertiesChangeListener) it.next();
- // fire the hole event sequence to the XPropertiesChangeListener's
- listener.propertiesChange( arEvts );
- }
- }
- }
- }
- }
- // XFastPropertySet--------------------------------------------------------------------------------
- public void setFastPropertyValue(int nHandle, Object aValue ) throws UnknownPropertyException,
- PropertyVetoException, com.sun.star.lang.IllegalArgumentException, WrappedTargetException
- {
- Property prop= getPropertyByHandle(nHandle);
- if (prop == null)
- throw new UnknownPropertyException(" The property with handle : " + nHandle +" is unknown");
- setPropertyValue(prop, aValue);
- }
-
- // XFastPropertySet --------------------------------------------------------------------------------
- public Object getFastPropertyValue(int nHandle ) throws UnknownPropertyException,
- WrappedTargetException
- {
- Property prop= getPropertyByHandle(nHandle);
- if (prop == null)
- throw new UnknownPropertyException("The property with handle : " + nHandle + " is unknown");
- return getPropertyValue(prop);
- }
-
- // XMultiPropertySet -----------------------------------------------------------------------------------
- public void addPropertiesChangeListener(String[] propNames, XPropertiesChangeListener listener)
- {
- listenerContainer.addInterface(XPropertiesChangeListener.class, listener);
- }
-
- // XMultiPropertySet -----------------------------------------------------------------------------------
- public void firePropertiesChangeEvent(String[] propNames, XPropertiesChangeListener listener)
- {
- // Build the events.
- PropertyChangeEvent[] arEvents= new PropertyChangeEvent[propNames.length];
- int eventCount= 0;
- // get a snapshot of the current property values
- synchronized (this)
- {
- for (int i= 0; i < propNames.length; i++)
- {
- Property prop= getProperty(propNames[i]);
- if (prop != null)
- {
- Object value= null;
- try
- {
- value= getPropertyValue(prop);
- }
- catch(Exception e)
- {
- continue;
- }
- arEvents[eventCount]= new PropertyChangeEvent(this, prop.Name,
- false, prop.Handle, value, value);
- eventCount++;
- }
- }
- }
-
- // fire events from unsynchronized section so as to prevent deadlocks
- if (eventCount > 0)
- {
- // Reallocate the array of the events if necessary
- if (arEvents.length != eventCount)
- {
- PropertyChangeEvent[] arPropsTmp= new PropertyChangeEvent[eventCount];
- System.arraycopy(arEvents, 0, arPropsTmp, 0, eventCount);
- arEvents= arPropsTmp;
- }
- listener.propertiesChange(arEvents);
- }
- }
- // XMultiPropertySet -----------------------------------------------------------------------------------
- /** If a value for a property could not be retrieved then the respective element in the returned
- * array has the value null.
- */
- public Object[] getPropertyValues(String[] propNames)
- {
- Object[] arValues= new Object[propNames.length];
- synchronized (this)
- {
- for (int i= 0; i < propNames.length; i++)
- {
- Object value= null;
- try
- {
- value= getPropertyValue(propNames[i]);
- }
- catch (Exception e)
- {
- }
- arValues[i]= value;
- }
- }
- return arValues;
- }
- // XMultiPropertySet -----------------------------------------------------------------------------------
- public void removePropertiesChangeListener(XPropertiesChangeListener xPropertiesChangeListener)
- {
- listenerContainer.removeInterface(XPropertiesChangeListener.class, xPropertiesChangeListener);
- }
- // XMultiPropertySet -----------------------------------------------------------------------------------
- /** If the array of property names containes an unknown property then it will be ignored.
- */
- public void setPropertyValues(String[] propNames, Object[] values) throws PropertyVetoException, com.sun.star.lang.IllegalArgumentException, com.sun.star.lang.WrappedTargetException
- {
- for (int i= 0; i < propNames.length; i++)
- {
- try
- {
- setPropertyValue(propNames[i], values[i]);
- }
- catch (UnknownPropertyException e)
- {
- continue;
- }
-
- }
- }
-
- private class PropertySetInfo implements XPropertySetInfo
- {
- public com.sun.star.beans.Property[] getProperties()
- {
- return PropertySet.this.getProperties();
- }
-
- public com.sun.star.beans.Property getPropertyByName(String name) throws UnknownPropertyException
- {
- return getProperty(name);
- }
-
- public boolean hasPropertyByName(String name)
- {
- return getProperty(name) != null;
- }
-
- }
-}
-
-
-
-
-
diff --git a/javaunohelper/com/sun/star/lib/uno/helper/PropertySetMixin.java b/javaunohelper/com/sun/star/lib/uno/helper/PropertySetMixin.java
deleted file mode 100644
index 643cd43f1..000000000
--- a/javaunohelper/com/sun/star/lib/uno/helper/PropertySetMixin.java
+++ /dev/null
@@ -1,1093 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-package com.sun.star.lib.uno.helper;
-
-import com.sun.star.beans.Property;
-import com.sun.star.beans.PropertyAttribute;
-import com.sun.star.beans.PropertyChangeEvent;
-import com.sun.star.beans.PropertyState;
-import com.sun.star.beans.PropertyValue;
-import com.sun.star.beans.PropertyVetoException;
-import com.sun.star.beans.UnknownPropertyException;
-import com.sun.star.beans.XPropertyChangeListener;
-import com.sun.star.beans.XPropertySetInfo;
-import com.sun.star.beans.XVetoableChangeListener;
-import com.sun.star.container.NoSuchElementException;
-import com.sun.star.container.XHierarchicalNameAccess;
-import com.sun.star.lang.DisposedException;
-import com.sun.star.lang.EventObject;
-import com.sun.star.lang.WrappedTargetException;
-import com.sun.star.lang.WrappedTargetRuntimeException;
-import com.sun.star.lang.XComponent;
-import com.sun.star.reflection.XCompoundTypeDescription;
-import com.sun.star.reflection.XIdlClass;
-import com.sun.star.reflection.XIdlField2;
-import com.sun.star.reflection.XIdlReflection;
-import com.sun.star.reflection.XIndirectTypeDescription;
-import com.sun.star.reflection.XInterfaceAttributeTypeDescription2;
-import com.sun.star.reflection.XInterfaceMemberTypeDescription;
-import com.sun.star.reflection.XInterfaceTypeDescription2;
-import com.sun.star.reflection.XStructTypeDescription;
-import com.sun.star.reflection.XTypeDescription;
-import com.sun.star.uno.Any;
-import com.sun.star.uno.AnyConverter;
-import com.sun.star.uno.DeploymentException;
-import com.sun.star.uno.Type;
-import com.sun.star.uno.TypeClass;
-import com.sun.star.uno.UnoRuntime;
-import com.sun.star.uno.XComponentContext;
-import com.sun.star.uno.XInterface;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.Vector;
-
-/**
- A helper mixin to implement certain UNO interfaces related to property set
- handling on top of the attributes of a given UNO interface type.
-
- <p>A client will mix in this class by keeping a reference to an instance of
- this class, and forwarding all methods of (a subset of the interfaces)
- <code>com.sun.star.beans.XPropertySet</code>,
- <code>com.sun.star.beans.XFastPropertySet</code>, and
- <code>com.sun.star.beans.XPropertyAccess</code> to it.</p>
-
- <p>Client code should not use the monitors associated with instances of this
- class, as they are used for internal purposes.</p>
-
- @since UDK 3.2
-*/
-public final class PropertySetMixin {
- /**
- The constructor.
-
- @param context the component context used by this instance; must not be
- null, and must supply the service
- <code>com.sun.star.reflection.CoreReflection</code> and the singleton
- <code>com.sun.star.reflection.theTypeDescriptionManager</code>
-
- @param object the client UNO object into which this instance is mixed in;
- must not be null, and must support the given <code>type</code>
-
- @param type the UNO interface type whose attributes are mapped to
- properties; must not be null, and must represent a UNO interface type
-
- @param absentOptional a list of optional properties that are not present,
- and should thus not be visible via
- <code>com.sun.star.beans.XPropertySet.getPropertySetInfo</code>,
- <code>com.sun.star.beans.XPropertySet.addPropertyChangeListener</code>,
- <code>com.sun.star.beans.XPropertySet.removePropertyChangeListener<!--
- --></code>,
- <code>com.sun.star.beans.XPropertySet.addVetoableChangeListener</code>,
- and <code>com.sun.star.beans.XPropertySet.<!--
- -->removeVetoableChangeListener</code>; null is treated the same as an
- empty list; if non-null, the given array must not be modified after it is
- passed to this constructor. For consistency reasons, the given
- <code>absentOptional</code> should only contain the names of attributes
- that represent optional properties that are not present (that is, the
- attribute getters and setters always throw a
- <code>com.sun.star.beans.UnknownPropertyException</code>), and should
- contain each such name only once. If an optional property is not present
- (that is, the corresponding attribute getter and setter always throw a
- <code>com.sun.star.beans.UnknownPropertyException</code>) but is not
- contained in the given <code>absentOptional</code>, then it will be
- visible via
- <code>com.sun.star.beans.XPropertySet.getPropertySetInfo</code> as a
- <code>com.sun.star.beans.Property</code> with a set
- <code>com.sun.star.beans.PropertyAttribute.OPTIONAL</code>. If the given
- <code>object</code> does not implement
- <code>com.sun.star.beans.XPropertySet</code>, then the given
- <code>absentOptional</code> is effectively ignored and can be null or
- empty.
- */
- public PropertySetMixin(
- XComponentContext context, XInterface object, Type type,
- String[] absentOptional)
- {
- // assert context != null && object != null && type != null
- // && type.getTypeClass() == TypeClass.INTERFACE;
- this.context = context;
- this.object = object;
- this.type = type;
- this.absentOptional = absentOptional;
- idlClass = getReflection(type.getTypeName());
- XTypeDescription ifc;
- try {
- ifc = UnoRuntime.queryInterface(
- XTypeDescription.class,
- (UnoRuntime.queryInterface(
- XHierarchicalNameAccess.class,
- context.getValueByName(
- "/singletons/com.sun.star.reflection."
- + "theTypeDescriptionManager")).
- getByHierarchicalName(type.getTypeName())));
- } catch (NoSuchElementException e) {
- throw new RuntimeException(
- "unexpected com.sun.star.container.NoSuchElementException: "
- + e.getMessage());
- }
- HashMap map = new HashMap();
- ArrayList handleNames = new ArrayList();
- initProperties(ifc, map, handleNames, new HashSet());
- properties = map;
- handleMap = (String[]) handleNames.toArray(
- new String[handleNames.size()]);
- }
-
- /**
- A method used by clients when implementing UNO interface type attribute
- setter functions.
-
- <p>First, this method checks whether this instance has already been
- disposed (see {@link #dispose}), and throws a
- <code>com.sun.star.beans.DisposedException</code> if applicable. For a
- constrained attribute (whose setter can explicitly raise
- <code>com.sun.star.beans.PropertyVetoException</code>), this method
- notifies any <code>com.sun.star.beans.XVetoableChangeListener</code>s.
- For a bound attribute, this method modifies the passed-in
- <code>bound</code> so that it can afterwards be used to notify any
- <code>com.sun.star.beans.XPropertyChangeListener</code>s. This method
- should be called before storing the new attribute value, and
- <code>bound.notifyListeners()</code> should be called exactly once after
- storing the new attribute value (in case the attribute is bound;
- otherwise, calling <code>bound.notifyListeners()</code> is ignored).
- Furthermore, <code>bound.notifyListeners()</code> and this method have to
- be called from the same thread.</p>
-
- @param propertyName the name of the property (which is the same as the
- name of the attribute that is going to be set)
-
- @param oldValue the property value corresponding to the old attribute
- value. This is only used as
- <code>com.sun.star.beans.PropertyChangeEvent.OldValue</code>, which is
- rather useless, anyway (see &ldquo;Using the Observer Pattern&rdquo; in
- <a href="http://tools.openoffice.org/CodingGuidelines.sxw">
- <cite>OpenOffice.org Coding Guidelines</cite></a>). If the attribute
- that is going to be set is neither bound nor constrained, or if
- <code>com.sun.star.beans.PropertyChangeEvent.OldValue</code> should not
- be set, {@link Any#VOID} can be used instead.
-
- @param newValue the property value corresponding to the new
- attribute value. This is only used as
- <code>com.sun.star.beans.PropertyChangeEvent.NewValue</code>, which is
- rather useless, anyway (see &ldquo;Using the Observer Pattern&rdquo: in
- <a href="http://tools.openoffice.org/CodingGuidelines.sxw">
- <cite>OpenOffice.org Coding Guidelines</cite></a>), <em>unless</em> the
- attribute that is going to be set is constrained. If the attribute
- that is going to be set is neither bound nor constrained, or if it is
- only bound but
- <code>com.sun.star.beans.PropertyChangeEvent.NewValue</code> should not
- be set, {@link Any#VOID} can be used instead.
-
- @param bound a reference to a fresh {@link BoundListeners} instance
- (which has not been passed to this method before, and on which
- {@link BoundListeners#notifyListeners} has not yet been called); may only
- be null if the attribute that is going to be set is not bound
- */
- public void prepareSet(
- String propertyName, Object oldValue, Object newValue,
- BoundListeners bound)
- throws PropertyVetoException
- {
- // assert properties.get(propertyName) != null;
- Property p = ((PropertyData) properties.get(propertyName)).property;
- Vector specificVeto = null;
- Vector unspecificVeto = null;
- synchronized (this) {
- if (disposed) {
- throw new DisposedException("disposed", object);
- }
- if ((p.Attributes & PropertyAttribute.CONSTRAINED) != 0) {
- Object o = vetoListeners.get(propertyName);
- if (o != null) {
- specificVeto = (Vector) ((Vector) o).clone();
- }
- o = vetoListeners.get("");
- if (o != null) {
- unspecificVeto = (Vector) ((Vector) o).clone();
- }
- }
- if ((p.Attributes & PropertyAttribute.BOUND) != 0) {
- // assert bound != null;
- Object o = boundListeners.get(propertyName);
- if (o != null) {
- bound.specificListeners = (Vector) ((Vector) o).clone();
- }
- o = boundListeners.get("");
- if (o != null) {
- bound.unspecificListeners = (Vector) ((Vector) o).clone();
- }
- }
- }
- if ((p.Attributes & PropertyAttribute.CONSTRAINED) != 0) {
- PropertyChangeEvent event = new PropertyChangeEvent(
- object, propertyName, false, p.Handle, oldValue, newValue);
- if (specificVeto != null) {
- for (Iterator i = specificVeto.iterator(); i.hasNext();) {
- try {
- ((XVetoableChangeListener) i.next()).vetoableChange(
- event);
- } catch (DisposedException e) {}
- }
- }
- if (unspecificVeto != null) {
- for (Iterator i = unspecificVeto.iterator(); i.hasNext();) {
- try {
- ((XVetoableChangeListener) i.next()).vetoableChange(
- event);
- } catch (DisposedException e) {}
- }
- }
- }
- if ((p.Attributes & PropertyAttribute.BOUND) != 0) {
- // assert bound != null;
- bound.event = new PropertyChangeEvent(
- object, propertyName, false, p.Handle, oldValue, newValue);
- }
- }
-
- /**
- A simplified version of {@link #prepareSet(String, Object, Object,
- PropertySetMixin.BoundListeners)}.
-
- <p>This method is useful for attributes that are not constrained.</p>
-
- @param propertyName the name of the property (which is the same as the
- name of the attribute that is going to be set)
-
- @param bound a reference to a fresh {@link BoundListeners} instance
- (which has not been passed to this method before, and on which
- {@link BoundListeners#notifyListeners} has not yet been called); may only
- be null if the attribute that is going to be set is not bound
- */
- public void prepareSet(String propertyName, BoundListeners bound) {
- try {
- prepareSet(propertyName, Any.VOID, Any.VOID, bound);
- } catch (PropertyVetoException e) {
- throw new RuntimeException("unexpected " + e);
- }
- }
-
- /**
- Marks this instance as being disposed.
-
- <p>See <code>com.sun.star.lang.XComponent</code> for the general concept
- of disposing UNO objects. On the first call to this method, all
- registered listeners
- (<code>com.sun.star.beans.XPropertyChangeListener</code>s and
- <code>com.sun.star.beans.XVetoableChangeListener</code>s) are notified of
- the disposing source. Any subsequent calls to this method are
- ignored.</p>
- */
- public void dispose() {
- HashMap bound;
- HashMap veto;
- synchronized (this) {
- bound = boundListeners;
- boundListeners = null;
- veto = vetoListeners;
- vetoListeners = null;
- disposed = true;
- }
- EventObject event = new EventObject(object);
- if (bound != null) {
- for (Iterator i = bound.values().iterator(); i.hasNext();) {
- for (Iterator j = ((Vector) i.next()).iterator(); j.hasNext();)
- {
- ((XPropertyChangeListener) j.next()).disposing(event);
- }
- }
- }
- if (veto != null) {
- for (Iterator i = veto.values().iterator(); i.hasNext();) {
- for (Iterator j = ((Vector) i.next()).iterator(); j.hasNext();)
- {
- ((XVetoableChangeListener) j.next()).disposing(event);
- }
- }
- }
- }
-
- /**
- Implements
- <code>com.sun.star.beans.XPropertySet.getPropertySetInfo</code>.
- */
- public XPropertySetInfo getPropertySetInfo() {
- return new Info(properties);
- }
-
- /**
- Implements <code>com.sun.star.beans.XPropertySet.setPropertyValue</code>.
- */
- public void setPropertyValue(String propertyName, Object value)
- throws UnknownPropertyException, PropertyVetoException,
- com.sun.star.lang.IllegalArgumentException, WrappedTargetException
- {
- setProperty(propertyName, value, false, false, (short) 1);
- }
-
- /**
- Implements <code>com.sun.star.beans.XPropertySet.getPropertyValue</code>.
- */
- public Object getPropertyValue(String propertyName)
- throws UnknownPropertyException, WrappedTargetException
- {
- return getProperty(propertyName, null);
- }
-
- /**
- Implements
- <code>com.sun.star.beans.XPropertySet.addPropertyChangeListener</code>.
-
- <p>If a listener is added more than once, it will receive all relevant
- notifications multiple times.</p>
- */
- public void addPropertyChangeListener(
- String propertyName, XPropertyChangeListener listener)
- throws UnknownPropertyException, WrappedTargetException
- {
- // assert listener != null;
- checkUnknown(propertyName);
- boolean disp;
- synchronized (this) {
- disp = disposed;
- if (!disp) {
- Vector v = (Vector) boundListeners.get(propertyName);
- if (v == null) {
- v = new Vector();
- boundListeners.put(propertyName, v);
- }
- v.add(listener);
- }
- }
- if (disp) {
- listener.disposing(new EventObject(object));
- }
- }
-
- /**
- Implements <code>
- com.sun.star.beans.XPropertySet.removePropertyChangeListener</code>.
- */
- public void removePropertyChangeListener(
- String propertyName, XPropertyChangeListener listener)
- throws UnknownPropertyException, WrappedTargetException
- {
- // assert listener != null;
- checkUnknown(propertyName);
- synchronized (this) {
- if (boundListeners != null) {
- Vector v = (Vector) boundListeners.get(propertyName);
- if (v != null) {
- v.remove(listener);
- }
- }
- }
- }
-
- /**
- Implements
- <code>com.sun.star.beans.XPropertySet.addVetoableChangeListener</code>.
-
- <p>If a listener is added more than once, it will receive all relevant
- notifications multiple times.</p>
- */
- public void addVetoableChangeListener(
- String propertyName, XVetoableChangeListener listener)
- throws UnknownPropertyException, WrappedTargetException
- {
- // assert listener != null;
- checkUnknown(propertyName);
- boolean disp;
- synchronized (this) {
- disp = disposed;
- if (!disp) {
- Vector v = (Vector) vetoListeners.get(propertyName);
- if (v == null) {
- v = new Vector();
- vetoListeners.put(propertyName, v);
- }
- v.add(listener);
- }
- }
- if (disp) {
- listener.disposing(new EventObject(object));
- }
- }
-
- /**
- Implements <code>
- com.sun.star.beans.XPropertySet.removeVetoableChangeListener</code>.
- */
- public void removeVetoableChangeListener(
- String propertyName, XVetoableChangeListener listener)
- throws UnknownPropertyException, WrappedTargetException
- {
- // assert listener != null;
- checkUnknown(propertyName);
- synchronized (this) {
- if (vetoListeners != null) {
- Vector v = (Vector) vetoListeners.get(propertyName);
- if (v != null) {
- v.remove(listener);
- }
- }
- }
- }
-
- /**
- Implements
- <code>com.sun.star.beans.XFastPropertySet.setFastPropertyValue</code>.
- */
- public void setFastPropertyValue(int handle, Object value)
- throws UnknownPropertyException, PropertyVetoException,
- com.sun.star.lang.IllegalArgumentException, WrappedTargetException
- {
- setProperty(translateHandle(handle), value, false, false, (short) 1);
- }
-
- /**
- Implements
- <code>com.sun.star.beans.XFastPropertySet.getFastPropertyValue</code>.
- */
- public Object getFastPropertyValue(int handle)
- throws UnknownPropertyException, WrappedTargetException
- {
- return getProperty(translateHandle(handle), null);
- }
-
- /**
- Implements
- <code>com.sun.star.beans.XPropertyAccess.getPropertyValues</code>.
- */
- public PropertyValue[] getPropertyValues() {
- PropertyValue[] s = new PropertyValue[handleMap.length];
- int n = 0;
- for (int i = 0; i < handleMap.length; ++i) {
- PropertyState[] state = new PropertyState[1];
- Object value;
- try {
- value = getProperty(handleMap[i], state);
- } catch (UnknownPropertyException e) {
- continue;
- } catch (WrappedTargetException e) {
- throw new WrappedTargetRuntimeException(
- e.getMessage(), object, e.TargetException);
- }
- s[n++] = new PropertyValue(handleMap[i], i, value, state[0]);
- }
- if (n < handleMap.length) {
- PropertyValue[] s2 = new PropertyValue[n];
- System.arraycopy(s, 0, s2, 0, n);
- s = s2;
- }
- return s;
- }
-
- /**
- Implements
- <code>com.sun.star.beans.XPropertyAccess.setPropertyValues</code>.
- */
- public void setPropertyValues(PropertyValue[] props)
- throws UnknownPropertyException, PropertyVetoException,
- com.sun.star.lang.IllegalArgumentException, WrappedTargetException
- {
- for (int i = 0; i < props.length; ++i) {
- if (props[i].Handle != -1
- && !props[i].Name.equals(translateHandle(props[i].Handle)))
- {
- throw new UnknownPropertyException(
- ("name " + props[i].Name + " does not match handle "
- + props[i].Handle),
- object);
- }
- setProperty(
- props[i].Name, props[i].Value,
- props[i].State == PropertyState.AMBIGUOUS_VALUE,
- props[i].State == PropertyState.DEFAULT_VALUE, (short) 0);
- }
- }
-
- /**
- A class used by clients of {@link PropertySetMixin} when implementing UNO
- interface type attribute setter functions.
-
- @see #prepareSet(String, Object, Object, PropertySetMixin.BoundListeners)
- */
- public static final class BoundListeners {
- /**
- The constructor.
- */
- public BoundListeners() {}
-
- /**
- Notifies any
- <code>com.sun.star.beans.XPropertyChangeListener</code>s.
-
- @see #prepareSet(String, Object, Object,
- PropertySetMixin.BoundListeners)
- */
- public void notifyListeners() {
- if (specificListeners != null) {
- for (Iterator i = specificListeners.iterator(); i.hasNext();) {
- try {
- ((XPropertyChangeListener) i.next()).propertyChange(
- event);
- } catch (DisposedException e) {}
- }
- }
- if (unspecificListeners != null) {
- for (Iterator i = unspecificListeners.iterator(); i.hasNext();)
- {
- try {
- ((XPropertyChangeListener) i.next()).propertyChange(
- event);
- } catch (DisposedException e) {}
- }
- }
- }
-
- private Vector specificListeners = null;
- private Vector unspecificListeners = null;
- private PropertyChangeEvent event = null;
- }
-
- private XIdlClass getReflection(String typeName) {
- XIdlReflection refl;
- try {
- refl = UnoRuntime.queryInterface(
- XIdlReflection.class,
- context.getServiceManager().createInstanceWithContext(
- "com.sun.star.reflection.CoreReflection", context));
- } catch (com.sun.star.uno.Exception e) {
- throw new DeploymentException(
- ("component context fails to supply service"
- + " com.sun.star.reflection.CoreReflection: "
- + e.getMessage()),
- context);
- }
- try {
- return refl.forName(typeName);
- } finally {
- XComponent comp = UnoRuntime.queryInterface(XComponent.class, refl);
- if (comp != null) {
- comp.dispose();
- }
- }
- }
-
- private void initProperties(
- XTypeDescription type, HashMap map, ArrayList handleNames, HashSet seen)
- {
- XInterfaceTypeDescription2 ifc = UnoRuntime.queryInterface(
- XInterfaceTypeDescription2.class, resolveTypedefs(type));
- if (seen.add(ifc.getName())) {
- XTypeDescription[] bases = ifc.getBaseTypes();
- for (int i = 0; i < bases.length; ++i) {
- initProperties(bases[i], map, handleNames, seen);
- }
- XInterfaceMemberTypeDescription[] members = ifc.getMembers();
- for (int i = 0; i < members.length; ++i) {
- if (members[i].getTypeClass() == TypeClass.INTERFACE_ATTRIBUTE)
- {
- XInterfaceAttributeTypeDescription2 attr =
- UnoRuntime.queryInterface(
- XInterfaceAttributeTypeDescription2.class,
- members[i]);
- short attrAttribs = 0;
- if (attr.isBound()) {
- attrAttribs |= PropertyAttribute.BOUND;
- }
- boolean setUnknown = false;
- if (attr.isReadOnly()) {
- attrAttribs |= PropertyAttribute.READONLY;
- setUnknown = true;
- }
- XCompoundTypeDescription[] excs = attr.getGetExceptions();
- boolean getUnknown = false;
- //XXX Special interpretation of getter/setter exceptions
- // only works if the specified exceptions are of the exact
- // type, not of a supertype:
- for (int j = 0; j < excs.length; ++j) {
- if (excs[j].getName().equals(
- "com.sun.star.beans.UnknownPropertyException"))
- {
- getUnknown = true;
- break;
- }
- }
- excs = attr.getSetExceptions();
- for (int j = 0; j < excs.length; ++j) {
- if (excs[j].getName().equals(
- "com.sun.star.beans.UnknownPropertyException"))
- {
- setUnknown = true;
- } else if (excs[j].getName().equals(
- "com.sun.star.beans."
- + "PropertyVetoException"))
- {
- attrAttribs |= PropertyAttribute.CONSTRAINED;
- }
- }
- if (getUnknown && setUnknown) {
- attrAttribs |= PropertyAttribute.OPTIONAL;
- }
- XTypeDescription t = attr.getType();
- for (;;) {
- t = resolveTypedefs(t);
- short n;
- if (t.getName().startsWith(
- "com.sun.star.beans.Ambiguous<"))
- {
- n = PropertyAttribute.MAYBEAMBIGUOUS;
- } else if (t.getName().startsWith(
- "com.sun.star.beans.Defaulted<"))
- {
- n = PropertyAttribute.MAYBEDEFAULT;
- } else if (t.getName().startsWith(
- "com.sun.star.beans.Optional<"))
- {
- n = PropertyAttribute.MAYBEVOID;
- } else {
- break;
- }
- attrAttribs |= n;
- t = (UnoRuntime.queryInterface(
- XStructTypeDescription.class, t)).
- getTypeArguments()[0];
- }
- String name = members[i].getMemberName();
- boolean present = true;
- if (absentOptional != null) {
- for (int j = 0; j < absentOptional.length; ++j) {
- if (name.equals(absentOptional[j])) {
- present = false;
- break;
- }
- }
- }
- if (map.put(
- name,
- new PropertyData(
- new Property(
- name, handleNames.size(),
- new Type(t.getName(), t.getTypeClass()),
- attrAttribs),
- present))
- != null)
- {
- throw new RuntimeException(
- "inconsistent UNO type registry");
- }
- handleNames.add(name);
- }
- }
- }
- }
-
- private String translateHandle(int handle) throws UnknownPropertyException {
- if (handle < 0 || handle >= handleMap.length) {
- throw new UnknownPropertyException("bad handle " + handle, object);
- }
- return handleMap[handle];
- }
-
- private void setProperty(
- String name, Object value, boolean isAmbiguous, boolean isDefaulted,
- short illegalArgumentPosition)
- throws UnknownPropertyException, PropertyVetoException,
- com.sun.star.lang.IllegalArgumentException, WrappedTargetException
- {
- PropertyData p = (PropertyData) properties.get(name);
- if (p == null) {
- throw new UnknownPropertyException(name, object);
- }
- if ((isAmbiguous
- && (p.property.Attributes & PropertyAttribute.MAYBEAMBIGUOUS) == 0)
- || (isDefaulted
- && ((p.property.Attributes & PropertyAttribute.MAYBEDEFAULT)
- == 0)))
- {
- throw new com.sun.star.lang.IllegalArgumentException(
- ("flagging as ambiguous/defaulted non-ambiguous/defaulted"
- + " property " + name),
- object, illegalArgumentPosition);
-
- }
- XIdlField2 f = UnoRuntime.queryInterface(
- XIdlField2.class, idlClass.getField(name));
- Object[] o = new Object[] {
- new Any(type, UnoRuntime.queryInterface(type, object)) };
- Object v = wrapValue(
- value,
- UnoRuntime.queryInterface(
- XIdlField2.class, idlClass.getField(name)).getType(),
- (p.property.Attributes & PropertyAttribute.MAYBEAMBIGUOUS) != 0,
- isAmbiguous,
- (p.property.Attributes & PropertyAttribute.MAYBEDEFAULT) != 0,
- isDefaulted,
- (p.property.Attributes & PropertyAttribute.MAYBEVOID) != 0);
- try {
- f.set(o, v);
- } catch (com.sun.star.lang.IllegalArgumentException e) {
- if (e.ArgumentPosition == 1) {
- throw new com.sun.star.lang.IllegalArgumentException(
- e.getMessage(), object, illegalArgumentPosition);
- } else {
- throw new RuntimeException(
- "unexpected com.sun.star.lang.IllegalArgumentException: "
- + e.getMessage());
- }
- } catch (com.sun.star.lang.IllegalAccessException e) {
- //TODO Clarify whether PropertyVetoException is the correct
- // exception to throw when trying to set a read-only property:
- throw new PropertyVetoException(
- "cannot set read-only property " + name, object);
- } catch (WrappedTargetRuntimeException e) {
- //FIXME A WrappedTargetRuntimeException from XIdlField2.get is not
- // guaranteed to originate directly within XIdlField2.get (and thus
- // have the expected semantics); it might also be passed through
- // from lower layers.
- if (new Type(UnknownPropertyException.class).isSupertypeOf(
- AnyConverter.getType(e.TargetException))
- && (p.property.Attributes & PropertyAttribute.OPTIONAL) != 0)
- {
- throw new UnknownPropertyException(name, object);
- } else if (new Type(PropertyVetoException.class).isSupertypeOf(
- AnyConverter.getType(e.TargetException))
- && ((p.property.Attributes
- & PropertyAttribute.CONSTRAINED)
- != 0))
- {
- throw new PropertyVetoException(name, object);
- } else {
- throw new WrappedTargetException(
- e.getMessage(), object, e.TargetException);
- }
- }
- }
-
- Object getProperty(String name, PropertyState[] state)
- throws UnknownPropertyException, WrappedTargetException
- {
- PropertyData p = (PropertyData) properties.get(name);
- if (p == null) {
- throw new UnknownPropertyException(name, object);
- }
- XIdlField2 field = UnoRuntime.queryInterface(
- XIdlField2.class, idlClass.getField(name));
- Object value;
- try {
- value = field.get(
- new Any(type, UnoRuntime.queryInterface(type, object)));
- } catch (com.sun.star.lang.IllegalArgumentException e) {
- throw new RuntimeException(
- "unexpected com.sun.star.lang.IllegalArgumentException: "
- + e.getMessage());
- } catch (WrappedTargetRuntimeException e) {
- //FIXME A WrappedTargetRuntimeException from XIdlField2.get is not
- // guaranteed to originate directly within XIdlField2.get (and thus
- // have the expected semantics); it might also be passed through
- // from lower layers.
- if (new Type(UnknownPropertyException.class).isSupertypeOf(
- AnyConverter.getType(e.TargetException))
- && (p.property.Attributes & PropertyAttribute.OPTIONAL) != 0)
- {
- throw new UnknownPropertyException(name, object);
- } else {
- throw new WrappedTargetException(
- e.getMessage(), object, e.TargetException);
- }
- }
- boolean undoAmbiguous
- = (p.property.Attributes & PropertyAttribute.MAYBEAMBIGUOUS) != 0;
- boolean undoDefaulted
- = (p.property.Attributes & PropertyAttribute.MAYBEDEFAULT) != 0;
- boolean undoOptional
- = (p.property.Attributes & PropertyAttribute.MAYBEVOID) != 0;
- boolean isAmbiguous = false;
- boolean isDefaulted = false;
- while (undoAmbiguous || undoDefaulted || undoOptional) {
- String typeName = AnyConverter.getType(value).getTypeName();
- if (undoAmbiguous
- && typeName.startsWith("com.sun.star.beans.Ambiguous<"))
- {
- XIdlClass ambiguous = getReflection(typeName);
- try {
- isAmbiguous = AnyConverter.toBoolean(
- UnoRuntime.queryInterface(
- XIdlField2.class,
- ambiguous.getField("IsAmbiguous")).get(value));
- value = UnoRuntime.queryInterface(
- XIdlField2.class,
- ambiguous.getField("Value")).get(value);
- } catch (com.sun.star.lang.IllegalArgumentException e) {
- throw new RuntimeException(
- "unexpected"
- + " com.sun.star.lang.IllegalArgumentException: "
- + e.getMessage());
- }
- undoAmbiguous = false;
- } else if (undoDefaulted
- && typeName.startsWith("com.sun.star.beans.Defaulted<"))
- {
- XIdlClass defaulted = getReflection(typeName);
- try {
- isDefaulted = AnyConverter.toBoolean(
- UnoRuntime.queryInterface(
- XIdlField2.class,
- defaulted.getField("IsDefaulted")).get(value));
- value = UnoRuntime.queryInterface(
- XIdlField2.class,
- defaulted.getField("Value")).get(value);
- } catch (com.sun.star.lang.IllegalArgumentException e) {
- throw new RuntimeException(
- "unexpected"
- + " com.sun.star.lang.IllegalArgumentException: "
- + e.getMessage());
- }
- undoDefaulted = false;
- } else if (undoOptional
- && typeName.startsWith("com.sun.star.beans.Optional<"))
- {
- XIdlClass optional = getReflection(typeName);
- try {
- boolean present = AnyConverter.toBoolean(
- UnoRuntime.queryInterface(
- XIdlField2.class,
- optional.getField("IsPresent")).get(value));
- if (!present) {
- value = Any.VOID;
- break;
- }
- value = UnoRuntime.queryInterface(
- XIdlField2.class,
- optional.getField("Value")).get(value);
- } catch (com.sun.star.lang.IllegalArgumentException e) {
- throw new RuntimeException(
- "unexpected"
- + " com.sun.star.lang.IllegalArgumentException: "
- + e.getMessage());
- }
- undoOptional = false;
- } else {
- throw new RuntimeException(
- "unexpected type of attribute " + name);
- }
- }
- if (state != null) {
- //XXX If isAmbiguous && isDefaulted, arbitrarily choose
- // AMBIGUOUS_VALUE over DEFAULT_VALUE:
- state[0] = isAmbiguous
- ? PropertyState.AMBIGUOUS_VALUE
- : isDefaulted
- ? PropertyState.DEFAULT_VALUE : PropertyState.DIRECT_VALUE;
- }
- return value;
- }
-
- private Object wrapValue(
- Object value, XIdlClass type, boolean wrapAmbiguous,
- boolean isAmbiguous, boolean wrapDefaulted, boolean isDefaulted,
- boolean wrapOptional)
- {
- // assert (wrapAmbiguous || !isAmbiguous)
- // && (wrapDefaulted || !isDefaulted);
- if (wrapAmbiguous
- && type.getName().startsWith("com.sun.star.beans.Ambiguous<"))
- {
- Object[] strct = new Object[1];
- type.createObject(strct);
- try {
- XIdlField2 field = UnoRuntime.queryInterface(
- XIdlField2.class, type.getField("Value"));
- field.set(
- strct,
- wrapValue(
- value, field.getType(), false, false, wrapDefaulted,
- isDefaulted, wrapOptional));
- UnoRuntime.queryInterface(
- XIdlField2.class, type.getField("IsAmbiguous")).set(
- strct, new Boolean(isAmbiguous));
- } catch (com.sun.star.lang.IllegalArgumentException e) {
- throw new RuntimeException(
- "unexpected com.sun.star.lang.IllegalArgumentException: "
- + e.getMessage());
- } catch (com.sun.star.lang.IllegalAccessException e) {
- throw new RuntimeException(
- "unexpected com.sun.star.lang.IllegalAccessException: "
- + e.getMessage());
- }
- return strct[0];
- } else if (wrapDefaulted
- && type.getName().startsWith(
- "com.sun.star.beans.Defaulted<"))
- {
- Object[] strct = new Object[1];
- type.createObject(strct);
- try {
- XIdlField2 field = UnoRuntime.queryInterface(
- XIdlField2.class, type.getField("Value"));
- field.set(
- strct,
- wrapValue(
- value, field.getType(), wrapAmbiguous, isAmbiguous,
- false, false, wrapOptional));
- UnoRuntime.queryInterface(
- XIdlField2.class, type.getField("IsDefaulted")).set(
- strct, new Boolean(isDefaulted));
- } catch (com.sun.star.lang.IllegalArgumentException e) {
- throw new RuntimeException(
- "unexpected com.sun.star.lang.IllegalArgumentException: "
- + e.getMessage());
- } catch (com.sun.star.lang.IllegalAccessException e) {
- throw new RuntimeException(
- "unexpected com.sun.star.lang.IllegalAccessException: "
- + e.getMessage());
- }
- return strct[0];
- } else if (wrapOptional
- && type.getName().startsWith("com.sun.star.beans.Optional<"))
- {
- Object[] strct = new Object[1];
- type.createObject(strct);
- boolean present = !AnyConverter.isVoid(value);
- try {
- UnoRuntime.queryInterface(
- XIdlField2.class, type.getField("IsPresent")).set(
- strct, new Boolean(present));
- if (present) {
- XIdlField2 field = UnoRuntime.queryInterface(
- XIdlField2.class, type.getField("Value"));
- field.set(
- strct,
- wrapValue(
- value, field.getType(), wrapAmbiguous, isAmbiguous,
- wrapDefaulted, isDefaulted, false));
- }
- } catch (com.sun.star.lang.IllegalArgumentException e) {
- throw new RuntimeException(
- "unexpected com.sun.star.lang.IllegalArgumentException: "
- + e.getMessage());
- } catch (com.sun.star.lang.IllegalAccessException e) {
- throw new RuntimeException(
- "unexpected com.sun.star.lang.IllegalAccessException: "
- + e.getMessage());
- }
- return strct[0];
- } else {
- if (wrapAmbiguous || wrapDefaulted || wrapOptional) {
- throw new RuntimeException("unexpected type of attribute");
- }
- return value;
- }
- }
-
- private static XTypeDescription resolveTypedefs(XTypeDescription type) {
- while (type.getTypeClass() == TypeClass.TYPEDEF) {
- type = UnoRuntime.queryInterface(
- XIndirectTypeDescription.class, type).getReferencedType();
- }
- return type;
- }
-
- private PropertyData get(Object object, String propertyName)
- throws UnknownPropertyException
- {
- PropertyData p = (PropertyData) properties.get(propertyName);
- if (p == null || !p.present) {
- throw new UnknownPropertyException(propertyName, object);
- }
- return p;
- }
-
- private void checkUnknown(String propertyName)
- throws UnknownPropertyException
- {
- if (!propertyName.equals("")) {
- get(this, propertyName);
- }
- }
-
- private static final class PropertyData {
- public PropertyData(Property property, boolean present) {
- this.property = property;
- this.present = present;
- }
-
- public final Property property;
- public final boolean present;
- }
-
- private final class Info extends WeakBase implements XPropertySetInfo
- {
- public Info(Map properties) {
- this.properties = properties;
- }
-
- public Property[] getProperties() {
- ArrayList al = new ArrayList(properties.size());
- for (Iterator i = properties.values().iterator(); i.hasNext();) {
- PropertyData p = (PropertyData) i.next();
- if (p.present) {
- al.add(p.property);
- }
- }
- return (Property[]) al.toArray(new Property[al.size()]);
- }
-
- public Property getPropertyByName(String name)
- throws UnknownPropertyException
- {
- return get(this, name).property;
- }
-
- public boolean hasPropertyByName(String name) {
- PropertyData p = (PropertyData) properties.get(name);
- return p != null && p.present;
- }
-
- private final Map properties; // from String to Property
- }
-
- private final XComponentContext context;
- private final XInterface object;
- private final Type type;
- private final String[] absentOptional;
- private final XIdlClass idlClass;
- private final Map properties; // from String to Property
- private final String[] handleMap;
-
- private HashMap boundListeners = new HashMap();
- // from String to Vector of XPropertyChangeListener
- private HashMap vetoListeners = new HashMap();
- // from String to Vector of XVetoableChangeListener
- private boolean disposed = false;
-}
diff --git a/javaunohelper/com/sun/star/lib/uno/helper/UnoUrl.java b/javaunohelper/com/sun/star/lib/uno/helper/UnoUrl.java
deleted file mode 100644
index a413ab43f..000000000
--- a/javaunohelper/com/sun/star/lib/uno/helper/UnoUrl.java
+++ /dev/null
@@ -1,412 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-package com.sun.star.lib.uno.helper;
-import java.io.UnsupportedEncodingException;
-import java.util.HashMap;
-import java.util.Vector;
-
-/**
- * Object representation and parsing of Uno Urls,
- * which allow to locate a named Uno object in a
- * different process. An Uno Url consists of the
- * specification of a connection, protocol and
- * rootOid delimited with a ';'.
- * The syntax of an Uno Url is
- *
- * <code>
- * [uno:]connection-type,parameters;protocol-name,parameters;objectname";
- * </code>
- *
- * An example Uno Url will look like this:
- *
- * <code>
- * socket,host=localhost,port=2002;urp;StarOffice.ServiceManager
- * </code>
- *
- * For more information about Uno Url please consult
- * <a href="http://udk.openoffice.org/common/man/spec/uno-url.html">
- * http://udk.openoffice.org/common/man/spec/uno-url.html</a>
- *
- * Usage:
- *
- * <code>
- * UnoUrl url = UnoUrl.parseUnoUrl("socket,host=localhost,port=2002;urp;StarOffice.ServiceManager");
- * </code>
- *
- * @author Joerg Brunsmann
- */
-public class UnoUrl {
-
- private static final String FORMAT_ERROR =
- "syntax: [uno:]connection-type,parameters;protocol-name,parameters;objectname";
-
- private static final String VALUE_CHAR_SET = "!$&'()*+-./:?@_~";
- private static final String OID_CHAR_SET = VALUE_CHAR_SET + ",=";
-
- private UnoUrlPart connection;
- private UnoUrlPart protocol;
- private String rootOid;
-
- static private class UnoUrlPart {
-
- private String partTypeName;
- private HashMap partParameters;
- private String uninterpretedParameterString;
-
- public UnoUrlPart(
- String uninterpretedParameterString,
- String partTypeName,
- HashMap partParameters) {
- this.uninterpretedParameterString = uninterpretedParameterString;
- this.partTypeName = partTypeName;
- this.partParameters = partParameters;
- }
-
- public String getPartTypeName() {
- return partTypeName;
- }
-
- public HashMap getPartParameters() {
- return partParameters;
- }
-
- public String getUninterpretedParameterString() {
- return uninterpretedParameterString;
- }
-
- public String getUninterpretedString() {
- StringBuffer buf = new StringBuffer(partTypeName);
- if (uninterpretedParameterString.length() > 0) {
- buf.append(',');
- buf.append(uninterpretedParameterString);
- }
- return buf.toString();
- }
- }
-
- private UnoUrl(
- UnoUrlPart connectionPart,
- UnoUrlPart protocolPart,
- String rootOid) {
- this.connection = connectionPart;
- this.protocol = protocolPart;
- this.rootOid = rootOid;
- }
-
- /**
- * Returns the name of the connection of this
- * Uno Url. Encoded characters are not allowed.
- *
- * @return The connection name as string.
- */
- public String getConnection() {
- return connection.getPartTypeName();
- }
-
- /**
- * Returns the name of the protocol of this
- * Uno Url. Encoded characters are not allowed.
- *
- * @return The protocol name as string.
- */
- public String getProtocol() {
- return protocol.getPartTypeName();
- }
-
- /**
- * Return the object name. Encoded character are
- * not allowed.
- *
- * @return The object name as String.
- */
- public String getRootOid() {
- return rootOid;
- }
-
- /**
- * Returns the protocol parameters as
- * a Hashmap with key/value pairs. Encoded
- * characters like '%41' are decoded.
- *
- * @return a HashMap with key/value pairs for protocol parameters.
- */
- public HashMap getProtocolParameters() {
- return protocol.getPartParameters();
- }
-
- /**
- * Returns the connection parameters as
- * a Hashmap with key/value pairs. Encoded
- * characters like '%41' are decoded.
- *
- * @return a HashMap with key/value pairs for connection parameters.
- */
- public HashMap getConnectionParameters() {
- return connection.getPartParameters();
- }
-
- /**
- * Returns the raw specification of the protocol
- * parameters. Encoded characters like '%41' are
- * not decoded.
- *
- * @return The uninterpreted protocol parameters as string.
- */
- public String getProtocolParametersAsString() {
- return protocol.getUninterpretedParameterString();
- }
-
- /**
- * Returns the raw specification of the connection
- * parameters. Encoded characters like '%41' are
- * not decoded.
- *
- * @return The uninterpreted connection parameters as string.
- */
- public String getConnectionParametersAsString() {
- return connection.getUninterpretedParameterString();
- }
-
- /**
- * Returns the raw specification of the protocol
- * name and parameters. Encoded characters like '%41' are
- * not decoded.
- *
- * @return The uninterpreted protocol name and parameters as string.
- */
- public String getProtocolAndParametersAsString() {
- return protocol.getUninterpretedString();
- }
-
- /**
- * Returns the raw specification of the connection
- * name and parameters. Encoded characters like '%41' are
- * not decoded.
- *
- * @return The uninterpreted connection name and parameters as string.
- */
- public String getConnectionAndParametersAsString() {
- return connection.getUninterpretedString();
- }
-
- private static int hexToInt(int ch)
- throws com.sun.star.lang.IllegalArgumentException {
- int c = Character.toLowerCase((char) ch);
- boolean isDigit = ('0' <= c && c <= '9');
- boolean isValidChar = ('a' <= c && c <= 'f') || isDigit;
-
- if (!isValidChar)
- throw new com.sun.star.lang.IllegalArgumentException(
- "Invalid UTF-8 hex byte '" + c + "'.");
-
- return isDigit ? ch - '0' : 10 + ((char) c - 'a') & 0xF;
- }
-
- private static String decodeUTF8(String s)
- throws com.sun.star.lang.IllegalArgumentException {
- Vector v = new Vector();
-
- for (int i = 0; i < s.length(); i++) {
- int ch = s.charAt(i);
-
- if (ch == '%') {
- int hb = hexToInt(s.charAt(++i));
- int lb = hexToInt(s.charAt(++i));
- ch = (hb << 4) | lb;
- }
-
- v.addElement(new Integer(ch));
- }
-
- int size = v.size();
- byte[] bytes = new byte[size];
- for (int i = 0; i < size; i++) {
- Integer anInt = (Integer) v.elementAt(i);
- bytes[i] = (byte) (anInt.intValue() & 0xFF);
- }
-
- try {
- return new String(bytes, "UTF-8");
- } catch (UnsupportedEncodingException e) {
- throw new com.sun.star.lang.IllegalArgumentException(
- "Couldn't convert parameter string to UTF-8 string:" + e.getMessage());
- }
- }
-
- private static HashMap buildParamHashMap(String paramString)
- throws com.sun.star.lang.IllegalArgumentException {
- HashMap params = new HashMap();
-
- int pos = 0;
-
- while (true) {
- char c = ',';
- String aKey = "";
- String aValue = "";
-
- while ((pos < paramString.length())
- && ((c = paramString.charAt(pos++)) != '=')) {
- aKey += c;
- }
-
- while ((pos < paramString.length())
- && ((c = paramString.charAt(pos++)) != ',')
- && c != ';') {
- aValue += c;
- }
-
- if ((aKey.length() > 0) && (aValue.length() > 0)) {
-
- if (!isAlphaNumeric(aKey)) {
- throw new com.sun.star.lang.IllegalArgumentException(
- "The parameter key '"
- + aKey
- + "' may only consist of alpha numeric ASCII characters.");
- }
-
- if (!isValidString(aValue, VALUE_CHAR_SET + "%")) {
- throw new com.sun.star.lang.IllegalArgumentException(
- "The parameter value for key '" + aKey + "' contains illegal characters.");
- }
-
- params.put(aKey, decodeUTF8(aValue));
- }
-
- if ((pos >= paramString.length()) || (c != ','))
- break;
-
- }
-
- return params;
- }
-
- private static UnoUrlPart parseUnoUrlPart(String thePart)
- throws com.sun.star.lang.IllegalArgumentException {
- String partName = thePart;
- String theParamPart = "";
- int index = thePart.indexOf(",");
- if (index != -1) {
- partName = thePart.substring(0, index).trim();
- theParamPart = thePart.substring(index + 1).trim();
- }
-
- if (!isAlphaNumeric(partName)) {
- throw new com.sun.star.lang.IllegalArgumentException(
- "The part name '"
- + partName
- + "' may only consist of alpha numeric ASCII characters.");
- }
-
- HashMap params = buildParamHashMap(theParamPart);
-
- return new UnoUrlPart(theParamPart, partName, params);
- }
-
- private static boolean isAlphaNumeric(String s) {
- return isValidString(s, null);
- }
-
- private static boolean isValidString(String identifier, String validCharSet) {
-
- int len = identifier.length();
-
- for (int i = 0; i < len; i++) {
-
- int ch = identifier.charAt(i);
-
- boolean isValidChar =
- ('A' <= ch && ch <= 'Z')
- || ('a' <= ch && ch <= 'z')
- || ('0' <= ch && ch <= '9');
-
- if (!isValidChar && (validCharSet != null)) {
- isValidChar = (validCharSet.indexOf(ch) != -1);
- }
-
- if (!isValidChar)
- return false;
- }
-
- return true;
- }
-
- /**
- * Parses the given Uno Url and returns
- * an in memory object representation.
- *
- * @param unoUrl The given uno URl as string.
- * @return Object representation of class UnoUrl.
- * @throws IllegalArgumentException if Url cannot be parsed.
- */
- public static UnoUrl parseUnoUrl(String unoUrl)
- throws com.sun.star.lang.IllegalArgumentException {
-
- String url = unoUrl;
-
- int index = url.indexOf(':');
- if (index != -1) {
- String unoStr = url.substring(0, index).trim();
- if (!"uno".equals(unoStr)) {
- throw new com.sun.star.lang.IllegalArgumentException(
- "Uno Urls must start with 'uno:'. " + FORMAT_ERROR);
- }
- }
-
- url = url.substring(index + 1).trim();
-
- index = url.indexOf(';');
- if (index == -1) {
- throw new com.sun.star.lang.IllegalArgumentException("'"+unoUrl+"' is an invalid Uno Url. " + FORMAT_ERROR);
- }
-
- String connection = url.substring(0, index).trim();
- url = url.substring(index + 1).trim();
-
- UnoUrlPart connectionPart = parseUnoUrlPart(connection);
-
- index = url.indexOf(';');
- if (index == -1) {
- throw new com.sun.star.lang.IllegalArgumentException("'"+unoUrl+"' is an invalid Uno Url. " + FORMAT_ERROR);
- }
-
- String protocol = url.substring(0, index).trim();
- url = url.substring(index + 1).trim();
-
- UnoUrlPart protocolPart = parseUnoUrlPart(protocol);
-
- String rootOid = url.trim();
- if (!isValidString(rootOid, OID_CHAR_SET)) {
- throw new com.sun.star.lang.IllegalArgumentException(
- "Root OID '"+ rootOid + "' contains illegal characters.");
- }
-
- return new UnoUrl(connectionPart, protocolPart, rootOid);
-
- }
-
-}
diff --git a/javaunohelper/com/sun/star/lib/uno/helper/WeakAdapter.java b/javaunohelper/com/sun/star/lib/uno/helper/WeakAdapter.java
deleted file mode 100644
index bda5a081b..000000000
--- a/javaunohelper/com/sun/star/lib/uno/helper/WeakAdapter.java
+++ /dev/null
@@ -1,102 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-package com.sun.star.lib.uno.helper;
-import java.lang.ref.WeakReference;
-import com.sun.star.uno.XAdapter;
-import com.sun.star.uno.XReference;
-import java.util.List;
-import java.util.Collections;
-import java.util.LinkedList;
-
-/** An XAdapter implementation that holds a weak reference (java.lang.ref.WeakReference)
- * to an object. Clients can register listener (com.sun.star.lang.XReference) which
- * are notified when the the object (the one which is kept weak) is being finalized. That
- * is, that object is being destroyed because there are not any hard references
- * to it.
- */
-public class WeakAdapter implements XAdapter
-{
- private final boolean DEBUG= false;
- // references the XWeak implementation
- private WeakReference m_weakRef;
- // contains XReference objects registered by addReference
- private List m_xreferenceList;
-
- /**
- *@param component the object that is to be held weak
- */
- public WeakAdapter(Object component)
- {
- m_weakRef= new WeakReference(component);
- m_xreferenceList= Collections.synchronizedList( new LinkedList());
- }
-
- /** Called by the XWeak implementation (WeakBase) when it is being finalized.
- * It is only being called once.
- * The registererd XReference listeners are notified. On notification they are
- * to unregister themselves. The notification is thread-safe. However, it is possible
- * to add a listener during the notification process, which will never receive a
- * notification. To prevent this, one would have to synchronize this method with
- * the addReference method. But this can result in deadlocks in a multithreaded
- * environment.
- */
- void referentDying()
- {
- //synchronized call
- Object[] references= m_xreferenceList.toArray();
- for (int i= references.length; i > 0; i--)
- {
- ((XReference) references[i-1]).dispose();
- }
- }
-
- /** Method of com.sun.star.uno.XAdapter. It is called to obtain a hard reference
- * to the object which is kept weak by this instance.
- * @return hard reference to the object
- */
- public Object queryAdapted()
- {
- return m_weakRef.get();
- }
- /** Method of com.sun.star.uno.XAdapter. Called by clients to register listener which
- * are notified when the weak object is dying.
- *@param xReference a listener
- */
- public void removeReference(XReference xReference)
- {
- m_xreferenceList.remove(xReference);
- }
- /** Method of com.sun.star.uno.XAdapter. Called by clients to unregister listeners.
- *@param a listener
- */
- public void addReference(XReference xReference)
- {
- m_xreferenceList.add(xReference);
- }
-}
-
diff --git a/javaunohelper/com/sun/star/lib/uno/helper/WeakBase.java b/javaunohelper/com/sun/star/lib/uno/helper/WeakBase.java
deleted file mode 100644
index ace0713cc..000000000
--- a/javaunohelper/com/sun/star/lib/uno/helper/WeakBase.java
+++ /dev/null
@@ -1,143 +0,0 @@
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-package com.sun.star.lib.uno.helper;
-import com.sun.star.uno.XWeak;
-import com.sun.star.uno.XAdapter;
-import com.sun.star.lang.XTypeProvider;
-import com.sun.star.uno.Type;
-import java.util.Vector;
-import java.util.Map;
-import java.util.Hashtable;
-
-
-/** This class can be used as the base class for UNO components. It implements the capability
- * to be kept weak (com.sun.star.uno.XWeak) and it implements com.sun.star.lang.XTypeProvider
- * which is necessary for using the component with StarBasic.
- */
-public class WeakBase implements XWeak, XTypeProvider
-{
- private final boolean DEBUG= false;
-
- // Contains all WeakAdapter which have been created in this class
- // They have to be notified when this object dies
- private WeakAdapter m_adapter;
-
- protected static Map _mapImplementationIds= new Hashtable();
- protected static Map _mapTypes= new Hashtable();
-
- /** Method of XWeak. The returned XAdapter implementation can be used to keap
- * a weak reference to this object.
- * @return a com.sun.star.uno.XAdapter implementation.
- */
- synchronized public XAdapter queryAdapter()
- {
- if (m_adapter == null)
- m_adapter= new WeakAdapter(this);
- return m_adapter;
- }
-
- /** Override of Object.finalize. When there are no references to this object anymore
- * then the garbage collector calls this method. Thereby causing the adapter object
- * to be notified. The adapter, in turn, notifies all listeners (com.sun.star.uno.XReference)
- */
- protected void finalize() throws java.lang.Throwable
- {
- if (m_adapter != null)
- m_adapter.referentDying();
- super.finalize();
- }
-
- /** Method of XTypeProvider. It returns an array of Type objects which represent
- * all implemented UNO interfaces of this object.
- * @return Type objects of all implemented interfaces.
- */
- public Type[] getTypes()
- {
- Type[] arTypes= (Type[]) _mapTypes.get( getClass());
- if (arTypes == null)
- {
- Vector vec= new Vector();
- Class currentClass= getClass();
- do
- {
- Class interfaces[]= currentClass.getInterfaces();
- for(int i = 0; i < interfaces.length; ++ i)
- {
- // Test if it is a UNO interface
- if (com.sun.star.uno.XInterface.class.isAssignableFrom((interfaces[i])))
- vec.add(new Type(interfaces[i]));
- }
- // get the superclass the currentClass inherits from
- currentClass= currentClass.getSuperclass();
- } while (currentClass != null);
-
- Type types[]= new Type[vec.size()];
- for( int i= 0; i < types.length; i++)
- types[i]= (Type) vec.elementAt(i);
- _mapTypes.put(getClass(), types);
- arTypes= types;
- }
- return arTypes;
- }
-
- /** Method of XTypeProvider. It provides an identifier that represents the set of UNO
- * interfaces implemented by this class. All instances of this class
- * which run in the same Java Virtual Machine return the same array. (This only works as long
- * the ClassLoader preserves the class even if no instance exist.)
- *@return identifier as array of bytes
- */
- public byte[] getImplementationId()
- {
- byte[] id= null;
- synchronized (_mapImplementationIds)
- {
- id= (byte[]) _mapImplementationIds.get(getClass());
-
- if (id == null)
- {
- int hash = hashCode();
- String sName= getClass().getName();
- byte[] arName= sName.getBytes();
- int nNameLength= arName.length;
-
- id= new byte[ 4 + nNameLength];
- id[0]= (byte)(hash & 0xff);
- id[1]= (byte)((hash >>> 8) & 0xff);
- id[2]= (byte)((hash >>> 16) & 0xff);
- id[3]= (byte)((hash >>>24) & 0xff);
-
- for (int i= 0; i < nNameLength; i++)
- {
- id[4 + i]= arName[i];
- }
- _mapImplementationIds.put(getClass(), id);
- }
- }
- return id;
- }
-}
diff --git a/javaunohelper/com/sun/star/lib/uno/helper/makefile.mk b/javaunohelper/com/sun/star/lib/uno/helper/makefile.mk
deleted file mode 100644
index 3cab6f070..000000000
--- a/javaunohelper/com/sun/star/lib/uno/helper/makefile.mk
+++ /dev/null
@@ -1,49 +0,0 @@
-#*************************************************************************
-#
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# Copyright 2000, 2010 Oracle and/or its affiliates.
-#
-# OpenOffice.org - a multi-platform office productivity suite
-#
-# This file is part of OpenOffice.org.
-#
-# OpenOffice.org is free software: you can redistribute it and/or modify
-# it under the terms of the GNU Lesser General Public License version 3
-# only, as published by the Free Software Foundation.
-#
-# OpenOffice.org is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU Lesser General Public License version 3 for more details
-# (a copy is included in the LICENSE file that accompanied this code).
-#
-# You should have received a copy of the GNU Lesser General Public License
-# version 3 along with OpenOffice.org. If not, see
-# <http://www.openoffice.org/license.html>
-# for a copy of the LGPLv3 License.
-#
-#*************************************************************************
-
-PRJ=..$/..$/..$/..$/..$/..
-
-PRJNAME = juhelper
-PACKAGE = com$/sun$/star$/lib$/uno$/helper
-TARGET = com_sun_star_lib_uno_helper
-
-.INCLUDE : settings.mk
-.INCLUDE: $(PRJ)$/util$/settings.pmk
-
-JAVAFILES = \
- ComponentBase.java \
- Factory.java \
- InterfaceContainer.java \
- MultiTypeInterfaceContainer.java \
- PropertySet.java \
- PropertySetMixin.java \
- UnoUrl.java \
- WeakAdapter.java \
- WeakBase.java
-
-.INCLUDE : target.mk
-