summaryrefslogtreecommitdiffstats
path: root/flags
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 /flags
parent64d27e4723082ab8e2d7c61a6b61abd3081ea79a (diff)
Make fluent-style params
Diffstat (limited to 'flags')
-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
2 files changed, 24 insertions, 16 deletions
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));
}