summaryrefslogtreecommitdiffstats
path: root/flags
diff options
context:
space:
mode:
authorValerij Fredriksen <valerijf@oath.com>2019-01-11 13:39:14 +0100
committerValerij Fredriksen <valerij92@gmail.com>2019-01-11 21:19:47 +0100
commit0922672e4709f02cf0da1c32de9fcc583a30f8b8 (patch)
treea4967ee027a8a1123661892472b38fd1fb405aff /flags
parent452785f75d4f477d974be7a2f175c8f91b87ec1c (diff)
Add DoubleFlag
Diffstat (limited to 'flags')
-rw-r--r--flags/src/main/java/com/yahoo/vespa/flags/DoubleFlag.java18
-rw-r--r--flags/src/main/java/com/yahoo/vespa/flags/Flags.java6
-rw-r--r--flags/src/main/java/com/yahoo/vespa/flags/UnboundDoubleFlag.java23
-rw-r--r--flags/src/test/java/com/yahoo/vespa/flags/FlagsTest.java5
4 files changed, 52 insertions, 0 deletions
diff --git a/flags/src/main/java/com/yahoo/vespa/flags/DoubleFlag.java b/flags/src/main/java/com/yahoo/vespa/flags/DoubleFlag.java
new file mode 100644
index 00000000000..8c3974727c6
--- /dev/null
+++ b/flags/src/main/java/com/yahoo/vespa/flags/DoubleFlag.java
@@ -0,0 +1,18 @@
+// Copyright 2019 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.vespa.flags;
+
+import javax.annotation.concurrent.Immutable;
+
+/**
+ * @author freva
+ */
+@Immutable
+public class DoubleFlag extends FlagImpl<Double, DoubleFlag> {
+ public DoubleFlag(FlagId id, Double defaultValue, FetchVector vector, FlagSerializer<Double> serializer, FlagSource source) {
+ super(id, defaultValue, vector, serializer, source, DoubleFlag::new);
+ }
+
+ public double value() {
+ return boxedValue();
+ }
+}
diff --git a/flags/src/main/java/com/yahoo/vespa/flags/Flags.java b/flags/src/main/java/com/yahoo/vespa/flags/Flags.java
index 545f288af29..7a708391009 100644
--- a/flags/src/main/java/com/yahoo/vespa/flags/Flags.java
+++ b/flags/src/main/java/com/yahoo/vespa/flags/Flags.java
@@ -102,6 +102,12 @@ public class Flags {
}
/** WARNING: public for testing: All flags should be defined in {@link Flags}. */
+ public static UnboundDoubleFlag defineDoubleFlag(String flagId, double defaultValue, String description,
+ String modificationEffect, FetchVector.Dimension... dimensions) {
+ return define(UnboundDoubleFlag::new, flagId, defaultValue, description, modificationEffect, dimensions);
+ }
+
+ /** WARNING: public for testing: All flags should be defined in {@link Flags}. */
public static <T> UnboundJacksonFlag<T> defineJacksonFlag(String flagId, T defaultValue, Class<T> jacksonClass, String description,
String modificationEffect, FetchVector.Dimension... dimensions) {
return define((id2, defaultValue2, vector2) -> new UnboundJacksonFlag<>(id2, defaultValue2, vector2, jacksonClass),
diff --git a/flags/src/main/java/com/yahoo/vespa/flags/UnboundDoubleFlag.java b/flags/src/main/java/com/yahoo/vespa/flags/UnboundDoubleFlag.java
new file mode 100644
index 00000000000..84abaa01608
--- /dev/null
+++ b/flags/src/main/java/com/yahoo/vespa/flags/UnboundDoubleFlag.java
@@ -0,0 +1,23 @@
+// Copyright 2019 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.vespa.flags;
+
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.node.DoubleNode;
+
+import javax.annotation.concurrent.Immutable;
+
+/**
+ * @author freva
+ */
+@Immutable
+public class UnboundDoubleFlag extends UnboundFlagImpl<Double, DoubleFlag, UnboundDoubleFlag> {
+ public UnboundDoubleFlag(FlagId id, double defaultValue) {
+ this(id, defaultValue, new FetchVector());
+ }
+
+ public UnboundDoubleFlag(FlagId id, Double defaultValue, FetchVector defaultFetchVector) {
+ super(id, defaultValue, defaultFetchVector,
+ new SimpleFlagSerializer<>(DoubleNode::new, JsonNode::isFloatingPointNumber, JsonNode::asDouble),
+ UnboundDoubleFlag::new, DoubleFlag::new);
+ }
+}
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 591198f5e50..1aa1581f105 100644
--- a/flags/src/test/java/com/yahoo/vespa/flags/FlagsTest.java
+++ b/flags/src/test/java/com/yahoo/vespa/flags/FlagsTest.java
@@ -81,6 +81,11 @@ public class FlagsTest {
}
@Test
+ public void testDouble() {
+ testGeneric(Flags.defineDoubleFlag("double-id", 3.142, "desc", "mod"), 3.142, 2.718);
+ }
+
+ @Test
public void testJacksonClass() {
ExampleJacksonClass defaultInstance = new ExampleJacksonClass();
ExampleJacksonClass instance = new ExampleJacksonClass();