From: Martin Ciglan Date: Thu, 8 Jun 2017 07:11:27 +0000 (+0200) Subject: Support for Yang 1.1 Anydata statement in mdsal-binding2-generator X-Git-Tag: release/carbon-sr1~59 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=commitdiff_plain;h=0b719c1594b82c6ac2d0c589d5b70ae47ccd71a8;p=mdsal.git Support for Yang 1.1 Anydata statement in mdsal-binding2-generator - able to recognize anydata statement in root or data schema node - generate type & Java code for it - YANG test example Change-Id: I79baeb831ed1b663d332800cca556f6e1dc53cb6 Signed-off-by: Martin Ciglan (cherry picked from commit ce3c65609d686c12738b01943765560ebebdf518) --- 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 dfc26ca3f1..45dbb9c845 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 @@ -65,6 +65,7 @@ import org.opendaylight.mdsal.binding.javav2.spec.runtime.BindingNamespaceType; import org.opendaylight.mdsal.binding.javav2.spec.structural.Augmentable; import org.opendaylight.mdsal.binding.javav2.util.BindingMapping; import org.opendaylight.yangtools.yang.common.QName; +import org.opendaylight.yangtools.yang.model.api.AnyDataSchemaNode; import org.opendaylight.yangtools.yang.model.api.AnyXmlSchemaNode; import org.opendaylight.yangtools.yang.model.api.AugmentationSchema; import org.opendaylight.yangtools.yang.model.api.ChoiceCaseNode; @@ -546,12 +547,11 @@ final class GenHelperUtil { } else if (node instanceof ListSchemaNode) { listToGenType(module, basePackageName, typeBuilder, childOf, (ListSchemaNode) node, schemaContext, verboseClassComments, genCtx, genTypeBuilders, typeProvider); - } else if (node instanceof AnyXmlSchemaNode) { - resolveAnyxmlNodeAsMethod(schemaContext, typeBuilder, genCtx, (AnyXmlSchemaNode) node, module, - typeProvider); } else if (node instanceof ChoiceSchemaNode) { choiceToGenType(module, schemaContext, verboseClassComments, basePackageName, childOf, (ChoiceSchemaNode) node, genTypeBuilders, genCtx, typeProvider); + } else if (node instanceof AnyXmlSchemaNode || node instanceof AnyDataSchemaNode) { + resolveAnyNodeAsMethod(schemaContext, typeBuilder, genCtx, node, module, typeProvider); } } } @@ -915,27 +915,26 @@ final class GenHelperUtil { } } - private static Type resolveAnyxmlNodeAsMethod(final SchemaContext schemaContext, final GeneratedTypeBuilder - typeBuilder, final Map genCtx, final AnyXmlSchemaNode anyxml, final Module module, + private static Type resolveAnyNodeAsMethod(final SchemaContext schemaContext, final GeneratedTypeBuilder + typeBuilder, final Map genCtx, final DataSchemaNode node, final Module module, final TypeProvider typeProvider) { - final String anyxmlName = anyxml.getQName().getLocalName(); - if (anyxmlName == null) { + final String anyName = node.getQName().getLocalName(); + if (anyName == null) { return null; } - String anyxmlDesc = anyxml.getDescription(); - if (anyxmlDesc == null) { - anyxmlDesc = ""; + String anyDesc = node.getDescription(); + if (anyDesc == null) { + anyDesc = ""; } Type returnType = Types.DOCUMENT; - constructGetter(typeBuilder, anyxmlName, anyxmlDesc, returnType, anyxml.getStatus()); + constructGetter(typeBuilder, anyName, anyDesc, returnType, node.getStatus()); return returnType; } - /** * Adds schemaNode to typeBuilder as getter method * or to genTOBuilder as property. diff --git a/binding2/mdsal-binding2-generator-impl/src/test/resources/anydata/test-anydata.yang b/binding2/mdsal-binding2-generator-impl/src/test/resources/anydata/test-anydata.yang new file mode 100644 index 0000000000..1600e7ec45 --- /dev/null +++ b/binding2/mdsal-binding2-generator-impl/src/test/resources/anydata/test-anydata.yang @@ -0,0 +1,24 @@ +module test-anydata { + yang-version 1.1; + + namespace "urn:test:simple:test:anydata"; + prefix test; + organization "test.org"; + revision "2017-06-08"; + + container *my-cont { + container my-inner-cont { + leaf my-leaf { + type string; + } + + anydata inner-anydata { + description "I am data schema node anydata"; + } + } + } + + anydata root-anydata { + description "I am root anydata"; + } +} \ No newline at end of file