Extend BindingNamespaceType 33/68133/10
authorJie Han <han.jie@zte.com.cn>
Sun, 11 Feb 2018 03:23:47 +0000 (11:23 +0800)
committerJie Han <han.jie@zte.com.cn>
Mon, 27 Aug 2018 01:58:15 +0000 (09:58 +0800)
- Extend BindingNamespaceType with 'Notification' and 'Operation'
  to distinguish data nodes from notifications and operations.
  It's useful to guide renderers to generate code like
  'getInstanceIdentifier' which is only needed by tree data nodes.
- Make binding namespace type of augmented nodes inherit target
  type's.

Change-Id: I5b7b598d1db40b8d2b70707b0d3ba6f41f9b9fd3
Signed-off-by: Jie Han <han.jie@zte.com.cn>
13 files changed:
binding2/mdsal-binding2-generator-api/src/main/java/org/opendaylight/mdsal/binding/javav2/model/api/GeneratedType.java
binding2/mdsal-binding2-generator-api/src/main/java/org/opendaylight/mdsal/binding/javav2/model/api/type/builder/GeneratedTypeBuilderBase.java
binding2/mdsal-binding2-generator-impl/src/main/java/org/opendaylight/mdsal/binding/javav2/generator/impl/AugmentToGenType.java
binding2/mdsal-binding2-generator-impl/src/main/java/org/opendaylight/mdsal/binding/javav2/generator/impl/AuxiliaryGenUtils.java [changed mode: 0644->0755]
binding2/mdsal-binding2-generator-impl/src/main/java/org/opendaylight/mdsal/binding/javav2/generator/impl/GenHelperUtil.java
binding2/mdsal-binding2-generator-impl/src/main/java/org/opendaylight/mdsal/binding/javav2/generator/impl/ModuleToGenType.java [changed mode: 0644->0755]
binding2/mdsal-binding2-generator-impl/src/main/java/org/opendaylight/mdsal/binding/javav2/generator/impl/RpcActionGenHelper.java [changed mode: 0644->0755]
binding2/mdsal-binding2-generator-util/src/main/java/org/opendaylight/mdsal/binding/javav2/generator/util/generated/type/builder/AbstractGeneratedType.java
binding2/mdsal-binding2-generator-util/src/main/java/org/opendaylight/mdsal/binding/javav2/generator/util/generated/type/builder/AbstractGeneratedTypeBuilder.java
binding2/mdsal-binding2-generator-util/src/main/java/org/opendaylight/mdsal/binding/javav2/generator/util/generated/type/builder/EnumerationBuilderImpl.java
binding2/mdsal-binding2-spec/src/main/java/org/opendaylight/mdsal/binding/javav2/spec/runtime/BindingNamespaceType.java [changed mode: 0644->0755]
binding2/mdsal-binding2-test-model/src/main/java/org/opendaylight/mdsal/gen/javav2/urn/opendaylight/params/xml/ns/yang/mdsal/test/binding/rev140701/type/Int32StringUnionBuilder.java [changed mode: 0644->0755]
binding2/mdsal-binding2-test-model/src/main/yang/opendaylight-mdsal-binding-test.yang [changed mode: 0644->0755]

index c37fbd0c9d5a716b61dfaa1e4340db991a7c3b61..0293d633883c07b7a4fa1210ac014dac4113bee2 100755 (executable)
@@ -11,6 +11,7 @@ package org.opendaylight.mdsal.binding.javav2.model.api;
 import com.google.common.annotations.Beta;
 import java.util.List;
 import java.util.Optional;
+import org.opendaylight.mdsal.binding.javav2.spec.runtime.BindingNamespaceType;
 
 /**
  * Every Java interface has to be specified with:
@@ -128,4 +129,11 @@ public interface GeneratedType extends Type, DocumentedType {
      * @return YANG source definition, or empty when unavailable.
      */
     Optional<YangSourceDefinition> getYangSourceDefinition();
+
+    /**
+     * Get the BindingNamespaceType.
+     *
+     * @return BindingNamespaceType which type belongs to.
+     */
+    BindingNamespaceType getBindingNamespaceType();
 }
index 070f3298274ae580b7294bd65a9dea96fccf5f64..9060ec1e6664dc01281d123ae9b62b3d5f5d546a 100644 (file)
@@ -17,6 +17,7 @@ import org.opendaylight.mdsal.binding.javav2.model.api.Constant;
 import org.opendaylight.mdsal.binding.javav2.model.api.Type;
 import org.opendaylight.mdsal.binding.javav2.model.api.TypeComment;
 import org.opendaylight.mdsal.binding.javav2.model.api.YangSourceDefinition;
+import org.opendaylight.mdsal.binding.javav2.spec.runtime.BindingNamespaceType;
 import org.opendaylight.yangtools.yang.common.QName;
 
 @Beta
@@ -154,6 +155,13 @@ public interface GeneratedTypeBuilderBase<T extends GeneratedTypeBuilderBase<T>>
      */
     Type setParentTypeForBuilder(Type type);
 
+    /**
+     * Get the BindingNamespaceType.
+     *
+     * @return BindingNamespaceType which type belongs to.
+     */
+    BindingNamespaceType getBindingNamespaceType();
+
     List<MethodSignatureBuilder> getMethodDefinitions();
 
     /**
@@ -256,4 +264,11 @@ public interface GeneratedTypeBuilderBase<T extends GeneratedTypeBuilderBase<T>>
      * @param definition YANG source definition, must not be null
      */
     void setYangSourceDefinition(@NonNull YangSourceDefinition definition);
+
+    /**
+     * Set the BindingNamespaceType.
+     *
+     * @param namespaceType BindingNamespaceType which type belongs to, must not be null
+     */
+    void setBindingNamespaceType(@NonNull BindingNamespaceType namespaceType);
 }
index f0d6355cc55e4c1b6761b9df134beb22991ad804..30a85e9b84c1e2aba5d52dba920186a5811dce6f 100644 (file)
@@ -241,13 +241,14 @@ final class AugmentToGenType {
 
         if (!(targetSchemaNode instanceof ChoiceSchemaNode)) {
             genCtx = GenHelperUtil.addRawAugmentGenTypeDefinition(module, augmentPackageName,
-                targetTypeBuilder.toInstance(), targetSchemaNode, schemaPathAugmentListEntry.getValue(),
-                genTypeBuilders, genCtx, schemaContext, verboseClassComments, typeProvider, BindingNamespaceType.Data);
+                targetTypeBuilder, targetSchemaNode, schemaPathAugmentListEntry.getValue(),
+                genTypeBuilders, genCtx, schemaContext, verboseClassComments, typeProvider,
+                targetTypeBuilder.getBindingNamespaceType());
         } else {
             genCtx = generateTypesFromAugmentedChoiceCases(schemaContext, module, basePackageName,
                 targetTypeBuilder.toInstance(), (ChoiceSchemaNode) targetSchemaNode,
                 schemaPathAugmentListEntry.getValue(),genCtx, verboseClassComments, genTypeBuilders, typeProvider,
-                BindingNamespaceType.Data);
+                targetTypeBuilder.getBindingNamespaceType());
         }
         return genCtx;
     }
old mode 100644 (file)
new mode 100755 (executable)
index 919f8c0..0f17925
@@ -150,7 +150,7 @@ final class AuxiliaryGenUtils {
     }
 
     public static boolean hasBuilderClass(final SchemaNode schemaNode, final BindingNamespaceType namespaceType) {
-        return (namespaceType.equals(BindingNamespaceType.Data)
+        return (BindingNamespaceType.isData(namespaceType)
             && (schemaNode instanceof ContainerSchemaNode || schemaNode instanceof ListSchemaNode
             || schemaNode instanceof RpcDefinition || schemaNode instanceof NotificationDefinition
             || schemaNode instanceof CaseSchemaNode));
index 316deadec228fe073145bdd01fe3d36914041121..21f578da23ca6a79e4358402fd2839f298b9771b 100755 (executable)
@@ -309,10 +309,10 @@ final class GenHelperUtil {
                     type.addImplementsType(superType);
                     if (superChildNode instanceof ListSchemaNode
                             && !((ListSchemaNode) superChildNode).getKeyDefinition().isEmpty()) {
-                        if (namespaceType.equals(BindingNamespaceType.Grouping)) {
+                        if (BindingNamespaceType.isGrouping(namespaceType)) {
                             genCtx.get(module).getKeyType(childNode.getPath())
                                     .addImplementsType(genCtx.get(superModule).getKeyType(superChildNode.getPath()));
-                        } else if (namespaceType.equals(BindingNamespaceType.Data)) {
+                        } else if (BindingNamespaceType.isData(namespaceType)) {
                             genCtx.get(module).getKeyGenTO(childNode.getPath())
                                     .addImplementsType(genCtx.get(superModule).getKeyType(superChildNode.getPath()));
                         }
@@ -401,7 +401,7 @@ final class GenHelperUtil {
     }
 
     static Map<Module, ModuleContext> addRawAugmentGenTypeDefinition(final Module module,
-            final String augmentPackageName, final Type targetTypeRef, final SchemaNode targetNode,
+            final String augmentPackageName, final GeneratedTypeBuilder targetTypeBuilder, final SchemaNode targetNode,
             final List<AugmentationSchemaNode> schemaPathAugmentListEntry,
             final Map<String, Map<String, GeneratedTypeBuilder>> genTypeBuilders,
             final Map<Module, ModuleContext> genCtx, final SchemaContext schemaContext,
@@ -433,9 +433,10 @@ final class GenHelperUtil {
 
         augTypeBuilder.addImplementsType(BindingTypes.TREE_NODE);
         augTypeBuilder.addImplementsType(parameterizedTypeFor(BindingTypes.INSTANTIABLE, augTypeBuilder));
-        augTypeBuilder.addImplementsType(Types.augmentationTypeFor(targetTypeRef));
+        augTypeBuilder.addImplementsType(Types.augmentationTypeFor(targetTypeBuilder.toInstance()));
         augTypeBuilder.setBasePackageName(BindingMapping.getRootPackageName(module));
         augTypeBuilder.setWithBuilder(true);
+        augTypeBuilder.setBindingNamespaceType(namespaceType);
         annotateDeprecatedIfNecessary(augSchema.getStatus(), augTypeBuilder);
 
         //produces getters for augTypeBuilder eventually
@@ -444,7 +445,7 @@ final class GenHelperUtil {
             addImplementedInterfaceFromUses(aug, augTypeBuilder, genCtx);
             augSchemaNodeToMethods(module, BindingMapping.getRootPackageName(module), augTypeBuilder, augTypeBuilder,
                 aug.getChildNodes(), genCtx, schemaContext, verboseClassComments, typeProvider, genTypeBuilders,
-                namespaceType);
+                targetTypeBuilder.getBindingNamespaceType());
         }
 
         augmentBuilders.put(augTypeBuilder.getName(), augTypeBuilder);
@@ -526,13 +527,12 @@ final class GenHelperUtil {
 
         GeneratedTypeBuilder it = addRawInterfaceDefinition(basePackageName, schemaNode, schemaContext, "", "",
                 verboseClassComments, genTypeBuilders, namespaceType, genCtx.get(module));
-
-        if (namespaceType.equals(BindingNamespaceType.Data)) {
+        if (BindingNamespaceType.isData(namespaceType)) {
             if (childOf == null) {
                 it.addImplementsType(BindingTypes.TREE_NODE);
             } else {
                 if (!(schemaNode instanceof ListSchemaNode) ||
-                        ((ListSchemaNode) schemaNode).getKeyDefinition().isEmpty()) {
+                    ((ListSchemaNode) schemaNode).getKeyDefinition().isEmpty()) {
                     it.addImplementsType(parameterizedTypeFor(BindingTypes.TREE_CHILD_NODE, childOf,
                         parameterizedTypeFor(BindingTypes.ITEM, it)));
                 }
@@ -543,8 +543,6 @@ final class GenHelperUtil {
             }
 
             it.addImplementsType(BindingTypes.augmentable(it));
-        } else {
-            it.addImplementsType(BindingTypes.TREE_NODE);
         }
 
         if (schemaNode instanceof DataNodeContainer) {
@@ -562,7 +560,7 @@ final class GenHelperUtil {
             genTypeBuilders, final TypeProvider typeProvider, final Map<Module, ModuleContext> genCtx) {
         final GeneratedTypeBuilder notificationInterface = addDefaultInterfaceDefinition
                 (basePackageName, notification, null, module, genCtx, schemaContext,
-                        verboseClassComments, genTypeBuilders, typeProvider, BindingNamespaceType.Data);
+                        verboseClassComments, genTypeBuilders, typeProvider, BindingNamespaceType.Notification);
         annotateDeprecatedIfNecessary(notification.getStatus(), notificationInterface);
         notificationInterface.addImplementsType(NOTIFICATION);
         genCtx.get(module).addChildNodeType(notification, notificationInterface);
@@ -570,7 +568,7 @@ final class GenHelperUtil {
         // Notification object
         resolveDataSchemaNodes(module, basePackageName, notificationInterface,
                 notificationInterface, notification.getChildNodes(), genCtx, schemaContext,
-                verboseClassComments, genTypeBuilders, typeProvider, BindingNamespaceType.Data);
+                verboseClassComments, genTypeBuilders, typeProvider, BindingNamespaceType.Notification);
 
         //in case of tied notification, incorporate parent's localName
         final StringBuilder sb = new StringBuilder("on_");
@@ -644,6 +642,7 @@ final class GenHelperUtil {
         newType.setModuleName(module.getName());
         newType.setBasePackageName(BindingMapping.getRootPackageName(module));
         newType.setWithBuilder(AuxiliaryGenUtils.hasBuilderClass(schemaNode, namespaceType));
+        newType.setBindingNamespaceType(namespaceType);
 
         if (!genTypeBuilders.containsKey(packageName)) {
             final Map<String, GeneratedTypeBuilder> builders = new HashMap<>();
@@ -724,7 +723,7 @@ final class GenHelperUtil {
         constructGetter(parent, choiceNode.getQName().getLocalName(),
                 choiceNode.getDescription().orElse(null), choiceTypeBuilder, choiceNode.getStatus());
         choiceTypeBuilder.setParentTypeForBuilder(childOf);
-        if (namespaceType.equals(BindingNamespaceType.Data)) {
+        if (BindingNamespaceType.isData(namespaceType)) {
             choiceTypeBuilder.addImplementsType(parameterizedTypeFor(BindingTypes.INSTANTIABLE, choiceTypeBuilder));
         }
         annotateDeprecatedIfNecessary(choiceNode.getStatus(), choiceTypeBuilder);
@@ -762,7 +761,7 @@ final class GenHelperUtil {
             final String nodeName = node.getQName().getLocalName();
 
             Type getterReturnType = Types.listTypeFor(genType);
-            if (namespaceType.equals(BindingNamespaceType.Grouping)) {
+            if (BindingNamespaceType.isGrouping(namespaceType)) {
                 getterReturnType = Types.listTypeFor(wildcardTypeFor(genType.getPackageName(), genType.getName(),
                                 true, true, null));
             }
@@ -772,7 +771,7 @@ final class GenHelperUtil {
             final String packageName = new StringBuilder(packageNameForGeneratedType(basePackageName, node.getPath(),
                     BindingNamespaceType.Key)).append('.').append(nodeName).toString();
             //FIXME: Is it neccessary to generate interface of key and implemented by class?
-            if (namespaceType.equals(BindingNamespaceType.Grouping)) {
+            if (BindingNamespaceType.isGrouping(namespaceType)) {
                 final GeneratedTypeBuilder genTypeBuilder = resolveListKeyTypeBuilder(packageName, node, genCtx.get(module));
                 for (final DataSchemaNode schemaNode : node.getChildNodes()) {
                     if (resolveDataSchemaNodesCheck(module, schemaContext, schemaNode)) {
@@ -791,9 +790,10 @@ final class GenHelperUtil {
                     final Type identifiableMarker = Types.parameterizedTypeFor(IDENTIFIABLE, genTOBuilder);
                     genTOBuilder.addImplementsType(IDENTIFIER);
                     genType.addImplementsType(identifiableMarker);
-                    genType.addImplementsType(parameterizedTypeFor(BindingTypes.TREE_CHILD_NODE, childOf, parameterizedTypeFor
-                        (BindingTypes.IDENTIFIABLE_ITEM, genType, genTOBuilder)));
-
+                    if (BindingNamespaceType.isData(namespaceType)) {
+                        genType.addImplementsType(parameterizedTypeFor(BindingTypes.TREE_CHILD_NODE, childOf,
+                            parameterizedTypeFor(BindingTypes.IDENTIFIABLE_ITEM, genType, genTOBuilder)));
+                    }
                 }
 
                 for (final DataSchemaNode schemaNode : node.getChildNodes()) {
@@ -822,7 +822,7 @@ final class GenHelperUtil {
         checkArgument(typeBuilder != null, "Generated Type Builder cannot be NULL.");
         if (keyType != null) {
             Type returnKeyType = keyType;
-            if (namespaceType.equals(BindingNamespaceType.Grouping)) {
+            if (BindingNamespaceType.isGrouping(namespaceType)) {
                 returnKeyType = wildcardTypeFor(keyType.getPackageName(), keyType.getName(),
                         true, true, null);
             }
@@ -1076,7 +1076,7 @@ final class GenHelperUtil {
                 caseTypeBuilder.setParentTypeForBuilder(refChoiceType.getParentTypeForBuilder());
                 annotateDeprecatedIfNecessary(caseNode.getStatus(), caseTypeBuilder);
                 genCtx.get(module).addCaseType(caseNode.getPath(), caseTypeBuilder);
-                if (namespaceType.equals(BindingNamespaceType.Data)) {
+                if (BindingNamespaceType.isData(namespaceType)) {
                     genCtx.get(module).addChoiceToCaseMapping(refChoiceType, caseTypeBuilder, caseNode);
                 }
 
@@ -1263,7 +1263,10 @@ final class GenHelperUtil {
             node.getReference().ifPresent(genType::setReference);
         }
         genType.setSchemaPath((List) node.getPath().getPathFromRoot());
-        genType.setParentTypeForBuilder(childOf);
+        if (BindingNamespaceType.isData(namespaceType)) {
+            genType.setParentTypeForBuilder(childOf);
+        }
+
         if (node instanceof DataNodeContainer) {
             genCtx.get(module).addChildNodeType(node, genType);
         }
old mode 100644 (file)
new mode 100755 (executable)
index 8be9e73..991b6a5
@@ -189,7 +189,7 @@ final class ModuleToGenType {
             if (notification != null) {
                 resolveNotification(listenerInterface, null, basePackageName, notification, module, schemaContext,
                         verboseClassComments, genTypeBuilders, typeProvider, genCtx);
-                processUsesImplements(notification, module, schemaContext, genCtx, BindingNamespaceType.Data);
+                processUsesImplements(notification, module, schemaContext, genCtx, BindingNamespaceType.Notification);
             }
         }
 
@@ -206,7 +206,7 @@ final class ModuleToGenType {
                         resolveNotification(listenerInterface, potential.getQName().getLocalName(), basePackageName,
                                 tiedNotification, module, schemaContext, verboseClassComments, genTypeBuilders,
                                 typeProvider, genCtx);
-                        processUsesImplements(tiedNotification, module, schemaContext, genCtx, BindingNamespaceType.Data);
+                        processUsesImplements(tiedNotification, module, schemaContext, genCtx, BindingNamespaceType.Notification);
                     }
                 }
             }
old mode 100644 (file)
new mode 100755 (executable)
index 66260fb..5bcb0e8
@@ -107,7 +107,7 @@ final class RpcActionGenHelper {
         for (DataSchemaNode potential : potentials) {
             if (resolveDataSchemaNodesCheck(module, schemaContext,potential)) {
                 BindingNamespaceType namespaceType1 = namespaceType;
-                if (namespaceType.equals(BindingNamespaceType.Data)) {
+                if (BindingNamespaceType.isData(namespaceType)) {
                     if (potential instanceof GroupingDefinition) {
                         namespaceType1 = BindingNamespaceType.Grouping;
                     }
@@ -146,7 +146,7 @@ final class RpcActionGenHelper {
 
         checkModuleAndModuleName(module);
         resolveActions(module, module, schemaContext, verboseClassComments, genTypeBuilders, genCtx, typeProvider,
-            BindingNamespaceType.Data);
+            BindingNamespaceType.Operation);
         return genCtx;
     }
 
@@ -186,7 +186,7 @@ final class RpcActionGenHelper {
         for (final RpcDefinition rpc : rpcDefinitions) {
             final GeneratedTypeBuilder typeBuilder = resolveOperation(null, rpc, module, schemaContext,
                 verboseClassComments, genTypeBuilders, genCtx, typeProvider, false,
-                BindingNamespaceType.Data);
+                BindingNamespaceType.Operation);
             genCtx.get(module).addTopLevelNodeType(typeBuilder);
             genCtx.get(module).addTypeToSchema(typeBuilder, rpc);
         }
@@ -297,8 +297,10 @@ final class RpcActionGenHelper {
         final GeneratedTypeBuilder nodeType = addRawInterfaceDefinition(basePackageName, operationNode, schemaContext,
                 operationName, "", verboseClassComments, genTypeBuilders, namespaceType, genCtx.get(module));
         addImplementedInterfaceFromUses(operationNode, nodeType, genCtx);
+
         nodeType.addImplementsType(parameterizedTypeFor(BindingTypes.TREE_CHILD_NODE, parent, parameterizedTypeFor
-                (BindingTypes.ITEM, nodeType)));
+            (BindingTypes.ITEM, nodeType)));
+
         if (isInput) {
             nodeType.addImplementsType(parameterizedTypeFor(INPUT, nodeType));
         } else {
index 5450d6e79ffecf1ffdb97d15f64012933cf59e15..fcde49fc840464429bc59a1a478bd995c9e27c3b 100755 (executable)
@@ -32,6 +32,7 @@ import org.opendaylight.mdsal.binding.javav2.model.api.type.builder.GeneratedPro
 import org.opendaylight.mdsal.binding.javav2.model.api.type.builder.GeneratedTOBuilder;
 import org.opendaylight.mdsal.binding.javav2.model.api.type.builder.GeneratedTypeBuilder;
 import org.opendaylight.mdsal.binding.javav2.model.api.type.builder.MethodSignatureBuilder;
+import org.opendaylight.mdsal.binding.javav2.spec.runtime.BindingNamespaceType;
 
 @Beta
 abstract class AbstractGeneratedType extends AbstractBaseType implements GeneratedType {
@@ -48,6 +49,7 @@ abstract class AbstractGeneratedType extends AbstractBaseType implements Generat
     private final List<GeneratedProperty> properties;
     private final boolean isAbstract;
     private final YangSourceDefinition definition;
+    private final BindingNamespaceType namespaceType;
 
     public AbstractGeneratedType(final AbstractGeneratedTypeBuilder<?> builder) {
         super(builder.getPackageName(), builder.getName(), true, null);
@@ -64,28 +66,7 @@ abstract class AbstractGeneratedType extends AbstractBaseType implements Generat
         this.properties = toUnmodifiableProperties(builder.getProperties());
         this.isAbstract = builder.isAbstract();
         this.definition = builder.getYangSourceDefinition().orElse(null);
-    }
-
-    public AbstractGeneratedType(final Type parent, final String packageName, final String name, final TypeComment comment,
-                                 final List<AnnotationTypeBuilder> annotationBuilders, final boolean isAbstract,
-                                 final List<Type> implementsTypes, final List<GeneratedTypeBuilder> enclosedGenTypeBuilders,
-                                 final List<GeneratedTOBuilder> enclosedGenTOBuilders, final List<EnumBuilder> enumBuilders,
-                                 final List<Constant> constants, final List<MethodSignatureBuilder> methodBuilders,
-                                 final List<GeneratedPropertyBuilder> propertyBuilders, final Type parentTypeForBuilder) {
-        //TODO: not called by actual codebase, fix this up (provide context) if needed - 07/20/2017
-        super(packageName, name, null);
-        this.parent = parent;
-        this.parentTypeForBuilder = parentTypeForBuilder;
-        this.comment = comment;
-        this.annotations = toUnmodifiableAnnotations(annotationBuilders);
-        this.implementsTypes = makeUnmodifiable(implementsTypes);
-        this.constants = makeUnmodifiable(constants);
-        this.enumerations = toUnmodifiableEnumerations(enumBuilders);
-        this.methodSignatures = toUnmodifiableMethods(methodBuilders);
-        this.enclosedTypes = toUnmodifiableEnclosedTypes(enclosedGenTypeBuilders, enclosedGenTOBuilders);
-        this.properties = toUnmodifiableProperties(propertyBuilders);
-        this.isAbstract = isAbstract;
-        this.definition = null;
+        this.namespaceType = builder.getBindingNamespaceType();
     }
 
     protected static final <T> List<T> makeUnmodifiable(final List<T> list) {
@@ -193,6 +174,11 @@ abstract class AbstractGeneratedType extends AbstractBaseType implements Generat
         return Optional.ofNullable(definition);
     }
 
+    @Override
+    public BindingNamespaceType getBindingNamespaceType() {
+        return this.namespaceType;
+    }
+
     @Override
     public String toString() {
         final StringBuilder builder = new StringBuilder();
index c2a31fdab9189a793e9826a5d58c1db55b6980cc..569addbf508ac285bf5a8748759ac9e4114ce9de 100755 (executable)
@@ -28,6 +28,7 @@ import org.opendaylight.mdsal.binding.javav2.model.api.type.builder.GeneratedTOB
 import org.opendaylight.mdsal.binding.javav2.model.api.type.builder.GeneratedTypeBuilder;
 import org.opendaylight.mdsal.binding.javav2.model.api.type.builder.GeneratedTypeBuilderBase;
 import org.opendaylight.mdsal.binding.javav2.model.api.type.builder.MethodSignatureBuilder;
+import org.opendaylight.mdsal.binding.javav2.spec.runtime.BindingNamespaceType;
 import org.opendaylight.yangtools.util.LazyCollections;
 
 @Beta
@@ -46,6 +47,7 @@ abstract class AbstractGeneratedTypeBuilder<T extends GeneratedTypeBuilderBase<T
     private boolean isAbstract;
     private Type parentTypeForBuilder;
     private YangSourceDefinition yangSourceDefinition;
+    private BindingNamespaceType namespaceType;
 
     protected AbstractGeneratedTypeBuilder(final String packageName, final String name, ModuleContext context) {
         super(packageName, name, context);
@@ -170,6 +172,16 @@ abstract class AbstractGeneratedTypeBuilder<T extends GeneratedTypeBuilderBase<T
         return this.parentTypeForBuilder = type;
     }
 
+    @Override
+    public BindingNamespaceType getBindingNamespaceType() {
+        return namespaceType;
+    }
+
+    @Override
+    public void setBindingNamespaceType(BindingNamespaceType namespaceType) {
+        this.namespaceType = namespaceType;
+    }
+
     public boolean containsConstant(final String name) {
         Preconditions.checkArgument(name != null, "Parameter name can't be null");
         for (Constant constant : constants) {
index 3d02b03dbb889f07fbabb139b0c6b52c00d4f27b..0d8fdb1d38557dce4785295e51f48ab232c50541 100755 (executable)
@@ -31,6 +31,7 @@ import org.opendaylight.mdsal.binding.javav2.model.api.TypeComment;
 import org.opendaylight.mdsal.binding.javav2.model.api.YangSourceDefinition;
 import org.opendaylight.mdsal.binding.javav2.model.api.type.builder.AnnotationTypeBuilder;
 import org.opendaylight.mdsal.binding.javav2.model.api.type.builder.EnumBuilder;
+import org.opendaylight.mdsal.binding.javav2.spec.runtime.BindingNamespaceType;
 import org.opendaylight.yangtools.util.LazyCollections;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.model.api.Status;
@@ -348,5 +349,10 @@ public class EnumerationBuilderImpl extends AbstractBaseType implements EnumBuil
             // TODO Auto-generated method stub
             return Optional.empty();
         }
+
+        @Override
+        public BindingNamespaceType getBindingNamespaceType() {
+            return BindingNamespaceType.Data;
+        }
     }
 }
old mode 100644 (file)
new mode 100755 (executable)
index ec6aaff..4ca7c6a
@@ -23,15 +23,36 @@ public enum BindingNamespaceType {
      * Namespace containing all derived types, defined from grouping and data namespaces
      *
      */
-    Typedef("type"), Identity("ident"), Key("key"), Data("data"), Grouping("grp"), Builder("dto"),;
+    Typedef("type"), Identity("ident"), Key("key"), Data("data"), Notification("data"), Operation("data"),
+    Grouping("grp"), Builder("dto");
 
     private final String packagePrefix;
 
-    private BindingNamespaceType(String packagePrefix) {
+    BindingNamespaceType(String packagePrefix) {
         this.packagePrefix = Preconditions.checkNotNull(packagePrefix);
     }
 
     public String getPackagePrefix() {
         return packagePrefix;
     }
+
+    public static Boolean isData(final BindingNamespaceType type) {
+        return isTreeData(type) || isNotificationData(type) || isOperationData(type);
+    }
+
+    public static Boolean isTreeData(final BindingNamespaceType type) {
+        return Data.equals(type);
+    }
+
+    public static Boolean isNotificationData(final BindingNamespaceType type) {
+        return Notification.equals(type);
+    }
+
+    public static Boolean isOperationData(final BindingNamespaceType type) {
+        return Operation.equals(type);
+    }
+
+    public static Boolean isGrouping(final BindingNamespaceType type) {
+        return Grouping.equals(type);
+    }
 }
old mode 100644 (file)
new mode 100755 (executable)
index e7afe30..db0543d
@@ -1,10 +1,12 @@
 /*
- * Copyright (c) 2017 Cisco Systems, Inc. and others.  All rights reserved.
+ * Copyright (c) 2018 ZTE, Inc. and others.  All rights reserved.
  *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
+
+
 package org.opendaylight.mdsal.gen.javav2.urn.opendaylight.params.xml.ns.yang.mdsal.test.binding.rev140701.type;
 
 /**
@@ -13,7 +15,7 @@ package org.opendaylight.mdsal.gen.javav2.urn.opendaylight.params.xml.ns.yang.md
  * The reason behind putting it under src/main/java is:
  * This class is generated in form of a stub and needs to be finished by the user. This class is generated only once to prevent
  * loss of user code.
- * */
+ */
 public class Int32StringUnionBuilder {
 
     public static Int32StringUnion getDefaultInstance (java.lang.String defaultValue) {