Improve error message when child schema not found
[yangtools.git] / yang / yang-data-impl / src / main / java / org / opendaylight / yangtools / yang / data / impl / schema / tree / NoopDataTreeCandidate.java
index a936b2c7781dde639f12eedf7b74be0f0137d354..608d1d9273b271c9b97d4e3cfd1039746fda6ce0 100644 (file)
@@ -9,13 +9,15 @@ package org.opendaylight.yangtools.yang.data.impl.schema.tree;
 
 import com.google.common.base.Optional;
 import com.google.common.base.Preconditions;
-import org.opendaylight.yangtools.yang.data.api.InstanceIdentifier;
-import org.opendaylight.yangtools.yang.data.api.InstanceIdentifier.PathArgument;
+import java.util.Collection;
+import java.util.Collections;
+import javax.annotation.Nonnull;
+import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
+import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument;
 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeCandidateNode;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.ModificationType;
-
-import java.util.Collections;
+import org.opendaylight.yangtools.yang.data.api.schema.tree.spi.TreeNode;
 
 /**
  * Internal utility class for an empty candidate. We instantiate this class
@@ -25,38 +27,55 @@ import java.util.Collections;
 final class NoopDataTreeCandidate extends AbstractDataTreeCandidate {
     private static final DataTreeCandidateNode ROOT = new DataTreeCandidateNode() {
         @Override
+        @Nonnull
         public ModificationType getModificationType() {
             return ModificationType.UNMODIFIED;
         }
 
         @Override
-        public Iterable<DataTreeCandidateNode> getChildNodes() {
+        public Collection<DataTreeCandidateNode> getChildNodes() {
             return Collections.emptyList();
         }
 
         @Override
+        @Nonnull
         public PathArgument getIdentifier() {
             throw new IllegalStateException("Attempted to read identifier of the no-operation change");
         }
 
         @Override
+        @Nonnull
         public Optional<NormalizedNode<?, ?>> getDataAfter() {
             return Optional.absent();
         }
 
         @Override
+        @Nonnull
         public Optional<NormalizedNode<?, ?>> getDataBefore() {
             return Optional.absent();
         }
+
+        @Override
+        public DataTreeCandidateNode getModifiedChild(final PathArgument identifier) {
+            return null;
+        }
     };
+    private final TreeNode afterRoot;
 
-    protected NoopDataTreeCandidate(final InstanceIdentifier rootPath, final ModifiedNode modificationRoot) {
+    protected NoopDataTreeCandidate(final YangInstanceIdentifier rootPath, final ModifiedNode modificationRoot, final TreeNode afterRoot) {
         super(rootPath);
-        Preconditions.checkArgument(modificationRoot.getType() == ModificationType.UNMODIFIED);
+        Preconditions.checkArgument(modificationRoot.getOperation() == LogicalOperation.NONE);
+        this.afterRoot = Preconditions.checkNotNull(afterRoot);
     }
 
     @Override
     public DataTreeCandidateNode getRootNode() {
         return ROOT;
     }
+
+    @Override
+    @Nonnull
+    protected TreeNode getTipRoot() {
+        return afterRoot;
+    }
 }