/* * Capsule * Copyright (c) 2014-2015, Parallel Universe Software Co. All rights reserved. * * This program and the accompanying materials are licensed under the terms * of the Eclipse Public License v1.0, available at * http://www.eclipse.org/legal/epl-v10.html */ package co.paralleluniverse.capsule; import java.util.List; import java.util.Properties; import java.util.Set; /** * A capsule. */ public interface Capsule { /** * Returns the capsule's version. */ String getVersion(); /** * The properties used by the capsule. * These may be set to change the capsule's behavior. */ Properties getProperties(); /** * Returns a capsule's ID.. */ String getAppId(); /** * Returns the capsule's supported modes. */ Set<String> getModes(); /** * Tests whether the given attribute is found in the manifest. */ boolean hasAttribute(Attribute<?> attr); /** * Returns the value of the given manifest attribute with consideration to the capsule's mode. * If the attribute is not defined, its default value will be returned. */ <T> T getAttribute(Attribute<T> attr); /** * Checks whether a caplet with the given class name is installed. */ boolean hasCaplet(String name); /** * Returns a list of all caplet classes, in order. */ List<Class<?>> getCaplets(); /** * Creates a {@link ProcessBuilder} ready to use for launching the capsule. * * @param jvmArgs JVM arguments to use for launching the capsule * @param args command line arguments to pass to the capsule. * @return a {@link ProcessBuilder} for launching the capsule process */ ProcessBuilder prepareForLaunch(List<String> jvmArgs, List<String> args); }