/*
* 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.MuleConfiguration;
import org.mule.runtime.core.api.lifecycle.LifecycleManager;
import org.mule.runtime.core.api.serialization.ObjectSerializer;
import org.mule.runtime.core.context.notification.ServerNotificationManager;
/**
* Builder that is used to build instances of {@link MuleContext}. Implementing classes are stateful and should provide public
* chainable setters for configuring the builder instance and no public getters.
*/
public interface MuleContextBuilder {
/**
* Builds a new {@link MuleContext} instance using configured builder instance. Does not initialise or start MuleContext, only
* constructs the instance.
*/
MuleContext buildMuleContext();
void setNotificationManager(ServerNotificationManager notificationManager);
void setLifecycleManager(LifecycleManager lifecycleManager);
void setMuleConfiguration(MuleConfiguration muleConfiguration);
/**
* @param executionClassLoader classloader to use on the created context. Non null.
*/
void setExecutionClassLoader(ClassLoader executionClassLoader);
/**
* @param objectSerializer object serializer to use on the created context. Non null.
*/
void setObjectSerializer(ObjectSerializer objectSerializer);
}