diff options
author | Valerij Fredriksen <valerijf@oath.com> | 2019-01-11 13:39:14 +0100 |
---|---|---|
committer | Valerij Fredriksen <valerij92@gmail.com> | 2019-01-11 21:19:47 +0100 |
commit | 0922672e4709f02cf0da1c32de9fcc583a30f8b8 (patch) | |
tree | a4967ee027a8a1123661892472b38fd1fb405aff /flags | |
parent | 452785f75d4f477d974be7a2f175c8f91b87ec1c (diff) |
Add DoubleFlag
Diffstat (limited to 'flags')
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(); |