package org.jboss.iiop.codebase;
import org.omg.CORBA.Any;
import org.omg.CORBA.LocalObject;
import org.omg.CORBA.ORB;
import org.omg.IOP.Codec;
import org.omg.IOP.CodecPackage.InvalidTypeForEncoding;
import org.omg.IOP.TAG_JAVA_CODEBASE;
import org.omg.IOP.TaggedComponent;
import org.omg.PortableInterceptor.IORInfo;
import org.omg.PortableInterceptor.IORInterceptor;
public class CodebaseInterceptor
extends LocalObject
implements IORInterceptor
{
static final long serialVersionUID = 1028391422637792082L;
private Codec codec;
public CodebaseInterceptor(Codec codec)
{
this.codec = codec;
}
public String name()
{
return CodebaseInterceptor.class.getName();
}
public void destroy()
{
}
public void establish_components(IORInfo info)
{
CodebasePolicy codebasePolicy=
(CodebasePolicy)info.get_effective_policy(CodebasePolicy.TYPE);
if (codebasePolicy != null) {
String codebase = codebasePolicy.getCodebase();
Any any = ORB.init().create_any();
any.insert_string(codebase);
byte[] taggedComponentData;
try {
taggedComponentData = codec.encode_value(any);
}
catch (InvalidTypeForEncoding e) {
throw new RuntimeException("Exception establishing " +
"Java codebase component:" + e);
}
info.add_ior_component(new TaggedComponent(TAG_JAVA_CODEBASE.value,
taggedComponentData));
}
}
}