io.fabric8.vertx.maven.plugin.functions.Executor.java Source code

Java tutorial

Introduction

Here is the source code for io.fabric8.vertx.maven.plugin.functions.Executor.java

Source

/*
 *   Copyright 2016 Kamesh Sampath
 *
 *   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 io.fabric8.vertx.maven.plugin.functions;

import io.fabric8.vertx.maven.plugin.utils.StreamToLogConsumer;
import org.apache.maven.plugin.logging.Log;
import org.codehaus.plexus.util.cli.Commandline;
import org.codehaus.plexus.util.cli.StreamPumper;

/**
 * @author kameshs
 */
public interface Executor<R> {

    R execute() throws Exception;

    default Commandline buildCommandLine() throws Exception {

        return new Commandline();
    }

    default void argsLine(Commandline commandline) {

    }

    default void redirectOutput(Process process, Log logger) {
        StreamToLogConsumer logConsumer = line -> logger.info(line);

        StreamPumper outPumper = new StreamPumper(process.getInputStream(), logConsumer);
        StreamPumper errPumper = new StreamPumper(process.getErrorStream(), logConsumer);

        outPumper.setPriority(Thread.MIN_PRIORITY + 1);
        errPumper.setPriority(Thread.MIN_PRIORITY + 1);

        outPumper.start();
        errPumper.start();
    }

}