Search in sources :

Example 1 with Cli

use of org.apache.meecrowave.runner.Cli in project component-runtime by Talend.

the class WebServer method run.

@Override
public void run() {
    final String originalCompSystProp = setSystemProperty("talend.component.server.component.coordinates", componentGav);
    final String skipClasspathSystProp = setSystemProperty("component.manager.classpath.skip", "true");
    final String skipCallersSystProp = setSystemProperty("component.manager.callers.skip", "true");
    final AtomicReference<Meecrowave> ref = new AtomicReference<>();
    try {
        final CountDownLatch latch = new CountDownLatch(1);
        final Cli cli = new Cli(buildArgs()) {

            @Override
            protected void doWait(final Meecrowave meecrowave, final CommandLine line) {
                ref.set(meecrowave);
                latch.countDown();
                super.doWait(meecrowave, line);
            }
        };
        new Thread(() -> {
            try {
                cli.run();
            } catch (final RuntimeException re) {
                latch.countDown();
                log.error(re.getMessage());
                throw re;
            }
        }, getClass().getName() + '_' + findPort()).start();
        try {
            latch.await(2, MINUTES);
        } catch (final InterruptedException e) {
            Thread.interrupted();
            return;
        }
        final Scanner scanner = new Scanner(System.in);
        do {
            log.info("Enter 'exit' to quit");
        } while (!shouldQuit(scanner.nextLine()));
    } finally {
        reset("talend.component.server.component.coordinates", originalCompSystProp);
        reset("component.manager.classpath.skip", skipClasspathSystProp);
        reset("component.manager.callers.skip", skipCallersSystProp);
        ofNullable(ref.get()).ifPresent(mw -> StandardServer.class.cast(mw.getTomcat().getServer()).stopAwait());
    }
}
Also used : Cli(org.apache.meecrowave.runner.Cli) Scanner(java.util.Scanner) CommandLine(org.apache.commons.cli.CommandLine) AtomicReference(java.util.concurrent.atomic.AtomicReference) CountDownLatch(java.util.concurrent.CountDownLatch) Meecrowave(org.apache.meecrowave.Meecrowave)

Aggregations

Scanner (java.util.Scanner)1 CountDownLatch (java.util.concurrent.CountDownLatch)1 AtomicReference (java.util.concurrent.atomic.AtomicReference)1 CommandLine (org.apache.commons.cli.CommandLine)1 Meecrowave (org.apache.meecrowave.Meecrowave)1 Cli (org.apache.meecrowave.runner.Cli)1