Fix NPE in DataTreeCandidates 43/19543/3
authorTom Pantelis <tpanteli@brocade.com>
Mon, 4 May 2015 12:01:16 +0000 (08:01 -0400)
committerRobert Varga <rovarga@cisco.com>
Tue, 5 May 2015 07:38:16 +0000 (09:38 +0200)
Patch https://git.opendaylight.org/gerrit/#/c/19473 introduced a
guaranteed NPE in DataTreeCandidates.NodeIterator. applyToModification
constructs a NodeIterator passing in a null parent. However the
NodeIterator ctor has PreCondition for non-null parent. Need to remove
the PreCondition.

(need unit tests for this code)

Change-Id: If778aaeede03a593ad2c6acf859f3741fdf0eedd
Signed-off-by: Tom Pantelis <tpanteli@brocade.com>
Signed-off-by: Robert Varga <rovarga@cisco.com>
yang/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/tree/DataTreeCandidates.java

index 1b242918ddd15799dec0b977040bf717bb860d5a..cf8051b02f557d9cfd281e9047a54b8337a06631 100644 (file)
@@ -10,6 +10,8 @@ package org.opendaylight.yangtools.yang.data.api.schema.tree;
 import com.google.common.annotations.Beta;
 import com.google.common.base.Preconditions;
 import java.util.Iterator;
+import javax.annotation.Nonnull;
+import javax.annotation.Nullable;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
 import org.slf4j.Logger;
@@ -78,10 +80,11 @@ public final class DataTreeCandidates {
         private final YangInstanceIdentifier path;
         private final NodeIterator parent;
 
-        public NodeIterator(final NodeIterator parent, final YangInstanceIdentifier path, final Iterator<DataTreeCandidateNode> iterator) {
+        public NodeIterator(@Nullable final NodeIterator parent, @Nonnull final YangInstanceIdentifier path,
+                @Nonnull final Iterator<DataTreeCandidateNode> iterator) {
             this.iterator = Preconditions.checkNotNull(iterator);
-            this.parent = Preconditions.checkNotNull(parent);
             this.path = Preconditions.checkNotNull(path);
+            this.parent = parent;
         }
 
         NodeIterator next(final DataTreeModification modification) {