Separate out {Identity,Equality}QueuedNotificationManager
[yangtools.git] / common / util / src / main / java / org / opendaylight / yangtools / util / OptionalBoolean.java
index 36efe2d10ad03e9b5cd4d78f50f14061b022565a..84bb6a2e0de6a49c62dcb7557c90644a1c69c2ca 100644 (file)
@@ -10,6 +10,7 @@ package org.opendaylight.yangtools.util;
 import com.google.common.annotations.Beta;
 import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import java.util.Optional;
+import org.eclipse.jdt.annotation.NonNull;
 import org.eclipse.jdt.annotation.Nullable;
 
 /**
@@ -24,6 +25,9 @@ import org.eclipse.jdt.annotation.Nullable;
  */
 @Beta
 public final class OptionalBoolean {
+    private static final @NonNull Optional<Boolean> FALSE_OPTIONAL = Optional.of(Boolean.FALSE);
+    private static final @NonNull Optional<Boolean> TRUE_OPTIONAL = Optional.of(Boolean.TRUE);
+
     private static final byte ABSENT = 0;
     private static final byte FALSE = 1;
     private static final byte TRUE = 2;
@@ -112,6 +116,17 @@ public final class OptionalBoolean {
         }
     }
 
+    /**
+     * Convert an {@link Optional} {@link Boolean} into a field value.
+     *
+     * @param value Optional {@link Boolean}.
+     * @return Field value.
+     * @throws NullPointerException if value is null.
+     */
+    public static byte ofOptional(final Optional<Boolean> value) {
+        return ofNullable(value.orElse(null));
+    }
+
     /**
      * Convert a field value into an {@link Optional} {@link Boolean}.
      *
@@ -119,14 +134,14 @@ public final class OptionalBoolean {
      * @return Optional {@link Boolean}.
      * @throws IllegalArgumentException if value is invalid.
      */
-    public static Optional<Boolean> toOptional(final byte value) {
+    public static @NonNull Optional<Boolean> toOptional(final byte value) {
         switch (value) {
             case ABSENT:
                 return Optional.empty();
             case FALSE:
-                return Optional.of(Boolean.FALSE);
+                return FALSE_OPTIONAL;
             case TRUE:
-                return Optional.of(Boolean.TRUE);
+                return TRUE_OPTIONAL;
             default:
                 throw invalidValue(value);
         }
@@ -139,7 +154,7 @@ public final class OptionalBoolean {
      * @return Boolean-compatible string, or "absent".
      * @throws IllegalArgumentException if value is invalid.
      */
-    public static String toString(final byte value) {
+    public static @NonNull String toString(final byte value) {
         switch (value) {
             case ABSENT:
                 return "absent";