Separate out {Identity,Equality}QueuedNotificationManager
[yangtools.git] / common / util / src / main / java / org / opendaylight / yangtools / util / OptionalBoolean.java
index 0eb509e98b812f33ff2d79718d8af8d4a0e9de53..84bb6a2e0de6a49c62dcb7557c90644a1c69c2ca 100644 (file)
@@ -25,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;
@@ -113,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}.
      *
@@ -125,9 +139,9 @@ public final class OptionalBoolean {
             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);
         }