All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.automationrockstars.bmo.event.processor.Server Maven / Gradle / Ivy

/*
 * 
 */

package com.automationrockstars.bmo.event.processor;

import com.automationrockstars.base.ConfigLoader;
import com.automationrockstars.bmo.event.processor.internal.CatchAllHttpListener;
import com.automationrockstars.bmo.event.processor.internal.ProcessorFactory;
import org.apache.commons.io.FileUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.webbitserver.WebServer;
import org.webbitserver.WebServers;

import java.io.File;
import java.io.IOException;
import java.nio.file.Paths;
import java.util.concurrent.ExecutionException;

public class Server {

    private static WebServer server;
    private static Logger LOG = LoggerFactory.getLogger(Server.class);

    private static void startServer() {
        try {
            server = WebServers.createWebServer(ConfigLoader.config().getInt("server.port", 8090))
                    .add(CatchAllHttpListener.get())
                    .start().get();
            LOG.info("HTTP server start on port {}", server.getPort());
        } catch (InterruptedException | ExecutionException e) {
            LOG.error("Cannot start server", e);
        }
    }

    private static void stopServer() {
        if (server != null) {
            try {
                server.stop().get();
            } catch (InterruptedException | ExecutionException e) {
                LOG.error("Problem stopping server", e);
            }
        }
    }

    public static void start() {
        startServer();
        ProcessorFactory.registerProcessors();
    }

    public static void stop() {
        stopServer();
    }

    public static void main(String[] args) throws IOException, InterruptedException {
        if (Paths.get("server.lock").toFile().exists()) {
            FileUtils.forceDelete(Paths.get("server.lock").toFile());
        }
        Server.start();
        File lockFile = Paths.get("server.lock").toFile();
        FileUtils.touch(lockFile);
        while (lockFile.exists() && lockFile.canRead()) {
            Thread.sleep(ConfigLoader.config().getInt("server.pull", 5000));
        }
        Server.stop();
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy