summaryrefslogtreecommitdiffstats
path: root/flags
diff options
context:
space:
mode:
authorHåkon Hallingstad <hakon@verizonmedia.com>2021-04-01 14:22:03 +0200
committerHåkon Hallingstad <hakon@verizonmedia.com>2021-04-01 14:22:03 +0200
commit6e0a640dcb4847b7e32b6800643f42b38748e20e (patch)
tree713aa236ca24b4d2d4963ce15e76d295780eb674 /flags
parent9637c5f0de67dfe6fa54489177f9e6cda47f4165 (diff)
Simplify Flag::with with Optionals
Diffstat (limited to 'flags')
-rw-r--r--flags/src/main/java/com/yahoo/vespa/flags/BooleanFlag.java5
-rw-r--r--flags/src/main/java/com/yahoo/vespa/flags/DoubleFlag.java5
-rw-r--r--flags/src/main/java/com/yahoo/vespa/flags/Flag.java10
-rw-r--r--flags/src/main/java/com/yahoo/vespa/flags/Flags.java3
-rw-r--r--flags/src/main/java/com/yahoo/vespa/flags/IntFlag.java5
-rw-r--r--flags/src/main/java/com/yahoo/vespa/flags/JacksonFlag.java5
-rw-r--r--flags/src/main/java/com/yahoo/vespa/flags/ListFlag.java5
-rw-r--r--flags/src/main/java/com/yahoo/vespa/flags/LongFlag.java5
-rw-r--r--flags/src/main/java/com/yahoo/vespa/flags/StringFlag.java5
9 files changed, 47 insertions, 1 deletions
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<Boolean, BooleanFlag> {
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<Double, DoubleFlag> {
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<T, F> {
/** The flag ID. */
FlagId id();
+ /** A generic type-safe method for getting {@code this}. */
+ F self();
+
/** Returns the flag serializer. */
FlagSerializer<T> 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<String> 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<Integer, IntFlag> {
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<T> extends FlagImpl<T, JacksonFlag<T>> {
super(id, defaultValue, vector, serializer, source, JacksonFlag::new);
}
+ @Override
+ public JacksonFlag<T> 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<T> extends FlagImpl<List<T>, ListFlag<T>> {
super(id, defaultValue, vector, serializer, source, ListFlag::new);
}
+ @Override
+ public ListFlag<T> self() {
+ return this;
+ }
+
public List<T> 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<Long, LongFlag> {
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<String, StringFlag> {
super(id, defaultValue, vector, serializer, source, StringFlag::new);
}
+ @Override
+ public StringFlag self() {
+ return this;
+ }
+
public String value() {
return boxedValue();
}