X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fsal%2Fyang-prototype%2Fcode-generator%2Fyang-model-parser-impl%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fyang%2Fmodel%2Fparser%2Fimpl%2FYangModelParserListenerImpl.java;h=2023b47de3b960b9da29805440aeecb62b31f3df;hb=be6d2cfbf462fc44301309b872ca8eeae6e2eb97;hp=bc5f77be838eb6b329feec9e1e756c6522d14d20;hpb=184e4f61d034f6c83da75de288d4f56ec48f60bf;p=controller.git diff --git a/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/model/parser/impl/YangModelParserListenerImpl.java b/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/model/parser/impl/YangModelParserListenerImpl.java index bc5f77be83..2023b47de3 100644 --- a/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/model/parser/impl/YangModelParserListenerImpl.java +++ b/opendaylight/sal/yang-prototype/code-generator/yang-model-parser-impl/src/main/java/org/opendaylight/controller/yang/model/parser/impl/YangModelParserListenerImpl.java @@ -52,11 +52,11 @@ import org.opendaylight.controller.antlrv4.code.gen.YangParser.When_stmtContext; import org.opendaylight.controller.antlrv4.code.gen.YangParser.Yang_version_stmtContext; import org.opendaylight.controller.antlrv4.code.gen.YangParserBaseListener; import org.opendaylight.controller.yang.common.QName; +import org.opendaylight.controller.yang.model.api.SchemaPath; import org.opendaylight.controller.yang.model.api.Status; import org.opendaylight.controller.yang.model.api.TypeDefinition; import org.opendaylight.controller.yang.model.parser.builder.api.AugmentationSchemaBuilder; import org.opendaylight.controller.yang.model.parser.builder.api.GroupingBuilder; -import org.opendaylight.controller.yang.model.parser.builder.api.UsesNodeBuilder; import org.opendaylight.controller.yang.model.parser.builder.impl.AnyXmlBuilder; import org.opendaylight.controller.yang.model.parser.builder.impl.ChoiceBuilder; import org.opendaylight.controller.yang.model.parser.builder.impl.ChoiceCaseBuilder; @@ -329,9 +329,10 @@ public final class YangModelParserListenerImpl extends YangParserBaseListener { moduleBuilder.setType(type, actualPath); } else { if ("union".equals(typeName)) { - moduleBuilder.addUnionType(actualPath); + moduleBuilder.addUnionType(actualPath, namespace, revision); } else if("identityref".equals(typeName)) { - moduleBuilder.addIdentityrefType(getIdentityrefBase(typeBody), actualPath); + SchemaPath path = createActualSchemaPath(actualPath, namespace, revision, yangModelPrefix); + moduleBuilder.addIdentityrefType(getIdentityrefBase(typeBody), actualPath, path); } else { List typePath = new ArrayList(actualPath); typePath.remove(0); @@ -459,12 +460,9 @@ public final class YangModelParserListenerImpl extends YangParserBaseListener { @Override public void enterUses_stmt(YangParser.Uses_stmtContext ctx) { final String groupingPathStr = stringFromNode(ctx); - UsesNodeBuilder builder = moduleBuilder.addUsesNode(groupingPathStr, + moduleBuilder.addUsesNode(groupingPathStr, actualPath); updatePath(groupingPathStr); - - final List refines = parseRefines(ctx); - builder.setRefines(refines); } @Override @@ -473,6 +471,20 @@ public final class YangModelParserListenerImpl extends YangParserBaseListener { logger.debug("exiting " + actContainer); } + @Override + public void enterRefine_stmt(YangParser.Refine_stmtContext ctx) { + String refineString = stringFromNode(ctx); + RefineHolder refine = parseRefine(ctx); + moduleBuilder.addRefine(refine, actualPath); + updatePath(refineString); + } + + @Override + public void exitRefine_stmt(YangParser.Refine_stmtContext ctx) { + final String actContainer = actualPath.pop(); + logger.debug("exiting " + actContainer); + } + @Override public void enterLeaf_list_stmt(Leaf_list_stmtContext ctx) { final String leafListName = stringFromNode(ctx); @@ -634,11 +646,21 @@ public final class YangModelParserListenerImpl extends YangParserBaseListener { // Unknown types @Override public void enterIdentifier_stmt(YangParser.Identifier_stmtContext ctx) { - final String name = stringFromNode(ctx); + final String nodeParameter = stringFromNode(ctx); + QName nodeType = null; + + final String nodeTypeStr = ctx.getChild(0).getText(); + final String[] splittedElement = nodeTypeStr.split(":"); + if (splittedElement.length == 1) { + nodeType = new QName(null, null, null, splittedElement[0]); + } else { + nodeType = new QName(null, null, splittedElement[0], + splittedElement[1]); + } QName qname; - if (name != null) { - String[] splittedName = name.split(":"); + if (nodeParameter != null) { + String[] splittedName = nodeParameter.split(":"); if (splittedName.length == 2) { qname = new QName(null, null, splittedName[0], splittedName[1]); } else { @@ -646,12 +668,14 @@ public final class YangModelParserListenerImpl extends YangParserBaseListener { splittedName[0]); } } else { - qname = new QName(namespace, revision, yangModelPrefix, name); + qname = new QName(namespace, revision, yangModelPrefix, nodeParameter); } UnknownSchemaNodeBuilder builder = moduleBuilder.addUnknownSchemaNode( qname, actualPath); - updatePath(name); + builder.setNodeType(nodeType); + builder.setNodeParameter(nodeParameter); + updatePath(nodeParameter); builder.setPath(createActualSchemaPath(actualPath, namespace, revision, yangModelPrefix)); parseSchemaNodeArgs(ctx, builder);