From 9e7fdf90771bb0ecb1dcaffcfb6ff58e93ec20b0 Mon Sep 17 00:00:00 2001 From: Jie Han Date: Fri, 7 Jul 2017 16:51:13 +0800 Subject: [PATCH] Binding generator v2 - uses statement - uses augment Change-Id: I04cd6044ad81fb8a71dd5ee70b5d06e7d01bf5f2 Signed-off-by: Jie Han --- .../generator/impl/AugmentToGenType.java | 3 +- .../javav2/generator/impl/GenHelperUtil.java | 52 +++++-------------- .../test-uses-statement-augment.yang | 25 +++++++++ 3 files changed, 38 insertions(+), 42 deletions(-) create mode 100644 binding2/mdsal-binding2-generator-impl/src/test/resources/uses-statement/test-uses-statement-augment.yang diff --git a/binding2/mdsal-binding2-generator-impl/src/main/java/org/opendaylight/mdsal/binding/javav2/generator/impl/AugmentToGenType.java b/binding2/mdsal-binding2-generator-impl/src/main/java/org/opendaylight/mdsal/binding/javav2/generator/impl/AugmentToGenType.java index 740cd5ddeb..6b2347e250 100644 --- a/binding2/mdsal-binding2-generator-impl/src/main/java/org/opendaylight/mdsal/binding/javav2/generator/impl/AugmentToGenType.java +++ b/binding2/mdsal-binding2-generator-impl/src/main/java/org/opendaylight/mdsal/binding/javav2/generator/impl/AugmentToGenType.java @@ -138,8 +138,7 @@ final class AugmentToGenType { verboseClassComments, resultCtx, genTypeBuilders, typeProvider); for (AugmentationSchema augSchema : schemaPathAugmentListEntry.getValue()) { - GenHelperUtil.processUsesAugments(schemaContext, augSchema, module, genCtx, - genTypeBuilders, verboseClassComments, typeProvider, BindingNamespaceType.Data); + GenHelperUtil.processUsesImplements(augSchema, module, schemaContext, genCtx, BindingNamespaceType.Data); } } diff --git a/binding2/mdsal-binding2-generator-impl/src/main/java/org/opendaylight/mdsal/binding/javav2/generator/impl/GenHelperUtil.java b/binding2/mdsal-binding2-generator-impl/src/main/java/org/opendaylight/mdsal/binding/javav2/generator/impl/GenHelperUtil.java index 05c9c63473..eead9aad30 100644 --- a/binding2/mdsal-binding2-generator-impl/src/main/java/org/opendaylight/mdsal/binding/javav2/generator/impl/GenHelperUtil.java +++ b/binding2/mdsal-binding2-generator-impl/src/main/java/org/opendaylight/mdsal/binding/javav2/generator/impl/GenHelperUtil.java @@ -245,7 +245,7 @@ final class GenHelperUtil { if (schemaNodes != null && parent != null) { for (final DataSchemaNode schemaNode : schemaNodes) { - if (!schemaNode.isAugmenting()) { + if (resolveDataSchemaNodesCheck(schemaNode)) { addSchemaNodeToBuilderAsMethod(basePackageName, schemaNode, parent, childOf, module, genCtx, schemaContext, verboseClassComments, genTypeBuilders, typeProvider, namespaceType); } @@ -254,6 +254,14 @@ final class GenHelperUtil { return parent; } + static boolean resolveDataSchemaNodesCheck(final DataSchemaNode schemaNode) { + if (!(schemaNode.isAugmenting() && !schemaNode.isAddedByUses())) { + return true; + } + + return false; + } + static GeneratedTypeBuilder addDefaultInterfaceDefinition(final String basePackageName, final SchemaNode schemaNode, final Module module, final Map genCtx, final SchemaContext schemaContext, final boolean verboseClassComments, final Map> genTypeBuilders, @@ -262,28 +270,6 @@ final class GenHelperUtil { verboseClassComments, genTypeBuilders, typeProvider , namespaceType); } - static Map processUsesAugments(final SchemaContext schemaContext, final - DataNodeContainer node, final Module module, Map genCtx, - final Map> genTypeBuilders, - final boolean verboseClassComments, final TypeProvider typeProvider, - final BindingNamespaceType namespaceType) { - final String basePackageName = BindingMapping.getRootPackageName(module); - for (final UsesNode usesNode : node.getUses()) { - Map> augmentationsGrouped = - usesNode.getAugmentations().stream().collect(Collectors.groupingBy(AugmentationSchema::getTargetPath)); - for (Map.Entry> schemaPathAugmentListEntry : augmentationsGrouped.entrySet()) { - genCtx = AugmentToGenType.usesAugmentationToGenTypes(schemaContext, basePackageName, - schemaPathAugmentListEntry.getValue(), module, - usesNode, node, genCtx, genTypeBuilders, verboseClassComments, typeProvider, namespaceType); - for (AugmentationSchema augSchema : schemaPathAugmentListEntry.getValue()) { - genCtx = processUsesAugments(schemaContext, augSchema, module, genCtx, genTypeBuilders, - verboseClassComments, typeProvider, namespaceType); - } - } - } - return genCtx; - } - private static QName createQNameFromSuperNode(final Object node, final SchemaNode superChildNode) { QName childNodeQName = null; if (node instanceof Module) { @@ -575,10 +561,6 @@ final class GenHelperUtil { parentName, final String basePackageName, final NotificationDefinition notification, final Module module, final SchemaContext schemaContext, final boolean verboseClassComments, Map> genTypeBuilders, TypeProvider typeProvider, Map genCtx) { - - processUsesAugments(schemaContext, notification, module, genCtx, genTypeBuilders, - verboseClassComments, typeProvider, BindingNamespaceType.Data); - final GeneratedTypeBuilder notificationInterface = addDefaultInterfaceDefinition (basePackageName, notification, null, module, genCtx, schemaContext, verboseClassComments, genTypeBuilders, typeProvider, BindingNamespaceType.Data); @@ -789,7 +771,7 @@ final class GenHelperUtil { if (namespaceType.equals(BindingNamespaceType.Grouping)) { final GeneratedTypeBuilder genTypeBuilder = resolveListKeyTypeBuilder(packageName, node); for (final DataSchemaNode schemaNode : node.getChildNodes()) { - if (!schemaNode.isAugmenting()) { + if (resolveDataSchemaNodesCheck(schemaNode)) { addSchemaNodeToListTypeBuilders(nodeName, basePackageName, schemaNode, genType, genTypeBuilder, listKeys, module, typeProvider, schemaContext, genCtx, genTypeBuilders, verboseClassComments, namespaceType); } @@ -801,7 +783,7 @@ final class GenHelperUtil { } else { final GeneratedTOBuilder genTOBuilder = resolveListKeyTOBuilder(packageName, node); for (final DataSchemaNode schemaNode : node.getChildNodes()) { - if (!schemaNode.isAugmenting()) { + if (resolveDataSchemaNodesCheck(schemaNode)) { addSchemaNodeToListBuilders(nodeName, basePackageName, schemaNode, genType, genTOBuilder, listKeys, module, typeProvider, schemaContext, genCtx, genTypeBuilders, verboseClassComments, namespaceType); } @@ -1043,7 +1025,7 @@ final class GenHelperUtil { } for (final ChoiceCaseNode caseNode : caseNodes) { - if (caseNode != null && !caseNode.isAugmenting()) { + if (caseNode != null && resolveDataSchemaNodesCheck(caseNode)) { final GeneratedTypeBuilder caseTypeBuilder = addDefaultInterfaceDefinition(basePackageName, caseNode, module, genCtx, schemaContext, verboseClassComments, genTypeBuilders, typeProvider, namespaceType); caseTypeBuilder.addImplementsType(refChoiceType); @@ -1091,8 +1073,6 @@ final class GenHelperUtil { } } } - processUsesAugments(schemaContext, caseNode, module, genCtx, genTypeBuilders, verboseClassComments, - typeProvider, namespaceType); } } @@ -1268,10 +1248,6 @@ final class GenHelperUtil { final boolean verboseClassComments, Map genCtx, final Map> genTypeBuilders, final TypeProvider typeProvider, final BindingNamespaceType namespaceType) { - if (node.isAugmenting()) { - return null; - } - final GeneratedTypeBuilder genType = addDefaultInterfaceDefinition(basePackageName, node, childOf, module, genCtx, schemaContext, verboseClassComments, genTypeBuilders, typeProvider, namespaceType); genType.addComment(node.getDescription()); @@ -1284,8 +1260,6 @@ final class GenHelperUtil { genType.setParentTypeForBuilder(childOf); if (node instanceof DataNodeContainer) { genCtx.get(module).addChildNodeType(node, genType); - processUsesAugments(schemaContext, (DataNodeContainer) node, module, genCtx, genTypeBuilders, - verboseClassComments, typeProvider, namespaceType); } return genType; } @@ -1360,8 +1334,6 @@ final class GenHelperUtil { genCtx.get(module).addGroupingType(grouping, genType); resolveDataSchemaNodes(module, basePackageName, genType, genType, grouping.getChildNodes(), genCtx, schemaContext, verboseClassComments, genTypeBuilders, typeProvider, BindingNamespaceType.Grouping); - genCtx = processUsesAugments(schemaContext, grouping, module, genCtx, genTypeBuilders, verboseClassComments, - typeProvider, BindingNamespaceType.Grouping); genCtx = processUsesImplements(grouping, module, schemaContext, genCtx, BindingNamespaceType.Grouping); return genCtx; } diff --git a/binding2/mdsal-binding2-generator-impl/src/test/resources/uses-statement/test-uses-statement-augment.yang b/binding2/mdsal-binding2-generator-impl/src/test/resources/uses-statement/test-uses-statement-augment.yang new file mode 100644 index 0000000000..215971c03b --- /dev/null +++ b/binding2/mdsal-binding2-generator-impl/src/test/resources/uses-statement/test-uses-statement-augment.yang @@ -0,0 +1,25 @@ +module test-uses-statement-augment { + yang-version 1.1; + + namespace "urn:test:uses:statement:augment"; + prefix test-uses-augment; + organization "test.type.org"; + revision "2017-07-07"; + + grouping example { + container nested { + leaf foo { + type string; + } + } + } + + container top { + uses example { + augment nested { + container bar { + } + } + } + } +} \ No newline at end of file -- 2.36.6