package org.jacorb.test.bugs.bugjac660; import org.omg.CORBA.INTERNAL; import org.omg.IOP.Codec; import org.omg.IOP.ServiceContext; import org.omg.PortableInterceptor.ClientRequestInfo; import org.omg.PortableInterceptor.ClientRequestInterceptor; import org.omg.PortableInterceptor.ForwardRequest; import org.jacorb.orb.ORB; import org.slf4j.Logger; public class ClientInterceptor extends org.omg.CORBA.LocalObject implements ClientRequestInterceptor { private int slot_id = -1; private Codec codec = null; private Logger logger; public ClientInterceptor(ORB orb, int slot_id, Codec codec) { this.slot_id = slot_id; this.codec = codec; logger = orb.getConfiguration ().getLogger("org.jacorb.test"); } public String name() { return "ClientInterceptor"; } public void destroy() { logger.debug("[" + Thread.currentThread() + "] ClientInterceptor: destroy()"); } public void send_request( ClientRequestInfo ri ) throws ForwardRequest { logger.debug("[" + Thread.currentThread() + "] ClientInterceptor: send_request()"); try { org.omg.CORBA.Any any = ri.get_slot( slot_id ); logger.debug("[" + Thread.currentThread() + "] ClientInterceptor: send_request() - get_slot() = " + any); if (any.type().kind().value() != org.omg.CORBA.TCKind._tk_null) { ServiceContext ctx = new ServiceContext(4711, codec.encode( any )); ri.add_request_service_context( ctx, false ); } } catch (Exception e) { throw new INTERNAL (e.getMessage()); } } public void send_poll(ClientRequestInfo ri) { logger.debug("[" + Thread.currentThread() + "] ClientInterceptor: send_poll()"); } public void receive_reply(ClientRequestInfo ri) { logger.debug("[" + Thread.currentThread() + "] ClientInterceptor: receive_reply()"); try { org.omg.CORBA.Any any = ri.get_slot( slot_id ); if (any == null) { logger.debug ("Slot null"); throw new INTERNAL ("Any slot was unexpectedly null"); } String result = any.extract_string(); if (! result.equals ("This is a test AAA")) { throw new Exception ("Did not receive correct message : got <" + result + "> and expected <This is a test AAA>"); } logger.debug ("[" + Thread.currentThread() + "] ClientInterceptor: receive_reply() - get_slot() = " + any); } catch (Exception e) { throw new INTERNAL (e.getMessage()); } } public void receive_exception(ClientRequestInfo ri) throws ForwardRequest { logger.debug("[" + Thread.currentThread() + "] ClientInterceptor: receive_exception()"); } public void receive_other(ClientRequestInfo ri) throws ForwardRequest { logger.debug("[" + Thread.currentThread() + "] ClientInterceptor: receive_other()"); } }// ClientInterceptor