summaryrefslogtreecommitdiffstats
path: root/flags
diff options
context:
space:
mode:
authorValerij Fredriksen <valerijf@verizonmedia.com>2019-09-04 11:14:18 +0200
committerValerij Fredriksen <valerijf@verizonmedia.com>2019-09-05 14:01:04 +0200
commitdf7655fecc79c4ce19a57812063d534a38856f98 (patch)
tree26f41402e6767b23c21ab26a6ea7993948f105c2 /flags
parent1601854f90a31fae395ddd0bf0b01035aa219b96 (diff)
Add defaultValue() to UnboundFlag
Diffstat (limited to 'flags')
-rw-r--r--flags/src/main/java/com/yahoo/vespa/flags/UnboundFlag.java9
-rw-r--r--flags/src/main/java/com/yahoo/vespa/flags/UnboundFlagImpl.java5
-rw-r--r--flags/src/test/java/com/yahoo/vespa/flags/FlagsTest.java21
3 files changed, 20 insertions, 15 deletions
diff --git a/flags/src/main/java/com/yahoo/vespa/flags/UnboundFlag.java b/flags/src/main/java/com/yahoo/vespa/flags/UnboundFlag.java
index 28307536233..49335946a88 100644
--- a/flags/src/main/java/com/yahoo/vespa/flags/UnboundFlag.java
+++ b/flags/src/main/java/com/yahoo/vespa/flags/UnboundFlag.java
@@ -2,15 +2,13 @@
package com.yahoo.vespa.flags;
/**
- * @author hakonhall
- */
-
-/**
* Interface of an unbound flag.
*
* @param <T> Type of boxed value, e.g. Integer
* @param <F> Type of flag, e.g. IntFlag
* @param <U> Type of unbound flag, e.g. UnboundIntFlag
+ *
+ * @author hakonhall
*/
public interface UnboundFlag<T, F extends Flag<T, F>, U extends UnboundFlag<T, F, U>> {
/** The flag ID. */
@@ -24,4 +22,7 @@ public interface UnboundFlag<T, F extends Flag<T, F>, U extends UnboundFlag<T, F
/** Binds to a flag source, returning a (bound) flag. */
F bindTo(FlagSource source);
+
+ /** Returns the default value of the flag */
+ T defaultValue();
}
diff --git a/flags/src/main/java/com/yahoo/vespa/flags/UnboundFlagImpl.java b/flags/src/main/java/com/yahoo/vespa/flags/UnboundFlagImpl.java
index 513712d8753..a2eb12b64b2 100644
--- a/flags/src/main/java/com/yahoo/vespa/flags/UnboundFlagImpl.java
+++ b/flags/src/main/java/com/yahoo/vespa/flags/UnboundFlagImpl.java
@@ -55,4 +55,9 @@ public abstract class UnboundFlagImpl<T, F extends Flag<T, F>, U extends Unbound
public FlagSerializer<T> serializer() {
return serializer;
}
+
+ @Override
+ public T defaultValue() {
+ return defaultValue;
+ }
}
diff --git a/flags/src/test/java/com/yahoo/vespa/flags/FlagsTest.java b/flags/src/test/java/com/yahoo/vespa/flags/FlagsTest.java
index eccca6ccfde..284a4324a9e 100644
--- a/flags/src/test/java/com/yahoo/vespa/flags/FlagsTest.java
+++ b/flags/src/test/java/com/yahoo/vespa/flags/FlagsTest.java
@@ -7,8 +7,8 @@ import com.fasterxml.jackson.databind.node.BooleanNode;
import org.junit.Test;
import org.mockito.ArgumentCaptor;
-import java.util.Arrays;
-import java.util.Collections;
+import java.util.List;
+import java.util.Map;
import java.util.Objects;
import java.util.Optional;
@@ -70,28 +70,27 @@ public class FlagsTest {
public void testString() {
testGeneric(Flags.defineStringFlag("string-id", "default value", "description",
"modification effect", FetchVector.Dimension.ZONE_ID, FetchVector.Dimension.HOSTNAME),
- "default value", "other value");
+ "other value");
}
@Test
public void testInt() {
- testGeneric(Flags.defineIntFlag("int-id", 2, "desc", "mod"), 2, 3);
+ testGeneric(Flags.defineIntFlag("int-id", 2, "desc", "mod"), 3);
}
@Test
public void testLong() {
- testGeneric(Flags.defineLongFlag("long-id", 1L, "desc", "mod"), 1L, 2L);
+ testGeneric(Flags.defineLongFlag("long-id", 1L, "desc", "mod"), 2L);
}
@Test
public void testDouble() {
- testGeneric(Flags.defineDoubleFlag("double-id", 3.142, "desc", "mod"), 3.142, 2.718);
+ testGeneric(Flags.defineDoubleFlag("double-id", 3.142, "desc", "mod"), 2.718);
}
@Test
public void testList() {
- testGeneric(Flags.defineListFlag("list-id", Collections.singletonList("a"), "desc", "mod"),
- Collections.singletonList("a"), Arrays.asList("a", "b", "c"));
+ testGeneric(Flags.defineListFlag("list-id", List.of("a"), "desc", "mod"), List.of("a", "b", "c"));
}
@Test
@@ -103,10 +102,10 @@ public class FlagsTest {
testGeneric(Flags.defineJacksonFlag("jackson-id", defaultInstance, ExampleJacksonClass.class,
"description", "modification effect", FetchVector.Dimension.HOSTNAME),
- defaultInstance, instance);
+ instance);
}
- private <T> void testGeneric(UnboundFlag<T, ?, ?> unboundFlag, T defaultValue, T value) {
+ private <T> void testGeneric(UnboundFlag<T, ?, ?> unboundFlag, T value) {
FlagSource source = mock(FlagSource.class);
Flag<T, ?> flag = unboundFlag.bindTo(source);
@@ -114,7 +113,7 @@ public class FlagsTest {
.thenReturn(Optional.empty())
.thenReturn(Optional.of(flag.serializer().serialize(value)));
- assertThat(flag.boxedValue(), equalTo(defaultValue));
+ assertThat(flag.boxedValue(), equalTo(unboundFlag.defaultValue()));
assertThat(flag.boxedValue(), equalTo(value));
assertTrue(Flags.getFlag(unboundFlag.id()).isPresent());