package com.netflix.astyanax.impl; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import com.google.common.util.concurrent.ThreadFactoryBuilder; import com.netflix.astyanax.AstyanaxConfiguration; import com.netflix.astyanax.Clock; import com.netflix.astyanax.clock.MicrosecondsSyncClock; import com.netflix.astyanax.connectionpool.NodeDiscoveryType; import com.netflix.astyanax.connectionpool.impl.ConnectionPoolType; import com.netflix.astyanax.model.ConsistencyLevel; import com.netflix.astyanax.retry.RetryPolicy; import com.netflix.astyanax.retry.RunOnce; import com.netflix.astyanax.util.StringUtils; public class AstyanaxConfigurationImpl implements AstyanaxConfiguration { private ConsistencyLevel defaultReadConsistencyLevel = ConsistencyLevel.CL_ONE; private ConsistencyLevel defaultWriteConsistencyLevel = ConsistencyLevel.CL_ONE; private Clock clock = new MicrosecondsSyncClock(); private RetryPolicy retryPolicy = RunOnce.get(); private ExecutorService asyncExecutor = Executors.newFixedThreadPool(5, new ThreadFactoryBuilder().setDaemon(true) .build()); private NodeDiscoveryType discoveryType = NodeDiscoveryType.NONE; private int discoveryIntervalInSeconds = 30; private ConnectionPoolType connectionPoolType = ConnectionPoolType.ROUND_ROBIN; private String cqlVersion = null; public AstyanaxConfigurationImpl() { } public AstyanaxConfigurationImpl setConnectionPoolType(ConnectionPoolType connectionPoolType) { this.connectionPoolType = connectionPoolType; return this; } @Override public ConnectionPoolType getConnectionPoolType() { return this.connectionPoolType; } @Override public ConsistencyLevel getDefaultReadConsistencyLevel() { return this.defaultReadConsistencyLevel; } public AstyanaxConfigurationImpl setDefaultReadConsistencyLevel(ConsistencyLevel cl) { this.defaultReadConsistencyLevel = cl; return this; } @Override public ConsistencyLevel getDefaultWriteConsistencyLevel() { return this.defaultWriteConsistencyLevel; } public AstyanaxConfigurationImpl setDefaultWriteConsistencyLevel(ConsistencyLevel cl) { this.defaultWriteConsistencyLevel = cl; return this; } @Override public Clock getClock() { return this.clock; } public AstyanaxConfigurationImpl setClock(Clock clock) { this.clock = clock; return this; } @Override public ExecutorService getAsyncExecutor() { return asyncExecutor; } public AstyanaxConfigurationImpl setAsyncExecutor(ExecutorService executor) { this.asyncExecutor.shutdown(); this.asyncExecutor = executor; return this; } @Override public RetryPolicy getRetryPolicy() { return retryPolicy; } public AstyanaxConfigurationImpl setRetryPolicy(RetryPolicy retryPolicy) { this.retryPolicy = retryPolicy; return this; } public String toString() { return StringUtils.joinClassGettersValues(this, "A6xConfig", AstyanaxConfigurationImpl.class); } @Override public int getDiscoveryDelayInSeconds() { return discoveryIntervalInSeconds; } public AstyanaxConfigurationImpl setDiscoveryDelayInSeconds(int delay) { this.discoveryIntervalInSeconds = delay; return this; } @Override public NodeDiscoveryType getDiscoveryType() { return discoveryType; } public AstyanaxConfigurationImpl setDiscoveryType(NodeDiscoveryType discoveryType) { this.discoveryType = discoveryType; return this; } @Override public String getCqlVersion() { return cqlVersion; } public AstyanaxConfigurationImpl setCqlVersion(String cqlVersion) { this.cqlVersion = cqlVersion; return this; } }