package org.jacorb.test.bugs.bugjac251;
import org.jacorb.config.Configurable;
import org.jacorb.config.Configuration;
import org.jacorb.config.ConfigurationException;
import org.omg.CORBA.Any;
import org.omg.CORBA.INTERNAL;
import org.omg.CORBA.ORB;
import org.omg.DynamicAny.DynAnyFactory;
import org.omg.DynamicAny.DynAnyFactoryHelper;
import org.omg.DynamicAny.DynArray;
import org.omg.DynamicAny.DynArrayHelper;
import org.omg.DynamicAny.DynStruct;
import org.omg.DynamicAny.DynStructHelper;
import org.omg.DynamicAny.DynUnion;
import org.omg.DynamicAny.DynUnionHelper;
/**
* <code>PT251Impl</code> is the server class to test dynamic any.
*
* @author Nick Cross
*/
public class JAC251Impl extends JAC251POA implements Configurable
{
/**
* <code>orb</code> reference from starting the server.
*/
private ORB orb;
/**
* DynamicAny <code>factory</code>.
*/
private DynAnyFactory factory;
/**
* <code>pass_any</code> tests that a MARSHAL exception is not thrown
* internally (e.g. by using a Singleton ORB).
*
* @param type a <code>String</code> value denoting the type of test
* @param value an <code>Any</code> value
*/
public void pass_any(String type, Any value)
{
if ("struct".equals (type))
{
try
{
DynStruct dynStruct = DynStructHelper.narrow
(factory.create_dyn_any(value));
dynStruct.to_any();
}
catch (org.omg.DynamicAny.DynAnyFactoryPackage.InconsistentTypeCode e)
{
throw new INTERNAL();
}
}
else if ("array".equals (type))
{
try
{
DynArray dynArray = DynArrayHelper.narrow
(factory.create_dyn_any(value));
dynArray.to_any();
}
catch (org.omg.DynamicAny.DynAnyFactoryPackage.InconsistentTypeCode e)
{
throw new INTERNAL();
}
}
else if ("union".equals (type))
{
try
{
DynUnion dynUnion = DynUnionHelper.narrow
(factory.create_dyn_any(value));
dynUnion.to_any();
}
catch (org.omg.DynamicAny.DynAnyFactoryPackage.InconsistentTypeCode e)
{
throw new INTERNAL();
}
}
else
{
throw new INTERNAL ("Unknown type " + type);
}
}
public void configure(Configuration arg0) throws ConfigurationException
{
this.orb = ((org.jacorb.config.Configuration)arg0).getORB();
try
{
factory = DynAnyFactoryHelper.narrow
(orb.resolve_initial_references("DynAnyFactory"));
}
catch (org.omg.CORBA.ORBPackage.InvalidName e)
{
throw new INTERNAL (e.toString());
}
}
}