Java 类org.apache.commons.exec.PumpStreamHandler 实例源码

项目:guetzliconverter    文件:ProcessExecutor.java   
@Override
public Long call() throws Exception {
    Executor executor = new DefaultExecutor();
    executor.setProcessDestroyer(new ShutdownHookProcessDestroyer());
    ExecuteWatchdog watchDog = new ExecuteWatchdog(watchdogTimeout);
    executor.setWatchdog(watchDog);
    executor.setStreamHandler(new PumpStreamHandler(new MyLogOutputStream(handler, true), new MyLogOutputStream(handler, false)));
    Long exitValue;
    try {
        exitValue = new Long(executor.execute(commandline));
    } catch (ExecuteException e) {
        exitValue = new Long(e.getExitValue());
    }
    if (watchDog.killedProcess()) {
        exitValue = WATCHDOG_EXIST_VALUE;
    }
    return exitValue;
}
项目:confd-maven-plugin    文件:MavenRunnerStepdefs.java   
@When("I run maven with args: (.*)")
public void runMavenCommand(List<String> mvnArgs) throws IOException {
    this.mvnArgs.addAll(mvnArgs);
    System.out.println("Launching Maven with args <" + Joiner.on(" ").join(mvnArgs) + ">");
    CommandLine cmdLine = new CommandLine(getCommandLine());
    for (String mvnArg : mvnArgs) {
        cmdLine.addArgument(mvnArg);
    }
    if (confdForCucumberLocation != null) {
        cmdLine.addArgument("-Dcucumber.confd.binary.path=" + confdForCucumberLocation);
    }
    DefaultExecutor executor = new DefaultExecutor();
    if (projectRootAsFile != null) {
        executor.setWorkingDirectory(projectRootAsFile);
    }
    executor.setExitValue(expectedExitCode);
    executor.setStreamHandler(new PumpStreamHandler(new LogOutputStream() {
        @Override
        protected void processLine(String line, int level) {
            System.out.println(line);
            executorOutput.add(line);
        }
    }));
    exitCode = executor.execute(cmdLine, environment);
    fullOutput = Joiner.on(LINE_SEPARATOR).join(executorOutput);
}
项目:stage-job    文件:ScriptUtil.java   
/**
 * 日志文件输出方式
 *
 * 优点:支持将目标数据实时输出到指定日志文件中去
 * 缺点:
 *      标准输出和错误输出优先级固定,可能和脚本中顺序不一致
 *      Java无法实时获取
 *
 * @param command
 * @param scriptFile
 * @param logFile
 * @param params
 * @return
 * @throws IOException
 */
public static int execToFile(String command, String scriptFile, String logFile, String... params) throws IOException {
    // 标准输出:print (null if watchdog timeout)
    // 错误输出:logging + 异常 (still exists if watchdog timeout)
    // 标准输入
    FileOutputStream fileOutputStream = new FileOutputStream(logFile, true);
    PumpStreamHandler streamHandler = new PumpStreamHandler(fileOutputStream, fileOutputStream, null);

    // command
    CommandLine commandline = new CommandLine(command);
    commandline.addArgument(scriptFile);
    if (params!=null && params.length>0) {
        commandline.addArguments(params);
    }

    // exec
    DefaultExecutor exec = new DefaultExecutor();
    exec.setExitValues(null);
    exec.setStreamHandler(streamHandler);
    int exitValue = exec.execute(commandline);  // exit code: 0=success, 1=error
    return exitValue;
}
项目:jekyll2cms    文件:JekyllService.java   
/**
 * Starts the jekyll build process (jekyll build --incremental)
 * @return true, if jekyll build was successful
 */
public boolean startJekyllCI() {
    int exitValue = -1;
    String line = JEKYLL_PATH;
    ByteArrayOutputStream jekyllBuildOutput = new ByteArrayOutputStream();
    CommandLine cmdLine = CommandLine.parse(line);
    cmdLine.addArgument(JEKYLL_OPTION_BUILD);
    cmdLine.addArgument(JEKYLL_OPTION_INCR);
    DefaultExecutor executor = new DefaultExecutor();
    executor.setWorkingDirectory(new File(LOCAL_REPO_PATH));
    PumpStreamHandler streamHandler = new PumpStreamHandler(jekyllBuildOutput);
    executor.setStreamHandler(streamHandler);
    try {
        LOGGER.info("Starting jekyll build");
        exitValue = executor.execute(cmdLine);
        LOGGER.info("Jekyll build command executed");
    } catch (IOException e) {
        LOGGER.error("Error while executing jekyll build. Error message: {}", e.getMessage());
        e.printStackTrace();
        return false;
    }
    printJekyllStatus(exitValue, jekyllBuildOutput.toString());
    return true;
}
项目:commons-sandbox    文件:Tests.java   
public static void main(String[] args) throws Exception {
    String cmd = "/tmp/test.sh";
    CommandLine cmdLine = CommandLine.parse("/bin/bash " + cmd);

    ByteArrayOutputStream stdout = new ByteArrayOutputStream();
    ByteArrayOutputStream stderr = new ByteArrayOutputStream();
    PumpStreamHandler psh = new PumpStreamHandler(stdout, stderr);

    psh.setStopTimeout(TIMEOUT_FIVE_MINUTES);

    ExecuteWatchdog watchdog = new ExecuteWatchdog(TIMEOUT_TEN_MINUTES); // timeout in milliseconds

    Executor executor = new DefaultExecutor();
    executor.setExitValue(0);
    executor.setStreamHandler(psh);
    executor.setWatchdog(watchdog);

    int exitValue = executor.execute(cmdLine, Collections.emptyMap());
    System.out.println(exitValue);
}
项目:h2spec-maven-plugin    文件:H2SpecTestSuite.java   
public static List<Failure> runH2Spec(File targetDirectory, int port, final int timeout, final int maxHeaderLength, final Set<String> excludeSpecs) throws IOException {
    File reportsDirectory = new File(targetDirectory, "reports");
    if (!reportsDirectory.exists()) {
        reportsDirectory.mkdir();
    }

    File junitFile = new File(reportsDirectory, "TEST-h2spec.xml");
    File h2spec = getH2SpecFile(targetDirectory);

    Executor exec = new DefaultExecutor();
    PumpStreamHandler psh = new PumpStreamHandler(System.out, System.err, System.in);
    exec.setStreamHandler(psh);
    exec.setExitValues(new int[]{0, 1});

    psh.start();
    if (exec.execute(buildCommandLine(h2spec, port, junitFile, timeout, maxHeaderLength)) != 0) {
        return parseReports(reportsDirectory, excludeSpecs);
    }
    psh.stop();

    return Collections.emptyList();
}
项目:xxl-job    文件:ScriptUtil.java   
/**
 * 日志文件输出方式
 *
 * 优点:支持将目标数据实时输出到指定日志文件中去
 * 缺点:
 *      标准输出和错误输出优先级固定,可能和脚本中顺序不一致
 *      Java无法实时获取
 *
 * @param command
 * @param scriptFile
 * @param logFile
 * @param params
 * @return
 * @throws IOException
 */
public static int execToFile(String command, String scriptFile, String logFile, String... params) throws IOException {
    // 标准输出:print (null if watchdog timeout)
    // 错误输出:logging + 异常 (still exists if watchdog timeout)
    // 标准输入
    FileOutputStream fileOutputStream = new FileOutputStream(logFile, true);
    PumpStreamHandler streamHandler = new PumpStreamHandler(fileOutputStream, fileOutputStream, null);

    // command
    CommandLine commandline = new CommandLine(command);
    commandline.addArgument(scriptFile);
    if (params!=null && params.length>0) {
        commandline.addArguments(params);
    }

    // exec
    DefaultExecutor exec = new DefaultExecutor();
    exec.setExitValues(null);
    exec.setStreamHandler(streamHandler);
    int exitValue = exec.execute(commandline);  // exit code: 0=success, 1=error
    return exitValue;
}
项目:dispatcher    文件:CLikeWorker.java   
public void compile(String cwd, Submission submission) throws RuntimeException {
    CommandLine cmd = new CommandLine(compiler);
    cmd.addArgument("-basedir=" + cwd);
    cmd.addArgument("-compiler=" + realCompiler);
    cmd.addArgument("-filename=" + fileName + "." + suffix);
    cmd.addArgument("-timeout=" + watchdogTimeout);
    cmd.addArgument("-std=" + std);
    logger.info(cmd.toString());

    ByteArrayOutputStream stderr = new ByteArrayOutputStream();
    DefaultExecutor executor = new DefaultExecutor();
    executor.setStreamHandler(new PumpStreamHandler(null, stderr, null));
    try {
        executor.execute(cmd);
        if (stderr.toString().length() > 0) {
            submission.setStatus(Submission.STATUS_CE);
            submission.setError("Compile error");
            logger.warn(stderr.toString());
            throw new RuntimeException("Sandbox Aborted.");
        }
        logger.info("Compile OK");
    } catch (IOException e) {
        logger.warn("Compile error:\t" + e.getMessage());
        throw new RuntimeException("An Error Occurred.");
    }
}
项目:yadaframework    文件:YadaUtil.java   
/**
 * Esegue un comando di shell
 * @param command comando
 * @param args lista di argomenti (ogni elemento puo' contenere spazi), puo' essere null
 * @param outputStream ByteArrayOutputStream che conterrà l'output del comando
 * @return the error message (will be empty for a return code >0), or null if there was no error
 */
public String exec(String command, List<String> args, ByteArrayOutputStream outputStream) {
    int exitValue=1;
    try {
        CommandLine commandLine = new CommandLine(command);
        if (args!=null) {
            for (String arg : args) {
                commandLine.addArgument(arg, false); // Don't handle quoting
            }
        }
        DefaultExecutor executor = new DefaultExecutor();
        PumpStreamHandler streamHandler = new PumpStreamHandler(outputStream);
        executor.setStreamHandler(streamHandler);
        log.debug("Executing shell command: {}", commandLine);
        exitValue = executor.execute(commandLine);
    } catch (Exception e) {
        log.error("Failed to execute shell command: " + command + " " + args, e);
        return e.getMessage();
    }
    return exitValue>0?"":null;
}
项目:piper    文件:Mediainfo.java   
@Override
public Map<String,Object> handle (Task aTask) throws Exception {
  CommandLine cmd = new CommandLine ("mediainfo");
  cmd.addArgument(aTask.getRequiredString("input"));
  log.debug("{}",cmd);
  DefaultExecutor exec = new DefaultExecutor();
  File tempFile = File.createTempFile("log", null);
  try (PrintStream stream = new PrintStream(tempFile);) {
    exec.setStreamHandler(new PumpStreamHandler(stream));
    exec.execute(cmd);
    return parse(FileUtils.readFileToString(tempFile));
  }
  catch (ExecuteException e) {
    throw new ExecuteException(e.getMessage(),e.getExitValue(), new RuntimeException(FileUtils.readFileToString(tempFile)));
  }
  finally {
    FileUtils.deleteQuietly(tempFile);
  }
}
项目:piper    文件:Ffmpeg.java   
@Override
public Object handle(Task aTask) throws Exception {
  List<String> options = aTask.getList("options", String.class);
  CommandLine cmd = new CommandLine ("ffmpeg");
  options.forEach(o->cmd.addArgument(o));
  log.debug("{}",cmd);
  DefaultExecutor exec = new DefaultExecutor();
  File tempFile = File.createTempFile("log", null);
  try (PrintStream stream = new PrintStream(tempFile);) {
    exec.setStreamHandler(new PumpStreamHandler(stream));
    int exitValue = exec.execute(cmd);
    return exitValue!=0?FileUtils.readFileToString(tempFile):cmd.toString();
  }
  catch (ExecuteException e) {
    throw new ExecuteException(e.getMessage(),e.getExitValue(), new RuntimeException(FileUtils.readFileToString(tempFile)));
  }
  finally {
    FileUtils.deleteQuietly(tempFile);
  }
}
项目:piper    文件:Ffprobe.java   
@Override
public Map<String,Object> handle(Task aTask) throws Exception {
  CommandLine cmd = new CommandLine ("ffprobe");
  cmd.addArgument("-v")
     .addArgument("quiet")
     .addArgument("-print_format")
     .addArgument("json")
     .addArgument("-show_error")
     .addArgument("-show_format")
     .addArgument("-show_streams")
     .addArgument(aTask.getRequiredString("input"));
  log.debug("{}",cmd);
  DefaultExecutor exec = new DefaultExecutor();
  File tempFile = File.createTempFile("log", null);
  try (PrintStream stream = new PrintStream(tempFile);) {
    exec.setStreamHandler(new PumpStreamHandler(stream));
    exec.execute(cmd);
    return parse(FileUtils.readFileToString(tempFile));
  }
  catch (ExecuteException e) {
    throw new ExecuteException(e.getMessage(),e.getExitValue(), new RuntimeException(FileUtils.readFileToString(tempFile)));
  }
  finally {
    FileUtils.deleteQuietly(tempFile);
  }
}
项目:gradle-mobile-plugin    文件:ExecUtil.java   
public static ExecResult setupSudoCredentials(String password) {
    ExecCommand execCommand = new ExecCommand("sudo");
    execCommand.addArgument("--validate", false);
    execCommand.addArgument("--stdin", false);
    Executor executor = new DefaultExecutor();
    executor.setWorkingDirectory(execCommand.getWorkingDirectory());
    executor.setExitValues(execCommand.getExitValues());
    ExecOutputStream execOutputStream = new ExecOutputStream();
    executor.setStreamHandler(new PumpStreamHandler(execOutputStream, execOutputStream, new ExecInputStream(password)));
    try {
        executor.execute(execCommand);
    } catch (IOException e) {
        return new ExecResult(execOutputStream.getOutput(), e);
    }
    return new ExecResult(execOutputStream.getOutput());
}
项目:gradle-mobile-plugin    文件:ExecUtil.java   
@Deprecated
public static ExecResult execCommand(CommandLine commandLine, File workDir, int[] exitValues, boolean routeToCapture, boolean routeToStdout) {
    Executor executor = new DefaultExecutor();
    if (workDir != null) {
        executor.setWorkingDirectory(workDir);
    }
    if (exitValues != null) {
        executor.setExitValues(exitValues);
    }
    ExecOutputStream execOutputStream = new ExecOutputStream(routeToCapture, routeToStdout);
    PumpStreamHandler streamHandler = new PumpStreamHandler(execOutputStream);
    executor.setStreamHandler(streamHandler);
    try {
        executor.execute(commandLine);
    } catch (IOException e) {
        return new ExecResult(false, execOutputStream.getOutput(), e);
    }
    return new ExecResult(true, execOutputStream.getOutput(), null);
}
项目:SWAT20    文件:PRISM.java   
private String execToString(File model, File properties) throws ExecuteException, IOException {
    String command;
    String prism = (System.getProperty("os.name").contains("Windows"))? "prism.bat" : "prism";

    if (mConverter.isBoundedNet()) {
        command = mPrismPath + " " + model.getAbsolutePath() +  " " + properties.getAbsolutePath()
                + " -exportstates " + mFilesPath+mStatesFileName;
    } else {
        command = mPrismPath + " " + model.getAbsolutePath() + " " + properties.getAbsolutePath() + " -ex";
    }

    ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
    ByteArrayOutputStream errorStream = new ByteArrayOutputStream();
    CommandLine commandline = CommandLine.parse(command);
    DefaultExecutor exec = new DefaultExecutor();
    PumpStreamHandler streamHandler = new PumpStreamHandler(outputStream, errorStream);
    //Workbench.consoleMessage("Executing: " + command);
    exec.setStreamHandler(streamHandler);
    System.out.println("Executing "+command);
    exec.execute(commandline);
    System.out.println("ID-Mapping: "+TransitionToIDMapper.getMapping());
    return(outputStream.toString());

}
项目:moneta    文件:DropwizardContractTest.java   
@BeforeClass
public static void setUpBeforeClass() throws Exception {
    System.out.println("Java Temp Dir: " +System.getProperty("java.io.tmpdir"));

    executor = new DefaultExecutor();
    resultHandler = new DefaultExecuteResultHandler();
    String javaHome = System.getProperty("java.home");
    String userDir = System.getProperty("user.dir");

    executor.setStreamHandler(new PumpStreamHandler(System.out));
    watchdog = new ExecuteWatchdog(10000);
    executor.setWatchdog(watchdog);
    executor.execute(new CommandLine(javaHome + SystemUtils.FILE_SEPARATOR 
            + "bin"+ SystemUtils.FILE_SEPARATOR+"java.exe").addArgument("-version"));
    executor.execute(new CommandLine(javaHome + SystemUtils.FILE_SEPARATOR 
            + "bin"+ SystemUtils.FILE_SEPARATOR+"java.exe")
        .addArgument("-jar")
        .addArgument(userDir + "/../moneta-dropwizard/target/moneta-dropwizard-" + ContractTestSuite.getProjectVersion() + ".jar")
        .addArgument("server")
        .addArgument("src/main/resources/dropwizard/moneta-dropwizard.yaml"), resultHandler);
    Thread.sleep(3000);
    System.out.println("Test sequence starting....");
}
项目:moneta    文件:SpringBootContractTest.java   
public void run() {
    try {
    executor = new DaemonExecutor();
    resultHandler = new DefaultExecuteResultHandler();
    String javaHome = System.getProperty("java.home");
    String userDir = System.getProperty("user.dir");

    executor.setStreamHandler(new PumpStreamHandler(System.out));
    watchdog = new ExecuteWatchdog(15000);
    executor.setWatchdog(watchdog);
    executor.execute(new CommandLine(javaHome + SystemUtils.FILE_SEPARATOR 
            + "bin"+ SystemUtils.FILE_SEPARATOR+"java.exe").addArgument("-version"));
    executor.execute(new CommandLine(javaHome + SystemUtils.FILE_SEPARATOR 
            + "bin"+ SystemUtils.FILE_SEPARATOR+"java.exe")
        .addArgument("-jar")
        .addArgument(userDir + "/../moneta-springboot/target/moneta-springboot-" + ContractTestSuite.getProjectVersion() + ".jar"));

    }
    catch (Exception e) {
        e.printStackTrace();
    }

}
项目:project-build-plugin    文件:EngineControl.java   
/**
 * Run a short living engine command where we expect a process failure as the engine invokes <code>System.exit(-1)</code>.
 * @param statusCmd 
 * @return the output of the engine command.
 */
private String executeSynch(CommandLine statusCmd)
{
  String engineOutput = null;
  ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
  PumpStreamHandler streamHandler = new PumpStreamHandler(outputStream, System.err);
  Executor executor = createEngineExecutor();
  executor.setStreamHandler(streamHandler);
  executor.setExitValue(-1);
  try
  {
    executor.execute(statusCmd);
  }
  catch (IOException ex)
  { // expected!
  }
  finally
  {
    engineOutput = outputStream.toString();
    IOUtils.closeQuietly(outputStream);
  }
  return engineOutput;
}
项目:commons-dost    文件:DotUtils.java   
/**
 * Verify if dot can be started and print out the version to stdout.
 *
 * @return True if "dot -V" ran successfully, false otherwise
 *
 * @throws IOException If running dot fails.
 */
public static boolean checkDot() throws IOException {
    // call graphviz-dot via commons-exec
    CommandLine cmdLine = new CommandLine(DOT_EXE);
    cmdLine.addArgument("-V");
    DefaultExecutor executor = new DefaultExecutor();
    executor.setExitValue(0);
    ExecuteWatchdog watchdog = new ExecuteWatchdog(60000);
    executor.setWatchdog(watchdog);
    executor.setStreamHandler(new PumpStreamHandler(System.out, System.err));
    int exitValue = executor.execute(cmdLine);
    if(exitValue != 0) {
        System.err.println("Could not run '" + DOT_EXE + "', had exit value: " + exitValue + "!");
        return false;
    }

    return true;
}
项目:greenpepper    文件:ShadingTest.java   
@Test
public void testCommonsCodecsConflicts() throws IOException, VerificationException {
    SetupContent setupContent = new SetupContent().invoke();
    String shadedJar = setupContent.getShadedJar();
    String issue24POM = setupContent.getIssue24POM();
    String issue24TestFile = setupContent.getIssue24TestFile();
    File cwdFile = setupContent.getCwdFile();


    String line = String.format("java -jar %s -v -p %s %s %s", shadedJar, issue24POM, issue24TestFile,
            StringUtils.join(new String[] {cwdFile.getAbsolutePath(), "testCommonsCodecsConflicts.html"}, File.separator));
    CommandLine command = CommandLine.parse(line);
    DefaultExecutor executor = new DefaultExecutor();
    ByteArrayOutputStream out = new ByteArrayOutputStream();
    ByteArrayOutputStream err = new ByteArrayOutputStream();
    executor.setStreamHandler(new PumpStreamHandler(out, err));
    executor.execute(command);
}
项目:greenpepper    文件:ShadingTest.java   
@Test
public void shouldNotOverwriteInputFile() throws IOException, VerificationException {
    SetupContent setupContent = new SetupContent().invoke();
    String shadedJar = setupContent.getShadedJar();
    String issue24POM = setupContent.getIssue24POM();
    String issue24TestFile = setupContent.getIssue24TestFile();
    File specFile = new File(issue24TestFile);
    File specBackupFile = new File(issue24TestFile + ".orig");
    FileUtils.copyFile(specFile, specBackupFile);

    String line = String.format("java -jar %s -v -p %s %s", shadedJar, issue24POM, issue24TestFile);
    CommandLine command = CommandLine.parse(line);
    DefaultExecutor executor = new DefaultExecutor();
    executor.setWorkingDirectory(specFile.getParentFile());
    ByteArrayOutputStream out = new ByteArrayOutputStream();
    ByteArrayOutputStream err = new ByteArrayOutputStream();
    executor.setStreamHandler(new PumpStreamHandler(out, err));
    executor.execute(command);

    assertTrue("The specification should not be overriden by the output", FileUtils.contentEquals(specFile,specBackupFile));
}
项目:p4workflow    文件:P4Server.java   
public int getVersion() throws Exception {
    ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
    CommandLine cmdLine = new CommandLine(p4d);
    cmdLine.addArgument("-V");
    DefaultExecutor executor = new DefaultExecutor();
    PumpStreamHandler streamHandler = new PumpStreamHandler(outputStream);
    executor.setStreamHandler(streamHandler);
    executor.execute(cmdLine);

    int version = 0;
    for (String line : outputStream.toString().split("\\n")) {
        if (line.startsWith("Rev. P4D")) {
            Pattern p = Pattern.compile("\\d{4}\\.\\d{1}");
            Matcher m = p.matcher(line);
            while (m.find()) {
                String found = m.group();
                found = found.replace(".", ""); // strip "."
                version = Integer.parseInt(found);
            }
        }
    }
    logger.info("P4D Version: " + version);
    return version;
}
项目:device    文件:ShellCommand.java   
@SuppressWarnings("rawtypes")
public static void execAsync(String display, CommandLine commandline)
        throws ShellCommandException {
    log.debug("executing async command: " + commandline);
    DefaultExecutor exec = new DefaultExecutor();

    ExecuteResultHandler handler = new DefaultExecuteResultHandler();
    PumpStreamHandler streamHandler = new PumpStreamHandler(
            new PritingLogOutputStream());
    exec.setStreamHandler(streamHandler);
    try {
        if (display == null || display.isEmpty()) {
            exec.execute(commandline, handler);
        } else {
            Map env = EnvironmentUtils.getProcEnvironment();
            EnvironmentUtils.addVariableToEnvironment(env, "DISPLAY=:"
                    + display);

            exec.execute(commandline, env, handler);
        }
    } catch (Exception e) {
        throw new ShellCommandException(
                "An error occured while executing shell command: "
                        + commandline, e);
    }
}
项目:poor-man-transcoder    文件:Session.java   
protected void startTranscode()
{
    try 
    {   
        logger.info("Starting transcode");

        notifyObservers(SessionEvent.PRESTART, null);

        this.outstream = new TranscodeSessionOutputStream(this);
        this.resultHandler = new TranscodeSessionResultHandler(this.watchdog, this);

        this.executor.setWorkingDirectory(new File(this.workingDirectoryPath));
        this.executor.setStreamHandler(new PumpStreamHandler(this.outstream));
        this.executor.setProcessDestroyer(new TranscodeSessionDestroyer(this));
        this.executor.setWatchdog(this.watchdog);
        this.executor.setExitValue(0);


        this.executor.execute(this.cmdLine, this.resultHandler);
    } 
    catch (Exception e) 
    {
        logger.info("Error starting process " + e.getMessage());
    }
}
项目:compose-executor    文件:ProcessUtils.java   
public static int executeCommand(String command,ExecuteWatchdog watchdog) {
    CommandLine cmdLine = CommandLine.parse(command);
    DefaultExecutor executor = new DefaultExecutor();
    executor.setStreamHandler(new PumpStreamHandler(System.out,System.err, null));
    executor.setExitValues(new int[]{0, 1});
    if(watchdog != null){
        executor.setWatchdog(watchdog);
    }
    int exitValue = 0;
    try {
        exitValue = executor.execute(cmdLine);
    } catch (IOException e) {
        exitValue = 1;
        log.error("error executing command", e);
    }
    return exitValue;
}
项目:event-store-maven-plugin    文件:EventStoreStartMojo.java   
@Override
protected final void executeGoal() throws MojoExecutionException {
    init();

    LOG.info("command={}", command);
    LOG.info("arguments={}", Arrays.toString(arguments));

    final CommandLine cmdLine = createCommandLine();
    final DefaultExecuteResultHandler resultHandler = new DefaultExecuteResultHandler();
    final DaemonExecutor executor = new DaemonExecutor();
    try {
        final ByteArrayOutputStream bos = new ByteArrayOutputStream();
        final PumpStreamHandler psh = new PumpStreamHandler(bos);
        executor.setStreamHandler(psh);
        executor.setWorkingDirectory(getEventStoreDir());
        executor.execute(cmdLine, resultHandler);
        final List<String> messages = waitForHttpServer(resultHandler, bos);
        logDebug(messages);
        final String pid = extractPid(messages);
        LOG.info("Event store process ID: {}", pid);
        writePid(pid);
    } catch (final IOException ex) {
        throw new MojoExecutionException(
                "Error executing the command line: " + cmdLine, ex);
    }
}
项目:adb4j    文件:CmdExecutor.java   
private CmdResultHandler runAsync(String command, CmdResultHandler resultHandler, boolean shouldClone) throws IOException, IOException, IOException, IOException {
        CmdResultHandler handler = shouldClone ? resultHandler.clone() : resultHandler;

        PumpStreamHandler streamHandler = handler.getStreamHandler(this);
        Executor executor = new DefaultExecutor();
        executor.setStreamHandler(streamHandler);

//        String[] arguments = CommandLine.parse(command).toStrings();
//        CommandLine cmdLine = new CommandLine(arguments[0]);
//        for (int i = 1; i < arguments.length; i++) {
//            cmdLine.addArgument(command, true);
//        }
        CommandLine cmdLine = CommandLine.parse(command);
        executor.execute(cmdLine, getEnvironment(), handler.delegate);

        return handler;
    }
项目:sakuli    文件:CommandLineUtil.java   
static public CommandLineResult runCommand(String command, boolean throwException) throws SakuliException {
    ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
    ByteArrayOutputStream error = new ByteArrayOutputStream();
    CommandLineResult result = new CommandLineResult();
    try {
        DefaultExecutor executor = new DefaultExecutor();
        executor.setStreamHandler(new PumpStreamHandler(outputStream, error));
        int exitCode = executor.execute(CommandLine.parse(command));
        result.setExitCode(exitCode);
        result.setOutput(error.toString() + outputStream.toString());
    } catch (Exception e) {
        if (throwException) {
            throw new SakuliException(e, String.format("Error during execution of command '%s': %s", command, error.toString()));
        }
        result.setExitCode(resolveExitCode(e.getMessage()));
        result.setOutput(e.getMessage());
    }
    return result;
}
项目:werval    文件:MavenDevShellSPI.java   
@Override
protected void doRebuild()
    throws DevShellRebuildException
{
    System.out.println( "Reload!" );
    DefaultExecutor executor = new DefaultExecutor();
    ByteArrayOutputStream output = new ByteArrayOutputStream();
    executor.setStreamHandler( new PumpStreamHandler( output ) );
    try
    {
        int exitValue = executor.execute( cmdLine );
        if( exitValue != 0 )
        {
            throw new DevShellRebuildException(
                new MavenExecutionException( "Maven exited with a non-zero status: " + exitValue, pom )
            );
        }
    }
    catch( Exception ex )
    {
        throw new DevShellRebuildException( ex, output.toString() );
    }
}
项目:ldbc_graphalytics    文件:__platform-name__Loader.java   
public int unload(String loadedInputPath) throws Exception {
    String unloaderDir = platformConfig.getUnloaderPath();
    commandLine = new CommandLine(Paths.get(unloaderDir).toFile());

    commandLine.addArgument("--graph-name");
    commandLine.addArgument(formattedGraph.getName());

    commandLine.addArgument("--output-path");
    commandLine.addArgument(loadedInputPath);

    String commandString = StringUtils.toString(commandLine.toStrings(), " ");
    LOG.info(String.format("Execute graph unloader with command-line: [%s]", commandString));

    Executor executor = new DefaultExecutor();
    executor.setStreamHandler(new PumpStreamHandler(System.out, System.err));
    executor.setExitValue(0);

    return executor.execute(commandLine);
}
项目:contrail-java-api    文件:ApiTestCommon.java   
public static void launchContrailServer(int port) throws Exception {
    try {
        DefaultExecutor exec = new DefaultExecutor();
        int exitValues[] = {1};
        exec.setExitValues(exitValues);

        String workingDir = System.getProperty("user.dir");
        String path = workingDir + "/../../config/api-server/tests/";
        File f = new File(path);
        exec.setWorkingDirectory(f);
        exec.setStreamHandler(new PumpStreamHandler(new ByteArrayOutputStream()));
        CommandLine cmd = buildServerLaunchCmd(port);
        ExecuteResultHandler handler = null;
        exec.execute(cmd, handler);
        /* sleep 5 seconds for server to get started */
        Thread.sleep(5000);
    } catch (Exception e) {
        s_logger.debug(e);
        String cause = e.getMessage();
        if (cause.equals("python: not found"))
            System.out.println("No python interpreter found.");
        throw e; 
    }
}
项目:p4-jenkins    文件:SimpleTestServer.java   
public int getVersion() throws Exception {
    ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
    CommandLine cmdLine = new CommandLine(p4d);
    cmdLine.addArgument("-V");
    DefaultExecutor executor = new DefaultExecutor();
    PumpStreamHandler streamHandler = new PumpStreamHandler(outputStream);
    executor.setStreamHandler(streamHandler);
    executor.execute(cmdLine);

    int version = 0;
    for (String line : outputStream.toString(Charset.forName("UTF-8")).split("\\n")) {
        if (line.startsWith("Rev. P4D")) {
            Pattern p = Pattern.compile("\\d{4}\\.\\d{1}");
            Matcher m = p.matcher(line);
            while (m.find()) {
                String found = m.group();
                found = found.replace(".", ""); // strip "."
                version = Integer.parseInt(found);
            }
        }
    }
    logger.info("P4D Version: " + version);
    return version;
}
项目:testgrid    文件:CommonUtils.java   
public static ExecuteWatchdog execASync(String line, File workDir, Map<String, String> environment, OutputStream output, ExecuteResultHandler erh,
        long timeout) throws IOException {
    if (environment != null) {
        Map<String, String> sysenv = System.getenv();
        for (String key : sysenv.keySet()) {
            boolean contains = false;
            for (String k : environment.keySet()) {
                if (k.equalsIgnoreCase(key)) {
                    contains = true;
                    break;
                }
            }
            if (!contains)
                environment.put(key, sysenv.get(key));
        }
    }
    DefaultExecutor executor = new DefaultExecutor();
    if (workDir != null)
        executor.setWorkingDirectory(workDir);
    PumpStreamHandler sh = new PumpStreamHandler(output, output, null);
    executor.setStreamHandler(sh);
    ExecuteWatchdog watchdog = new ProcessTreeWatchDog(timeout);
    executor.setWatchdog(watchdog);
    executor.execute(CommandLine.parse(line), environment, erh);
    return watchdog;
}
项目:testgrid    文件:CommonUtils.java   
public static ExecuteWatchdog execASync(String line, File workDir, Map<String, String> environment, OutputStream output, ExecuteResultHandler erh,
        long timeout, Logger log) throws IOException {
    if (environment != null) {
        Map<String, String> sysenv = System.getenv();
        for (String key : sysenv.keySet()) {
            boolean contains = false;
            for (String k : environment.keySet()) {
                if (k.equalsIgnoreCase(key)) {
                    contains = true;
                    break;
                }
            }
            if (!contains)
                environment.put(key, sysenv.get(key));
        }
    }
    DefaultExecutor executor = new DefaultExecutor();
    if (workDir != null)
        executor.setWorkingDirectory(workDir);
    PumpStreamHandler sh = new PumpStreamHandler(output, output, null);
    executor.setStreamHandler(sh);
    ExecuteWatchdog watchdog = new ProcessTreeWatchDog(timeout, log);
    executor.setWatchdog(watchdog);
    executor.execute(CommandLine.parse(line), environment, erh);
    return watchdog;
}
项目:script-runner-gui    文件:BatchScriptRunner.java   
public void processFile(File file) throws IOException {

        CommandLine cmdLine = new CommandLine(executable);
        cmdLine.addArguments(arguments);

        Map<String, Object> map = new HashMap<>();
        map.put(SubstitutionHelper.FILE, file);
        cmdLine.setSubstitutionMap(map);

        DefaultExecutor executor = new DefaultExecutor();
//        executor.setExitValue(1);

//        NotifierLogOutputStream outputLog = new NotifierLogOutputStream();
        PumpStreamHandler psh = new PumpStreamHandler(logOutputStream);
        executor.setStreamHandler(psh);

//        ExecuteWatchdog watchdog = new ExecuteWatchdog(60000);
//        executor.setWatchdog(watchdog);
        int exitValue = executor.execute(cmdLine);
    }
项目:cloud-portal    文件:CommandExecutorService.java   
public CommandResult execute(CommandLine commandLine, File workingDirectory, OutputStream outputStream) {

        CommandResult commandResult = new CommandResult();

        try {

            // create executor for command
            DefaultExecutor executor = new DefaultExecutor();

            // set working directory
            if (workingDirectory != null) {
                executor.setWorkingDirectory(workingDirectory);
            }

            // set possible exit values
            executor.setExitValues(IntStream.range(0, 255).toArray());

            // create output stream for command
            ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
            TeeOutputStream teeOutputStream = new TeeOutputStream(outputStream, byteArrayOutputStream);
            PumpStreamHandler streamHandler = new PumpStreamHandler(teeOutputStream);
            executor.setStreamHandler(streamHandler);

            // execute command
            int exitValue = executor.execute(commandLine);

            // fill command result
            commandResult.setOutput(byteArrayOutputStream.toString());
            commandResult.setSuccess(exitValue == 0 ? true : false);
        }
        catch(IOException e) {
            LOG.error(e.getMessage(), e);
        }

        return commandResult;
    }
项目:LogiGSK    文件:LogiGSKService.java   
public String execToString(String command) throws Exception {
    ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
    CommandLine commandline = CommandLine.parse(command);
    DefaultExecutor exec = new DefaultExecutor();
    PumpStreamHandler streamHandler = new PumpStreamHandler(outputStream);
    exec.setStreamHandler(streamHandler);
    exec.execute(commandline);
    return (outputStream.toString());
}
项目:dispatcher    文件:JavaWorker.java   
public void compile(String cwd, Submission submission) throws RuntimeException {
    ByteArrayOutputStream stderr = new ByteArrayOutputStream();
    ExecuteWatchdog watchdog = new ExecuteWatchdog(watchdogTimeout);

    DefaultExecutor executor = new DefaultExecutor();
    executor.setWorkingDirectory(new File(cwd));
    executor.setStreamHandler(new PumpStreamHandler(null, stderr, null));
    executor.setWatchdog(watchdog);

    CommandLine cmd = new CommandLine(javac);
    cmd.addArgument("-J-Duser.language=en");  // force using English
    cmd.addArgument("-classpath");
    cmd.addArgument(cwd);
    cmd.addArgument(fileName + ".java");
    logger.info("Compiler cmd:\t" + cmd.toString());

    try {
        executor.execute(cmd);
        logger.info("Compile OK");
    } catch (IOException e) {
        if (watchdog.killedProcess()) {
            submission.setStatus(Submission.STATUS_CE);
            submission.setError("Compile Time Exceeded");
            logger.warn("Compile Time Exceeded:\t" + e.getMessage());
        } else {
            submission.setStatus(Submission.STATUS_CE);
            submission.setError("Compile error");
            logger.warn("Compile error:\t" + e.getMessage());
        }
        logger.warn(stderr.toString());
        throw new RuntimeException("Compile Aborted.");
    }
}
项目:alexa-skill    文件:CalendarCLIAdapter.java   
private String execute(List<String> subCommands) throws IOException {
  CommandLine cmd = new CommandLine("calendar-cli.py");
  cmd.addArgument("--caldav-url");
  cmd.addArgument(caldavURL);
  cmd.addArgument("--caldav-user");
  cmd.addArgument(caldavUser);
  cmd.addArgument("--caldav-pass");
  cmd.addArgument(caldavPassword);
  cmd.addArgument("--calendar-url");
  cmd.addArgument(calendarURL);

  for(String subCommand : subCommands) {
    cmd.addArgument(subCommand);
  }

  ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
  DefaultExecutor exec = new DefaultExecutor();
  final PumpStreamHandler streamHandler = new PumpStreamHandler(outputStream);
  exec.setStreamHandler(streamHandler);

  try {
    doExecute(cmd, exec);
  }catch(IOException e) {
    log.error("Error on executing calendar-cli.py.\nCommand: {}\nOutput: {}",
        cmd.toString(),
        outputStream.toString());
    throw e;
  }

  return outputStream.toString();
}
项目:sonarlint-cli    文件:CommandExecutor.java   
private ExecuteStreamHandler createStreamHandler() throws IOException {
  out = new ByteArrayOutputStream();
  err = new ByteArrayOutputStream();
  PipedOutputStream outPiped = new PipedOutputStream();
  InputStream inPiped = new PipedInputStream(outPiped);
  in = outPiped;

  TeeOutputStream teeOut = new TeeOutputStream(out, System.out);
  TeeOutputStream teeErr = new TeeOutputStream(err, System.err);

  return new PumpStreamHandler(teeOut, teeErr, inPiped);
}