2 * This file is part of the LibreOffice project.
4 * This Source Code Form is subject to the terms of the Mozilla Public
5 * License, v. 2.0. If a copy of the MPL was not distributed with this
6 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8 * This file incorporates work covered by the following license notice:
10 * Licensed to the Apache Software Foundation (ASF) under one or more
11 * contributor license agreements. See the NOTICE file distributed
12 * with this work for additional information regarding copyright
13 * ownership. The ASF licenses this file to you under the Apache
14 * License, Version 2.0 (the "License"); you may not use this file
15 * except in compliance with the License. You may obtain a copy of
16 * the License at http://www.apache.org/licenses/LICENSE-2.0 .
21 import com
.sun
.star
.bridge
.XBridgeFactory
;
22 import com
.sun
.star
.bridge
.XInstanceProvider
;
23 import com
.sun
.star
.bridge
.XUnoUrlResolver
;
24 import com
.sun
.star
.bridge
.UnoUrlResolver
;
25 import com
.sun
.star
.comp
.helper
.Bootstrap
;
26 import com
.sun
.star
.connection
.Acceptor
;
27 import com
.sun
.star
.connection
.XConnection
;
28 import com
.sun
.star
.container
.XSet
;
29 import com
.sun
.star
.lang
.XMultiComponentFactory
;
30 import com
.sun
.star
.uno
.UnoRuntime
;
31 import com
.sun
.star
.uno
.XComponentContext
;
32 import java
.io
.BufferedReader
;
33 import java
.io
.InputStream
;
34 import java
.io
.InputStreamReader
;
35 import java
.io
.PrintStream
;
37 public final class RemoteServiceTest
extends TestBase
{
39 protected TestServiceFactory
getTestServiceFactory() throws Exception
{
40 final Process p
= Runtime
.getRuntime().exec(new String
[] {
41 "java", "-classpath", System
.getProperty("java.class.path"),
42 Server
.class.getName() });
43 pipe(p
.getInputStream(), System
.out
, "CO> ");
44 pipe(p
.getErrorStream(), System
.err
, "CE> ");
45 Thread
.sleep(5000); // wait for server to start accepting
46 return new TestServiceFactory() {
47 public Object
get() throws Exception
{
48 XUnoUrlResolver resolver
= UnoUrlResolver
.create(Bootstrap
.createInitialComponentContext(null));
49 String sUrl
= "uno:" + CONNECTION_DESCRIPTION
+ ";"
50 + PROTOCOL_DESCRIPTION
51 + ";testtools.servicetests.TestService2";
52 return resolver
.resolve(sUrl
);
55 public void dispose() throws Exception
{
61 public static final class Server
{
62 public static void main(String
[] arguments
) throws Exception
{
63 XComponentContext context
64 = Bootstrap
.createInitialComponentContext(null);
65 XMultiComponentFactory serviceManager
66 = context
.getServiceManager();
67 UnoRuntime
.queryInterface(XSet
.class, serviceManager
).
68 insert(new TestService());
69 final Object instance
= serviceManager
.createInstanceWithContext(
70 "testtools.servicetests.TestService2", context
);
71 XBridgeFactory bridgeFactory
72 = UnoRuntime
.queryInterface(
74 serviceManager
.createInstanceWithContext(
75 "com.sun.star.bridge.BridgeFactory", context
));
76 XConnection connection
= Acceptor
.create(context
).accept(
77 CONNECTION_DESCRIPTION
);
78 bridgeFactory
.createBridge(
79 "", PROTOCOL_DESCRIPTION
, connection
,
80 new XInstanceProvider() {
81 public Object
getInstance(String instanceName
) {
88 private void pipe(final InputStream in
, final PrintStream out
,
89 final String prefix
) {
90 new Thread("Pipe: " + prefix
) {
94 = new BufferedReader(new InputStreamReader(in
));
97 String s
= r
.readLine();
101 out
.println(prefix
+ s
);
103 } catch (java
.io
.IOException e
) {
104 e
.printStackTrace(System
.err
);
110 private static final String CONNECTION_DESCRIPTION
111 = "socket,host=localhost,port=12345";
112 private static final String PROTOCOL_DESCRIPTION
= "urp";