Rename yangtools.concepts.Variant to Either
[yangtools.git] / common / concepts / src / main / java / org / opendaylight / yangtools / concepts / CheckedValue.java
index 21665b30cc95d9e8ccfd519de9ec7470a34c91d9..c1d2d2eca5cb40ed1fc018fa37ea157c3e9dc921 100644 (file)
@@ -12,13 +12,11 @@ import static java.util.Objects.requireNonNull;
 import com.google.common.annotations.Beta;
 import com.google.common.util.concurrent.FluentFuture;
 import com.google.common.util.concurrent.Futures;
-import com.google.common.util.concurrent.ListenableFuture;
 import com.google.common.util.concurrent.SettableFuture;
 import java.util.concurrent.CompletableFuture;
 import java.util.function.Consumer;
 import java.util.function.Function;
 import java.util.function.Supplier;
-import javax.annotation.concurrent.ThreadSafe;
 import org.eclipse.jdt.annotation.NonNullByDefault;
 import org.eclipse.jdt.annotation.Nullable;
 
@@ -34,8 +32,7 @@ import org.eclipse.jdt.annotation.Nullable;
  */
 @Beta
 @NonNullByDefault
-@ThreadSafe
-public class CheckedValue<T, E extends Exception> extends Variant<T, E> {
+public class CheckedValue<T, E extends Exception> extends Either<T, E> {
     protected CheckedValue(final T value) {
         super(value);
     }
@@ -80,7 +77,7 @@ public class CheckedValue<T, E extends Exception> extends Variant<T, E> {
      * @param <E> Exception type
      * @return Resulting {@link CheckedValue}
      */
-    public static <T, U, E extends Exception> CheckedValue<T, E> ofVariant(final Variant<T, U> variant,
+    public static <T, U, E extends Exception> CheckedValue<T, E> ofVariant(final Either<T, U> variant,
             final Function<U, E> mapper) {
         requireNonNull(mapper);
         return variant.isFirst() ? new CheckedValue<>(variant.first())
@@ -146,13 +143,9 @@ public class CheckedValue<T, E extends Exception> extends Variant<T, E> {
     @SuppressWarnings("unchecked")
     public <X extends Exception> CheckedValue<T, X> mapException(final Function<? super E, X> mapper) {
         requireNonNull(mapper);
-        if (isFirst()) {
-            return (CheckedValue<T, X>) this;
-        }
-        return new CheckedValue<>(mapper.apply(second()), null);
+        return isFirst() ? (CheckedValue<T, X>) this : new CheckedValue<>(mapper.apply(second()), null);
     }
 
-
     @SuppressWarnings("unchecked")
     public <U> CheckedValue<U, E> flatMap(final Function<? super T, CheckedValue<U, E>> mapper) {
         requireNonNull(mapper);
@@ -257,13 +250,7 @@ public class CheckedValue<T, E extends Exception> extends Variant<T, E> {
      * @return A {@link CompletableFuture}.
      */
     public final CompletableFuture<T> toCompletableFuture() {
-        if (isFirst()) {
-            return CompletableFuture.completedFuture(first());
-        }
-        // FIXME: Java 9: use CompletableFuture.failedFuture()
-        final CompletableFuture<T> future = new CompletableFuture<>();
-        future.completeExceptionally(second());
-        return future;
+        return isFirst() ? CompletableFuture.completedFuture(first()) : CompletableFuture.failedFuture(second());
     }
 
     /**
@@ -273,12 +260,7 @@ public class CheckedValue<T, E extends Exception> extends Variant<T, E> {
      * @return A {@link FluentFuture}.
      */
     public final FluentFuture<T> toFluentFuture() {
-        final ListenableFuture<T> future;
-        if (isFirst()) {
-            future = Futures.immediateFuture(first());
-        } else {
-            future = Futures.immediateFailedFuture(second());
-        }
-        return FluentFuture.from(future);
+        return FluentFuture.from(isFirst() ? Futures.immediateFuture(first())
+                : Futures.immediateFailedFuture(second()));
     }
 }