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