OptionWithValuesListHandler.java

  1. package org.eclipse.jgit.pgm.opt;

  2. import java.util.ArrayList;
  3. import java.util.List;

  4. import org.eclipse.jgit.pgm.internal.CLIText;
  5. import org.kohsuke.args4j.CmdLineException;
  6. import org.kohsuke.args4j.CmdLineParser;
  7. import org.kohsuke.args4j.OptionDef;
  8. import org.kohsuke.args4j.spi.OptionHandler;
  9. import org.kohsuke.args4j.spi.Parameters;
  10. import org.kohsuke.args4j.spi.Setter;

  11. /**
  12.  * Handler which allows to parse option with few values
  13.  *
  14.  * @since 4.2
  15.  */
  16. public class OptionWithValuesListHandler extends OptionHandler<List<?>> {

  17.     /**
  18.      * Constructor for OptionWithValuesListHandler.
  19.      *
  20.      * @param parser
  21.      *            a {@link org.kohsuke.args4j.CmdLineParser} object.
  22.      * @param option
  23.      *            a {@link org.kohsuke.args4j.OptionDef} object.
  24.      * @param setter
  25.      *            a {@link org.kohsuke.args4j.spi.Setter} object.
  26.      */
  27.     public OptionWithValuesListHandler(CmdLineParser parser,
  28.             OptionDef option, Setter<List<?>> setter) {
  29.         super(parser, option, setter);
  30.     }

  31.     /** {@inheritDoc} */
  32.     @Override
  33.     public int parseArguments(Parameters params) throws CmdLineException {
  34.         final List<String> list = new ArrayList<>();
  35.         for (int idx = 0; idx < params.size(); idx++) {
  36.             final String p;
  37.             try {
  38.                 p = params.getParameter(idx);
  39.             } catch (CmdLineException cle) {
  40.                 break;
  41.             }
  42.             list.add(p);
  43.         }
  44.         setter.addValue(list);
  45.         return list.size();
  46.     }

  47.     /** {@inheritDoc} */
  48.     @Override
  49.     public String getDefaultMetaVariable() {
  50.         return CLIText.get().metaVar_values;
  51.     }

  52. }