/* * 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.container.api; import static java.io.File.separator; import static org.mule.runtime.api.util.Preconditions.checkArgument; import static org.mule.runtime.core.util.StandaloneServerUtils.getMuleBase; import static org.mule.runtime.core.util.StandaloneServerUtils.getMuleHome; import org.mule.runtime.core.util.StringUtils; import java.io.File; /** * Calculates folders for a mule server based on the * {@value org.mule.runtime.core.api.config.MuleProperties#MULE_HOME_DIRECTORY_PROPERTY} property */ public class MuleFoldersUtil { public static final String EXECUTION_FOLDER = ".mule"; public static final String LIB_FOLDER = "lib"; public static final String CONFIG_FOLDER = "mule"; public static final String SHARED_FOLDER = "shared"; public static final String APPS_FOLDER = "apps"; public static final String PLUGINS_FOLDER = "plugins"; public static final String CLASSES_FOLDER = "classes"; public static final String DOMAINS_FOLDER = "domains"; public static final String CONTAINER_APP_PLUGINS = "plugins"; public static final String USER_FOLDER = "user"; public static final String SERVICES_FOLDER = "services"; private MuleFoldersUtil() {} /** * @return the mule runtime installation folder. */ public static File getMuleHomeFolder() { File muleHome = getMuleHome().orElse(null); if (muleHome == null) { muleHome = new File("."); } return muleHome; } /** * @return the mule runtime base folder. */ public static File getMuleBaseFolder() { File muleBase = getMuleBase().orElse(null); if (muleBase == null) { muleBase = getMuleHomeFolder(); } return muleBase; } /** * @return a {@link File} pointing to the container folder that contains services. */ public static File getServicesFolder() { return new File(getMuleBaseFolder(), SERVICES_FOLDER); } /** * Returns the file for a given service name. * * @param name name of the service. Non empty. * @return a {@link File} pointing to the folder that corresponds to the provided service name when installed. */ public static File getServiceFolder(String name) { checkArgument(!StringUtils.isEmpty(name), "name cannot be empty"); return new File(getServicesFolder(), name); } public static File getDomainsFolder() { return new File(getMuleBaseFolder(), DOMAINS_FOLDER); } public static File getDomainFolder(String domainName) { return new File(getDomainsFolder(), domainName); } public static File getDomainLibFolder(String domainName) { return new File(getDomainFolder(domainName), LIB_FOLDER); } public static File getAppsFolder() { return new File(getMuleBaseFolder(), APPS_FOLDER); } public static File getAppFolder(String appName) { return new File(getAppsFolder(), appName); } public static File getAppClassesFolder(String appName) { return new File(getAppFolder(appName), CLASSES_FOLDER); } /** * @param appName name of the application to look for * @return the libraries folder in the deployed application with the given name */ public static File getAppLibFolder(String appName) { return new File(getAppFolder(appName), getAppLibsFolderPath()); } /** * @param appName name of the application to look for * @return the plugins folder in the deployed application with the given name */ public static File getAppPluginsFolder(String appName) { return new File(getAppFolder(appName), getAppPluginsFolderPath()); } /** * @return relative path for plugins on an application */ public static String getAppPluginsFolderPath() { return PLUGINS_FOLDER + separator; } /** * @param appName name of the application to look for * @return the shared libraries folder in the deployed application with the given name */ public static File getAppSharedLibsFolder(String appName) { return new File(getAppFolder(appName), getAppSharedLibsFolderPath()); } /** * @return relative path for shared libraries on an application */ public static String getAppSharedLibsFolderPath() { return getAppLibsFolderPath() + SHARED_FOLDER + separator; } private static String getAppLibsFolderPath() { return LIB_FOLDER + separator; } /** * @param appName name of the application to look for * @return the config folder in the deployed application with the given name */ public static File getAppConfigFolder(String appName) { return new File(getAppFolder(appName), getAppConfigFolderPath()); } /* * @return relative path for configuration files on an application */ public static String getAppConfigFolderPath() { return CONFIG_FOLDER + separator; } /** * @return relative path for libraries on an application */ public static File getExecutionFolder() { return new File(getMuleBaseFolder(), EXECUTION_FOLDER); } public static File getMuleLibFolder() { return new File(getMuleHomeFolder(), LIB_FOLDER); } public static File getUserLibFolder() { return new File(getMuleLibFolder(), USER_FOLDER); } public static File getContainerAppPluginsFolder() { return new File(getMuleBaseFolder(), CONTAINER_APP_PLUGINS); } /** * @return a {@link File} pointing to the container folder used to temporarily store services on deployment */ public static File getServicesTempFolder() { return new File(getExecutionFolder(), SERVICES_FOLDER); } }