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

aQute.launcher.constants.LauncherConstants Maven / Gradle / Ivy

There is a newer version: 7.0.0
Show newest version
package aQute.launcher.constants;

import java.io.File;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.StringTokenizer;

import aQute.bnd.osgi.Constants;

public class LauncherConstants {

	public final static String		LAUNCHER_PROPERTIES				= "launcher.properties";
	public final static String		DEFAULT_LAUNCHER_PROPERTIES		= "launcher.properties";
	public final static String		LAUNCHER_ARGUMENTS				= "launcher.arguments";
	public final static String		LAUNCHER_READY					= "launcher.ready";

	// MUST BE ALIGNED WITH ProjectLauncher! Do not want to create coupling
	// so cannot refer.
	public final static int			OK								= 0;
	public final static int			WARNING							= 126 - 1;
	public final static int			ERROR							= 126 - 2;
	public final static int			TIMEDOUT						= 126 - 3;
	public final static int			UPDATE_NEEDED					= 126 - 4;
	public final static int			CANCELED						= 126 - 5;
	public final static int			DUPLICATE_BUNDLE				= 126 - 6;
	public final static int			RESOLVE_ERROR					= 126 - 7;
	public final static int			ACTIVATOR_ERROR					= 126 - 8;
	public static final int			STOPPED							= 126 - 9;
	public static final int			RETURN_INSTEAD_OF_EXIT			= 197;
	public static final int			RELISTEN_FOR_MAIN_CALLABLE		= 198;
	public final static String		LAUNCH_FRAMEWORK_RESTART_REASON	= "launch.framework.restart.reason";

	// Local names
	final static String				LAUNCH_SERVICES					= "launch.services";
	final static String				LAUNCH_STORAGE_DIR				= "launch.storage.dir";
	final static String				LAUNCH_KEEP						= "launch.keep";
	final static String				LAUNCH_RUNBUNDLES				= "launch.bundles";
	final static String				LAUNCH_SYSTEMPACKAGES			= "launch.system.packages";
	final static String				LAUNCH_SYSTEMCAPABILITIES		= "launch.system.capabilities";
	final static String				LAUNCH_TIMEOUT					= "launch.timeout";
	final static String				LAUNCH_EMBEDDED					= "launch.embedded";
	final static String				LAUNCH_NAME						= "launch.name";
	final static String				LAUNCH_NOREFERENCES				= "launch.noreferences";
	final static String				LAUNCH_NOTIFICATION_PORT		= "launch.notificationPort";
	public final static String		LAUNCH_FRAMEWORK_RESTART		= "launch.framework.restart";

	public final static String[]	LAUNCHER_PROPERTY_KEYS			= {
		LAUNCH_SERVICES, LAUNCH_STORAGE_DIR, LAUNCH_KEEP, LAUNCH_NOREFERENCES, LAUNCH_RUNBUNDLES, LAUNCH_SYSTEMPACKAGES,
		LAUNCH_SYSTEMCAPABILITIES, LAUNCH_SYSTEMPACKAGES, Constants.LAUNCH_TRACE, LAUNCH_TIMEOUT,
		Constants.LAUNCH_ACTIVATORS, LAUNCH_FRAMEWORK_RESTART, LAUNCH_EMBEDDED, LAUNCH_NAME, LAUNCH_NOREFERENCES,
		LAUNCH_NOTIFICATION_PORT, Constants.LAUNCH_ACTIVATION_EAGER
	};
	/**
	 * The command line arguments of the launcher. Launcher are not supposed to
	 * eat any arguments, they should use -D VM arguments so that applications
	 * can leverage the command line. The launcher must register itself as a
	 * service under its impl. class with this property set to a String[].
	 */

	public boolean					services;
	public boolean					noreferences;
	public File						storageDir;
	public boolean					keep;
	public final List		runbundles						= new ArrayList<>();
	public String					systemPackages;
	public String					systemCapabilities;
	public boolean					trace;
	public long						timeout;
	public final List		activators						= new ArrayList<>();
	public Map		runProperties					= new HashMap<>();
	public boolean					embedded						= false;
	public String					name;
	public int						notificationPort				= -1;
	public boolean					activationEager					= false;
	public boolean					frameworkRestart				= false;

	/**
	 * Translate a constants to properties.
	 */
	public 

P getProperties(P p) { p.setProperty(LAUNCH_NOREFERENCES, String.valueOf(noreferences)); p.setProperty(LAUNCH_SERVICES, String.valueOf(services)); if (storageDir != null) p.setProperty(LAUNCH_STORAGE_DIR, storageDir.getAbsolutePath()); p.setProperty(LAUNCH_KEEP, String.valueOf(keep)); p.setProperty(LAUNCH_RUNBUNDLES, join(runbundles, ",")); if (systemPackages != null) p.setProperty(LAUNCH_SYSTEMPACKAGES, systemPackages); if (systemCapabilities != null) p.setProperty(LAUNCH_SYSTEMCAPABILITIES, systemCapabilities); p.setProperty(Constants.LAUNCH_TRACE, String.valueOf(trace)); p.setProperty(LAUNCH_TIMEOUT, String.valueOf(timeout)); p.setProperty(Constants.LAUNCH_ACTIVATORS, join(activators, ",")); p.setProperty(LAUNCH_EMBEDDED, String.valueOf(embedded)); p.setProperty(LAUNCH_FRAMEWORK_RESTART, String.valueOf(frameworkRestart)); if (name != null) p.setProperty(LAUNCH_NAME, name); p.setProperty(LAUNCH_NOTIFICATION_PORT, String.valueOf(notificationPort)); p.setProperty(Constants.LAUNCH_ACTIVATION_EAGER, String.valueOf(activationEager)); for (Map.Entry entry : runProperties.entrySet()) { if (entry.getValue() == null) { if (entry.getKey() != null) p.remove(entry.getKey()); } else { p.setProperty(entry.getKey(), entry.getValue()); } } return p; } /** * Empty constructor for the plugin */ public LauncherConstants() {} /** * Create a constants from properties. * * @param p */ public LauncherConstants(Properties p) { services = Boolean.parseBoolean(p.getProperty(LAUNCH_SERVICES)); if (p.getProperty(LAUNCH_STORAGE_DIR) != null) storageDir = new File(p.getProperty(LAUNCH_STORAGE_DIR)); noreferences = Boolean.parseBoolean(p.getProperty(LAUNCH_NOREFERENCES)); keep = Boolean.parseBoolean(p.getProperty(LAUNCH_KEEP)); runbundles.addAll(split(p.getProperty(LAUNCH_RUNBUNDLES), ",")); systemPackages = p.getProperty(LAUNCH_SYSTEMPACKAGES); systemCapabilities = p.getProperty(LAUNCH_SYSTEMCAPABILITIES); trace = Boolean.parseBoolean(p.getProperty(Constants.LAUNCH_TRACE)); timeout = Long.parseLong(p.getProperty(LAUNCH_TIMEOUT)); activators.addAll(split(p.getProperty(Constants.LAUNCH_ACTIVATORS), " ,")); String s = p.getProperty(LAUNCH_EMBEDDED); embedded = s != null && Boolean.parseBoolean(s); name = p.getProperty(LAUNCH_NAME); notificationPort = Integer.parseInt(p.getProperty(LAUNCH_NOTIFICATION_PORT, "-1")); activationEager = Boolean.parseBoolean(p.getProperty(Constants.LAUNCH_ACTIVATION_EAGER)); frameworkRestart = Boolean.parseBoolean(p.getProperty(LAUNCH_FRAMEWORK_RESTART)); @SuppressWarnings({ "unchecked", "rawtypes" }) Map map = (Map) p; runProperties.putAll(map); } private Collection split(String property, String string) { List result = new ArrayList<>(); StringTokenizer st = new StringTokenizer(property, string); while (st.hasMoreTokens()) { result.add(st.nextToken()); } return result; } private static String join(List runbundles2, String string) { StringBuilder sb = new StringBuilder(); String del = ""; for (Object r : runbundles2) { sb.append(del); sb.append(r); del = string; } return sb.toString(); } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy