Extended binding-model-api to support of Enclosed Generated Types and TOs.
[controller.git] / opendaylight / sal / yang-prototype / code-generator / binding-model-api / src / main / java / org / opendaylight / controller / sal / binding / model / api / MethodSignature.java
index dda1f01291c17ab5bb5e4572f09c25f6ffaa107c..88542e86f2c9f714f8f02a8f97bfe1366edc9338 100644 (file)
@@ -9,25 +9,62 @@ package org.opendaylight.controller.sal.binding.model.api;
 
 import java.util.List;
 
 
 import java.util.List;
 
-public interface MethodSignature {
-    
-    public List<AnnotationType> getAnnotations();
-    
-    public String getName();
-
-    public String getComment();
-
-    public Type getDefiningType();
+/**
+ * The Method Signature interface contains simplified meta model for java
+ * method definition. Each method MUST be defined by name, return type,
+ * parameters and access modifier.
+ * <br>
+ * Additionally method MAY contain associated annotations and comment. By
+ * contract if method does not contain any comments or annotation definitions
+ * the {@link #getComment()} SHOULD rather return empty string and {@link
+ * #getAnnotations()} SHOULD rather return empty list than <code>null</code>
+ * values.
+ * <br>
+ * The defining Type contains the reference to Generated Type that declares
+ * Method Signature.
+ */
+public interface MethodSignature extends TypeMember {
 
 
-    public Type getReturnType();
+    /**
+     * Returns <code>true</code> if the method signature is defined as abstract.
+     * <br>
+     * By default in java all method declarations in interface are defined as abstract,
+     * but the user don't need necessary to declare abstract keyword in front of each method.
+     * <br>
+     * The abstract methods are allowed in Class definitions but only when the class is declared as abstract.
+     *
+     * @return <code>true</code> if the method signature is defined as abstract.
+     */
+    public boolean isAbstract();
 
 
+    /**
+     * Returns the List of parameters that method declare. If the method does
+     * not contain any parameters, the method will return empty List.
+     *
+     * @return the List of parameters that method declare.
+     */
     public List<Parameter> getParameters();
 
     public List<Parameter> getParameters();
 
-    public AccessModifier getAccessModifier();
-
+    /**
+     * The Parameter interface is designed to hold the information of method
+     * Parameter(s). The parameter is defined by his Name which MUST be
+     * unique as java does not allow multiple parameters with same names for
+     * one method and Type that is associated with parameter.
+     */
     interface Parameter {
     interface Parameter {
+
+        /**
+         * Returns the parameter name.
+         *
+         * @return the parameter name.
+         */
         public String getName();
 
         public String getName();
 
+        /**
+         * Returns Type that is bounded to parameter name.
+         *
+         * @return Type that is bounded to parameter name.
+         */
         public Type getType();
     }
 }
         public Type getType();
     }
 }