Skip to content

Commit

Permalink
Added a QueryParams builder to allow for any combination of parameter…
Browse files Browse the repository at this point in the history
…s to be supplied
  • Loading branch information
mikekwright committed Oct 19, 2016
1 parent 1856fce commit 119c44f
Show file tree
Hide file tree
Showing 2 changed files with 96 additions and 16 deletions.
68 changes: 52 additions & 16 deletions src/main/java/com/ecwid/consul/v1/QueryParams.java
Expand Up @@ -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);

Expand All @@ -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() {
Expand Down
44 changes: 44 additions & 0 deletions 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);
}
}

0 comments on commit 119c44f

Please sign in to comment.