package com.lordofthejars.nosqlunit.infinispan;
import org.infinispan.commons.api.BasicCache;
import org.infinispan.manager.EmbeddedCacheManager;
import com.lordofthejars.nosqlunit.core.FailureHandler;
public class EmbeddedInfinispanConfigurationBuilder {
private final InfinispanConfiguration infinispanConfiguration;
private EmbeddedInfinispanConfigurationBuilder() {
super();
this.infinispanConfiguration = new InfinispanConfiguration();
}
public static EmbeddedInfinispanConfigurationBuilder newEmbeddedInfinispanConfiguration() {
return new EmbeddedInfinispanConfigurationBuilder();
}
public EmbeddedInfinispanConfigurationBuilder connectionIdentifier(String connectionIdentifier) {
this.infinispanConfiguration.setConnectionIdentifier(connectionIdentifier);
return this;
}
public EmbeddedInfinispanConfigurationBuilder cacheName(String cacheName) {
this.infinispanConfiguration.setCacheName(cacheName);
return this;
}
public InfinispanConfiguration build() {
EmbeddedCacheManager defaultEmbeddedInstance = EmbeddedInfinispanInstancesFactory.getInstance().getDefaultEmbeddedInstance();
if(defaultEmbeddedInstance == null) {
throw FailureHandler.createIllegalStateFailure("There is no EmbeddedInfinispan rule with default target defined during test execution. Please create one using @Rule or @ClassRule before executing these tests.");
}
BasicCache<Object, Object> basicCache = this.infinispanConfiguration.getCacheName() == null ? defaultEmbeddedInstance.getCache() : defaultEmbeddedInstance.getCache(this.infinispanConfiguration.getCacheName());
this.infinispanConfiguration.setCache(basicCache);
return this.infinispanConfiguration;
}
public InfinispanConfiguration buildFromTargetPath(String targetPath) {
EmbeddedCacheManager defaultEmbeddedInstance = EmbeddedInfinispanInstancesFactory.getInstance().getEmbeddedByTargetPath(targetPath);
if(defaultEmbeddedInstance == null) {
throw FailureHandler.createIllegalStateFailure("There is no EmbeddedInfinispan rule with %s target defined during test execution. Please create one using @Rule or @ClassRule before executing these tests.", targetPath);
}
BasicCache<Object, Object> basicCache = this.infinispanConfiguration.getCacheName() == null ? defaultEmbeddedInstance.getCache() : defaultEmbeddedInstance.getCache(this.infinispanConfiguration.getCacheName());
this.infinispanConfiguration.setCache(basicCache);
return this.infinispanConfiguration;
}
}