All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.infinispan.interceptors.base.PrePostProcessingCommandInterceptor Maven / Gradle / Ivy

There is a newer version: 9.1.7.Final
Show newest version
package org.infinispan.interceptors.base;

import org.infinispan.commands.VisitableCommand;
import org.infinispan.commands.read.GetKeyValueCommand;
import org.infinispan.commands.read.SizeCommand;
import org.infinispan.commands.tx.CommitCommand;
import org.infinispan.commands.tx.PrepareCommand;
import org.infinispan.commands.tx.RollbackCommand;
import org.infinispan.commands.write.ClearCommand;
import org.infinispan.commands.write.EvictCommand;
import org.infinispan.commands.write.PutKeyValueCommand;
import org.infinispan.commands.write.PutMapCommand;
import org.infinispan.commands.write.RemoveCommand;
import org.infinispan.commands.write.ReplaceCommand;
import org.infinispan.context.InvocationContext;
import org.infinispan.context.impl.TxInvocationContext;

/**
 * This interceptor adds pre and post processing to each visitXXX() method.
 * 

* For each visitXXX() method invoked, it will first call {@link #doBeforeCall(InvocationContext, * VisitableCommand)} and if this method returns true, it will proceed to invoking a handleXXX() method and * lastly, {@link #doAfterCall(InvocationContext, VisitableCommand)} in a finally block. Note that the * doAfterCall() method is still invoked even if doBeforeCall() returns false. *

* Instead of overriding visitXXX() methods, implementations should override their handleXXX() * counterparts defined in this class instead, as well as the {@link #doAfterCall(InvocationContext ,VisitableCommand)} * method and optionally {@link #doBeforeCall(InvocationContext, VisitableCommand)}. *

* * @author [email protected] * @since 4.0 */ public abstract class PrePostProcessingCommandInterceptor extends CommandInterceptor { @Override public Object visitPutKeyValueCommand(InvocationContext ctx, PutKeyValueCommand command) throws Throwable { try { return (doBeforeCall(ctx, command)) ? handlePutKeyValueCommand(ctx, command) : null; } finally { doAfterCall(ctx, command); } } protected Object handlePutKeyValueCommand(InvocationContext ctx, PutKeyValueCommand command) throws Throwable { return handleDefault(ctx, command); } @Override public Object visitRemoveCommand(InvocationContext ctx, RemoveCommand command) throws Throwable { try { return (doBeforeCall(ctx, command)) ? handleRemoveCommand(ctx, command) : null; } finally { doAfterCall(ctx, command); } } protected Object handleRemoveCommand(InvocationContext ctx, RemoveCommand command) throws Throwable { return handleDefault(ctx, command); } @Override public Object visitReplaceCommand(InvocationContext ctx, ReplaceCommand command) throws Throwable { try { return (doBeforeCall(ctx, command)) ? handleReplaceCommand(ctx, command) : null; } finally { doAfterCall(ctx, command); } } protected Object handleReplaceCommand(InvocationContext ctx, ReplaceCommand command) throws Throwable { return handleDefault(ctx, command); } @Override public Object visitClearCommand(InvocationContext ctx, ClearCommand command) throws Throwable { try { return (doBeforeCall(ctx, command)) ? handleClearCommand(ctx, command) : null; } finally { doAfterCall(ctx, command); } } protected Object handleClearCommand(InvocationContext ctx, ClearCommand command) throws Throwable { return handleDefault(ctx, command); } @Override public Object visitPutMapCommand(InvocationContext ctx, PutMapCommand command) throws Throwable { try { return (doBeforeCall(ctx, command)) ? handlePutMapCommand(ctx, command) : null; } finally { doAfterCall(ctx, command); } } protected Object handlePutMapCommand(InvocationContext ctx, PutMapCommand command) throws Throwable { return handleDefault(ctx, command); } @Override public Object visitEvictCommand(InvocationContext ctx, EvictCommand command) throws Throwable { try { return (doBeforeCall(ctx, command)) ? handleEvictCommand(ctx, command) : null; } finally { doAfterCall(ctx, command); } } protected Object handleEvictCommand(InvocationContext ctx, EvictCommand command) throws Throwable { return handleDefault(ctx, command); } // read commands @Override public Object visitSizeCommand(InvocationContext ctx, SizeCommand command) throws Throwable { try { return (doBeforeCall(ctx, command)) ? handleSizeCommand(ctx, command) : null; } finally { doAfterCall(ctx, command); } } protected Object handleSizeCommand(InvocationContext ctx, SizeCommand command) throws Throwable { return handleDefault(ctx, command); } @Override public Object visitGetKeyValueCommand(InvocationContext ctx, GetKeyValueCommand command) throws Throwable { try { return (doBeforeCall(ctx, command)) ? handleGetKeyValueCommand(ctx, command) : null; } finally { doAfterCall(ctx, command); } } protected Object handleGetKeyValueCommand(InvocationContext ctx, GetKeyValueCommand command) throws Throwable { return handleDefault(ctx, command); } // tx commands @Override public Object visitPrepareCommand(TxInvocationContext ctx, PrepareCommand command) throws Throwable { try { return (doBeforeCall(ctx, command)) ? handlePrepareCommand(ctx, command) : null; } finally { doAfterCall(ctx, command); } } protected Object handlePrepareCommand(InvocationContext ctx, PrepareCommand command) throws Throwable { return handleDefault(ctx, command); } @Override public Object visitRollbackCommand(TxInvocationContext ctx, RollbackCommand command) throws Throwable { try { return (doBeforeCall(ctx, command)) ? handleRollbackCommand(ctx, command) : null; } finally { doAfterCall(ctx, command); } } protected Object handleRollbackCommand(InvocationContext ctx, RollbackCommand command) throws Throwable { return handleDefault(ctx, command); } @Override public Object visitCommitCommand(TxInvocationContext ctx, CommitCommand command) throws Throwable { try { return (doBeforeCall(ctx, command)) ? handleCommitCommand(ctx, command) : null; } finally { doAfterCall(ctx, command); } } protected Object handleCommitCommand(InvocationContext ctx, CommitCommand command) throws Throwable { return handleDefault(ctx, command); } /** * Callback that is invoked after every handleXXX() method defined above. * * @param ctx invocation context * @param command command which was invoked */ protected abstract void doAfterCall(InvocationContext ctx, VisitableCommand command); protected boolean doBeforeCall(InvocationContext ctx, VisitableCommand command) { return true; } }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy