summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Boelzle <dbo@openoffice.org>2001-06-14 10:58:23 +0000
committerDaniel Boelzle <dbo@openoffice.org>2001-06-14 10:58:23 +0000
commit03d45af724ba6438361ca2045539f12c669204c2 (patch)
tree61a06a51c974f45f9f18e3a3d0ba0fc0c0c45235
parentcfb3fc5f40f3f131e0b157d0c16c4c042812dce6 (diff)
#87233# modified bootstrapping process; added component context helpers
-rw-r--r--javaunohelper/com/sun/star/comp/helper/Bootstrap.java142
-rw-r--r--javaunohelper/com/sun/star/comp/helper/ComponentContext.java341
-rw-r--r--javaunohelper/com/sun/star/comp/helper/ComponentContextEntry.java86
-rw-r--r--javaunohelper/com/sun/star/comp/helper/makefile.mk8
-rw-r--r--javaunohelper/test/com/sun/star/comp/helper/ComponentContext_Test.java133
-rw-r--r--javaunohelper/test/com/sun/star/comp/helper/makefile.mk7
6 files changed, 655 insertions, 62 deletions
diff --git a/javaunohelper/com/sun/star/comp/helper/Bootstrap.java b/javaunohelper/com/sun/star/comp/helper/Bootstrap.java
index 308b904a90fc..c3248952f530 100644
--- a/javaunohelper/com/sun/star/comp/helper/Bootstrap.java
+++ b/javaunohelper/com/sun/star/comp/helper/Bootstrap.java
@@ -2,9 +2,9 @@
*
* $RCSfile: Bootstrap.java,v $
*
- * $Revision: 1.1 $
+ * $Revision: 1.2 $
*
- * last change: $Author: kr $ $Date: 2001-02-13 18:05:38 $
+ * last change: $Author: dbo $ $Date: 2001-06-14 11:58:23 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -66,16 +66,96 @@ import com.sun.star.comp.loader.JavaLoader;
import com.sun.star.container.XSet;
+import com.sun.star.uno.XComponentContext;
import com.sun.star.lang.XInitialization;
import com.sun.star.lang.XMultiServiceFactory;
+import com.sun.star.lang.XMultiComponentFactory;
import com.sun.star.lang.XSingleServiceFactory;
+import com.sun.star.lang.XSingleComponentFactory;
import com.sun.star.loader.XImplementationLoader;
import com.sun.star.uno.UnoRuntime;
+import java.util.Hashtable;
+
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.
+ */
+ static public XComponentContext createInitialComponentContext( Hashtable context_entries )
+ throws Exception
+ {
+ XImplementationLoader xImpLoader = (XImplementationLoader)UnoRuntime.queryInterface(
+ XImplementationLoader.class, new JavaLoader() );
+
+ // Get the factory of the ServiceManager
+ XSingleComponentFactory smgr_fac = (XSingleComponentFactory)UnoRuntime.queryInterface(
+ XSingleComponentFactory.class, xImpLoader.activate(
+ "com.sun.star.comp.servicemanager.ServiceManager", null, null, null ) );
+
+ // Create an instance of the ServiceManager
+ XMultiComponentFactory xSMgr = (XMultiComponentFactory)UnoRuntime.queryInterface(
+ XMultiComponentFactory.class, smgr_fac.createInstanceWithContext( null ) );
+
+ // post init loader
+ XInitialization xInit = (XInitialization)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(
+ "com.sun.star.lang.ServiceManager",
+ new ComponentContextEntry( null, xSMgr ) );
+ // ... xxx todo: add standard entries
+ XComponentContext xContext = new ComponentContext( context_entries, null );
+
+ // post init smgr
+ xInit = (XInitialization)UnoRuntime.queryInterface(
+ XInitialization.class, xSMgr );
+ args = new Object [] { null, xContext }; // no registry, default context
+ xInit.initialize( args );
+
+ XSet 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>
@@ -83,59 +163,9 @@ public class Bootstrap {
* @see com.sun.star.lang.ServiceManager
* @since UDK2.08
*/
- static public XMultiServiceFactory createSimpleServiceManager() throws Exception {
- JavaLoader loader = new JavaLoader();
-
- XImplementationLoader xImpLoader = (XImplementationLoader)UnoRuntime.queryInterface(XImplementationLoader.class, loader);
-
- // Get the factory for the ServiceManager
- Object loaderobj = xImpLoader.activate("com.sun.star.comp.servicemanager.ServiceManager", null, null, null);
-
- // Ensure that we have got a factory
- XSingleServiceFactory xManagerFac = (XSingleServiceFactory) UnoRuntime.queryInterface(XSingleServiceFactory.class, loaderobj);
- // Create an instance of the ServiceManager
- XMultiServiceFactory xMultiFac = (XMultiServiceFactory) UnoRuntime.queryInterface(XMultiServiceFactory.class,
- xManagerFac.createInstance());
-
- // set the ServiceManager at the JavaLoader with the XInitialization interface
- XInitialization xInit = (XInitialization) UnoRuntime.queryInterface(XInitialization.class, xImpLoader);
- Object[] iniargs = { xMultiFac };
- xInit.initialize( iniargs );
-
-
- // now use the XSet interface at the ServiceManager to add the factory of the loader
- XSet xSet = (XSet) UnoRuntime.queryInterface(XSet.class, xMultiFac);
-
- // Get the factory of the loader
- XSingleServiceFactory xSingleServiceFactory = (XSingleServiceFactory) UnoRuntime.queryInterface(XSingleServiceFactory.class,
- xImpLoader.activate("com.sun.star.comp.loader.JavaLoader", null, null, null));
-
- // add the javaloader
- xSet.insert(xSingleServiceFactory);
-
- // add the service manager
- xSet.insert(xManagerFac);
-
- // Get the factory of the URLResolver
- xSingleServiceFactory = (XSingleServiceFactory)UnoRuntime.queryInterface(XSingleServiceFactory.class,
- xImpLoader.activate("com.sun.star.comp.urlresolver.UrlResolver", null, null, null));
- xSet.insert(xSingleServiceFactory);
-
- // add the bridgefactory
- xSingleServiceFactory = (XSingleServiceFactory)UnoRuntime.queryInterface(XSingleServiceFactory.class,
- xImpLoader.activate("com.sun.star.comp.bridgefactory.BridgeFactory", null, null, null));
- xSet.insert(xSingleServiceFactory);
-
- // add the connector
- xSingleServiceFactory = (XSingleServiceFactory)UnoRuntime.queryInterface(XSingleServiceFactory.class,
- xImpLoader.activate("com.sun.star.comp.connections.Connector", null, null, null));
- xSet.insert(xSingleServiceFactory);
-
- // add the acceptor
- xSingleServiceFactory = (XSingleServiceFactory)UnoRuntime.queryInterface(XSingleServiceFactory.class,
- xImpLoader.activate("com.sun.star.comp.connections.Acceptor", null, null, null));
- xSet.insert(xSingleServiceFactory);
-
- return xMultiFac;
+ static public XMultiServiceFactory createSimpleServiceManager() throws Exception
+ {
+ return (XMultiServiceFactory)UnoRuntime.queryInterface(
+ XMultiServiceFactory.class, createInitialComponentContext( null ).getServiceManager() );
}
}
diff --git a/javaunohelper/com/sun/star/comp/helper/ComponentContext.java b/javaunohelper/com/sun/star/comp/helper/ComponentContext.java
new file mode 100644
index 000000000000..4bef96bbb855
--- /dev/null
+++ b/javaunohelper/com/sun/star/comp/helper/ComponentContext.java
@@ -0,0 +1,341 @@
+/*************************************************************************
+ *
+ * $RCSfile: ComponentContext.java,v $
+ *
+ * $Revision: 1.1 $
+ *
+ * last change: $Author: dbo $ $Date: 2001-06-14 11:58:23 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library 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 for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+package com.sun.star.comp.helper;
+
+import com.sun.star.uno.UnoRuntime;
+
+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();
+ }
+}
+//==================================================================================================
+public class ComponentContext implements XComponentContext, XComponent
+{
+ private static final boolean DEBUG = false;
+
+ private Hashtable m_table;
+ private XComponentContext m_xDelegate;
+
+ private XMultiComponentFactory m_xSMgr;
+ private boolean m_bDisposeSMgr;
+
+ private Vector m_eventListener;
+
+ //----------------------------------------------------------------------------------------------
+ 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( "com.sun.star.lang.ServiceManager" );
+ if (o != null)
+ {
+ if (o instanceof ComponentContextEntry)
+ {
+ m_xSMgr = (XMultiComponentFactory)UnoRuntime.queryInterface(
+ XMultiComponentFactory.class, ((ComponentContextEntry)o).m_value );
+ }
+ else
+ {
+ m_xSMgr = (XMultiComponentFactory)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 = (XComponent)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)
+ {
+ 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 = (XSingleComponentFactory)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 occured 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 = (XComponent)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 null;
+ }
+ }
+ //______________________________________________________________________________________________
+ 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( "com.sun.star.lang.ServiceManager" ))
+ {
+ XComponent xComp;
+
+ Object o = m_table.get( name );
+ if (o instanceof ComponentContextEntry)
+ {
+ xComp = (XComponent)UnoRuntime.queryInterface(
+ XComponent.class, ((ComponentContextEntry)o).m_value );
+ }
+ else // direct value in
+ {
+ xComp = (XComponent)UnoRuntime.queryInterface(
+ XComponent.class, o );
+ }
+
+ if (xComp != null)
+ {
+ if (name.equals( "com.sun.star.reflection.TypeDescriptionManager" ))
+ {
+ tdmgr = xComp;
+ }
+ else
+ {
+ xComp.dispose();
+ }
+ }
+ }
+ }
+ m_table.clear();
+
+ // smgr
+ if (m_bDisposeSMgr)
+ {
+ XComponent xComp = (XComponent)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
new file mode 100644
index 000000000000..35bf552a3e6d
--- /dev/null
+++ b/javaunohelper/com/sun/star/comp/helper/ComponentContextEntry.java
@@ -0,0 +1,86 @@
+/*************************************************************************
+ *
+ * $RCSfile: ComponentContextEntry.java,v $
+ *
+ * $Revision: 1.1 $
+ *
+ * last change: $Author: dbo $ $Date: 2001-06-14 11:58:23 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library 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 for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+package com.sun.star.comp.helper;
+
+//==================================================================================================
+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;
+
+ //______________________________________________________________________________________________
+ public ComponentContextEntry( Object lateInit, Object value )
+ {
+ this.m_lateInit = lateInit;
+ this.m_value = value;
+ }
+ //______________________________________________________________________________________________
+ public ComponentContextEntry( Object value )
+ {
+ this.m_lateInit = null;
+ this.m_value = value;
+ }
+}
diff --git a/javaunohelper/com/sun/star/comp/helper/makefile.mk b/javaunohelper/com/sun/star/comp/helper/makefile.mk
index 279c847bb0d8..b3882f678caf 100644
--- a/javaunohelper/com/sun/star/comp/helper/makefile.mk
+++ b/javaunohelper/com/sun/star/comp/helper/makefile.mk
@@ -2,9 +2,9 @@
#
# $RCSfile: makefile.mk,v $
#
-# $Revision: 1.3 $
+# $Revision: 1.4 $
#
-# last change: $Author: kr $ $Date: 2001-02-13 18:05:38 $
+# last change: $Author: dbo $ $Date: 2001-06-14 11:58:23 $
#
# The Contents of this file are made available subject to the terms of
# either of the following licenses
@@ -75,8 +75,10 @@ TARGET = com_sun_star_comp_helper
JARFILES = sandbox.jar ridl.jar jurt.jar unoil.jar
JAVAFILES= \
+ ComponentContextEntry.java \
+ ComponentContext.java \
Bootstrap.java \
- SharedLibraryLoader.java \
+ SharedLibraryLoader.java \
RegistryServiceFactory.java
JAVACLASSFILES= $(foreach,i,$(JAVAFILES) $(CLASSDIR)$/$(PACKAGE)$/$(i:b).class)
diff --git a/javaunohelper/test/com/sun/star/comp/helper/ComponentContext_Test.java b/javaunohelper/test/com/sun/star/comp/helper/ComponentContext_Test.java
new file mode 100644
index 000000000000..26dd521795f6
--- /dev/null
+++ b/javaunohelper/test/com/sun/star/comp/helper/ComponentContext_Test.java
@@ -0,0 +1,133 @@
+/*************************************************************************
+ *
+ * $RCSfile: ComponentContext_Test.java,v $
+ *
+ * $Revision: 1.1 $
+ *
+ * last change: $Author: dbo $ $Date: 2001-06-14 11:58:23 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library 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 for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the "License"); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+package com.sun.star.comp.helper;
+
+import com.sun.star.uno.XComponentContext;
+import com.sun.star.lang.XComponent;
+import com.sun.star.lang.XMultiComponentFactory;
+
+import com.sun.star.comp.helper.ComponentContext;
+import com.sun.star.comp.helper.ComponentContextEntry;
+import com.sun.star.uno.UnoRuntime;
+
+import java.util.Hashtable;
+
+
+public class ComponentContext_Test {
+ public static void main(String args[]) {
+ try {
+ Hashtable table = new Hashtable();
+ table.put( "bla1", new ComponentContextEntry( null, new Integer( 1 ) ) );
+ XComponentContext xInitialContext = Bootstrap.createInitialComponentContext( table );
+
+ table = new Hashtable();
+ table.put( "bla2", new ComponentContextEntry( new Integer( 2 ) ) );
+ table.put( "bla3", new Integer( 3 ) );
+ XComponentContext xContext = new ComponentContext( table, xInitialContext );
+
+ XMultiComponentFactory xSMgr = xContext.getServiceManager();
+ Object o = xSMgr.createInstanceWithContext( "com.sun.star.loader.Java", xContext );
+ if (o == null)
+ System.err.println( "### failed raising service: 1!" );
+ o = xSMgr.createInstanceWithContext( "com.sun.star.bridge.BridgeFactory", xContext );
+ if (o == null)
+ System.err.println( "### failed raising service: 2!" );
+ o = xSMgr.createInstanceWithContext( "com.sun.star.bridge.UnoUrlResolver", xContext );
+ if (o == null)
+ System.err.println( "### failed raising service: 3!" );
+ o = xSMgr.createInstanceWithContext( "com.sun.star.connection.Connector", xContext );
+ if (o == null)
+ System.err.println( "### failed raising service: 4!" );
+ o = xSMgr.createInstanceWithContext( "com.sun.star.connection.Acceptor", xContext );
+ if (o == null)
+ System.err.println( "### failed raising service: 5!" );
+ o = xSMgr.createInstanceWithContext( "com.sun.star.lang.ServiceManager", xContext );
+ if (o == null)
+ System.err.println( "### failed raising service: 6!" );
+
+ if (xContext.getValueByName( "bla1" ) == null ||
+ xContext.getValueByName( "bla2" ) == null ||
+ xContext.getValueByName( "bla3" ) == null ||
+ xInitialContext.getValueByName( "bla2" ) != null ||
+ xInitialContext.getValueByName( "bla3" ) != null)
+ {
+ System.err.println( "### bootstrap context test failed: 1!" );
+ }
+ if (((Integer)xContext.getValueByName( "bla1" )).intValue() != 1 ||
+ ((Integer)xContext.getValueByName( "bla2" )).intValue() != 2 ||
+ ((Integer)xContext.getValueByName( "bla3" )).intValue() != 3 ||
+ ((Integer)xInitialContext.getValueByName( "bla1" )).intValue() != 1)
+ {
+ System.err.println( "### bootstrap context test failed: 2!" );
+ }
+
+ XComponent xComp = (XComponent)UnoRuntime.queryInterface(
+ XComponent.class, xInitialContext );
+ xComp.dispose();
+ }
+ catch(Exception exception) {
+ System.err.println("exception occurred:" + exception);
+ exception.printStackTrace();
+ }
+ }
+}
+
+
diff --git a/javaunohelper/test/com/sun/star/comp/helper/makefile.mk b/javaunohelper/test/com/sun/star/comp/helper/makefile.mk
index 96d2f1dd03ee..4b17b53e5ea7 100644
--- a/javaunohelper/test/com/sun/star/comp/helper/makefile.mk
+++ b/javaunohelper/test/com/sun/star/comp/helper/makefile.mk
@@ -2,9 +2,9 @@
#
# $RCSfile: makefile.mk,v $
#
-# $Revision: 1.1.1.1 $
+# $Revision: 1.2 $
#
-# last change: $Author: hr $ $Date: 2000-09-18 16:31:32 $
+# last change: $Author: dbo $ $Date: 2001-06-14 11:58:23 $
#
# The Contents of this file are made available subject to the terms of
# either of the following licenses
@@ -71,9 +71,10 @@ TARGET = com_sun_star_comp_helper_test
# --- Files --------------------------------------------------------
-JARFILES = sandbox.jar jurt.jar unoil.jar
+JARFILES = sandbox.jar jurt.jar ridl.jar
JAVACLASSFILES= \
+ $(CLASSDIR)$/$(PACKAGE)$/ComponentContext_Test.class \
$(CLASSDIR)$/$(PACKAGE)$/SharedLibraryLoader_Test.class \
$(CLASSDIR)$/$(PACKAGE)$/RegistryServiceFactory_Test.class