1*cdf0e10cSrcweir /************************************************************************* 2*cdf0e10cSrcweir * 3*cdf0e10cSrcweir * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4*cdf0e10cSrcweir * 5*cdf0e10cSrcweir * Copyright 2000, 2010 Oracle and/or its affiliates. 6*cdf0e10cSrcweir * 7*cdf0e10cSrcweir * OpenOffice.org - a multi-platform office productivity suite 8*cdf0e10cSrcweir * 9*cdf0e10cSrcweir * This file is part of OpenOffice.org. 10*cdf0e10cSrcweir * 11*cdf0e10cSrcweir * OpenOffice.org is free software: you can redistribute it and/or modify 12*cdf0e10cSrcweir * it under the terms of the GNU Lesser General Public License version 3 13*cdf0e10cSrcweir * only, as published by the Free Software Foundation. 14*cdf0e10cSrcweir * 15*cdf0e10cSrcweir * OpenOffice.org is distributed in the hope that it will be useful, 16*cdf0e10cSrcweir * but WITHOUT ANY WARRANTY; without even the implied warranty of 17*cdf0e10cSrcweir * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18*cdf0e10cSrcweir * GNU Lesser General Public License version 3 for more details 19*cdf0e10cSrcweir * (a copy is included in the LICENSE file that accompanied this code). 20*cdf0e10cSrcweir * 21*cdf0e10cSrcweir * You should have received a copy of the GNU Lesser General Public License 22*cdf0e10cSrcweir * version 3 along with OpenOffice.org. If not, see 23*cdf0e10cSrcweir * <http://www.openoffice.org/license.html> 24*cdf0e10cSrcweir * for a copy of the LGPLv3 License. 25*cdf0e10cSrcweir * 26*cdf0e10cSrcweir ************************************************************************/ 27*cdf0e10cSrcweir 28*cdf0e10cSrcweir package testtools.servicetests; 29*cdf0e10cSrcweir 30*cdf0e10cSrcweir import com.sun.star.bridge.XBridgeFactory; 31*cdf0e10cSrcweir import com.sun.star.bridge.XInstanceProvider; 32*cdf0e10cSrcweir import com.sun.star.bridge.UnoUrlResolver; 33*cdf0e10cSrcweir import com.sun.star.comp.helper.Bootstrap; 34*cdf0e10cSrcweir import com.sun.star.connection.Acceptor; 35*cdf0e10cSrcweir import com.sun.star.connection.XConnection; 36*cdf0e10cSrcweir import com.sun.star.container.XSet; 37*cdf0e10cSrcweir import com.sun.star.lang.XMultiComponentFactory; 38*cdf0e10cSrcweir import com.sun.star.uno.UnoRuntime; 39*cdf0e10cSrcweir import com.sun.star.uno.XComponentContext; 40*cdf0e10cSrcweir import complexlib.ComplexTestCase; 41*cdf0e10cSrcweir import java.io.BufferedReader; 42*cdf0e10cSrcweir import java.io.InputStream; 43*cdf0e10cSrcweir import java.io.InputStreamReader; 44*cdf0e10cSrcweir import java.io.PrintStream; 45*cdf0e10cSrcweir 46*cdf0e10cSrcweir public final class RemoteServiceTest extends TestBase { 47*cdf0e10cSrcweir protected TestServiceFactory getTestServiceFactory() throws Exception { 48*cdf0e10cSrcweir final Process p = Runtime.getRuntime().exec(new String[] { 49*cdf0e10cSrcweir "java", "-classpath", System.getProperty("java.class.path"), 50*cdf0e10cSrcweir Server.class.getName() }); 51*cdf0e10cSrcweir pipe(p.getInputStream(), System.out, "CO> "); 52*cdf0e10cSrcweir pipe(p.getErrorStream(), System.err, "CE> "); 53*cdf0e10cSrcweir Thread.sleep(5000); // wait for server to start accepting 54*cdf0e10cSrcweir return new TestServiceFactory() { 55*cdf0e10cSrcweir public Object get() throws Exception { 56*cdf0e10cSrcweir return (UnoUrlResolver.create( 57*cdf0e10cSrcweir Bootstrap.createInitialComponentContext(null))). 58*cdf0e10cSrcweir resolve( 59*cdf0e10cSrcweir "uno:" + CONNECTION_DESCRIPTION + ";" 60*cdf0e10cSrcweir + PROTOCOL_DESCRIPTION 61*cdf0e10cSrcweir + ";testtools.servicetests.TestService2"); 62*cdf0e10cSrcweir } 63*cdf0e10cSrcweir 64*cdf0e10cSrcweir public void dispose() throws Exception { 65*cdf0e10cSrcweir p.waitFor(); 66*cdf0e10cSrcweir } 67*cdf0e10cSrcweir }; 68*cdf0e10cSrcweir } 69*cdf0e10cSrcweir 70*cdf0e10cSrcweir public static final class Server { 71*cdf0e10cSrcweir public static void main(String[] arguments) throws Exception { 72*cdf0e10cSrcweir XComponentContext context 73*cdf0e10cSrcweir = Bootstrap.createInitialComponentContext(null); 74*cdf0e10cSrcweir XMultiComponentFactory serviceManager 75*cdf0e10cSrcweir = context.getServiceManager(); 76*cdf0e10cSrcweir UnoRuntime.queryInterface(XSet.class, serviceManager). 77*cdf0e10cSrcweir insert(new TestService()); 78*cdf0e10cSrcweir final Object instance = serviceManager.createInstanceWithContext( 79*cdf0e10cSrcweir "testtools.servicetests.TestService2", context); 80*cdf0e10cSrcweir XBridgeFactory bridgeFactory 81*cdf0e10cSrcweir = UnoRuntime.queryInterface( 82*cdf0e10cSrcweir XBridgeFactory.class, 83*cdf0e10cSrcweir serviceManager.createInstanceWithContext( 84*cdf0e10cSrcweir "com.sun.star.bridge.BridgeFactory", context)); 85*cdf0e10cSrcweir XConnection connection = Acceptor.create(context).accept( 86*cdf0e10cSrcweir CONNECTION_DESCRIPTION); 87*cdf0e10cSrcweir bridgeFactory.createBridge( 88*cdf0e10cSrcweir "", PROTOCOL_DESCRIPTION, connection, 89*cdf0e10cSrcweir new XInstanceProvider() { 90*cdf0e10cSrcweir public Object getInstance(String instanceName) { 91*cdf0e10cSrcweir return instance; 92*cdf0e10cSrcweir } 93*cdf0e10cSrcweir }); 94*cdf0e10cSrcweir } 95*cdf0e10cSrcweir } 96*cdf0e10cSrcweir 97*cdf0e10cSrcweir private void pipe(final InputStream in, final PrintStream out, 98*cdf0e10cSrcweir final String prefix) { 99*cdf0e10cSrcweir new Thread("Pipe: " + prefix) { 100*cdf0e10cSrcweir public void run() { 101*cdf0e10cSrcweir BufferedReader r 102*cdf0e10cSrcweir = new BufferedReader(new InputStreamReader(in)); 103*cdf0e10cSrcweir try { 104*cdf0e10cSrcweir for (;;) { 105*cdf0e10cSrcweir String s = r.readLine(); 106*cdf0e10cSrcweir if (s == null) { 107*cdf0e10cSrcweir break; 108*cdf0e10cSrcweir } 109*cdf0e10cSrcweir out.println(prefix + s); 110*cdf0e10cSrcweir } 111*cdf0e10cSrcweir } catch (java.io.IOException e) { 112*cdf0e10cSrcweir e.printStackTrace(System.err); 113*cdf0e10cSrcweir } 114*cdf0e10cSrcweir } 115*cdf0e10cSrcweir }.start(); 116*cdf0e10cSrcweir } 117*cdf0e10cSrcweir 118*cdf0e10cSrcweir private static final String CONNECTION_DESCRIPTION 119*cdf0e10cSrcweir = "socket,host=localhost,port=12345"; 120*cdf0e10cSrcweir private static final String PROTOCOL_DESCRIPTION = "urp"; 121*cdf0e10cSrcweir } 122