package org.infinispan.statetransfer;
import java.util.Collections;
import java.util.HashSet;
import org.infinispan.commands.AbstractVisitor;
import org.infinispan.commands.control.LockControlCommand;
import org.infinispan.commands.tx.CommitCommand;
import org.infinispan.commands.tx.PrepareCommand;
import org.infinispan.commands.tx.RollbackCommand;
import org.infinispan.commands.write.ApplyDeltaCommand;
import org.infinispan.commands.write.ClearCommand;
import org.infinispan.commands.write.EvictCommand;
import org.infinispan.commands.write.InvalidateCommand;
import org.infinispan.commands.write.InvalidateL1Command;
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;
/**
* // TODO: Document this
*
* @author anistor@redhat.com
* @since 5.2
*/
public class AffectedKeysVisitor extends AbstractVisitor {
@Override
public Object visitPrepareCommand(TxInvocationContext ctx, PrepareCommand command) {
return command.getAffectedKeys();
}
@Override
public Object visitCommitCommand(TxInvocationContext ctx, CommitCommand command) {
return ctx.getAffectedKeys();
}
@Override
public Object visitRollbackCommand(TxInvocationContext ctx, RollbackCommand command) {
return ctx.getAffectedKeys();
}
@Override
public Object visitLockControlCommand(TxInvocationContext ctx, LockControlCommand command) {
return new HashSet<Object>(command.getKeys());
}
@Override
public Object visitPutKeyValueCommand(InvocationContext ctx, PutKeyValueCommand command) {
return command.getAffectedKeys();
}
@Override
public Object visitPutMapCommand(InvocationContext ctx, PutMapCommand command) {
return command.getAffectedKeys();
}
@Override
public Object visitApplyDeltaCommand(InvocationContext ctx, ApplyDeltaCommand command) {
return Collections.singleton(command.getKey());
}
@Override
public Object visitRemoveCommand(InvocationContext ctx, RemoveCommand command) {
return command.getAffectedKeys();
}
@Override
public Object visitReplaceCommand(InvocationContext ctx, ReplaceCommand command) {
return command.getAffectedKeys();
}
@Override
public Object visitClearCommand(InvocationContext ctx, ClearCommand command) {
return command.getAffectedKeys();
}
@Override
public Object visitInvalidateCommand(InvocationContext ctx, InvalidateCommand command) {
return null;
}
@Override
public Object visitInvalidateL1Command(InvocationContext ctx, InvalidateL1Command command) {
return null;
}
@Override
public Object visitEvictCommand(InvocationContext ctx, EvictCommand command) {
return null;
}
}