From 119c44fcfde78a8ca35d62b1a6e4bcc445d0e4fa Mon Sep 17 00:00:00 2001 From: Michael Wright Date: Wed, 19 Oct 2016 12:01:53 -0600 Subject: [PATCH] Added a QueryParams builder to allow for any combination of parameters to be supplied --- .../java/com/ecwid/consul/v1/QueryParams.java | 68 ++++++++++++++----- .../com/ecwid/consul/v1/QueryParamsTest.java | 44 ++++++++++++ 2 files changed, 96 insertions(+), 16 deletions(-) create mode 100644 src/test/java/com/ecwid/consul/v1/QueryParamsTest.java diff --git a/src/main/java/com/ecwid/consul/v1/QueryParams.java b/src/main/java/com/ecwid/consul/v1/QueryParams.java index 6010423..248af1f 100644 --- a/src/main/java/com/ecwid/consul/v1/QueryParams.java +++ b/src/main/java/com/ecwid/consul/v1/QueryParams.java @@ -10,6 +10,47 @@ * @author Vasily Vasilkov (vgv@ecwid.com) */ public final class QueryParams implements UrlParameters { + public static final class Builder { + public static Builder builder() { + return new Builder(); + } + + private String datacenter; + private ConsistencyMode consistencyMode; + private long waitTime; + private long index; + + private Builder() { + this.datacenter = null; + this.consistencyMode = ConsistencyMode.DEFAULT; + this.waitTime = -1; + this.index = -1; + } + + public Builder setConsistencyMode(ConsistencyMode consistencyMode) { + this.consistencyMode = consistencyMode; + return this; + } + + public Builder setDatacenter(String datacenter) { + this.datacenter = datacenter; + return this; + } + + public Builder setWaitTime(long waitTime) { + this.waitTime = waitTime; + return this; + } + + public Builder setIndex(long index) { + this.index = index; + return this; + } + + public QueryParams build() { + return new QueryParams(datacenter, consistencyMode, waitTime, index); + } + } public static final QueryParams DEFAULT = new QueryParams(ConsistencyMode.DEFAULT); @@ -19,32 +60,27 @@ public final class QueryParams implements UrlParameters { private final long waitTime; private final long index; - public QueryParams(String datacenter) { + private QueryParams(String datacenter, ConsistencyMode consistencyMode, long waitTime, long index) { this.datacenter = datacenter; - this.consistencyMode = ConsistencyMode.DEFAULT; - this.waitTime = -1; - this.index = -1; + this.consistencyMode = consistencyMode; + this.waitTime = waitTime; + this.index = index; + } + + public QueryParams(String datacenter) { + this(datacenter, ConsistencyMode.DEFAULT, -1, -1); } public QueryParams(ConsistencyMode consistencyMode) { - this.datacenter = null; - this.consistencyMode = consistencyMode; - this.waitTime = -1; - this.index = -1; + this(null, consistencyMode, -1, -1); } public QueryParams(String datacenter, ConsistencyMode consistencyMode) { - this.datacenter = datacenter; - this.consistencyMode = consistencyMode; - this.waitTime = -1; - this.index = -1; + this(datacenter, consistencyMode, -1, -1); } public QueryParams(long waitTime, long index) { - this.datacenter = null; - this.consistencyMode = ConsistencyMode.DEFAULT; - this.waitTime = waitTime; - this.index = index; + this(null, ConsistencyMode.DEFAULT, waitTime, index); } public String getDatacenter() { diff --git a/src/test/java/com/ecwid/consul/v1/QueryParamsTest.java b/src/test/java/com/ecwid/consul/v1/QueryParamsTest.java new file mode 100644 index 0000000..18e5cb0 --- /dev/null +++ b/src/test/java/com/ecwid/consul/v1/QueryParamsTest.java @@ -0,0 +1,44 @@ +package com.ecwid.consul.v1; + +import org.junit.Test; + +import static org.junit.Assert.*; +import static com.ecwid.consul.v1.QueryParams.Builder; + +public class QueryParamsTest { + @Test + public void queryParamsBuilder_ShouldReturnAllDefaults_WhenNoValuesAdded() { + final ConsistencyMode EXPECTED_MODE = ConsistencyMode.DEFAULT; + final long EXPECTED_INDEX = -1; + final long EXPECTED_WAIT_TIME = -1; + + Builder builder = Builder.builder(); + + QueryParams actual = builder.build(); + + assertNull(actual.getDatacenter()); + assertEquals(actual.getConsistencyMode(), EXPECTED_MODE); + assertEquals(actual.getWaitTime(), EXPECTED_WAIT_TIME); + assertEquals(actual.getIndex(), EXPECTED_INDEX); + } + + @Test + public void queryParamsBuilder_ShouldReturnQueryParams_WithCorrectValuesApplied() { + final String EXPECTED_DATACENTER = "testDC"; + final ConsistencyMode EXPECTED_MODE = ConsistencyMode.CONSISTENT; + final long EXPECTED_INDEX = 100; + final long EXPECTED_WAIT_TIME = 10000; + + Builder builder = Builder.builder(); + QueryParams actual = builder.setDatacenter(EXPECTED_DATACENTER) + .setConsistencyMode(EXPECTED_MODE) + .setWaitTime(EXPECTED_WAIT_TIME) + .setIndex(EXPECTED_INDEX) + .build(); + + assertEquals(actual.getDatacenter(), EXPECTED_DATACENTER); + assertEquals(actual.getConsistencyMode(), EXPECTED_MODE); + assertEquals(actual.getIndex(), EXPECTED_INDEX); + assertEquals(actual.getWaitTime(), EXPECTED_WAIT_TIME); + } +}