package org.camunda.bpm.extension.needle;
import static com.google.common.base.Preconditions.checkArgument;
import java.util.Arrays;
import java.util.Set;
import org.apache.commons.lang3.builder.Builder;
import org.camunda.bpm.engine.ProcessEngineConfiguration;
import org.camunda.bpm.engine.test.function.CreateConfigurationFromResource;
import org.needle4j.injection.InjectionProvider;
import com.google.common.collect.Sets;
/**
* Builder to create and configure instances of {@link ProcessEngineNeedleRule}.
*/
public class ProcessEngineNeedleRuleBuilder implements Builder<ProcessEngineNeedleRule> {
private final Object testInstance;
private ProcessEngineConfiguration configuration = CreateConfigurationFromResource.INSTANCE.get();
private final Set<InjectionProvider<?>> additionalInjectionProviders = Sets.newHashSet();
public ProcessEngineNeedleRuleBuilder(final Object testInstance) {
this.testInstance = testInstance;
}
public ProcessEngineNeedleRuleBuilder withConfiguration(final ProcessEngineConfiguration configuration) {
checkArgument(configuration != null, "configuration must not be null!");
this.configuration = configuration;
return this;
}
public ProcessEngineNeedleRuleBuilder withConfiguration(final String configurationFile) {
return withConfiguration(ProcessEngineConfiguration.createProcessEngineConfigurationFromResource(configurationFile));
}
public ProcessEngineNeedleRuleBuilder addInjectionProvider(final InjectionProvider<?>... additionalInjectionProviders) {
this.additionalInjectionProviders.addAll(Arrays.asList(additionalInjectionProviders));
return this;
}
@Override
public ProcessEngineNeedleRule build() {
return new ProcessEngineNeedleRule(testInstance, configuration, additionalInjectionProviders);
}
}