Merge "OF plugin classes must have a strict dependency on Connection Service"
[controller.git] / opendaylight / sal / yang-prototype / code-generator / binding-model-api / src / main / java / org / opendaylight / controller / sal / binding / model / api / type / builder / TypeMemberBuilder.java
1 package org.opendaylight.controller.sal.binding.model.api.type.builder;
2
3 import org.opendaylight.controller.sal.binding.model.api.AccessModifier;
4 import org.opendaylight.controller.sal.binding.model.api.Type;
5
6 /**
7  *
8  */
9 public interface TypeMemberBuilder {
10
11     /**
12      * The method creates new AnnotationTypeBuilder containing specified
13      * package name an annotation name.
14      * <br>
15      * Neither the package name or annotation name can contain
16      * <code>null</code> references. In case that
17      * any of parameters contains <code>null</code> the method SHOULD thrown
18      * {@link IllegalArgumentException}
19      *
20      * @param packageName Package Name of Annotation Type
21      * @param name Name of Annotation Type
22      * @return <code>new</code> instance of Annotation Type Builder.
23      */
24     public AnnotationTypeBuilder addAnnotation(final String packageName, final String name);
25
26     /**
27      * Returns the name of property.
28      *
29      * @return the name of property.
30      */
31     public String getName();
32
33     /**
34      * Adds return Type into Builder definition for Generated Property.
35      * <br>
36      * The return Type MUST NOT be <code>null</code>,
37      * otherwise the method SHOULD throw {@link IllegalArgumentException}
38      *
39      * @param returnType Return Type of property.
40      */
41     public void setReturnType(final Type returnType);
42
43     /**
44      * Sets the access modifier of property.
45      *
46      * @param modifier Access Modifier value.
47      */
48     public void setAccessModifier(final AccessModifier modifier);
49
50     /**
51      * Adds String definition of comment into Method Signature definition.
52      * <br>
53      * The comment String MUST NOT contain anny comment specific chars (i.e.
54      * "/**" or "//") just plain String text description.
55      *
56      * @param comment Comment String.
57      */
58     public void setComment(final String comment);
59
60     /**
61      * Sets the flag final for method signature. If this is set the method will be prohibited from overriding.
62      * <br>
63      * This setting is irrelevant for methods designated to be defined in interface definitions because interface
64      * can't have final method.
65      *
66      * @param isFinal Is Final
67      */
68     public void setFinal(final boolean isFinal);
69 }