package org.jacorb.test.bugs.bugjac182; import org.jacorb.orb.CDROutputStream; import org.jacorb.orb.ORB; import org.omg.CORBA.portable.ObjectImpl; import org.omg.IOP.ServiceContext; import org.omg.PortableInterceptor.ClientRequestInfo; import org.omg.PortableInterceptor.ClientRequestInterceptor; import org.omg.PortableInterceptor.ForwardRequest; /** * <code>CInterceptor</code> is a client request interceptor to check that the * object being transmitted is local or not. It then passes that information on * via a service context. * * @author Nick Cross */ public class CInterceptor extends org.omg.CORBA.LocalObject implements ClientRequestInterceptor { private final ORB orb; public CInterceptor(ORB orb) { this.orb = orb; } /** * <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 { byte []result = null; ObjectImpl o = (ObjectImpl)ri.effective_target(); // This part is proprietary code to marshal the service context data final CDROutputStream os = (CDROutputStream) orb.create_output_stream(); if (o._is_local()) { os.write_boolean (true); } else { os.write_boolean (false); } result = os.getBufferCopy(); os.close(); // End ri.add_request_service_context (new ServiceContext (BugJac182Test.svcID, result), true); } /** * <code>name</code> (default impl). * * @return a <code>String</code> value */ public String name() { return "CInterceptor"; } /** * <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 { } }