package org.jacorb.test.bugs.bug960;
import org.jacorb.orb.portableInterceptor.ORBInitInfoImpl;
import org.omg.CORBA.INITIALIZE;
import org.omg.CORBA.LocalObject;
import org.omg.IOP.Codec;
import org.omg.IOP.CodecFactory;
import org.omg.IOP.CodecFactoryHelper;
import org.omg.IOP.ENCODING_CDR_ENCAPS;
import org.omg.IOP.Encoding;
import org.omg.IOP.CodecFactoryPackage.UnknownEncoding;
import org.omg.PortableInterceptor.ORBInitInfo;
import org.omg.PortableInterceptor.ORBInitializer;
import org.omg.PortableInterceptor.ORBInitInfoPackage.DuplicateName;
import org.omg.PortableInterceptor.ORBInitInfoPackage.InvalidName;
public final class Initializer extends LocalObject implements ORBInitializer
{
public void pre_init(ORBInitInfo info)
{
}
private Codec createCodec(ORBInitInfo info)
{
org.omg.CORBA.Object obj;
try
{
obj = info.resolve_initial_references("CodecFactory");
}
catch (InvalidName e)
{
String message = "Unexpected error accessing Codec Factory";
throw new INITIALIZE(message);
}
CodecFactory codecFactory = CodecFactoryHelper.narrow(obj);
Encoding encoding = new Encoding(ENCODING_CDR_ENCAPS.value, (byte) 1,
(byte) 2);
try
{
return codecFactory.create_codec(encoding);
}
catch (UnknownEncoding e)
{
String message = "Unexpected error of encoding";
throw new INITIALIZE(message);
}
}
public void post_init(ORBInitInfo info)
{
Codec codec = createCodec(info);
ORBInitInfoImpl infoImpl = (ORBInitInfoImpl) info;
try
{
info.add_client_request_interceptor(new ClientRequestInterceptorImpl(
"ClientRequestInterceptor", codec));
info.add_server_request_interceptor(new ServerRequestInterceptorImpl(
"ServerRequestInterceptor", infoImpl.getORB(), codec));
}
catch (DuplicateName e)
{
String message = "Unexpected error registering interceptors";
throw new INITIALIZE(message);
}
}
}