org.infinispan.server.cli.handlers.PutCommandHandler Maven / Gradle / Ivy
package org.infinispan.server.cli.handlers;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import org.infinispan.server.cli.util.CliCommandBuffer;
import org.jboss.as.cli.CommandArgument;
import org.jboss.as.cli.CommandContext;
import org.jboss.as.cli.CommandFormatException;
import org.jboss.as.cli.CommandHandler;
import org.jboss.as.cli.CommandHandlerProvider;
import org.jboss.as.cli.handlers.SimpleTabCompleter;
import org.jboss.as.cli.impl.ArgumentWithValue;
import org.jboss.as.cli.impl.ArgumentWithoutValue;
import org.jboss.as.cli.operation.ParsedCommandLine;
/**
* The {@link CacheCommand#PUT} handler.
*
* @author Pedro Ruivo
* @since 6.1
*/
public class PutCommandHandler extends KeyWithCodecCommandHandler {
private final ArgumentWithoutValue putIfAbsent;
private final ArgumentWithValue expires;
private final ArgumentWithValue maxIdle;
public PutCommandHandler(CliCommandBuffer buffer) {
super(CacheCommand.PUT, buffer);
putIfAbsent = new ArgumentWithoutValue(this, -1, "--ifabsent");
new ArgumentWithValue(this, null, 1, "--value");
expires = new ArgumentWithValue(this, new SimpleTabCompleter(new String[] { "expires" }), 2, "--expires");
new ArgumentWithValue(this, null, 3, "--expiration");
maxIdle = new ArgumentWithValue(this, new SimpleTabCompleter(new String[] { "maxidle" }), 4, "--max-idle");
new ArgumentWithValue(this, null, 5, "--max-idle-time");
}
@Override
public Collection getArguments(CommandContext ctx) {
List argumentList = new ArrayList(8);
try {
ParsedCommandLine parsedCommandLine = ctx.getParsedCommandLine();
int size = parsedCommandLine.getOtherProperties().size();
if (!codec.isPresent(parsedCommandLine) && size == 0) {
argumentList.add(codec);
}
if (!putIfAbsent.isPresent(parsedCommandLine) && size == 0) {
argumentList.add(putIfAbsent);
}
if (addIfMissing(parsedCommandLine, "expires", 2)) {
argumentList.add(expires);
}
if (addIfMissing(parsedCommandLine, "maxidle", 4)) {
argumentList.add(maxIdle);
}
} catch (CommandFormatException e) {
//ignored!
}
return argumentList;
}
private static boolean addIfMissing(ParsedCommandLine parsedCommandLine, String name, int index) {
int size = parsedCommandLine.getOtherProperties().size();
String lastProperty = parsedCommandLine.getLastParsedPropertyValue();
return (size == index && lastProperty == null)
|| (size == index + 1 && lastProperty != null && name.startsWith(lastProperty));
}
public static class Provider implements CommandHandlerProvider {
@Override
public CommandHandler createCommandHandler(CommandContext ctx) {
return new PutCommandHandler(CliCommandBuffer.INSTANCE);
}
@Override
public boolean isTabComplete() {
return true;
}
@Override
public String[] getNames() {
return new String[] { CacheCommand.PUT.getName() };
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy