public static int Main( String [] args ) { // System.Diagnostics.Debugger.Launch(); try { string bootstrap_ini = "cli_bridgetest_inprocess.ini"; if (args.Length > 0) { if (args[0] == "/?") { Console.WriteLine( "\n\ncli_bridgetest_inprocess [bootstrap file] \n\n" + "bootstrap file \n" + "\t contains the entries UNO_TYPES and UNO_SERVICES.\n" + "\t If a file is not provided than it is assumed that a\n" + "\t cli_bridgetest_inprocess.ini file can be found in the\n " + "\t current working directory.\n" ); return 0; } else { bootstrap_ini = args[0]; } } // bootstrap native UNO XComponentContext xContext = Bootstrap.defaultBootstrap_InitialComponentContext( bootstrap_ini, null ); using (new uno.util.DisposeGuard( (XComponent) xContext )) { XSet xSet = (XSet) xContext.getServiceManager(); xSet.insert( new uno.Any( typeof (XSingleComponentFactory), new Factory( typeof (cs_testobj.BridgeTestObject), "com.sun.star.test.bridge.cli_uno.CsTestObject" ) ) ); xSet.insert( new uno.Any( typeof (XSingleComponentFactory), new Factory( typeof (vb_testobj.VBBridgeTestObject), "com.sun.star.test.bridge.cli_uno.VbTestObject" ) ) ); xSet.insert( new uno.Any( typeof (XSingleComponentFactory), new Factory( typeof (cpp_bridgetest.BridgeTest), "com.sun.star.test.bridge.cli_uno.CppBridgeTest" ) ) ); xSet.insert( new uno.Any( typeof (XSingleComponentFactory), new Factory( typeof (cs_testobj.BridgeTest), "com.sun.star.test.bridge.cli_uno.CsBridgeTest" ) ) ); xSet.insert( new uno.Any( typeof (XSingleComponentFactory), new Factory( typeof (vb_bridetest.BridgeTest), "com.sun.star.test.bridge.cli_uno.VbBridgeTest" ) ) ); // I. // direct unbridged test // get client object via singleton entry Object test_client; XMain xClient; test_client = new cs_testobj.BridgeTest( xContext ); xClient = (XMain) test_client; Console.WriteLine( "\n[cli bridgetest] 1. C# client calls C# object"); // run with CLI target object xClient.run( new String [] { "com.sun.star.test.bridge.cli_uno.CsTestObject" } ); // II: // uno -ro uno_services.rdb -ro uno_types.rdb // -s com.sun.star.test.bridge.BridgeTest // -- com.sun.star.test.bridge.cli_uno.TestObject // get native client test_client = xContext.getServiceManager().createInstanceWithContext( "com.sun.star.test.bridge.BridgeTest", xContext ); xClient = (XMain) test_client; Console.WriteLine( "\n[cli bridgetest] 2. C++ client (native) calls C# object"); // run with CLI target object xClient.run( new String [] { "com.sun.star.test.bridge.cli_uno.CsTestObject", "noCurrentContext"} ); // III: // uno -ro uno_services.rdb -ro uno_types.rdb // -s com.sun.star.test.bridge.cli_uno.BridgeTest // -- com.sun.star.test.bridge.CppTestObject // get CLI client test_client = xContext.getServiceManager().createInstanceWithContext( "com.sun.star.test.bridge.cli_uno.CsBridgeTest", xContext ); xClient = (XMain) test_client; Console.WriteLine( "\n[cli bridgetest] 3. C# client calls C++ object (native)"); // run with native target object xClient.run( new String [] { "com.sun.star.test.bridge.CppTestObject" } ); // IV: // uno -ro uno_services.rdb -ro uno_types.rdb // -s com.sun.star.test.bridge.cli_uno.VbBridgeTest // -- com.sun.star.test.bridge.CppTestObject // get CLI client test_client = xContext.getServiceManager().createInstanceWithContext( "com.sun.star.test.bridge.cli_uno.VbBridgeTest", xContext ); xClient = (XMain) test_client; Console.WriteLine( "\n[cli bridgetest] 4. Visual Basic client calls C++ (native) object" ); // run with native target object xClient.run( new String [] { "com.sun.star.test.bridge.CppTestObject" } ); // V: // uno -ro uno_services.rdb -ro uno_types.rdb // -s com.sun.star.test.bridge.BridgeTest // -- com.sun.star.test.bridge.cli_uno.VbTestObject // get CLI client // test_client = // xContext.getServiceManager().createInstanceWithContext( // "com.sun.star.test.bridge.BridgeTest", xContext ); // xClient = (XMain) test_client; // Console.WriteLine( // "[cli bridgetest] Visual Basic client: {0}", // xClient.ToString() ); // // run with native target object // xClient.run( // new String [] { // "com.sun.star.test.bridge.cli_uno.VbTestObject" } ); // VI: // uno -ro uno_services.rdb -ro uno_types.rdb // -s com.sun.star.test.bridge.cli_uno.CppBridgeTest // -- com.sun.star.test.bridge.CppTestObject test_client = xContext.getServiceManager().createInstanceWithContext( "com.sun.star.test.bridge.cli_uno.CppBridgeTest", xContext ); xClient = (XMain) test_client; Console.WriteLine( "\n[cli bridgetest] 6. CLI C++ client calls C++ object (native)"); // run with native target object xClient.run( new String [] { "com.sun.star.test.bridge.CppTestObject" } ); } } catch (System.Exception exc) { GC.WaitForPendingFinalizers(); System.Console.WriteLine( exc ); return -1; } GC.WaitForPendingFinalizers(); System.Console.WriteLine( "====> all tests ok." ); return 0; }
public static int Main(String [] args) { // System.Diagnostics.Debugger.Launch(); try { string bootstrap_ini = "cli_bridgetest_inprocess.ini"; if (args.Length > 0) { if (args[0] == "/?") { Console.WriteLine( "\n\ncli_bridgetest_inprocess [bootstrap file] \n\n" + "bootstrap file \n" + "\t contains the entries UNO_TYPES and UNO_SERVICES.\n" + "\t If a file is not provided than it is assumed that a\n" + "\t cli_bridgetest_inprocess.ini file can be found in the\n " + "\t current working directory.\n" ); return(0); } else { bootstrap_ini = args[0]; } } // bootstrap native UNO XComponentContext xContext = Bootstrap.defaultBootstrap_InitialComponentContext( bootstrap_ini, null); using (new uno.util.DisposeGuard((XComponent)xContext)) { XSet xSet = (XSet)xContext.getServiceManager(); xSet.insert( new uno.Any( typeof(XSingleComponentFactory), new Factory( typeof(cs_testobj.BridgeTestObject), "com.sun.star.test.bridge.cli_uno.CsTestObject"))); xSet.insert( new uno.Any( typeof(XSingleComponentFactory), new Factory( typeof(vb_testobj.VBBridgeTestObject), "com.sun.star.test.bridge.cli_uno.VbTestObject"))); xSet.insert( new uno.Any( typeof(XSingleComponentFactory), new Factory( typeof(cpp_bridgetest.BridgeTest), "com.sun.star.test.bridge.cli_uno.CppBridgeTest"))); xSet.insert( new uno.Any( typeof(XSingleComponentFactory), new Factory( typeof(cs_testobj.BridgeTest), "com.sun.star.test.bridge.cli_uno.CsBridgeTest"))); xSet.insert( new uno.Any( typeof(XSingleComponentFactory), new Factory( typeof(vb_bridetest.BridgeTest), "com.sun.star.test.bridge.cli_uno.VbBridgeTest"))); // I. // direct unbridged test // get client object via singleton entry Object test_client; XMain xClient; test_client = new cs_testobj.BridgeTest(xContext); xClient = (XMain)test_client; Console.WriteLine( "\n[cli bridgetest] 1. C# client calls C# object"); // run with CLI target object xClient.run( new String [] { "com.sun.star.test.bridge.cli_uno.CsTestObject" }); // II: // uno -ro uno_services.rdb -ro uno_types.rdb // -s com.sun.star.test.bridge.BridgeTest // -- com.sun.star.test.bridge.cli_uno.TestObject // get native client test_client = xContext.getServiceManager().createInstanceWithContext( "com.sun.star.test.bridge.BridgeTest", xContext); xClient = (XMain)test_client; Console.WriteLine( "\n[cli bridgetest] 2. C++ client (native) calls C# object"); // run with CLI target object xClient.run( new String [] { "com.sun.star.test.bridge.cli_uno.CsTestObject", "noCurrentContext" }); // III: // uno -ro uno_services.rdb -ro uno_types.rdb // -s com.sun.star.test.bridge.cli_uno.BridgeTest // -- com.sun.star.test.bridge.CppTestObject // get CLI client test_client = xContext.getServiceManager().createInstanceWithContext( "com.sun.star.test.bridge.cli_uno.CsBridgeTest", xContext); xClient = (XMain)test_client; Console.WriteLine( "\n[cli bridgetest] 3. C# client calls C++ object (native)"); // run with native target object xClient.run( new String [] { "com.sun.star.test.bridge.CppTestObject" }); // IV: // uno -ro uno_services.rdb -ro uno_types.rdb // -s com.sun.star.test.bridge.cli_uno.VbBridgeTest // -- com.sun.star.test.bridge.CppTestObject // get CLI client test_client = xContext.getServiceManager().createInstanceWithContext( "com.sun.star.test.bridge.cli_uno.VbBridgeTest", xContext); xClient = (XMain)test_client; Console.WriteLine( "\n[cli bridgetest] 4. Visual Basic client calls C++ (native) object"); // run with native target object xClient.run( new String [] { "com.sun.star.test.bridge.CppTestObject" }); // V: // uno -ro uno_services.rdb -ro uno_types.rdb // -s com.sun.star.test.bridge.BridgeTest // -- com.sun.star.test.bridge.cli_uno.VbTestObject // get CLI client // test_client = // xContext.getServiceManager().createInstanceWithContext( // "com.sun.star.test.bridge.BridgeTest", xContext ); // xClient = (XMain) test_client; // Console.WriteLine( // "[cli bridgetest] Visual Basic client: {0}", // xClient.ToString() ); // // run with native target object // xClient.run( // new String [] { // "com.sun.star.test.bridge.cli_uno.VbTestObject" } ); // VI: // uno -ro uno_services.rdb -ro uno_types.rdb // -s com.sun.star.test.bridge.cli_uno.CppBridgeTest // -- com.sun.star.test.bridge.CppTestObject test_client = xContext.getServiceManager().createInstanceWithContext( "com.sun.star.test.bridge.cli_uno.CppBridgeTest", xContext); xClient = (XMain)test_client; Console.WriteLine( "\n[cli bridgetest] 6. CLI C++ client calls C++ object (native)"); // run with native target object xClient.run( new String [] { "com.sun.star.test.bridge.CppTestObject" }); } } catch (System.Exception exc) { GC.WaitForPendingFinalizers(); System.Console.WriteLine(exc); return(-1); } GC.WaitForPendingFinalizers(); System.Console.WriteLine("====> all tests ok."); return(0); }