public CompletionMatch complete() throws CompletionException { Class<? extends Completer> completerType = parameter.getCompleterType(); Completer completer = null; if (completerType != EmptyCompleter.class) {
public Completion complete(ParameterDescriptor parameter, String prefix) throws Exception { if (parameter.getType() == ValueType.ENUM) { Completion.Builder builder = null; Class<?> vt = parameter.getDeclaredType(); Method valuesM = vt.getDeclaredMethod("values"); Method nameM = vt.getMethod("name"); Enum<?>[] values = (Enum<?>[])valuesM.invoke(null); for (Enum<?> value : values) { String name = (String)nameM.invoke(value); if (name.startsWith(prefix)) { if (builder == null) { builder = Completion.builder(prefix); } builder.add(name.substring(prefix.length()), true); } } return builder != null ? builder.build() : Completion.create(); } else { return Completion.create(); } } }
protected boolean printParameter(boolean printed, ParameterDescriptor parameter, Appendable stream) throws IOException { if (!printed) { stream.append("PARAMETERS\n"); } stream.append(Util.MAN_TAB); parameter.printUsage(stream); String parameterText = parameter.getDescription().getBestEffortMan(); if (parameterText.length() > 0) { stream.append("\n"); Util.indent(Util.MAN_TAB_EXTRA, parameterText, stream); } stream.append("\n\n"); return true; } }
private List<String[]> collectParametersTuples(CommandDescriptor<?> command) throws IOException { CommandDescriptor<?> owner = command.getOwner(); List<String[]> tuples; Collection<? extends ParameterDescriptor> parameters; if (owner != null) { tuples = collectParametersTuples(owner); parameters = command.getOptions(); } else { tuples = new ArrayList<String[]>(); parameters = command.getParameters(); } for (ParameterDescriptor parameter : parameters) { StringBuilder sb = new StringBuilder(); parameter.printUsage(sb); String usage = sb.toString(); tuples.add(new String[]{usage, parameter.getUsage()}); } return tuples; }
static void bind(InvocationMatch<?> match, Iterable<ParameterDescriptor> parameters, Object target, Object[] args) throws SyntaxException, InvocationException { for (ParameterDescriptor parameter : parameters) { ParameterMatch parameterMatch = match.getParameter(parameter); Object value = parameterMatch != null ? parameterMatch.computeValue() : null; if (value == null) { if (parameter.getDeclaredType().isPrimitive() || parameter.isRequired()) { if (parameter instanceof ArgumentDescriptor) { ArgumentDescriptor argument = (ArgumentDescriptor)parameter; throw new SyntaxException("Missing argument " + argument.getName()); } else { OptionDescriptor option = (OptionDescriptor)parameter; throw new SyntaxException("Missing option " + option.getNames()); } } } else { ((Binding)parameter).set(target, args, value); } } }
public final boolean isMultiValued() { return getMultiplicity() == Multiplicity.MULTI; }
void configure(InvocationMatch<T> classMatch, T command) throws InvocationException, SyntaxException { for (ParameterDescriptor parameter : getParameters()) { ParameterMatch match = classMatch.getParameter(parameter); if (match == null) { if (parameter.isRequired()) { if (parameter instanceof ArgumentDescriptor) { ArgumentDescriptor argument = (ArgumentDescriptor)parameter; throw new SyntaxException("Missing argument " + argument.getName()); } else { OptionDescriptor option = (OptionDescriptor)parameter; throw new SyntaxException("Missing option " + option.getNames()); } } } else { Object value = match.computeValue(); Field f = ((ClassFieldBinding)parameter.getBinding()).getField(); try { f.setAccessible(true); f.set(command, value); } catch (Exception e) { throw new InvocationException(e.getMessage(), e); } } } }
/** * Compute the value from the parameter metadata and the values list. * * @return the invocation value * @throws org.crsh.cli.impl.SyntaxException anything that would prevent the value from being computed */ public Object computeValue() throws SyntaxException { List<String> strings = getStrings(); return parameter.parse(strings); } }
public List<String> getStrings() { if (strings == null) { List<String> strings = new ArrayList<String>(values.size()); for (LiteralValue value : values) { strings.add(parameter.isUnquote() ? value.getValue() : value.getRawValue()); } this.strings = strings; } return strings; }
@Override public Completion complete(ParameterDescriptor parameter, String prefix) throws Exception { if (parameter.getType() == ValueType.OBJECT_NAME) { MBeanServer server = ManagementFactory.getPlatformMBeanServer(); int colon = prefix.indexOf(':');
if (parameterType.isPrimitive() || parameter.isRequired()) { if (parameter instanceof ArgumentDescriptor) { ArgumentDescriptor argument = (ArgumentDescriptor)parameter;
private List<String[]> collectParametersTuples(CommandDescriptor<?> command) throws IOException { CommandDescriptor<?> owner = command.getOwner(); List<String[]> tuples; Collection<? extends ParameterDescriptor> parameters; if (owner != null) { tuples = collectParametersTuples(owner); parameters = command.getOptions(); } else { tuples = new ArrayList<String[]>(); parameters = command.getParameters(); } for (ParameterDescriptor parameter : parameters) { StringBuilder sb = new StringBuilder(); parameter.printUsage(sb); String usage = sb.toString(); tuples.add(new String[]{usage, parameter.getUsage()}); } return tuples; }
static void bind(InvocationMatch<?> match, Iterable<ParameterDescriptor> parameters, Object target, Object[] args) throws SyntaxException, InvocationException { for (ParameterDescriptor parameter : parameters) { ParameterMatch parameterMatch = match.getParameter(parameter); Object value = parameterMatch != null ? parameterMatch.computeValue() : null; if (value == null) { if (parameter.getDeclaredType().isPrimitive() || parameter.isRequired()) { if (parameter instanceof ArgumentDescriptor) { ArgumentDescriptor argument = (ArgumentDescriptor)parameter; throw new SyntaxException("Missing argument " + argument.getName()); } else { OptionDescriptor option = (OptionDescriptor)parameter; throw new SyntaxException("Missing option " + option.getNames()); } } } else { ((Binding)parameter).set(target, args, value); } } }
public final boolean isSingleValued() { return getMultiplicity() == Multiplicity.SINGLE; }
/** * Compute the value from the parameter metadata and the values list. * * @return the invocation value * @throws org.crsh.cli.impl.SyntaxException anything that would prevent the value from being computed */ public Object computeValue() throws SyntaxException { List<String> strings = getStrings(); return parameter.parse(strings); } }
public List<String> getStrings() { if (strings == null) { List<String> strings = new ArrayList<String>(values.size()); for (LiteralValue value : values) { strings.add(parameter.isUnquote() ? value.getValue() : value.getRawValue()); } this.strings = strings; } return strings; }
@Override public Completion complete(ParameterDescriptor parameter, String prefix) throws Exception { if (parameter.getType() == ValueType.OBJECT_NAME) { MBeanServer server = ManagementFactory.getPlatformMBeanServer(); int colon = prefix.indexOf(':');
public CompletionMatch complete() throws CompletionException { Class<? extends Completer> completerType = parameter.getCompleterType(); Completer completer = null; if (completerType != EmptyCompleter.class) {
protected boolean printParameter(boolean printed, ParameterDescriptor parameter, Appendable stream) throws IOException { if (!printed) { stream.append("PARAMETERS\n"); } stream.append(Util.MAN_TAB); parameter.printUsage(stream); String parameterText = parameter.getDescription().getBestEffortMan(); if (parameterText.length() > 0) { stream.append("\n"); Util.indent(Util.MAN_TAB_EXTRA, parameterText, stream); } stream.append("\n\n"); return true; } }
writer.append(" "); StringBuilder sb = new StringBuilder(); parameter.printUsage(sb); String usage = sb.toString(); writer.append(usage); parameterBilto.add(parameter.getUsage()); parameterUsages.add(usage);