package systems.composable.dropwizard.cassandra.reconnection;
import com.datastax.driver.core.policies.ConstantReconnectionPolicy;
import com.datastax.driver.core.policies.ReconnectionPolicy;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonTypeName;
import io.dropwizard.util.Duration;
import javax.validation.constraints.NotNull;
/**
* A factory for configuring and building {@link ConstantReconnectionPolicy} instances.
* <p/>
* <b>Configuration Parameters:</b>
* <table>
* <tr>
* <td>Name</td>
* <td>Default</td>
* <td>Description</td>
* </tr>
* <tr>
* <td>delay</td>
* <td>No default. You must specify a delay.</td>
* <td>The constant delay between reconnection attempts.</td>
* </tr>
* </table>
*/
@JsonTypeName("constant")
public class ConstantReconnectionPolicyFactory implements ReconnectionPolicyFactory {
@NotNull
private Duration delay;
@JsonProperty
public Duration getDelay() {
return delay;
}
@JsonProperty
public void setDelay(Duration delay) {
this.delay = delay;
}
@Override
public ReconnectionPolicy build() {
return new ConstantReconnectionPolicy(delay.toMilliseconds());
}
}