summaryrefslogtreecommitdiffstats
path: root/vespajlib
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@yahoo-inc.com>2017-08-30 13:30:38 +0200
committerJon Bratseth <bratseth@yahoo-inc.com>2017-08-30 13:30:38 +0200
commit479bc340eeaecc2614758a61409ab64d745c51dc (patch)
treedb37422b411825f71d117a34a6eeae02d990801b /vespajlib
parent2b06022f3ebc63bd211961c83307bbf4f4c286cb (diff)
parent8f6823544640b1f18450e4c6df1335d9ccc9e496 (diff)
Merge with master
Diffstat (limited to 'vespajlib')
-rw-r--r--vespajlib/src/main/java/com/yahoo/lang/SettableOptional.java41
1 files changed, 41 insertions, 0 deletions
diff --git a/vespajlib/src/main/java/com/yahoo/lang/SettableOptional.java b/vespajlib/src/main/java/com/yahoo/lang/SettableOptional.java
new file mode 100644
index 00000000000..00ff06b8f01
--- /dev/null
+++ b/vespajlib/src/main/java/com/yahoo/lang/SettableOptional.java
@@ -0,0 +1,41 @@
+package com.yahoo.lang;
+
+import java.util.NoSuchElementException;
+import java.util.Optional;
+
+/**
+ * An optional which contains a settable value
+ *
+ * @author bratseth
+ */
+public final class SettableOptional<T> {
+
+ private T value = null;
+
+ /** Creates a new empty settable optional */
+ public SettableOptional() {}
+
+ /** Creates a new settable optional with the given value */
+ public SettableOptional(T value) { this.value = value; }
+
+ public boolean isPresent() {
+ return value != null;
+ }
+
+ public T get() {
+ if (value == null)
+ throw new NoSuchElementException("No value present");
+ return value;
+ }
+
+ public void set(T value) {
+ this.value = value;
+ }
+
+ public Optional<T> asOptional() {
+ if (value == null) return Optional.empty();
+ return Optional.of(value);
+ }
+
+}
+