package org.opendaylight.yangtools.yang.data.impl.codec;
import com.google.common.annotations.Beta;
-import com.google.common.base.Optional;
import com.google.common.base.Preconditions;
-import com.google.common.base.Predicate;
import com.google.common.collect.Iterables;
import java.io.IOException;
import java.util.ArrayDeque;
import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode;
import org.opendaylight.yangtools.yang.model.api.ListSchemaNode;
import org.opendaylight.yangtools.yang.model.api.NotificationDefinition;
-import org.opendaylight.yangtools.yang.model.api.RpcDefinition;
import org.opendaylight.yangtools.yang.model.api.SchemaContext;
import org.opendaylight.yangtools.yang.model.api.SchemaNode;
import org.opendaylight.yangtools.yang.model.api.SchemaPath;
final Object parent = getParent();
SchemaNode schema = null;
final QName qname = name.getNodeType();
- if(parent instanceof DataNodeContainer) {
+ if (parent instanceof DataNodeContainer) {
schema = ((DataNodeContainer)parent).getDataChildByName(qname);
-
- if(schema == null && parent instanceof GroupingDefinition) {
- schema = ((GroupingDefinition) parent);
- }
-
- if(schema == null && parent instanceof NotificationDefinition) {
- schema = ((NotificationDefinition) parent);
+ if (schema == null) {
+ if (parent instanceof GroupingDefinition) {
+ schema = (GroupingDefinition) parent;
+ } else if (parent instanceof NotificationDefinition) {
+ schema = (NotificationDefinition) parent;
+ }
}
- } else if(parent instanceof ChoiceSchemaNode) {
+ } else if (parent instanceof ChoiceSchemaNode) {
schema = findChildInCases((ChoiceSchemaNode) parent, qname);
} else {
throw new IllegalStateException("Unsupported schema type "+ parent.getClass() +" on stack.");
}
+
Preconditions.checkArgument(schema != null, "Could not find schema for node %s in %s", qname, parent);
return schema;
}
private static SchemaNode findChildInCases(final ChoiceSchemaNode parent, final QName qname) {
DataSchemaNode schema = null;
- for(final ChoiceCaseNode caze : parent.getCases()) {
+ for (final ChoiceCaseNode caze : parent.getCases()) {
final DataSchemaNode potential = caze.getDataChildByName(qname);
- if(potential != null) {
+ if (potential != null) {
schema = potential;
break;
}
private static SchemaNode findCaseByChild(final ChoiceSchemaNode parent, final QName qname) {
DataSchemaNode schema = null;
- for(final ChoiceCaseNode caze : parent.getCases()) {
+ for (final ChoiceCaseNode caze : parent.getCases()) {
final DataSchemaNode potential = caze.getDataChildByName(qname);
- if(potential != null) {
+ if (potential != null) {
schema = caze;
break;
}
return (LeafListSchemaNode)schema;
}
+ @Deprecated
public LeafListSchemaNode leafSetEntryNode() {
final Object parent = getParent();
return (LeafListSchemaNode) parent;
}
+ public LeafListSchemaNode leafSetEntryNode(final QName qname) {
+ final Object parent = getParent();
+ if (parent instanceof LeafListSchemaNode) {
+ return (LeafListSchemaNode) parent;
+ }
+
+ final SchemaNode child = SchemaUtils.findChildSchemaByQName((SchemaNode) parent, qname);
+ Preconditions.checkArgument(child instanceof LeafListSchemaNode,
+ "Node %s is neither a leaf-list nor currently in a leaf-list", child.getPath());
+ return (LeafListSchemaNode) child;
+ }
+
public ChoiceSchemaNode startChoiceNode(final NodeIdentifier name) {
LOG.debug("Enter choice {}", name);
final SchemaNode schema = getSchema(name);
Object parent = getParent();
Preconditions.checkArgument(parent instanceof AugmentationTarget, "Augmentation not allowed under %s", parent);
- if(parent instanceof ChoiceSchemaNode) {
+ if (parent instanceof ChoiceSchemaNode) {
final QName name = Iterables.get(identifier.getPossibleChildNames(), 0);
parent = findCaseByChild((ChoiceSchemaNode) parent, name);
}
Preconditions.checkArgument(parent instanceof DataNodeContainer, "Augmentation allowed only in DataNodeContainer",parent);
final AugmentationSchema schema = SchemaUtils.findSchemaForAugment((AugmentationTarget) parent, identifier.getPossibleChildNames());
final HashSet<DataSchemaNode> realChildSchemas = new HashSet<>();
- for(final DataSchemaNode child : schema.getChildNodes()) {
+ for (final DataSchemaNode child : schema.getChildNodes()) {
realChildSchemas.add(((DataNodeContainer) parent).getDataChildByName(child.getQName()));
}
final AugmentationSchema resolvedSchema = new EffectiveAugmentationSchema(schema, realChildSchemas);