1 package org.opendaylight.yangtools.sal.java.api.generator
\r
3 import java.util.List
\r
4 import org.opendaylight.yangtools.binding.generator.util.TypeConstants
\r
5 import org.opendaylight.yangtools.sal.binding.model.api.Constant
\r
6 import org.opendaylight.yangtools.sal.binding.model.api.Enumeration
\r
7 import org.opendaylight.yangtools.sal.binding.model.api.GeneratedTransferObject
\r
8 import org.opendaylight.yangtools.sal.binding.model.api.GeneratedType
\r
9 import org.opendaylight.yangtools.sal.binding.model.api.MethodSignature
\r
13 * Template for generating JAVA interfaces.
\r
15 class InterfaceTemplate extends BaseTemplate {
\r
18 * List of constant instances which are generated as JAVA public static final attributes.
\r
20 val List<Constant> consts
\r
23 * List of method signatures which are generated as method declarations.
\r
25 val List<MethodSignature> methods
\r
28 * List of enumeration which are generated as JAVA enum type.
\r
30 val List<Enumeration> enums
\r
33 * List of generated types which are enclosed inside <code>genType</code>
\r
35 val List<GeneratedType> enclosedGeneratedTypes
\r
38 * Creates the instance of this class which is used for generating the interface file source
\r
39 * code from <code>genType</code>.
\r
41 * @throws IllegalArgumentException if <code>genType</code> equals <code>null</code>
\r
43 new(GeneratedType genType) {
\r
45 if (genType == null) {
\r
46 throw new IllegalArgumentException("Generated type reference cannot be NULL!")
\r
49 consts = genType.constantDefinitions
\r
50 methods = genType.methodDefinitions
\r
51 enums = genType.enumerations
\r
52 enclosedGeneratedTypes = genType.enclosedTypes
\r
58 * Template method which generate the whole body of the interface.
\r
60 * @return string with code for interface body in JAVA format
\r
63 «type.comment.generateComment»
\r
64 public interface «type.name»
\r
67 «generateInnerClasses»
\r
80 * Template method which generates JAVA comment.
\r
83 * string with the comment for whole JAVA interface
\r
84 * @return string with comment in JAVA format
\r
86 def private generateComment(String comment) '''
\r
87 «IF comment != null && !comment.empty»
\r
95 * Template method which generates the interface name declaration.
\r
97 * @return string with the code for the interface declaration in JAVA format
\r
99 def private superInterfaces()
\r
101 «IF (!type.implements.empty)»
\r
103 «FOR type : type.implements SEPARATOR ","»
\r
105 «type.importedName»
\r
110 * Template method which generates inner classes inside this interface.
\r
112 * @return string with the source code for inner classes in JAVA format
\r
114 def private generateInnerClasses() '''
\r
115 «IF !enclosedGeneratedTypes.empty»
\r
116 «FOR innerClass : enclosedGeneratedTypes SEPARATOR "\n"»
\r
117 «IF (innerClass instanceof GeneratedTransferObject)»
\r
118 «val classTemplate = new ClassTemplate(innerClass as GeneratedTransferObject)»
\r
119 «classTemplate.generateAsInnerClass»
\r
127 * Template method which generates JAVA enum type.
\r
129 * @return string with inner enum source code in JAVA format
\r
131 def private generateEnums() '''
\r
133 «FOR e : enums SEPARATOR "\n"»
\r
134 «val enumTemplate = new EnumTemplate(e)»
\r
135 «enumTemplate.generateAsInnerClass»
\r
141 * Template method wich generates JAVA constants.
\r
143 * @return string with constants in JAVA format
\r
145 def private generateConstants() '''
\r
148 «IF c.name != TypeConstants.PATTERN_CONSTANT_NAME»
\r
149 public static final «c.type.importedName» «c.name» = «c.value»;
\r
156 * Template method which generates the declaration of the methods.
\r
158 * @return string with the declaration of methods source code in JAVA format
\r
160 def private generateMethods() '''
\r
161 «IF !methods.empty»
\r
162 «FOR m : methods SEPARATOR "\n"»
\r
163 «m.comment.generateComment»
\r
164 «m.returnType.importedName» «m.name»(«m.parameters.generateParameters»);
\r
170 * Template method which generates method parameters with their types from <code>parameters</code>.
\r
172 * @param parameters
\r
173 * list of parameter instances which are transformed to the method parameters
\r
174 * @return string with the list of the method parameters with their types in JAVA format
\r
176 def private generateParameters(List<MethodSignature.Parameter> parameters) '''«
\r
177 IF !parameters.empty»«
\r
178 FOR parameter : parameters SEPARATOR ", "»«
\r
179 parameter.type.importedName» «parameter.name»«
\r