package org.jacorb.test.bugs.bug1014; import org.omg.CORBA.LocalObject; import org.omg.CORBA.NO_PERMISSIONHelper; import org.omg.PortableInterceptor.ClientRequestInfo; import org.omg.PortableInterceptor.ClientRequestInterceptor; import org.omg.PortableInterceptor.ForwardRequest; import org.omg.PortableInterceptor.ORBInitializer; import org.omg.PortableInterceptor.ORBInitInfo; import org.omg.PortableInterceptor.ORBInitInfoPackage.DuplicateName; public class ORBInit extends LocalObject implements ORBInitializer { public void pre_init(ORBInitInfo info) { try { info.add_client_request_interceptor(new RetryOnDenyInterceptor()); } catch (DuplicateName e) { e.printStackTrace(); } } public void post_init(ORBInitInfo info) { /* empty */ } private static class RetryOnDenyInterceptor extends LocalObject implements ClientRequestInterceptor { public void send_request(ClientRequestInfo ri) throws ForwardRequest { /* empty */ } public void send_poll(ClientRequestInfo ri) { /* empty */ } public void receive_reply(ClientRequestInfo ri) { /* empty */ } public void receive_exception(ClientRequestInfo ri) throws ForwardRequest { if (ri.received_exception_id().equals(NO_PERMISSIONHelper.id())) { throw new ForwardRequest(ri.target()); } } public void receive_other(ClientRequestInfo ri) throws ForwardRequest { /* empty */ } public String name() { return "my_client_interceptor"; } public void destroy() { /* empty */ } } }