public LoaderTest2( String[] args ) {
try {
JavaLoader loader = new JavaLoader();
XImplementationLoader xImpLoader = (XImplementationLoader) UnoRuntime.queryInterface(XImplementationLoader.class, loader);
Object loaderobj = xImpLoader.activate("com.sun.star.comp.servicemanager.ServiceManager", null, null, null);
XSingleServiceFactory xManagerFac = (XSingleServiceFactory) UnoRuntime.queryInterface(XSingleServiceFactory.class, loaderobj);
XMultiServiceFactory xMultiFac = (XMultiServiceFactory) UnoRuntime.queryInterface(
XMultiServiceFactory.class,
xManagerFac.createInstance() );
XSingleServiceFactory xSingleServiceFactory = (XSingleServiceFactory) UnoRuntime.queryInterface(
XSingleServiceFactory.class,
xImpLoader.activate("com.sun.star.comp.loader.JavaLoader", null, null, null));
XInitialization xInit = (XInitialization) UnoRuntime.queryInterface(XInitialization.class, xImpLoader);
Object[] iniargs = { xMultiFac };
xInit.initialize( iniargs );
XSet xSet = (XSet) UnoRuntime.queryInterface(XSet.class, xMultiFac);
xSet.insert( xSingleServiceFactory );
System.err.println("create ServiceManager");
System.err.println();
manager = (ServiceManager) xSet;
/*
String[] factories = new String[args.length + 2];
factories[0] = "com.sun.star.comp.servicemanager.ServiceManager";
factories[1] = "java.awt.Button";
factories[2] ="com.sun.star.comp.loader.DummyService"
System.arraycopy(args, 0, factories, 2, args.length);
*/
String[] factories = { "com.sun.star.comp.servicemanager.ServiceManager",
"java.awt.Button"
};
manager.addFactories( factories );
System.err.println("now try to instanciate the components");
for (int j=0; j<args.length; j++) {
try {
System.err.println( "try to create instance of " + args[j] );
Object obj = manager.createInstance(args[j]);
System.err.println( "create instance done ... " );
} catch (Exception e) {
System.err.println("an "+e.toString() + " occured while create instance of " +args[j] );
}
}
System.err.println("---------------------------------------------------------------");
System.err.println("test the XMultiServiceFactory interface of the ServiceManager");
System.err.println("-- createInstance");
Object test1 = manager.createInstance( "java.awt.Button" );
java.awt.Button btn1 = (java.awt.Button) UnoRuntime.queryInterface(java.awt.Button.class, test1);
System.err.println("button 1 created without args" );
System.err.println("-- done ...");
System.err.println("-- createInstanceWithArguments");
String[] params = { "TestButton" };
Object test2 = manager.createInstanceWithArguments( "java.awt.Button", params );
java.awt.Button btn2 = (java.awt.Button) UnoRuntime.queryInterface(java.awt.Button.class, test2);
System.err.println("button 2 created with label " + btn2.getLabel() );
System.err.println("-- done ...");
System.err.println("-- getAvailableServiceNames");
String[] availableServiceNames = manager.getAvailableServiceNames();
for (int n=0; n<availableServiceNames.length; n++)
System.err.println("service #"+n+" : " +availableServiceNames[n] );
System.err.println("-- done ...");
System.err.println();
System.err.println("---------------------------------------------------------------");
System.err.println("test the XSet interface of the ServiceManager");
Object[] param = { manager };
Object loaderObj = manager.createInstanceWithArguments("com.sun.star.loader.Java", param);
XImplementationLoader xLoader = (XImplementationLoader) UnoRuntime.queryInterface(XImplementationLoader.class, loaderObj);
Object dummyFactory = xLoader.activate( "com.sun.star.comp.loader.DummyService", null, null, null );
System.err.println("-- insert");
manager.insert(dummyFactory);
System.err.println("-- done ...");