package org.jacorb.test.transport;
import org.jacorb.test.harness.TestUtils;
import org.jacorb.test.orb.transport.CurrentServer;
import org.jacorb.test.orb.transport.CurrentServerHelper;
import org.jacorb.test.orb.transport.CurrentServerPOA;
import org.junit.Assert;
import org.omg.CORBA.ORB;
import org.omg.CORBA.ORBPackage.InvalidName;
import org.omg.PortableServer.POA;
import org.omg.PortableServer.POAHelper;
import org.omg.PortableServer.POAPackage.ServantNotActive;
import org.omg.PortableServer.POAPackage.WrongPolicy;
public class CurrentServerImpl extends CurrentServerPOA {
private int invoked_by_client_called_ = 0;
private int self_test_called_ = 0;
private final AbstractTester tester_;
/**
* DefaultClientOrbInitializer ctor, used in cases where no server-side testing is required.
*
*/
public CurrentServerImpl() {
this (null, null);
}
/**
* The explicit ctor
*
* @param orb
* @param tester
*/
public CurrentServerImpl(ORB orb, AbstractTester tester) {
tester_ = tester;
}
@Override
public void invoked_by_client() {
invoked_by_client_called_++;
TestUtils.getLogger().debug ("CurrentServer::invoked_by_client() called");
if (tester_ != null)
tester_.test_transport_current (this._orb ());
try {
POA rootPOA = POAHelper.narrow (_orb ().resolve_initial_references ("RootPOA"));
CurrentServer server_ = CurrentServerHelper.narrow (rootPOA.servant_to_reference (this));
server_.invoked_during_upcall ();
}
catch (InvalidName e) {
// TODO Auto-generated catch block
}
catch (ServantNotActive e) {
// TODO Auto-generated catch block
}
catch (WrongPolicy e) {
// TODO Auto-generated catch block
}
}
@Override
public void invoked_during_upcall() {
TestUtils.getLogger().debug ("CurrentServer::invoked_during_upcall() called");
if (tester_ != null)
tester_.test_transport_current (this._orb ());
}
@Override
public int self_test() {
self_test_called_++;
Assert.assertEquals (1, invoked_by_client_called_);
Assert.assertEquals (1, self_test_called_);
Assert.assertEquals (5, ServerInterceptor.interceptions ());
return 0;
}
@Override
public void shutdown() {
this._orb ().shutdown (true);
}
}