Re-organize YANG snippet generation and comment confusion
[mdsal.git] / binding / mdsal-binding-generator-util / src / main / java / org / opendaylight / mdsal / binding / model / util / generated / type / builder / AbstractGeneratedType.java
index 1d31ea274b932cf650d08c6479e80379feeba0df..e2ce4f36ac3cea5089ed2586efca3e753066ea23 100644 (file)
@@ -10,6 +10,7 @@ package org.opendaylight.mdsal.binding.model.util.generated.type.builder;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
+import java.util.Optional;
 import org.opendaylight.mdsal.binding.model.api.AnnotationType;
 import org.opendaylight.mdsal.binding.model.api.Constant;
 import org.opendaylight.mdsal.binding.model.api.Enumeration;
@@ -17,6 +18,8 @@ import org.opendaylight.mdsal.binding.model.api.GeneratedProperty;
 import org.opendaylight.mdsal.binding.model.api.GeneratedType;
 import org.opendaylight.mdsal.binding.model.api.MethodSignature;
 import org.opendaylight.mdsal.binding.model.api.Type;
+import org.opendaylight.mdsal.binding.model.api.TypeComment;
+import org.opendaylight.mdsal.binding.model.api.YangSourceDefinition;
 import org.opendaylight.mdsal.binding.model.api.type.builder.AnnotationTypeBuilder;
 import org.opendaylight.mdsal.binding.model.api.type.builder.EnumBuilder;
 import org.opendaylight.mdsal.binding.model.api.type.builder.GeneratedPropertyBuilder;
@@ -28,7 +31,7 @@ import org.opendaylight.mdsal.binding.model.util.AbstractBaseType;
 abstract class AbstractGeneratedType extends AbstractBaseType implements GeneratedType {
 
     private final Type parent;
-    private final String comment;
+    private final TypeComment comment;
     private final List<AnnotationType> annotations;
     private final List<Type> implementsTypes;
     private final List<Enumeration> enumerations;
@@ -37,6 +40,7 @@ abstract class AbstractGeneratedType extends AbstractBaseType implements Generat
     private final List<GeneratedType> enclosedTypes;
     private final List<GeneratedProperty> properties;
     private final boolean isAbstract;
+    private final YangSourceDefinition definition;
 
     public AbstractGeneratedType(final AbstractGeneratedTypeBuilder<?> builder) {
         super(builder.getPackageName(), builder.getName());
@@ -51,10 +55,11 @@ abstract class AbstractGeneratedType extends AbstractBaseType implements Generat
                 builder.getEnclosedTransferObjects());
         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 String comment,
-            final List<AnnotationTypeBuilder> annotationBuilders, final boolean isAbstract,
+    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,
@@ -70,6 +75,7 @@ abstract class AbstractGeneratedType extends AbstractBaseType implements Generat
         this.enclosedTypes = toUnmodifiableEnclosedTypes(enclosedGenTypeBuilders, enclosedGenTOBuilders);
         this.properties = toUnmodifiableProperties(propertyBuilders);
         this.isAbstract = isAbstract;
+        this.definition = null;
     }
 
     protected static final <T> List<T> makeUnmodifiable(final List<T> list) {
@@ -139,7 +145,7 @@ abstract class AbstractGeneratedType extends AbstractBaseType implements Generat
     }
 
     @Override
-    public final String getComment() {
+    public final TypeComment getComment() {
         return this.comment;
     }
 
@@ -183,6 +189,11 @@ abstract class AbstractGeneratedType extends AbstractBaseType implements Generat
         return this.properties;
     }
 
+    @Override
+    public final Optional<YangSourceDefinition> getYangSourceDefinition() {
+        return Optional.ofNullable(definition);
+    }
+
     @Override
     public String toString() {
         final StringBuilder builder = new StringBuilder();