Generate @param for RPC invocation methods
[mdsal.git] / binding / mdsal-binding-generator-api / src / main / java / org / opendaylight / mdsal / binding / model / api / type / builder / TypeMemberBuilder.java
1 /*
2  * Copyright (c) 2014 Cisco Systems, Inc. and others.  All rights reserved.
3  *
4  * This program and the accompanying materials are made available under the
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6  * and is available at http://www.eclipse.org/legal/epl-v10.html
7  */
8 package org.opendaylight.mdsal.binding.model.api.type.builder;
9
10 import org.opendaylight.mdsal.binding.model.api.AccessModifier;
11 import org.opendaylight.mdsal.binding.model.api.Type;
12 import org.opendaylight.mdsal.binding.model.api.TypeMemberComment;
13
14 public interface TypeMemberBuilder<T extends TypeMemberBuilder<T>> extends AnnotableTypeBuilder {
15     /**
16      * Returns the name of property.
17      *
18      * @return the name of property.
19      */
20     String getName();
21
22     /**
23      * Adds return Type into Builder definition for Generated Property. The return Type MUST NOT be <code>null</code>,
24      * otherwise the method SHOULD throw {@link IllegalArgumentException}
25      *
26      * @param returnType Return Type of property.
27      */
28     T setReturnType(Type returnType);
29
30     AccessModifier getAccessModifier();
31
32     /**
33      * Sets the access modifier of property.
34      *
35      * @param modifier Access Modifier value.
36      */
37     T setAccessModifier(AccessModifier modifier);
38
39     /**
40      * Adds String definition of comment into Method Signature definition. The comment String MUST NOT contain any
41      * comment specific chars (i.e. "/**" or "//") just plain String text description.
42      *
43      * @param comment Structured comment
44      */
45     T setComment(TypeMemberComment comment);
46
47     /**
48      * Sets the flag final for method signature. If this is set the method will be prohibited from overriding. This
49      * setting is irrelevant for methods designated to be defined in interface definitions because interfaces cannot
50      * have a final method.
51      *
52      * @param isFinal Is Final
53      */
54     T setFinal(boolean isFinal);
55
56     T setStatic(boolean isStatic);
57 }