/*
* Copyright (c) MuleSoft, Inc. All rights reserved. http://www.mulesoft.com
* The software in this package is published under the terms of the CPAL v1.0
* license, a copy of which has been included with this distribution in the
* LICENSE.txt file.
*/
package org.mule.runtime.core.util;
import static java.util.Optional.of;
import static java.util.Optional.ofNullable;
import static org.mule.runtime.core.api.config.MuleProperties.MULE_BASE_DIRECTORY_PROPERTY;
import static org.mule.runtime.core.api.config.MuleProperties.MULE_HOME_DIRECTORY_PROPERTY;
import java.io.File;
import java.io.IOException;
import java.util.Optional;
/**
* Standalone server instance utility methods.
* <p>
* This utility methods are not meant to be used in container mode.
*
* @since 4.0
*/
public class StandaloneServerUtils {
/**
* @return the MULE_HOME directory of this instance. Returns null if the property is not set
*/
public static Optional<File> getMuleHome() {
final String muleHome = System.getProperty(MULE_HOME_DIRECTORY_PROPERTY);
return ofNullable(muleHome != null ? new File(muleHome) : null);
}
/**
* The mule runtime base folder is a directory similar to the mule runtime installation one but with only the specific
* configuration parts of the mule runtime installation such as the apps folder, the domain folder, the conf folder.
*
* @return the MULE_BASE directory of this instance. Returns the
* {@link org.mule.runtime.core.api.config.MuleProperties#MULE_HOME_DIRECTORY_PROPERTY} property value if
* {@link org.mule.runtime.core.api.config.MuleProperties#MULE_BASE_DIRECTORY_PROPERTY} is not set which may be null.
*/
public static Optional<File> getMuleBase() {
Optional<File> muleBase = null;
String muleBaseVar = System.getProperty(MULE_BASE_DIRECTORY_PROPERTY);
if (muleBaseVar != null && !muleBaseVar.trim().equals("") && !muleBaseVar.equals("%MULE_BASE%")) {
try {
muleBase = of(new File(muleBaseVar).getCanonicalFile());
} catch (IOException e) {
throw new RuntimeException(e);
}
}
if (muleBase == null) {
muleBase = getMuleHome();
}
return muleBase;
}
}