summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHåkon Hallingstad <hakon@verizonmedia.com>2019-10-23 11:44:13 +0200
committerHåkon Hallingstad <hakon@verizonmedia.com>2019-10-23 11:44:13 +0200
commitff250e41e38e7bb8ac91b3bcc72d605fc2ec483c (patch)
treed57496eb08db3a0714c6b0f2e37b97748ed5c6cd
parent64d27e4723082ab8e2d7c61a6b61abd3081ea79a (diff)
Make fluent-style params
-rw-r--r--configserver-flags/src/test/java/com/yahoo/vespa/configserver/flags/db/FlagsDbImplTest.java4
-rw-r--r--flags/src/main/java/com/yahoo/vespa/flags/json/Condition.java29
-rw-r--r--flags/src/test/java/com/yahoo/vespa/flags/json/ConditionTest.java11
3 files changed, 25 insertions, 19 deletions
diff --git a/configserver-flags/src/test/java/com/yahoo/vespa/configserver/flags/db/FlagsDbImplTest.java b/configserver-flags/src/test/java/com/yahoo/vespa/configserver/flags/db/FlagsDbImplTest.java
index 4f2d5ae13d4..75a66d581a0 100644
--- a/configserver-flags/src/test/java/com/yahoo/vespa/configserver/flags/db/FlagsDbImplTest.java
+++ b/configserver-flags/src/test/java/com/yahoo/vespa/configserver/flags/db/FlagsDbImplTest.java
@@ -11,12 +11,10 @@ import com.yahoo.vespa.flags.json.Rule;
import com.yahoo.vespa.flags.json.WhitelistCondition;
import org.junit.Test;
-import java.util.List;
import java.util.Map;
import java.util.Optional;
import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.empty;
import static org.hamcrest.Matchers.equalTo;
import static org.hamcrest.Matchers.notNullValue;
import static org.junit.Assert.assertEquals;
@@ -32,7 +30,7 @@ public class FlagsDbImplTest {
MockCurator curator = new MockCurator();
FlagsDbImpl db = new FlagsDbImpl(curator);
- var params = new Condition.CreateParams(FetchVector.Dimension.HOSTNAME, List.of("host1"), Optional.empty());
+ var params = new Condition.CreateParams(FetchVector.Dimension.HOSTNAME).setValues("host1");
Condition condition1 = WhitelistCondition.create(params);
Rule rule1 = new Rule(Optional.of(JsonNodeRawFlag.fromJson("13")), condition1);
FlagId flagId = new FlagId("id");
diff --git a/flags/src/main/java/com/yahoo/vespa/flags/json/Condition.java b/flags/src/main/java/com/yahoo/vespa/flags/json/Condition.java
index 96dbc8197c1..93ccb773de6 100644
--- a/flags/src/main/java/com/yahoo/vespa/flags/json/Condition.java
+++ b/flags/src/main/java/com/yahoo/vespa/flags/json/Condition.java
@@ -33,13 +33,20 @@ public interface Condition extends Predicate<FetchVector> {
class CreateParams {
private final FetchVector.Dimension dimension;
- private final List<String> values;
- private final Optional<String> predicate;
+ private List<String> values = List.of();
+ private Optional<String> predicate = Optional.empty();
- public CreateParams(FetchVector.Dimension dimension, List<String> values, Optional<String> predicate) {
- this.dimension = Objects.requireNonNull(dimension);
- this.values = Objects.requireNonNull(values);
- this.predicate = Objects.requireNonNull(predicate);
+ public CreateParams(FetchVector.Dimension dimension) { this.dimension = Objects.requireNonNull(dimension); }
+
+ public CreateParams setValues(String... values) { return setValues(List.of(values)); }
+ public CreateParams setValues(List<String> values) {
+ this.values = List.copyOf(values);
+ return this;
+ }
+
+ public CreateParams setPredicate(String predicate) {
+ this.predicate = Optional.of(predicate);
+ return this;
}
public FetchVector.Dimension dimension() { return dimension; }
@@ -53,11 +60,15 @@ public interface Condition extends Predicate<FetchVector> {
Objects.requireNonNull(wireCondition.dimension);
FetchVector.Dimension dimension = DimensionHelper.fromWire(wireCondition.dimension);
+ var params = new CreateParams(dimension);
- List<String> values = wireCondition.values == null ? List.of() : wireCondition.values;
- Optional<String> predicate = Optional.ofNullable(wireCondition.predicate);
+ if (wireCondition.values != null) {
+ params.setValues(wireCondition.values);
+ }
- var params = new CreateParams(dimension, values, predicate);
+ if (wireCondition.predicate != null) {
+ params.setPredicate(wireCondition.predicate);
+ }
switch (type) {
case WHITELIST: return WhitelistCondition.create(params);
diff --git a/flags/src/test/java/com/yahoo/vespa/flags/json/ConditionTest.java b/flags/src/test/java/com/yahoo/vespa/flags/json/ConditionTest.java
index 618bc86baaf..b46828b6691 100644
--- a/flags/src/test/java/com/yahoo/vespa/flags/json/ConditionTest.java
+++ b/flags/src/test/java/com/yahoo/vespa/flags/json/ConditionTest.java
@@ -4,9 +4,6 @@ package com.yahoo.vespa.flags.json;
import com.yahoo.vespa.flags.FetchVector;
import org.junit.Test;
-import java.util.List;
-import java.util.Optional;
-
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
@@ -18,7 +15,7 @@ public class ConditionTest {
@Test
public void testWhitelist() {
String hostname1 = "host1";
- var params = new Condition.CreateParams(FetchVector.Dimension.HOSTNAME, List.of(hostname1), Optional.empty());
+ var params = new Condition.CreateParams(FetchVector.Dimension.HOSTNAME).setValues(hostname1);
Condition condition = WhitelistCondition.create(params);
assertFalse(condition.test(new FetchVector()));
assertFalse(condition.test(new FetchVector().with(FetchVector.Dimension.APPLICATION_ID, "foo")));
@@ -29,7 +26,7 @@ public class ConditionTest {
@Test
public void testBlacklist() {
String hostname1 = "host1";
- var params = new Condition.CreateParams(FetchVector.Dimension.HOSTNAME, List.of(hostname1), Optional.empty());
+ var params = new Condition.CreateParams(FetchVector.Dimension.HOSTNAME).setValues(hostname1);
Condition condition = BlacklistCondition.create(params);
assertTrue(condition.test(new FetchVector()));
assertTrue(condition.test(new FetchVector().with(FetchVector.Dimension.APPLICATION_ID, "foo")));
@@ -47,7 +44,7 @@ public class ConditionTest {
// Test with empty fetch vector along vespa version dimension (this should never happen as the
// version is always available through Vtag, although Vtag has a dummy version number for e.g.
// locally run unit tests that hasn't set the release Vespa version).
- var params = new Condition.CreateParams(FetchVector.Dimension.VESPA_VERSION, List.of(), Optional.of(">=7.1.2"));
+ var params = new Condition.CreateParams(FetchVector.Dimension.VESPA_VERSION).setPredicate(">=7.1.2");
Condition condition = RelationalCondition.create(params);
assertFalse(condition.test(new FetchVector()));
}
@@ -59,7 +56,7 @@ public class ConditionTest {
}
private boolean vespaVersionCondition(String vespaVersion, String predicate) {
- var params = new Condition.CreateParams(FetchVector.Dimension.VESPA_VERSION, List.of(), Optional.of(predicate));
+ var params = new Condition.CreateParams(FetchVector.Dimension.VESPA_VERSION).setPredicate(predicate);
Condition condition = RelationalCondition.create(params);
return condition.test(new FetchVector().with(FetchVector.Dimension.VESPA_VERSION, vespaVersion));
}