package ca.szc.keratin.core.net.mbassador; import net.engio.mbassy.dispatch.EnvelopedMessageDispatcher; import net.engio.mbassy.dispatch.FilteredMessageDispatcher; import net.engio.mbassy.dispatch.IHandlerInvocation; import net.engio.mbassy.dispatch.IMessageDispatcher; import net.engio.mbassy.subscription.SubscriptionContext; import net.engio.mbassy.subscription.SubscriptionFactory; public class TimeoutSubscriptionFactory extends SubscriptionFactory { // Super doesn't specify types, can't do anything to correct that and still override @SuppressWarnings( "rawtypes" ) @Override protected IMessageDispatcher buildDispatcher( SubscriptionContext context, IHandlerInvocation invocation ) { IMessageDispatcher dispatcher = new TimeoutMessageDispatcher( context, invocation ); if ( context.getHandlerMetadata().isEnveloped() ) { dispatcher = new EnvelopedMessageDispatcher( dispatcher ); } if ( context.getHandlerMetadata().isFiltered() ) { dispatcher = new FilteredMessageDispatcher( dispatcher ); } return dispatcher; } // TODO override actual handler maker thing, so we target individual methods instead of whole container classes? }