package systems.composable.dropwizard.cassandra.loadbalancing; import com.datastax.driver.core.policies.LoadBalancingPolicy; import com.datastax.driver.core.policies.WhiteListPolicy; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonTypeName; import javax.validation.Valid; import javax.validation.constraints.NotNull; import java.net.InetSocketAddress; import java.util.Collection; /** * A factory for configuring and building {@link com.datastax.driver.core.policies.WhiteListPolicy} instances. * <p/> * <b>Configuration Parameters:</b> * <table> * <tr> * <td>Name</td> * <td>Default</td> * <td>Description</td> * </tr> * <tr> * <td>subPolicy</td> * <td>No default. You must provide a child policy.</td> * <td>The wrapped policy.</td> * </tr> * <tr> * <td>whiteList</td> * <td>No default.</td> * <td>The white listed hosts.</td> * </tr> * </table> */ @JsonTypeName("whiteList") public class WhiteListPolicyFactory implements LoadBalancingPolicyFactory { @Valid @NotNull private LoadBalancingPolicyFactory subPolicy; @NotNull private Collection<InetSocketAddress> whiteList; @JsonProperty public LoadBalancingPolicyFactory getSubPolicy() { return subPolicy; } @JsonProperty public void setSubPolicy(LoadBalancingPolicyFactory subPolicy) { this.subPolicy = subPolicy; } @JsonProperty public Collection<InetSocketAddress> getWhiteList() { return whiteList; } @JsonProperty public void setWhiteList(Collection<InetSocketAddress> whiteList) { this.whiteList = whiteList; } @Override public LoadBalancingPolicy build() { return new WhiteListPolicy(subPolicy.build(), whiteList); } }