/* * Copyright 2014, The OpenNMS Group * * 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 org.opennms.newts.rest; import java.io.File; import java.io.PrintStream; import org.kohsuke.args4j.CmdLineException; import org.kohsuke.args4j.CmdLineParser; import org.kohsuke.args4j.Option; import org.skife.gressil.Daemon; public class NewtsDaemon { private NewtsDaemon() {} private static class CommandLine { @Option(name = "-p", aliases = {"--pid"}, metaVar = "PIDFILE", usage = "Path to PID file (default: newtsd.pid)") private String m_pidFilename = "newtsd.pid"; @Option(name = "-D", aliases = {"--daemonize"}, usage = "Detach and run in the background") private boolean m_isDaemon; @Option(name = "-c", aliases = {"--config"}, metaVar = "CFGFILE", usage = "Path to configuration file (required)", required = true) private String m_configFilename; @Option(name = "-h", aliases = {"--help"}, usage = "Print usage informations") private boolean m_needHelp; private String getPidFilename() { return m_pidFilename; } private boolean isDaemon() { return m_isDaemon; } private String getConfigFilename() { return m_configFilename; } private boolean needHelp() { return m_needHelp; } } private static void usage(CmdLineParser parser, PrintStream stream) { stream.println("Usage: java NewtsDaemon -c CFGFILE [-D] [-p PIDFILE] [-h]"); parser.printUsage(stream); } public static void main(String[] args) throws Exception { CommandLine cmdLine = new CommandLine(); CmdLineParser parser = new CmdLineParser(cmdLine); try { parser.parseArgument(args); } catch (CmdLineException e) { System.err.println(e.getLocalizedMessage()); usage(parser, System.err); System.exit(1); } // Help requested if (cmdLine.needHelp()) { usage(parser, System.out); System.exit(0); } // Configuration file does not exist. if (!new File(cmdLine.getConfigFilename()).isFile()) { System.err.printf("No such file: %s%n", cmdLine.getConfigFilename()); System.exit(1); } File pidFile = new File(cmdLine.getPidFilename()); // Daemonize? if (cmdLine.isDaemon()) { new Daemon().withMainArgs(args).withPidFile(pidFile).daemonize(); } new NewtsService().run(new String[] { "server", cmdLine.getConfigFilename() }); } }