summaryrefslogtreecommitdiff
path: root/lib/java/src/main/java/org/apache/thrift/Option.java
diff options
context:
space:
mode:
Diffstat (limited to 'lib/java/src/main/java/org/apache/thrift/Option.java')
-rw-r--r--lib/java/src/main/java/org/apache/thrift/Option.java205
1 files changed, 104 insertions, 101 deletions
diff --git a/lib/java/src/main/java/org/apache/thrift/Option.java b/lib/java/src/main/java/org/apache/thrift/Option.java
index 6b036df96..601bcc16a 100644
--- a/lib/java/src/main/java/org/apache/thrift/Option.java
+++ b/lib/java/src/main/java/org/apache/thrift/Option.java
@@ -21,120 +21,123 @@ package org.apache.thrift;
import java.util.Optional;
-/**
- * Implementation of the Option type pattern
- */
+/** Implementation of the Option type pattern */
public abstract class Option<T> {
- @SuppressWarnings("rawtypes")
- private static final Option NONE = new None();
-
- /**
- * Whether the Option is defined or not
- * @return
- * true if the Option is defined (of type Some)
- * false if the Option is not defined (of type None)
- */
- public abstract boolean isDefined();
-
- /**
- * Get the value of the Option (if it is defined)
- * @return the value
- * @throws IllegalStateException if called on a None
- */
- public abstract T get();
-
- /**
- * Get the contained value (if defined) or else return a default value
- * @param other what to return if the value is not defined (a None)
- * @return either the value, or other if the value is not defined
- */
- public T or(T other) {
- if (isDefined()) {
- return get();
- } else {
- return other;
- }
+ @SuppressWarnings("rawtypes")
+ private static final Option NONE = new None();
+
+ /**
+ * Whether the Option is defined or not
+ *
+ * @return true if the Option is defined (of type Some) false if the Option is not defined (of
+ * type None)
+ */
+ public abstract boolean isDefined();
+
+ /**
+ * Get the value of the Option (if it is defined)
+ *
+ * @return the value
+ * @throws IllegalStateException if called on a None
+ */
+ public abstract T get();
+
+ /**
+ * Get the contained value (if defined) or else return a default value
+ *
+ * @param other what to return if the value is not defined (a None)
+ * @return either the value, or other if the value is not defined
+ */
+ public T or(T other) {
+ if (isDefined()) {
+ return get();
+ } else {
+ return other;
+ }
+ }
+
+ /**
+ * Turn this Option into Java 8 Optional type
+ *
+ * @return Java 8+ Optional Type
+ */
+ public Optional<T> toOptional() {
+ if (isDefined()) {
+ return Optional.of(get());
+ } else {
+ return Optional.empty();
}
+ }
- /**
- * Turn this Option into Java 8 Optional type
- * @return Java 8+ Optional Type
- */
- public Optional<T> toOptional() {
- if (isDefined()) {
- return Optional.of(get());
- } else {
- return Optional.empty();
- }
+ /** The None type, representing an absent value (instead of "null") */
+ public static class None<T> extends Option<T> {
+ public boolean isDefined() {
+ return false;
}
- /**
- * The None type, representing an absent value (instead of "null")
- */
- public static class None<T> extends Option<T> {
- public boolean isDefined() {
- return false;
- }
-
- public T get() {
- throw new IllegalStateException("Cannot call get() on None");
- }
-
- public String toString() {
- return "None";
- }
+ public T get() {
+ throw new IllegalStateException("Cannot call get() on None");
}
- /**
- * The Some type, representing an existence of some value
- * @param <T> The type of value
- */
- public static class Some<T> extends Option<T> {
- private final T value;
- public Some(T value) {
- this.value = value;
- }
-
- public boolean isDefined() {
- return true;
- }
-
- public T get() {
- return value;
- }
-
- public String toString() {
- return "Some(" + value + ")";
- }
+ public String toString() {
+ return "None";
+ }
+ }
+
+ /**
+ * The Some type, representing an existence of some value
+ *
+ * @param <T> The type of value
+ */
+ public static class Some<T> extends Option<T> {
+ private final T value;
+
+ public Some(T value) {
+ this.value = value;
}
- /**
- * Wraps value in an Option type, depending on whether or not value is null
- * @param value the value to wrap in Option
- * @param <T> the type of value
- * @return Some(value) if value is not null, None if value is null
- */
- public static <T> Option<T> fromNullable(T value) {
- if (value != null) {
- return some(value);
- } else {
- return none();
- }
+ public boolean isDefined() {
+ return true;
}
- /**
- * Wrap value in a Some type (NB! value must not be null!)
- * @param value the value to wrap.
- * @param <T> the type of value
- * @return a new Some(value)
- */
- public static <T> Some<T> some(T value) {
- return new Some<T>(value);
+ public T get() {
+ return value;
}
- @SuppressWarnings("unchecked")
- public static <T> None<T> none() {
- return (None<T>) NONE;
+ public String toString() {
+ return "Some(" + value + ")";
+ }
+ }
+
+ /**
+ * Wraps value in an Option type, depending on whether or not value is null
+ *
+ * @param value the value to wrap in Option
+ * @param <T> the type of value
+ * @return Some(value) if value is not null, None if value is null
+ */
+ public static <T> Option<T> fromNullable(T value) {
+ if (value != null) {
+ return some(value);
+ } else {
+ return none();
}
+ }
+
+ /**
+ * Wrap value in a Some type (NB! value must not be null!)
+ *
+ * @param value the value to wrap.
+ * @param <T> the type of value
+ * @return a new Some(value)
+ */
+ public static <T> Some<T> some(T value) {
+ return new Some<T>(value);
+ }
+
+ @SuppressWarnings("unchecked")
+ public static <T> None<T> none() {
+ return (None<T>) NONE;
+ }
}