co.paralleluniverse.capsule.CapsuleUtils Maven / Gradle / Ivy
/*
* 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.nio.file.Path;
import java.nio.file.Paths;
/**
* A utility class that can be used by code launched in a capsule to interact with the capsule.
*
* @author pron
*/
public final class CapsuleUtils {
private static final String PROP_CAPSULE_JAR = "capsule.jar";
private static final String PROP_CAPSULE_DIR = "capsule.dir";
private static final String PROP_CAPSULE_APP = "capsule.app";
/**
* Tests if we're running in a capsule.
*
* @return {@code true} if this code has been launched in a capsule, or {@code false} otherwise.
*/
public static boolean isRunningInCapsule() {
return System.getProperty(PROP_CAPSULE_APP) != null;
}
/**
* Returns this capsule's app ID.
*
* @throws IllegalStateException if this code has not been launched in a capsule.
*/
public static String getAppId() {
if (!isRunningInCapsule())
throw new IllegalStateException("Not running in capsule");
return System.getProperty(PROP_CAPSULE_APP);
}
/**
* Returns the full path to the capsule's JAR.
*
* @throws IllegalStateException if this code has not been launched in a capsule.
*/
public static Path getCapsuleJar() {
if (!isRunningInCapsule())
throw new IllegalStateException("Not running in capsule");
return Paths.get(System.getProperty(PROP_CAPSULE_JAR));
}
/**
* Returns the full path to the capsule's app cache directory.
* The app's cache directory is where this app's capsule has been extracted.
*
* @return the full path to the capsule's app cache directory or {@code null}, if the capsule has not been extracted.
* @throws IllegalStateException if this code has not been launched in a capsule.
*/
public static Path getCapsuleAppDir() {
if (!isRunningInCapsule())
throw new IllegalStateException("Not running in capsule");
return Paths.get(System.getProperty(PROP_CAPSULE_DIR));
}
private CapsuleUtils() {
}
}