From: Robert Varga Date: Sun, 1 Jan 2017 17:14:49 +0000 (+0100) Subject: BUG-7464: fix INode.rec_lookup() return type X-Git-Tag: release/carbon~146 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=commitdiff_plain;h=b01003038559b7ced7e5d6056dab30ee9a3fd909;hp=445b30f0fe3968e63d817c86260118fef893eec8;p=yangtools.git BUG-7464: fix INode.rec_lookup() return type Undo a blanket check for Optional in TrieMap.lookup(), which is caused by passing LNode's result back to the caller. With Optional being used, this can be simplified by unwrapping the result with orElse(null). Change-Id: Ic70e65f76e7132db93e28d55141fef992ef00692 Signed-off-by: Robert Varga --- diff --git a/third-party/triemap/src/main/java/org/opendaylight/yangtools/triemap/INode.java b/third-party/triemap/src/main/java/org/opendaylight/yangtools/triemap/INode.java index ab01536aad..40bb592fec 100644 --- a/third-party/triemap/src/main/java/org/opendaylight/yangtools/triemap/INode.java +++ b/third-party/triemap/src/main/java/org/opendaylight/yangtools/triemap/INode.java @@ -394,7 +394,7 @@ final class INode extends INodeBase { return cleanReadOnly((TNode) m, lev, parent, ct, k, hc); } else if (m instanceof LNode) { // 5) an l-node - return ((LNode) m).get(k); + return ((LNode) m).get(k).orElse(null); } else { throw new IllegalStateException("Unhandled node " + m); } @@ -406,7 +406,7 @@ final class INode extends INodeBase { private Object cleanReadOnly(final TNode tn, final int lev, final INode parent, final TrieMap ct, final K k, final int hc) { if (ct.nonReadOnly()) { - // used to be throw RestartException + // used to be throw RestartException clean(parent, ct, lev - 5); return RESTART; } diff --git a/third-party/triemap/src/main/java/org/opendaylight/yangtools/triemap/TrieMap.java b/third-party/triemap/src/main/java/org/opendaylight/yangtools/triemap/TrieMap.java index 676cd7137c..f0083d39fa 100644 --- a/third-party/triemap/src/main/java/org/opendaylight/yangtools/triemap/TrieMap.java +++ b/third-party/triemap/src/main/java/org/opendaylight/yangtools/triemap/TrieMap.java @@ -313,14 +313,7 @@ public final class TrieMap extends AbstractMap implements Concurrent } V lookup(final K k) { - final int hc = computeHash (k); -// return (V) lookuphc (k, hc); - final Object o = lookuphc (k, hc); - if (o instanceof Optional) { - return ((Optional) o).orElse(null); - } - - return (V)o; + return (V) lookuphc(k, computeHash(k)); } @Override diff --git a/third-party/triemap/src/test/java/org/opendaylight/yangtools/triemap/TestDelete.java b/third-party/triemap/src/test/java/org/opendaylight/yangtools/triemap/TestDelete.java index e79ebc3362..4f3cda74fb 100644 --- a/third-party/triemap/src/test/java/org/opendaylight/yangtools/triemap/TestDelete.java +++ b/third-party/triemap/src/test/java/org/opendaylight/yangtools/triemap/TestDelete.java @@ -28,7 +28,7 @@ public class TestDelete { for (int i = 0; i < 10000; i++) { assertNull(bt.put(Integer.valueOf(i), Integer.valueOf(i))); - assertEquals(Integer.valueOf(i), bt.lookup(Integer.valueOf(i))); + assertEquals(Integer.valueOf(i), bt.get(Integer.valueOf(i))); } checkAddInsert(bt, 536); @@ -38,7 +38,7 @@ public class TestDelete { for (int i = 0; i < 10000; i++) { boolean removed = null != bt.remove(Integer.valueOf(i)); assertTrue(removed); - final Object lookup = bt.lookup (Integer.valueOf(i)); + final Object lookup = bt.get(Integer.valueOf(i)); assertNull(lookup); } @@ -66,10 +66,10 @@ public class TestDelete { private static void checkAddInsert (final TrieMap bt, final int k) { final Integer v = Integer.valueOf(k); bt.remove (v); - Object foundV = bt.lookup(v); + Integer foundV = bt.get(v); assertNull(foundV); assertNull(bt.put (v, v)); - foundV = bt.lookup(v); + foundV = bt.get(v); assertEquals(v, foundV); assertEquals(v, bt.put(v, Integer.valueOf(-1))); diff --git a/third-party/triemap/src/test/java/org/opendaylight/yangtools/triemap/TestHashCollisions.java b/third-party/triemap/src/test/java/org/opendaylight/yangtools/triemap/TestHashCollisions.java index a2b6f03c13..5ed9fd1bc6 100644 --- a/third-party/triemap/src/test/java/org/opendaylight/yangtools/triemap/TestHashCollisions.java +++ b/third-party/triemap/src/test/java/org/opendaylight/yangtools/triemap/TestHashCollisions.java @@ -122,11 +122,11 @@ public class TestHashCollisions { } private static void removeChars (final TrieMap bt) { - assertNotNull(bt.lookup('a')); - assertNotNull(bt.lookup('b')); - assertNotNull(bt.lookup('c')); - assertNotNull(bt.lookup('d')); - assertNotNull(bt.lookup('e')); + assertNotNull(bt.get('a')); + assertNotNull(bt.get('b')); + assertNotNull(bt.get('c')); + assertNotNull(bt.get('d')); + assertNotNull(bt.get('e')); assertNotNull(bt.remove('a')); assertNotNull(bt.remove('b')); @@ -140,19 +140,19 @@ public class TestHashCollisions { assertNull(bt.remove('d')); assertNull(bt.remove('e')); - assertNull(bt.lookup('a')); - assertNull(bt.lookup('b')); - assertNull(bt.lookup('c')); - assertNull(bt.lookup('d')); - assertNull(bt.lookup('e')); + assertNull(bt.get('a')); + assertNull(bt.get('b')); + assertNull(bt.get('c')); + assertNull(bt.get('d')); + assertNull(bt.get('e')); } private static void removeStrings (final TrieMap bt) { - assertNotNull(bt.lookup("a")); - assertNotNull(bt.lookup("b")); - assertNotNull(bt.lookup("c")); - assertNotNull(bt.lookup("d")); - assertNotNull(bt.lookup("e")); + assertNotNull(bt.get("a")); + assertNotNull(bt.get("b")); + assertNotNull(bt.get("c")); + assertNotNull(bt.get("d")); + assertNotNull(bt.get("e")); assertNotNull(bt.remove("a")); assertNotNull(bt.remove("b")); @@ -166,30 +166,30 @@ public class TestHashCollisions { assertNull(bt.remove("d")); assertNull(bt.remove("e")); - assertNull(bt.lookup("a")); - assertNull(bt.lookup("b")); - assertNull(bt.lookup("c")); - assertNull(bt.lookup("d")); - assertNull(bt.lookup("e")); + assertNull(bt.get("a")); + assertNull(bt.get("b")); + assertNull(bt.get("c")); + assertNull(bt.get("d")); + assertNull(bt.get("e")); } private static void removeInts (final TrieMap bt) { for (int i = 0; i < 128; i++) { - final Integer bigI = Integer.valueOf (i); - assertNotNull(bt.lookup(bigI)); + final Integer bigI = Integer.valueOf(i); + assertNotNull(bt.get(bigI)); assertNotNull(bt.remove(bigI)); assertNull(bt.remove(bigI)); - assertNull(bt.lookup(bigI)); + assertNull(bt.get(bigI)); } } private static void removeBytes (final TrieMap bt) { for (byte i = 0; i < 128 && i >= 0; i++) { - final Byte bigB = Byte.valueOf (i); - assertNotNull(bt.lookup(bigB)); + final Byte bigB = Byte.valueOf(i); + assertNotNull(bt.get(bigB)); assertNotNull(bt.remove(bigB)); assertNull(bt.remove(bigB)); - assertNull(bt.lookup(bigB)); + assertNull(bt.get(bigB)); } } } diff --git a/third-party/triemap/src/test/java/org/opendaylight/yangtools/triemap/TestInsert.java b/third-party/triemap/src/test/java/org/opendaylight/yangtools/triemap/TestInsert.java index 3989cc4f02..81f66e869d 100644 --- a/third-party/triemap/src/test/java/org/opendaylight/yangtools/triemap/TestInsert.java +++ b/third-party/triemap/src/test/java/org/opendaylight/yangtools/triemap/TestInsert.java @@ -32,7 +32,7 @@ public class TestInsert { for (int i = 0; i < 10000; i++) { assertNull(bt.put(Integer.valueOf (i), Integer.valueOf(i))); - final Object lookup = bt.lookup(Integer.valueOf(i)); + final Object lookup = bt.get(Integer.valueOf(i)); assertEquals(Integer.valueOf(i), lookup); } diff --git a/third-party/triemap/src/test/java/org/opendaylight/yangtools/triemap/TestMultiThreadInserts.java b/third-party/triemap/src/test/java/org/opendaylight/yangtools/triemap/TestMultiThreadInserts.java index ea687d5cfa..b80a94921f 100644 --- a/third-party/triemap/src/test/java/org/opendaylight/yangtools/triemap/TestMultiThreadInserts.java +++ b/third-party/triemap/src/test/java/org/opendaylight/yangtools/triemap/TestMultiThreadInserts.java @@ -33,7 +33,7 @@ public class TestMultiThreadInserts { es.execute (() -> { for (int j = 0; j < 500 * 1000; j++) { if (j % nThreads == threadNo) { - bt.put (Integer.valueOf (j), Integer.valueOf (j)); + bt.put (Integer.valueOf(j), Integer.valueOf(j)); } } }); @@ -43,7 +43,7 @@ public class TestMultiThreadInserts { es.awaitTermination(5, TimeUnit.MINUTES); for (int j = 0; j < 500 * 1000; j++) { - final Object lookup = bt.lookup (Integer.valueOf (j)); + final Object lookup = bt.get(Integer.valueOf(j)); assertEquals(Integer.valueOf(j), lookup); } }