/* * 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.api.config; import org.mule.runtime.core.api.MuleContext; import org.mule.runtime.core.api.construct.Flow; import org.mule.runtime.core.api.processor.strategy.ProcessingStrategy; import org.mule.runtime.core.api.processor.strategy.ProcessingStrategyFactory; import org.mule.runtime.core.api.serialization.ObjectSerializer; /** * Configuration info. which can be set when creating the MuleContext but becomes immutable after startup. */ public interface MuleConfiguration { int getDefaultResponseTimeout(); String getWorkingDirectory(); String getMuleHomeDirectory(); int getDefaultTransactionTimeout(); boolean isClientMode(); String getDefaultEncoding(); String getId(); String getDomainId(); String getSystemModelType(); String getSystemName(); boolean isAutoWrapMessageAwareTransform(); boolean isCacheMessageAsBytes(); boolean isEnableStreaming(); boolean isValidateExpressions(); @Deprecated int getDefaultQueueTimeout(); /** * @return The graceful shutdown timeout (in millis) used when stopping a mule application cleanly without message loss. */ long getShutdownTimeout(); /** * The approximated maximum space in megabytes used by the transaction log files for transactional persistent queues. * * Take into account that this number applies both to the set of transaction log files for XA and for local transactions. If * both type of transactions are used then the approximated maximum space used will be twice the configured value. * * @return the approximated maximum space in disk that the transactions logs can use in megabytes. */ int getMaxQueueTransactionFilesSizeInMegabytes(); /** * A container mode implies multiple Mule apps running. When true, Mule changes behavior in some areas, e.g.: * <ul> * <li>Splash screens</li> * <li>Thread names have app name in the prefix to guarantee uniqueness</li> * </ul> * etc. * * Note that e.g. a WAR-embedded Mule will run in container mode, but will still be considerd embedded for management purposes. * * @see #isStandalone() */ boolean isContainerMode(); /** * Try to guess if we're embedded. If "mule.home" JVM property has been set, then we've been started via Mule script and can * assume we're running standalone. Otherwise (no property set), Mule has been started via a different mechanism. * <p/> * A standalone Mule is always considered running in 'container' mode. * * @see #isContainerMode() */ boolean isStandalone(); /** * @return default error handler to be used on flows and services if there's no error handler configured explicitly. */ String getDefaultErrorHandlerName(); boolean isDisableTimeouts(); /** * @param extensionType class instance of the extension type * @param <T> type of the extension * @return extension configured of type extensionType, if there's no such extension then null. */ <T> T getExtension(final Class<T> extensionType); /** * Returns the default instance of {@link ObjectSerializer} to be used. This instance will be accessible through * {@link MuleContext#getObjectSerializer()}. * <p/> * If not provided, if defaults to an instance of {@link ObjectSerializer} * * @return a {@link ObjectSerializer} * @since 3.7.0 */ ObjectSerializer getDefaultObjectSerializer(); /** * The {@link ProcessingStrategyFactory factory} of the default {@link ProcessingStrategy} to be used by all {@link Flow}s which * doesn't specify otherwise * * @return a {@link ProcessingStrategyFactory} * @since 3.7.0 */ ProcessingStrategyFactory getDefaultProcessingStrategyFactory(); }