org.infinispan.remoting.inboundhandler.AbstractDelegatingHandler Maven / Gradle / Ivy
package org.infinispan.remoting.inboundhandler;
import org.infinispan.commands.remote.CacheRpcCommand;
/**
* Class to be extended to allow some control over the {@link org.infinispan.remoting.inboundhandler.PerCacheInboundInvocationHandler}
* in tests.
*
* @author Pedro Ruivo
* @since 7.1
*/
public abstract class AbstractDelegatingHandler implements PerCacheInboundInvocationHandler {
protected final PerCacheInboundInvocationHandler delegate;
protected AbstractDelegatingHandler(PerCacheInboundInvocationHandler delegate) {
this.delegate = delegate;
}
@Override
public void handle(CacheRpcCommand command, Reply reply, DeliverOrder order) {
boolean canDelegate = beforeHandle(command, reply, order);
if (canDelegate) {
delegate.handle(command, reply, order);
}
afterHandle(command, order, canDelegate);
}
/**
* Invoked before the command is handled by the real {@link org.infinispan.remoting.inboundhandler.PerCacheInboundInvocationHandler}.
*
* @return {@code true} if the command should be handled by the read {@link org.infinispan.remoting.inboundhandler.PerCacheInboundInvocationHandler},
* {@code false} otherwise.
*/
protected boolean beforeHandle(CacheRpcCommand command, Reply reply, DeliverOrder order) {
return true;
}
/**
* Invoked after the command is handled.
*
* @param delegated {@code true} if the command was handled by the real {@link org.infinispan.remoting.inboundhandler.PerCacheInboundInvocationHandler},
* {@code false} otherwise.
*/
protected void afterHandle(CacheRpcCommand command, DeliverOrder order, boolean delegated) {
//no-op by default
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy