/*
* 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.functional.junit4;
import static java.util.Collections.emptyMap;
import static org.mule.runtime.core.config.bootstrap.ArtifactType.DOMAIN;
import org.mule.runtime.config.spring.SpringXmlConfigurationBuilder;
import org.mule.runtime.core.DefaultMuleContext;
import org.mule.runtime.core.api.MuleContext;
import org.mule.runtime.core.api.config.ConfigurationBuilder;
import org.mule.runtime.core.api.context.MuleContextBuilder;
import org.mule.runtime.core.context.DefaultMuleContextBuilder;
import org.mule.runtime.core.context.DefaultMuleContextFactory;
import org.mule.tck.config.TestServicesConfigurationBuilder;
import java.util.ArrayList;
import java.util.List;
public class DomainContextBuilder {
private String[] domainConfig;
private MuleContextBuilder muleContextBuilder = new DefaultMuleContextBuilder() {
@Override
protected DefaultMuleContext createDefaultMuleContext() {
DefaultMuleContext muleContext = super.createDefaultMuleContext();
muleContext.setArtifactType(DOMAIN);
return muleContext;
}
};
public DomainContextBuilder setDomainConfig(String... domainConfig) {
this.domainConfig = domainConfig;
return this;
}
public MuleContext build() throws Exception {
List<ConfigurationBuilder> builders = new ArrayList<>(3);
ConfigurationBuilder cfgBuilder = getDomainBuilder(domainConfig);
builders.add(cfgBuilder);
addBuilders(builders);
DefaultMuleContextFactory muleContextFactory = new DefaultMuleContextFactory();
MuleContext domainContext = muleContextFactory.createMuleContext(builders, muleContextBuilder);
domainContext.start();
return domainContext;
}
protected void addBuilders(List<ConfigurationBuilder> builders) {
builders.add(new TestServicesConfigurationBuilder());
}
protected ConfigurationBuilder getDomainBuilder(String[] configResources) throws Exception {
return new SpringXmlConfigurationBuilder(configResources, emptyMap(), DOMAIN);
}
}