{
void run(ORB orb, POA root)
{
org.omg.CORBA.Object obj;
Policy[] policies = new Policy[ 0 ];
POA poa;
POA parent;
POA poa2;
POA poa3;
POAManager mgr;
String str;
POAManager rootMgr = root.the_POAManager();
TEST(rootMgr != null);
//
// Test: POAManager should be in HOLDING state
//
TEST(rootMgr.get_state() == State.HOLDING);
//
// Create child POA
//
try
{
poa = root.create_POA("poa1", null, policies);
}
catch (InvalidPolicy ex)
{
fail(ex);
throw new RuntimeException(ex);
}
catch (AdapterAlreadyExists ex)
{
fail(ex);
throw new RuntimeException(ex);
}
//
// Test: POAManager should NOT be the same as the root's manager
//
mgr = poa.the_POAManager();
TEST(!mgr._is_equivalent(rootMgr));
//
// Test: POAManager should be in HOLDING state
//
TEST(mgr.get_state() == State.HOLDING);
//
// Test: Confirm name
//
str = poa.the_name();
TEST(str.equals("poa1"));
//
// Test: Confirm parent
//
parent = poa.the_parent();
TEST(parent._is_equivalent(root));
//
// Test: AdapterAlreadyExists exception
//
try
{
poa2 = root.create_POA("poa1", null, policies);
TEST(false); // create_POA should not have succeeded
}
catch (AdapterAlreadyExists ex)
{
// expected
}
catch (InvalidPolicy ex)
{
fail(ex);
throw new RuntimeException(ex);
}
//
// Test: InvalidPolicy exception
//
Policy[] invalidpolicies = new Policy[ 1 ];
invalidpolicies [ 0 ] =
root.create_servant_retention_policy(org.omg.PortableServer.ServantRetentionPolicyValue.NON_RETAIN);
//
// Create another child of root POA
//
try
{
poa2 = root.create_POA("poa2", rootMgr, policies);
}
catch (InvalidPolicy ex)
{
fail(ex);
throw new RuntimeException(ex);
}
catch (AdapterAlreadyExists ex)
{
fail(ex);
throw new RuntimeException(ex);
}
//
// Test: POAManager should be the same as the root's manager
//
mgr = poa2.the_POAManager();
TEST(mgr._is_equivalent(rootMgr));
//
// Create child of child POA
//
try
{
poa3 = poa2.create_POA("child", rootMgr, policies);
}
catch (InvalidPolicy ex)
{
fail(ex);
throw new RuntimeException(ex);
}
catch (AdapterAlreadyExists ex)
{
fail(ex);
throw new RuntimeException(ex);
}
//
// Test: Confirm parent
//
parent = poa3.the_parent();
TEST(parent._is_equivalent(poa2));
poa.destroy(true, true);
poa2.destroy(true, true);
}