BUG-7464: Refactor Option/None/Some and its callers 75/49875/6
authorRobert Varga <rovarga@cisco.com>
Fri, 30 Dec 2016 13:54:55 +0000 (14:54 +0100)
committerRobert Varga <rovarga@cisco.com>
Mon, 9 Jan 2017 14:17:12 +0000 (15:17 +0100)
Make NONE a proper constant within Option, hide Some's
value field and optimize constant callers.

Change-Id: Ifefd47ed7fb565e51c5adf8db58aa09017bfe3fa
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
third-party/triemap/src/main/java/org/opendaylight/yangtools/triemap/ListMap.java
third-party/triemap/src/main/java/org/opendaylight/yangtools/triemap/None.java
third-party/triemap/src/main/java/org/opendaylight/yangtools/triemap/Option.java
third-party/triemap/src/main/java/org/opendaylight/yangtools/triemap/Some.java

index deb30fd926906ef9b7e6d5a0564c918bd7e703a7..519ee4ee5e4d97d2b8e53642aaee2bd054e31715 100644 (file)
@@ -93,7 +93,7 @@ abstract class ListMap<K,V> {
 
         @Override
         public Option<V> get (final K key) {
-            return Option.makeOption (null);
+            return Option.makeOption();
         }
 
         @Override
@@ -207,14 +207,14 @@ abstract class ListMap<K,V> {
         }
 
         @Override
-        public Option<V> get (final K key) {
-            if(key.equals (k)) {
-                return Option.makeOption (v);
+        public Option<V> get(final K key) {
+            if (key.equals(k)) {
+                return Option.makeOption(v);
             }
-            if(next != null) {
-                return next.get (key);
+            if (next != null) {
+                return next.get(key);
             }
-            return Option.makeOption (null);
+            return Option.makeOption();
         }
 
 
index b087386beced4639fa6967b269431e50f21aab07..cef3a0cdff12e6697c65dd2c66ce5b772fc79a3a 100644 (file)
@@ -22,6 +22,9 @@ package org.opendaylight.yangtools.triemap;
  *
  * @param <V>
  */
-class None<V> extends Option<V>{
-
+final class None<V> extends Option<V> {
+    @Override
+    boolean nonEmpty() {
+        return false;
+    }
 }
index 26cdfd92cd0dea37b4829de53c7d1a676882e9e3..36b8d0eab7065ebe766052ee75064c1a6b2f331d 100644 (file)
@@ -22,21 +22,21 @@ package org.opendaylight.yangtools.triemap;
  *
  * @param <V>
  */
-@SuppressWarnings({"rawtypes", "unchecked"})
-class Option<V> {
-    static None none = new None();
-    public static <V> Option<V> makeOption(final V o){
-        if(o!=null) {
+abstract class Option<V> {
+    private static final None<?> NONE = new None<>();
+
+    static <V> Option<V> makeOption(final V o) {
+        if (o != null) {
             return new Some<>(o);
-        } else {
-            return none;
         }
-    }
 
-    public static <V> Option<V> makeOption(){
-        return none;
+        return makeOption();
     }
-    public boolean nonEmpty () {
-        return false;
+
+    @SuppressWarnings("unchecked")
+    static <V> Option<V> makeOption() {
+        return (Option<V>) NONE;
     }
+
+    abstract boolean nonEmpty();
 }
index 554cb03472fc7e9f1073d10f25a760ae664ec9a7..e81df3dcd84a59b520b6ac4c9e7212df047e6cad 100644 (file)
@@ -22,18 +22,19 @@ package org.opendaylight.yangtools.triemap;
  *
  * @param <V>
  */
-class Some<V> extends Option<V>{
-    final V value;
-    public Some(final V v) {
+final class Some<V> extends Option<V>{
+    private final V value;
+
+    Some(final V v) {
         value = v;
     }
 
-    public V get() {
+    V get() {
         return value;
     }
 
     @Override
-    public boolean nonEmpty () {
+    boolean nonEmpty () {
         return value != null;
     }
 }