import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
import org.opendaylight.yangtools.yang.data.api.schema.UnkeyedListNode;
import org.opendaylight.yangtools.yang.data.util.impl.legacy.AbstractMixinContextNode;
+import org.opendaylight.yangtools.yang.data.util.impl.legacy.LeafContextNode;
+import org.opendaylight.yangtools.yang.data.util.impl.legacy.LeafListEntryContextNode;
import org.opendaylight.yangtools.yang.model.api.ChoiceSchemaNode;
import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
import org.opendaylight.yangtools.yang.model.api.LeafListSchemaNode;
@NonNull PathArgument mixinPathArgument();
}
+ /**
+ * Marker interface for contexts which boil down to a simple, not-structured value. The
+ */
+ sealed interface SimpleValue extends DataSchemaContextNode permits LeafContextNode, LeafListEntryContextNode {
+ // Marker interface
+ }
+
@NonNull DataSchemaNode getDataSchemaNode();
// FIXME: YANGTOOLS-1413: this idea is wrong -- if does the wrong thing for items of leaf-list and keyed list
// FIXME: YANGTOOLS-1413: document this method and (most likely) split it out to a separate interface
boolean isKeyedEntry();
- // FIXME: YANGTOOLS-1413: this is counter-intuitive: anydata/anyxml are considered non-leaf. This method needs
- // a better name and a proper description.
- boolean isLeaf();
-
/**
* Find a child node identifier by its {@link PathArgument}.
*
import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeWithValue;
import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument;
import org.opendaylight.yangtools.yang.data.util.DataSchemaContextNode.PathMixin;
+import org.opendaylight.yangtools.yang.data.util.DataSchemaContextNode.SimpleValue;
import org.opendaylight.yangtools.yang.model.api.TypeDefinition;
import org.opendaylight.yangtools.yang.model.api.type.LeafrefTypeDefinition;
import org.opendaylight.yangtools.yang.model.util.SchemaInferenceStack;
checkCurrentAndSkip(PRECONDITION_END, "Precondition must ends with ']'");
// Break-out from method for leaf-list case
- if (key == null && currentNode.isLeaf()) {
+ if (key == null && currentNode instanceof SimpleValue) {
checkValid(offset == data.length(), "Leaf argument must be last argument of instance identifier.");
final var currentSchema = currentNode.getDataSchemaNode();
AbstractInteriorContextNode(final PathArgument pathArgument, final DataSchemaNode schema) {
super(pathArgument, schema);
}
-
- @Override
- public final boolean isLeaf() {
- return false;
- }
}
\ No newline at end of file
+++ /dev/null
-/*
- * Copyright (c) 2015 Cisco Systems, Inc. and others. All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-package org.opendaylight.yangtools.yang.data.util.impl.legacy;
-
-import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument;
-import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
-
-abstract class AbstractLeafNodeContext extends AbstractLeafContextNode {
- AbstractLeafNodeContext(final PathArgument pathArgument, final DataSchemaNode schema) {
- super(pathArgument, schema);
- }
-
- @Override
- public final boolean isLeaf() {
- return true;
- }
-}
package org.opendaylight.yangtools.yang.data.util.impl.legacy;
import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier;
+import org.opendaylight.yangtools.yang.data.util.DataSchemaContextNode.SimpleValue;
import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode;
-final class LeafContextNode extends AbstractLeafNodeContext {
+public final class LeafContextNode extends AbstractLeafContextNode implements SimpleValue {
LeafContextNode(final LeafSchemaNode schema) {
super(NodeIdentifier.create(schema.getQName()), schema);
}
import org.opendaylight.yangtools.yang.common.Empty;
import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeWithValue;
+import org.opendaylight.yangtools.yang.data.util.DataSchemaContextNode.SimpleValue;
import org.opendaylight.yangtools.yang.model.api.LeafListSchemaNode;
import org.opendaylight.yangtools.yang.model.util.SchemaInferenceStack;
-final class LeafListEntryContextNode extends AbstractLeafNodeContext {
+public final class LeafListEntryContextNode extends AbstractLeafContextNode implements SimpleValue {
LeafListEntryContextNode(final LeafListSchemaNode schema) {
// FIXME: YANGTOOLS-1413: Empty() here is NOT NICE -- it assumes the list is of such entries...
super(new NodeWithValue<>(schema.getQName(), Empty.value()), schema);
OpaqueContextNode(final DataSchemaNode schema) {
super(NodeIdentifier.create(schema.getQName()), schema);
}
-
- @Override
- public boolean isLeaf() {
- return false;
- }
}