/*
* This file is part of the LibreOffice project .
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License , v . 2 . 0 . If a copy of the MPL was not distributed with this
* file , You can obtain one at http : //mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice :
*
* Licensed to the Apache Software Foundation ( ASF ) under one or more
* contributor license agreements . See the NOTICE file distributed
* with this work for additional information regarding copyright
* ownership . The ASF licenses this file to you under the Apache
* License , Version 2 . 0 ( the " License " ) ; you may not use this file
* except in compliance with the License . You may obtain a copy of
* the License at http : //www.apache.org/licenses/LICENSE-2.0 .
*/
package ifc.bridge;
import lib.MultiMethodTest;
import lib.StatusException;
import com.sun.star.bridge.XBridge;
import com.sun.star.bridge.XBridgeFactory;
import com.sun.star.connection.XAcceptor;
import com.sun.star.connection.XConnection;
import com.sun.star.connection.XConnector;
import com.sun.star.uno.UnoRuntime;
import com.sun.star.uno.XInterface;
/**
* Tests < code > com . sun . star . bridge . XBridgeFactory < / code >
* interface methods :
* < ul >
* < li > < code > createBridge ( ) < / code > < / li >
* < li > < code > getBridge ( ) < / code > < / li >
* < li > < code > getExistingBridges ( ) < / code > < / li >
* < / ul > < p >
* @ see com . sun . star . bridge . XBridgeFactory
*/
public class _XBridgeFactory extends MultiMethodTest {
public XBridgeFactory oObj = null ;
private String bridgeName = null ;
AcceptorThread acceptorThread = null ;
/**
* Interrupts the acceptor after test is finished
*/
@Override
protected void after() {
acceptorThread.acc.stopAccepting();
if (acceptorThread.isAlive()) {
acceptorThread.interrupt();
}
}
/**
* Calls < code > accept ( ) < / code > method in a separate thread .
* Then stores exception thrown by call if it occurred , or
* return value .
*/
protected class AcceptorThread extends Thread {
/**
* the acceptor
*/
private final XAcceptor acc;
/**
* If exception occurred during method call it is
* stored in this field .
*/
public Exception ex = null ;
/**
* If method call returns some value it stores in this field .
*/
public XConnection acceptedCall = null ;
/**
* Gets an object which can call < code > accept < / code > method .
*/
public AcceptorThread(XAcceptor acc) {
this .acc = acc ;
}
/**
* Call < code > accept ( ) < / code > method .
*/
@Override
public void run() {
try {
acceptedCall = acc.accept(connectString);
} catch (com.sun.star.lang.IllegalArgumentException e) {
ex = e ;
} catch (com.sun.star.connection.ConnectionSetupException e) {
ex = e ;
} catch (com.sun.star.connection.AlreadyAcceptingException e) {
ex = e ;
}
}
}
/**
* Variable to make bridge names unique in different threads .
*/
public static int uniqueSuffix = 0 ;
/**
* Object for synchronizing < code > uniqueSuffix < / code > increment .
*/
public static Object synchFlag = new Object() ;
/**
* Connection string
*/
public String connectString;
/**
* Gets array of existing bridges . < p >
* Has < b > OK < / b > status if method returns not null .
*/
public void _getExistingBridges() {
XBridge[] bridges = oObj.getExistingBridges() ;
log.println("Existing bridges :" ) ;
for (int i = 0 ; i < bridges.length; i++)
log.println(" " + bridges[i].getDescription()) ;
if (bridges.length > 0 ) bridgeName = bridges[0 ].getName() ;
tRes.tested("getExistingBridges()" , true ) ;
}
/**
* First creates connection with StarOffice process , using environment
* property < code > ' CONNECTION_STRING ' < / code > . Then create bridge with unique name
* using protocol specified in environment as < code > ' PROTOCOL ' < / code >
* property . After that bridge is disposed . < p >
* Has < b > OK < / b > status if value returned is not null
* and no exceptions were thrown . < p >
*/
public void _createBridge() {
XBridge bridge = null ;
XConnection conn = null ;
boolean result = false ;
// first creating a connection
try {
XInterface x = (XInterface)
tParam.getMSF().createInstance
("com.sun.star.connection.Connector" ) ;
XConnector xCntr = UnoRuntime.queryInterface
(XConnector.class , x) ;
x = (XInterface) tParam.getMSF().createInstance
("com.sun.star.connection.Acceptor" ) ;
XAcceptor xAccptr = UnoRuntime.queryInterface(
XAcceptor.class , x);
connectString = (String)tEnv.getObjRelation("CNNCTSTR" );
acceptorThread = new AcceptorThread(xAccptr) ;
acceptorThread.start();
util.utils.shortWait();
conn = xCntr.connect(connectString) ;
} catch (com.sun.star.uno.Exception e) {
e.printStackTrace(log) ;
throw new StatusException("Can't create connection" , e);
}
try {
String protocol = (String) tParam.get("PROTOCOL" ) ;
if (protocol == null ) protocol = "urp" ;
String brName ;
synchronized (synchFlag) {
brName = "MyBridge" + (uniqueSuffix++) ;
}
log.println("Creating bridge with name " + brName) ;
bridge = oObj.createBridge(brName,
protocol, conn, null ) ;
result = bridge != null ;
} catch (com.sun.star.bridge.BridgeExistsException e) {
log.println("Exception while bridge creating :" + e) ;
} catch (com.sun.star.lang.IllegalArgumentException e) {
log.println("Exception while bridge creating :" + e) ;
}
tRes.tested("createBridge()" , result) ;
}
/**
* Gets bridge by name and checks the bridge name returned . < p >
* The following method tests are to be executed before :
* < ul >
* < li > < code > getExestingBridges < / code > : to have some bridge name
* to retrieve < / li >
* < / ul > < p >
* Has < b > OK < / b > status if bridge successfully returned and its name
* equals to name passed as parameter .
*/
public void _getBridge() {
executeMethod("getExistingBridges()" ) ;
if (bridgeName == null ) {
log.println("No name for getting the bridge" ) ;
return ;
}
XBridge br = oObj.getBridge(bridgeName) ;
tRes.tested("getBridge()" , br != null &&
bridgeName.equals(br.getName())) ;
}
}
Messung V0.5 in Prozent C=92 H=96 G=93
¤ Dauer der Verarbeitung: 0.13 Sekunden
(vorverarbeitet am 2026-09-11)
¤
*© Formatika GbR, Deutschland