Extend BindingNamespaceType
[mdsal.git] / binding2 / mdsal-binding2-generator-api / src / main / java / org / opendaylight / mdsal / binding / javav2 / model / api / type / builder / GeneratedTypeBuilderBase.java
index 73e87d5ff075dcac9529c021690a64f260a84841..9060ec1e6664dc01281d123ae9b62b3d5f5d546a 100644 (file)
@@ -10,9 +10,14 @@ package org.opendaylight.mdsal.binding.javav2.model.api.type.builder;
 
 import com.google.common.annotations.Beta;
 import java.util.List;
+import java.util.Optional;
+import org.eclipse.jdt.annotation.NonNull;
 import org.opendaylight.mdsal.binding.javav2.generator.context.ModuleContext;
 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
@@ -62,7 +67,7 @@ public interface GeneratedTypeBuilderBase<T extends GeneratedTypeBuilderBase<T>>
      * @param comment
      *            Comment String.
      */
-    T addComment(String comment);
+    T addComment(TypeComment comment);
 
     /**
      * The method creates new AnnotationTypeBuilder containing specified package
@@ -134,13 +139,29 @@ public interface GeneratedTypeBuilderBase<T extends GeneratedTypeBuilderBase<T>>
     EnumBuilder addEnumeration(String name, ModuleContext context);
 
     /**
-     * Sets parent type for data schema node node builder
+     * Gets parent type for data schema node builder, the parent
+     * MUST be a data tree node.
      *
-     * @param type generated parent type
-     * @return generated type
+     * @return parent generated type of tree node
+     */
+    Type getParentTypeForBuilder();
+
+    /**
+     * Sets parent type for data schema node builder, the parent
+     * MUST be a data tree node.
+     *
+     * @param type parent generated type of tree node
+     * @return parent generated type
      */
     Type setParentTypeForBuilder(Type type);
 
+    /**
+     * Get the BindingNamespaceType.
+     *
+     * @return BindingNamespaceType which type belongs to.
+     */
+    BindingNamespaceType getBindingNamespaceType();
+
     List<MethodSignatureBuilder> getMethodDefinitions();
 
     /**
@@ -170,6 +191,13 @@ public interface GeneratedTypeBuilderBase<T extends GeneratedTypeBuilderBase<T>>
 
     List<GeneratedPropertyBuilder> getProperties();
 
+    /**
+     * Returns the YANG definition of this type, if available.
+     *
+     * @return YANG source definition, or empty when unavailable.
+     */
+    Optional<YangSourceDefinition> getYangSourceDefinition();
+
     /**
      * Add new Generated Property definition for Generated Transfer Object
      * Builder and returns Generated Property Builder for specifying Property. <br>
@@ -230,4 +258,17 @@ public interface GeneratedTypeBuilderBase<T extends GeneratedTypeBuilderBase<T>>
      */
     void setReference(String reference);
 
+    /**
+     * Set the YANG source definition.
+     *
+     * @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);
 }