package org.jacorb.test.bugs.bugjac192;
import org.jacorb.orb.portableInterceptor.ClientRequestInfoImpl;
import org.omg.CORBA.INTERNAL;
import org.omg.CORBA.ORB;
import org.omg.CORBA.Policy;
import org.omg.CORBA.SetOverrideType;
import org.omg.CORBA.ORBPackage.InvalidName;
import org.omg.IOP.TAG_INTERNET_IOP;
import org.omg.IOP.TaggedProfile;
import org.omg.PortableInterceptor.ClientRequestInfo;
import org.omg.PortableInterceptor.ClientRequestInterceptor;
import org.omg.PortableInterceptor.ForwardRequest;
import org.omg.RTCORBA.Protocol;
import org.omg.RTCORBA.RTORB;
import org.omg.RTCORBA.RTORBHelper;
/**
* <code>AInterceptor</code> is a client request interceptor to help test
* service context propagation after a ForwardRequest. It throws the
* ForwardRequest
*
* @author Nick Cross
*/
public class AInterceptor
extends org.omg.CORBA.LocalObject
implements ClientRequestInterceptor
{
private static boolean once;
/**
* <code>send_request</code>
*
* @param ri a <code>ClientRequestInfo</code> value
* @exception ForwardRequest if an error occurs
*/
public void send_request( ClientRequestInfo ri )
throws ForwardRequest
{
TaggedProfile effProfile = ri.effective_profile();
if (!once &&
effProfile.tag == TAG_INTERNET_IOP.value &&
ri.forward_reference() == null)
{
try
{
ORB orb = ((ClientRequestInfoImpl)ri).orb();
RTORB rtorb = RTORBHelper.narrow(orb.resolve_initial_references("RTORB"));
Protocol wiop = new Protocol();
// This is WIOP protocol value from WIOPFactories.
wiop.protocol_type = 7;
Policy[] wiopP = new Policy[]
{ rtorb.create_client_protocol_policy(new Protocol[] { wiop }) };
org.omg.CORBA.Object obj = ri.effective_target()._set_policy_override(wiopP, SetOverrideType.SET_OVERRIDE);
throw new ForwardRequest (obj);
}
catch (InvalidName e)
{
once = true;
throw new INTERNAL ("Caught invalid name " + e);
}
}
}
/**
* <code>name</code> (default impl).
*
* @return a <code>String</code> value
*/
public String name()
{
return "AInterceptor";
}
/**
* <code>destroy</code> (default impl).
*/
public void destroy()
{
}
/**
* <code>send_poll</code> (default impl).
*
* @param ri a <code>ClientRequestInfo</code> value
*/
public void send_poll( ClientRequestInfo ri )
{
}
/**
* <code>receive_reply</code> (default impl).
*
* @param ri a <code>ClientRequestInfo</code> value
*/
public void receive_reply( ClientRequestInfo ri )
{
}
/**
* <code>receive_exception</code> (default impl).
*
* @param ri a <code>ClientRequestInfo</code> value
* @exception ForwardRequest if an error occurs
*/
public void receive_exception( ClientRequestInfo ri )
throws ForwardRequest
{
}
/**
* <code>receive_other</code> (default impl).
*
* @param ri a <code>ClientRequestInfo</code> value
* @exception ForwardRequest if an error occurs
*/
public void receive_other( ClientRequestInfo ri )
throws ForwardRequest
{
}
}