Extend BindingNamespaceType
[mdsal.git] / binding2 / mdsal-binding2-generator-util / src / main / java / org / opendaylight / mdsal / binding / javav2 / generator / util / generated / type / builder / AbstractGeneratedTypeBuilder.java
old mode 100644 (file)
new mode 100755 (executable)
index c51a4bc..569addb
@@ -13,10 +13,14 @@ import com.google.common.base.Preconditions;
 import com.google.common.collect.ImmutableList;
 import java.util.List;
 import java.util.Objects;
+import java.util.Optional;
+import org.opendaylight.mdsal.binding.javav2.generator.context.ModuleContext;
 import org.opendaylight.mdsal.binding.javav2.generator.util.AbstractBaseType;
 import org.opendaylight.mdsal.binding.javav2.model.api.AccessModifier;
 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.model.api.type.builder.AnnotationTypeBuilder;
 import org.opendaylight.mdsal.binding.javav2.model.api.type.builder.EnumBuilder;
 import org.opendaylight.mdsal.binding.javav2.model.api.type.builder.GeneratedPropertyBuilder;
@@ -24,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
@@ -38,26 +43,28 @@ abstract class AbstractGeneratedTypeBuilder<T extends GeneratedTypeBuilderBase<T
     private final List<GeneratedTypeBuilder> enclosedTypes = ImmutableList.of();
     private List<GeneratedTOBuilder> enclosedTransferObjects = ImmutableList.of();
     private List<GeneratedPropertyBuilder> properties = ImmutableList.of();
-    private String comment = "";
+    private TypeComment comment;
     private boolean isAbstract;
     private Type parentTypeForBuilder;
+    private YangSourceDefinition yangSourceDefinition;
+    private BindingNamespaceType namespaceType;
 
-    protected AbstractGeneratedTypeBuilder(final String packageName, final String name) {
-        super(packageName, name);
+    protected AbstractGeneratedTypeBuilder(final String packageName, final String name, ModuleContext context) {
+        super(packageName, name, context);
     }
 
-    protected AbstractGeneratedTypeBuilder(final String packageName, final String name, final boolean isNormalized) {
-        super(packageName, name, true);
+    protected AbstractGeneratedTypeBuilder(final String packageName, final String name, final boolean isNormalized,
+            ModuleContext context) {
+        super(packageName, name, true, null);
     }
 
-    protected AbstractGeneratedTypeBuilder(final String packageName, final String name,
-                                           final boolean isPkNameNormalized,
-                                           final boolean isTypeNormalized) {
-        super(packageName, name, isPkNameNormalized, isTypeNormalized);
+    protected AbstractGeneratedTypeBuilder(final String packageName, final String name, final boolean isPkNameNormalized,
+            final boolean isTypeNormalized, ModuleContext context) {
+        super(packageName, name, isPkNameNormalized, isTypeNormalized, context);
     }
 
-    protected String getComment() {
-        return comment;
+    protected TypeComment getComment() {
+        return this.comment;
     }
 
     protected List<AnnotationTypeBuilder> getAnnotations() {
@@ -100,7 +107,7 @@ abstract class AbstractGeneratedTypeBuilder<T extends GeneratedTypeBuilderBase<T
     @Override
     public GeneratedTOBuilder addEnclosingTransferObject(final String name) {
         Preconditions.checkArgument(name != null, "Name for Enclosing Generated Transfer Object cannot be null!");
-        GeneratedTOBuilder builder = new GeneratedTOBuilderImpl(getFullyQualifiedName(), name);
+        GeneratedTOBuilder builder = new GeneratedTOBuilderImpl(getFullyQualifiedName(), name, true);
 
         Preconditions.checkArgument(!enclosedTransferObjects.contains(builder), "This generated type already contains equal enclosing transfer object.");
         enclosedTransferObjects = LazyCollections.lazyAdd(enclosedTransferObjects, builder);
@@ -116,8 +123,8 @@ abstract class AbstractGeneratedTypeBuilder<T extends GeneratedTypeBuilderBase<T
     }
 
     @Override
-    public T addComment(final String comment) {
-        this.comment = comment;
+    public T addComment(final TypeComment comment) {
+        this.comment = Preconditions.checkNotNull(comment);
         return thisInstance();
     }
 
@@ -158,11 +165,23 @@ abstract class AbstractGeneratedTypeBuilder<T extends GeneratedTypeBuilderBase<T
         return constant;
     }
 
+
+
     @Override
     public Type setParentTypeForBuilder(Type type) {
         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) {
@@ -174,9 +193,10 @@ abstract class AbstractGeneratedTypeBuilder<T extends GeneratedTypeBuilderBase<T
     }
 
     @Override
-    public EnumBuilder addEnumeration(final String name) {
+    public EnumBuilder addEnumeration(final String name, ModuleContext context) {
         Preconditions.checkArgument(name != null, "Name of enumeration cannot be null!");
-        final EnumBuilder builder = new EnumerationBuilderImpl(getFullyQualifiedName(), name, true, false);
+        final EnumBuilder builder = new EnumerationBuilderImpl(getFullyQualifiedName(), name, true, false,
+                context);
 
         Preconditions.checkArgument(!enumDefinitions.contains(builder), "This generated type already contains equal enumeration.");
         enumDefinitions = LazyCollections.lazyAdd(enumDefinitions, builder);
@@ -226,6 +246,17 @@ abstract class AbstractGeneratedTypeBuilder<T extends GeneratedTypeBuilderBase<T
         return false;
     }
 
+    @Override
+    public Optional<YangSourceDefinition> getYangSourceDefinition() {
+        return Optional.ofNullable(yangSourceDefinition);
+    }
+
+
+    @Override
+    public void setYangSourceDefinition(final YangSourceDefinition definition) {
+        yangSourceDefinition = Preconditions.checkNotNull(definition);
+    }
+
     @Override
     public int hashCode() {
         return Objects.hash(getName(), getPackageName());
@@ -255,6 +286,7 @@ abstract class AbstractGeneratedTypeBuilder<T extends GeneratedTypeBuilderBase<T
         return null;
     }
 
+    @Override
     public Type getParentTypeForBuilder() {
         return parentTypeForBuilder;
     }