package org.infinispan.interceptors; import org.infinispan.commands.VisitableCommand; import org.infinispan.context.InvocationContext; /** * Callback interface for {@link BaseAsyncInterceptor#invokeNextAndFinally(InvocationContext, VisitableCommand, InvocationFinallyAction)}. * * @author Dan Berindei * @since 9.0 */ @FunctionalInterface public interface InvocationFinallyAction extends InvocationCallback { void accept(InvocationContext rCtx, VisitableCommand rCommand, Object rv, Throwable throwable) throws Throwable; @Override default Object apply(InvocationContext rCtx, VisitableCommand rCommand, Object rv, Throwable throwable) throws Throwable { accept(rCtx, rCommand, rv, throwable); if (throwable == null) { return rv; } else { throw throwable; } } }