From 6e0a640dcb4847b7e32b6800643f42b38748e20e Mon Sep 17 00:00:00 2001 From: HÃ¥kon Hallingstad Date: Thu, 1 Apr 2021 14:22:03 +0200 Subject: Simplify Flag::with with Optionals --- flags/src/main/java/com/yahoo/vespa/flags/BooleanFlag.java | 5 +++++ flags/src/main/java/com/yahoo/vespa/flags/DoubleFlag.java | 5 +++++ flags/src/main/java/com/yahoo/vespa/flags/Flag.java | 10 ++++++++++ flags/src/main/java/com/yahoo/vespa/flags/Flags.java | 3 ++- flags/src/main/java/com/yahoo/vespa/flags/IntFlag.java | 5 +++++ flags/src/main/java/com/yahoo/vespa/flags/JacksonFlag.java | 5 +++++ flags/src/main/java/com/yahoo/vespa/flags/ListFlag.java | 5 +++++ flags/src/main/java/com/yahoo/vespa/flags/LongFlag.java | 5 +++++ flags/src/main/java/com/yahoo/vespa/flags/StringFlag.java | 5 +++++ 9 files changed, 47 insertions(+), 1 deletion(-) (limited to 'flags') diff --git a/flags/src/main/java/com/yahoo/vespa/flags/BooleanFlag.java b/flags/src/main/java/com/yahoo/vespa/flags/BooleanFlag.java index 1245aca65b8..0a4b8a1c5c2 100644 --- a/flags/src/main/java/com/yahoo/vespa/flags/BooleanFlag.java +++ b/flags/src/main/java/com/yahoo/vespa/flags/BooleanFlag.java @@ -12,6 +12,11 @@ public class BooleanFlag extends FlagImpl { super(id, defaultValue, vector, serializer, source, BooleanFlag::new); } + @Override + public BooleanFlag self() { + return this; + } + public boolean value() { return boxedValue(); } diff --git a/flags/src/main/java/com/yahoo/vespa/flags/DoubleFlag.java b/flags/src/main/java/com/yahoo/vespa/flags/DoubleFlag.java index 8c3974727c6..9d606887715 100644 --- a/flags/src/main/java/com/yahoo/vespa/flags/DoubleFlag.java +++ b/flags/src/main/java/com/yahoo/vespa/flags/DoubleFlag.java @@ -12,6 +12,11 @@ public class DoubleFlag extends FlagImpl { super(id, defaultValue, vector, serializer, source, DoubleFlag::new); } + @Override + public DoubleFlag self() { + return this; + } + public double value() { return boxedValue(); } diff --git a/flags/src/main/java/com/yahoo/vespa/flags/Flag.java b/flags/src/main/java/com/yahoo/vespa/flags/Flag.java index 7bf491a39c7..718478ab426 100644 --- a/flags/src/main/java/com/yahoo/vespa/flags/Flag.java +++ b/flags/src/main/java/com/yahoo/vespa/flags/Flag.java @@ -1,6 +1,8 @@ // Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.vespa.flags; +import java.util.Optional; + /** * Interface for flag. * @@ -12,12 +14,20 @@ public interface Flag { /** The flag ID. */ FlagId id(); + /** A generic type-safe method for getting {@code this}. */ + F self(); + /** Returns the flag serializer. */ FlagSerializer serializer(); /** Returns an immutable clone of the current object, except with the dimension set accordingly. */ F with(FetchVector.Dimension dimension, String dimensionValue); + /** Same as {@link #with(FetchVector.Dimension, String)} if value is present, and otherwise returns {@code this}. */ + default F with(FetchVector.Dimension dimension, Optional dimensionValue) { + return dimensionValue.map(value -> with(dimension, value)).orElse(self()); + } + /** Returns the value, boxed if the flag wraps a primitive type. */ T 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 4576b546d2e..d4c62eb079d 100644 --- a/flags/src/main/java/com/yahoo/vespa/flags/Flags.java +++ b/flags/src/main/java/com/yahoo/vespa/flags/Flags.java @@ -13,6 +13,7 @@ import java.util.Optional; import java.util.TreeMap; import static com.yahoo.vespa.flags.FetchVector.Dimension.APPLICATION_ID; +import static com.yahoo.vespa.flags.FetchVector.Dimension.CLUSTER_ID; import static com.yahoo.vespa.flags.FetchVector.Dimension.CLUSTER_TYPE; import static com.yahoo.vespa.flags.FetchVector.Dimension.HOSTNAME; import static com.yahoo.vespa.flags.FetchVector.Dimension.NODE_TYPE; @@ -245,7 +246,7 @@ public class Flags { List.of("hmusum"), "2021-03-15", "2021-05-15", "JVM max heap size for config proxy in Mb", "Takes effect on restart of Docker container", - CLUSTER_TYPE); + CLUSTER_TYPE, CLUSTER_ID); public static final UnboundStringFlag DEDICATED_CLUSTER_CONTROLLER_FLAVOR = defineStringFlag( "dedicated-cluster-controller-flavor", "", List.of("jonmv"), "2021-02-25", "2021-04-25", diff --git a/flags/src/main/java/com/yahoo/vespa/flags/IntFlag.java b/flags/src/main/java/com/yahoo/vespa/flags/IntFlag.java index 4a59c34e8d0..94a6e9b6e15 100644 --- a/flags/src/main/java/com/yahoo/vespa/flags/IntFlag.java +++ b/flags/src/main/java/com/yahoo/vespa/flags/IntFlag.java @@ -12,6 +12,11 @@ public class IntFlag extends FlagImpl { super(id, defaultValue, vector, serializer, source, IntFlag::new); } + @Override + public IntFlag self() { + return this; + } + public int value() { return boxedValue(); } diff --git a/flags/src/main/java/com/yahoo/vespa/flags/JacksonFlag.java b/flags/src/main/java/com/yahoo/vespa/flags/JacksonFlag.java index e4afbd231a1..007110f077d 100644 --- a/flags/src/main/java/com/yahoo/vespa/flags/JacksonFlag.java +++ b/flags/src/main/java/com/yahoo/vespa/flags/JacksonFlag.java @@ -12,6 +12,11 @@ public class JacksonFlag extends FlagImpl> { super(id, defaultValue, vector, serializer, source, JacksonFlag::new); } + @Override + public JacksonFlag self() { + return this; + } + public T value() { return boxedValue(); } diff --git a/flags/src/main/java/com/yahoo/vespa/flags/ListFlag.java b/flags/src/main/java/com/yahoo/vespa/flags/ListFlag.java index 6fefc5e22e3..4c7e9683833 100644 --- a/flags/src/main/java/com/yahoo/vespa/flags/ListFlag.java +++ b/flags/src/main/java/com/yahoo/vespa/flags/ListFlag.java @@ -13,6 +13,11 @@ public class ListFlag extends FlagImpl, ListFlag> { super(id, defaultValue, vector, serializer, source, ListFlag::new); } + @Override + public ListFlag self() { + return this; + } + public List value() { return boxedValue(); } diff --git a/flags/src/main/java/com/yahoo/vespa/flags/LongFlag.java b/flags/src/main/java/com/yahoo/vespa/flags/LongFlag.java index 8a1707c9e6a..1242d05c290 100644 --- a/flags/src/main/java/com/yahoo/vespa/flags/LongFlag.java +++ b/flags/src/main/java/com/yahoo/vespa/flags/LongFlag.java @@ -12,6 +12,11 @@ public class LongFlag extends FlagImpl { super(id, defaultValue, vector, serializer, source, LongFlag::new); } + @Override + public LongFlag self() { + return this; + } + public long value() { return boxedValue(); } diff --git a/flags/src/main/java/com/yahoo/vespa/flags/StringFlag.java b/flags/src/main/java/com/yahoo/vespa/flags/StringFlag.java index 925af130b95..33391f43d80 100644 --- a/flags/src/main/java/com/yahoo/vespa/flags/StringFlag.java +++ b/flags/src/main/java/com/yahoo/vespa/flags/StringFlag.java @@ -12,6 +12,11 @@ public class StringFlag extends FlagImpl { super(id, defaultValue, vector, serializer, source, StringFlag::new); } + @Override + public StringFlag self() { + return this; + } + public String value() { return boxedValue(); } -- cgit v1.2.3