diff options
author | Daniel Boelzle <dbo@openoffice.org> | 2001-06-14 10:58:23 +0000 |
---|---|---|
committer | Daniel Boelzle <dbo@openoffice.org> | 2001-06-14 10:58:23 +0000 |
commit | 03d45af724ba6438361ca2045539f12c669204c2 (patch) | |
tree | 61a06a51c974f45f9f18e3a3d0ba0fc0c0c45235 /javaunohelper | |
parent | cfb3fc5f40f3f131e0b157d0c16c4c042812dce6 (diff) |
#87233# modified bootstrapping process; added component context helpers
Diffstat (limited to 'javaunohelper')
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 |