// // [% idstr %] package [% package %]; [% FOREACH import = imports -%] import [% import %]; [% END -%] /** * Provides the implementation of the {@link [% name %]Service} interface * that marshalls the arguments and delivers the request to the provider * on the server. Also provides an implementation of the response listener * interfaces that marshall the response arguments and deliver them back * to the requesting client. */ public class [% name %]Marshaller extends InvocationMarshaller implements [% name %]Service { [% FOREACH l = listeners -%] // documentation inherited public static class [% l.name %]Marshaller extends ListenerMarshaller implements [% l.name %]Listener { [% FOREACH lm = l.methods -%] /** The method id used to dispatch {@link #[% lm.mname %]} * responses. */ public static final int [% lm.mcode %] = [% lm.mcodeval %]; // documentation inherited from interface public void [% lm.mname %] ([% lm.arglist %]) { omgr.postEvent(new InvocationResponseEvent( callerOid, requestId, [% lm.mcode %], new Object[] { [% lm.wrapped_args %] })); } [% END -%] // documentation inherited public void dispatchResponse (int methodId, Object[] args) { switch (methodId) { [% FOREACH lm = l.methods -%] case [% lm.mcode %]: (([% l.name %]Listener)listener).[% lm.mname %]( [% lm.unwrapped_args %]); return; [% END -%] default: super.dispatchResponse(methodId, args); } } } [% END -%] [% FOREACH m = methods -%] /** The method id used to dispatch {@link #[% m.mname %]} requests. */ public static final int [% m.mcode %] = [% m.mcodeval %]; // documentation inherited from interface public void [% m.mname %] ([% m.arglist %]) { [% FOREACH la = m.listener_args -%] [% la.mtype %] [% la.aname %] = new [% la.mtype %](); [% la.aname %].listener = [% la.oaname %]; [% END -%] sendRequest(arg1, [% m.mcode %], new Object[] { [% m.wrapped_args %] }); } [% END -%] }