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

org.ardulink.rest.main.RestMain Maven / Gradle / Ivy

The newest version!
package org.ardulink.rest.main;

import static org.ardulink.rest.RestRouteBuilder.VAR_BIND;
import static org.ardulink.rest.RestRouteBuilder.VAR_PORT;
import static org.ardulink.rest.RestRouteBuilder.VAR_TARGET;
import static org.ardulink.util.MapBuilder.newMapBuilder;

import java.util.Optional;
import java.util.Properties;

import org.apache.camel.main.Main;
import org.ardulink.rest.RestRouteBuilder;
import org.kohsuke.args4j.CmdLineException;
import org.kohsuke.args4j.CmdLineParser;

public class RestMain implements AutoCloseable {

	private final Main main;

	public static void main(String... args) {
		tryParse(args).ifPresent(RestMain::new);
	}

	static Optional tryParse(String... args) {
		CommandLineArguments cmdLineArgs = new CommandLineArguments();
		CmdLineParser cmdLineParser = new CmdLineParser(cmdLineArgs);
		try {
			cmdLineParser.parseArgument(args);
			return Optional.of(cmdLineArgs);
		} catch (CmdLineException e) {
			System.err.println(e.getMessage());
			cmdLineParser.printUsage(System.err);
			return Optional.empty();
		}
	}

	public RestMain(CommandLineArguments args) {
		this(toCamelProperties(args));
	}

	public RestMain(Properties properties) {
		main = new Main();
		main.setInitialProperties(properties);
		main.configure().addRoutesBuilder(new RestRouteBuilder());
		main.start();
	}

	private static Properties toCamelProperties(CommandLineArguments args) {
		return newMapBuilder().put(VAR_TARGET, args.connection).put(VAR_BIND, args.bind).put(VAR_PORT, args.port)
				.asProperties();
	}

	@Override
	public void close() {
		main.stop();
	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy