/* * 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.context; import org.mule.runtime.core.api.MuleContext; import org.mule.runtime.core.api.config.ConfigurationBuilder; import org.mule.runtime.core.api.config.ConfigurationException; import org.mule.runtime.core.api.context.notification.MuleContextListener; import org.mule.runtime.api.lifecycle.InitialisationException; import org.mule.runtime.core.config.builders.DefaultsConfigurationBuilder; import java.util.List; /** * A MuleContextFactory is used to create instances of {@link MuleContext}. The instances of {@link MuleContext} returned by this * factory are initialised but not started. */ public interface MuleContextFactory { /** * Returns an existing instance of {@link MuleContext} is one exists, otherwise a new {@link MuleContext} instance is created * with defaults. * * @throws InitialisationException * @throws ConfigurationException * @see DefaultsConfigurationBuilder */ MuleContext createMuleContext() throws InitialisationException, ConfigurationException; /** * Creates a new MuleContext using the {@link MuleContextBuilder} provided. * * @throws InitialisationException * @throws ConfigurationException */ MuleContext createMuleContext(MuleContextBuilder muleContextBuilder) throws InitialisationException, ConfigurationException; /** * Creates a new MuleContext using the given configurationBuilder * * @param configurationBuilder * @throws InitialisationException * @throws ConfigurationException */ MuleContext createMuleContext(ConfigurationBuilder... configurationBuilders) throws InitialisationException, ConfigurationException; /** * Creates a new MuleContext using the {@link MuleContextBuilder} provided and configures it with the list of configuration * builder and c onfigures it with configurationBuilder * * @param configurationBuilder * @throws InitialisationException * @throws ConfigurationException */ MuleContext createMuleContext(ConfigurationBuilder configurationBuilder, MuleContextBuilder muleContextBuilder) throws InitialisationException, ConfigurationException; /** * Creates a new MuleContext using the {@link MuleContextBuilder} provided and configures it with the list of configuration * builders. Configuration builders will be invoked in the same or as provided in the List. * * @throws InitialisationException * @throws ConfigurationException */ MuleContext createMuleContext(List<ConfigurationBuilder> configurationBuilders, MuleContextBuilder muleContextBuilder) throws InitialisationException, ConfigurationException; /** * Adds a listener to be notified of each event related to the creation of a new {@link MuleContext} * * @param listener listener to add. Must be non null. */ void addListener(MuleContextListener listener); /** * Removes a listener from the factory. * * * @param listener the listener to remove. After this call, the listener won't receive any notifications from this factory. * @return true if the listener was registered in the factory, false otherwise */ boolean removeListener(MuleContextListener listener); }