package org.infinispan.server.cli.handlers; import java.util.Arrays; import java.util.Collection; import java.util.Collections; 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.impl.ArgumentWithValue; import org.jboss.as.cli.impl.ArgumentWithoutValue; import org.jboss.as.cli.operation.ParsedCommandLine; /** * The {@link CacheCommand#SITE} handler. * * @author Pedro Ruivo * @since 6.1 */ public class SiteCommandHandler extends NoArgumentsCliCommandHandler { private final List<? extends CommandArgument> arguments; public SiteCommandHandler(CliCommandBuffer buffer) { super(CacheCommand.SITE, buffer); arguments = Arrays.asList( new ArgumentWithoutValue(this, -1, "--status"), new ArgumentWithoutValue(this, -1, "--online"), new ArgumentWithoutValue(this, -1, "--offline"), new ArgumentWithoutValue(this, -1, "--push"), new ArgumentWithoutValue(this, -1, "--cancelpush"), new ArgumentWithoutValue(this, -1, "--cancelreceive"), new ArgumentWithoutValue(this, -1, "--pushstatus"), new ArgumentWithoutValue(this, -1, "--clearpushstatus"), new ArgumentWithoutValue(this, -1, "--sendingsite"), new ArgumentWithoutValue(this, -1, "--onlineall"), new ArgumentWithoutValue(this, -1, "--offlineall"), new ArgumentWithoutValue(this, -1, "--pushall"), new ArgumentWithoutValue(this, -1, "--cancelpushall") ); new ArgumentWithValue(this, null, 0, "--site-name"); } @Override public Collection<CommandArgument> getArguments(CommandContext ctx) { ParsedCommandLine parsedCommandLine = ctx.getParsedCommandLine(); try { for (CommandArgument argument : arguments) { if (argument.isPresent(parsedCommandLine)) { return Collections.emptyList(); } } return Collections.unmodifiableCollection(arguments); } catch (CommandFormatException e) { //ignored! } return Collections.emptyList(); } public static class Provider implements CommandHandlerProvider { @Override public CommandHandler createCommandHandler(CommandContext ctx) { return new SiteCommandHandler(CliCommandBuffer.INSTANCE); } @Override public boolean isTabComplete() { return true; } @Override public String[] getNames() { return new String[] { CacheCommand.SITE.getName() }; } } }