import java.util.Map;
import java.util.Set;
import org.opendaylight.yangtools.yang.common.QName;
+import org.opendaylight.yangtools.yang.model.api.AugmentationSchema;
+import org.opendaylight.yangtools.yang.model.api.ChoiceCaseNode;
+import org.opendaylight.yangtools.yang.model.api.ChoiceSchemaNode;
import org.opendaylight.yangtools.yang.model.api.DataNodeContainer;
import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
import org.opendaylight.yangtools.yang.model.api.GroupingDefinition;
import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement;
import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
+import org.opendaylight.yangtools.yang.parser.spi.source.AugmentToChoiceNamespace;
+import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.YangValidationBundles;
abstract class AbstractEffectiveDocumentedDataNodeContainer<A, D extends DeclaredStatement<A>>
extends AbstractEffectiveDocumentedNode<A, D> implements
for (EffectiveStatement<?, ?> effectiveStatement : effectiveSubstatements) {
if (effectiveStatement instanceof DataSchemaNode) {
- DataSchemaNode dataSchemaNode = (DataSchemaNode) effectiveStatement;
+ final DataSchemaNode dataSchemaNode = (DataSchemaNode) effectiveStatement;
if (!mutableChildNodes.containsKey(dataSchemaNode.getQName())) {
- mutableChildNodes.put(dataSchemaNode.getQName(),
- dataSchemaNode);
- mutablePublicChildNodes.add(dataSchemaNode);
+ /**
+ * Add case short hand when augmenting choice with short hand
+ **/
+ if (this instanceof AugmentationSchema && !(effectiveStatement instanceof ChoiceCaseNode ||
+ effectiveStatement instanceof ChoiceSchemaNode) &&
+ (YangValidationBundles.SUPPORTED_CASE_SHORTHANDS.contains(effectiveStatement.statementDefinition())) &&
+ Boolean.TRUE.equals(ctx.getFromNamespace(AugmentToChoiceNamespace.class, ctx))) {
+ final CaseShorthandImpl caseShorthand = new CaseShorthandImpl(dataSchemaNode);
+ mutableChildNodes.put(caseShorthand.getQName(), caseShorthand);
+ mutablePublicChildNodes.add(caseShorthand);
+ } else {
+ mutableChildNodes.put(dataSchemaNode.getQName(), dataSchemaNode);
+ mutablePublicChildNodes.add(dataSchemaNode);
+ }
} else {
throw EffectiveStmtUtils.createNameCollisionSourceException(ctx, effectiveStatement);
}
return childNodes.get(name);
}
- @Override
- public final DataSchemaNode getDataChildByName(final String name) {
- for (DataSchemaNode node : childNodes.values()) {
- if (node.getQName().getLocalName().equals(name)) {
- return node;
- }
- }
- return null;
- }
-
@Override
public Set<UsesNode> getUses() {
return uses;
}
-
}