Package com.google.jstestdriver

Source Code of com.google.jstestdriver.Args4jFlagsParser$StringListOptionHandler

/*
* Copyright 2009 Google Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/

package com.google.jstestdriver;

import com.google.jstestdriver.config.InvalidFlagException;

import org.kohsuke.args4j.CmdLineException;
import org.kohsuke.args4j.CmdLineParser;
import org.kohsuke.args4j.OptionDef;
import org.kohsuke.args4j.spi.OptionHandler;
import org.kohsuke.args4j.spi.Parameters;
import org.kohsuke.args4j.spi.Setter;

import java.io.ByteArrayOutputStream;
import java.util.ArrayList;
import java.util.List;

/**
* Parsers the Flags from args.
* @author corysmith (corbinrsmith@google.com)
*
*/
public class Args4jFlagsParser implements FlagsParser {

  public static class StringListOptionHandler extends OptionHandler<List<String>> {
 
    public StringListOptionHandler(CmdLineParser parser, OptionDef option,
        Setter<? super List<String>> setter) {
      super(parser, option, setter);
    }
 
    /**
     * @see org.kohsuke.args4j.spi.OptionHandler#getDefaultMetaVariable()
     */
    @Override
    public String getDefaultMetaVariable() {
      return "VAR";
    }
 
    @Override
    public int parseArguments(Parameters params) throws CmdLineException {
      String[] rawArgs = params.getParameter(0).split(",");
      List<String> args = new ArrayList<String>(rawArgs.length);
      for (String arg : rawArgs) {
        args.add(arg.trim());
      }
      setter.addValue(args);
      return 1;
    }
  }
 
  public static class LongOptionHandler extends OptionHandler<Long> {
    public LongOptionHandler(CmdLineParser parser, OptionDef option,
        Setter<? super Long> setter) {
      super(parser, option, setter);
    }

    @Override
    public String getDefaultMetaVariable() {
      return "VAR";
    }

    @Override
    public int parseArguments(Parameters params) throws CmdLineException {
      try {
        setter.addValue(Long.parseLong(params.getParameter(0)));
        return 1;
      } catch (NumberFormatException e) {
        throw new CmdLineException(e);
      }
    }
  }


  @Override
  public Flags parseArgument(String[] strings) {
    FlagsImpl flags = new FlagsImpl();
    CmdLineParser.registerHandler(List.class, StringListOptionHandler.class);
    CmdLineParser.registerHandler(Long.class, LongOptionHandler.class);
    CmdLineParser cmdLineParser = new CmdLineParser(flags);
    try {
      cmdLineParser.parseArgument(strings);
    } catch (CmdLineException e) {
      ByteArrayOutputStream stream = new ByteArrayOutputStream();
      cmdLineParser.printUsage(stream);
      throw new InvalidFlagException(e.getMessage(), stream.toString());
    }
    if (strings.length == 0 || flags.getDisplayHelp()) {
      ByteArrayOutputStream stream = new ByteArrayOutputStream();
      cmdLineParser.printUsage(stream);
      throw new InvalidFlagException("", stream.toString());
    }
    return flags;
  }
}
TOP

Related Classes of com.google.jstestdriver.Args4jFlagsParser$StringListOptionHandler

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.