field
*
@@ -122,22 +75,20 @@ abstract class BaseTemplate extends JavaFileTemplate {
* generated property with data about field which is generated as the getter method
* @return string with the getter method source code in JAVA format
*/
- protected def getterMethod(GeneratedProperty field) {
- '''
- public «field.returnType.importedName» «field.getterMethodName»() {
- «val fieldName = field.fieldName»
- «IF field.returnType.name.endsWith("[]")»
- return «fieldName» == null ? null : «fieldName».clone();
- «ELSE»
- return «fieldName»;
- «ENDIF»
- }
- '''
- }
+ protected def getterMethod(GeneratedProperty field) '''
+ «val methodName = field.getterMethodName»
+ public «field.returnType.importedName» «methodName»() {
+ «val fieldName = field.fieldName»
+ «IF field.returnType.name.endsWith("[]")»
+ return «fieldName» == null ? null : «fieldName».clone();
+ «ELSE»
+ return «fieldName»;
+ «ENDIF»
+ }
+ '''
final protected def getterMethodName(GeneratedProperty field) {
- val prefix = if(field.returnType.equals(Types.BOOLEAN)) "is" else "get"
- return '''«prefix»«field.name.toFirstUpper»'''
+ return '''«BindingMapping.GETTER_PREFIX»«field.name.toFirstUpper»'''
}
/**
@@ -165,6 +116,17 @@ abstract class BaseTemplate extends JavaFileTemplate {
def final protected asArgumentsDeclaration(Iterableparameters
, annotating them
+ * with {@link NonNull}.
+ *
+ * @param parameters group of generated property instances which are transformed to the method parameters
+ * @return string with the list of the method parameters with their types in JAVA format
+ */
+ def final protected asNonNullArgumentsDeclaration(Iterableparameters
.
*
@@ -181,13 +143,17 @@ abstract class BaseTemplate extends JavaFileTemplate {
* @param comment string with the comment for whole JAVA class
* @return string with comment in JAVA format
*/
- def protected CharSequence asJavadoc(String comment) {
+ def final protected asJavadoc(TypeMemberComment comment) {
if (comment === null) {
return ''
}
- return '''
- «wrapToDocumentation(formatToParagraph(comment.trim))»
- '''
+ return wrapToDocumentation('''
+ «comment.contractDescription»
+
+ «comment.referenceDescription.formatReference»
+
+ «comment.typeSignature»
+ ''')
}
def static String wrapToDocumentation(String text) {
@@ -223,14 +189,6 @@ abstract class BaseTemplate extends JavaFileTemplate {
'''.toString
}
- def static encodeJavadocSymbols(String description) {
- if (description.nullOrEmpty) {
- return description;
- }
-
- return TAIL_COMMENT_PATTERN.matcher(AMP_MATCHER.replaceFrom(description, "&")).replaceAll("*/")
- }
-
def protected String formatDataForJavaDoc(GeneratedType type, String additionalComment) {
val comment = type.comment
if (comment === null) {
@@ -252,98 +210,16 @@ abstract class BaseTemplate extends JavaFileTemplate {
'''
}
- def private static void appendSnippet(StringBuilder sb, GeneratedType type) {
- val optDef = type.yangSourceDefinition
- if (optDef.present) {
- val def = optDef.get
- sb.append(NEW_LINE)
-
- if (def instanceof Single) {
- val node = def.node
- sb.append("\n") - .append("This class represents the following YANG schema fragment defined in module ") - .append(def.module.argument).append("\n") - .append("
\n") - appendYangSnippet(sb, def.module, (node as EffectiveStatement, ?>).declared) - sb.append("") - - if (node instanceof SchemaNode) { - sb.append("The schema path to identify an instance is\n") - .append("") - .append(formatSchemaPath(def.module.argument, node.path.pathFromRoot)) - .append("\n") - - if (hasBuilderClass(node)) { - val builderName = type.name + "Builder"; - - sb.append("\n
To create instances of this class use {@link ").append(builderName) - .append("}.\n") - .append("@see ").append(builderName).append('\n') - if (node instanceof ListSchemaNode) { - val keyDef = node.keyDefinition - if (keyDef !== null && !keyDef.empty) { - sb.append("@see ").append(type.name).append("Key") - } - sb.append('\n'); - } - } - } - } else if (def instanceof Multiple) { - sb.append("
\n") - for (SchemaNode node : def.nodes) { - appendYangSnippet(sb, def.module, (node as EffectiveStatement, ?>).declared) - } - sb.append("\n") - } - } - } + def static formatReference(String reference) ''' + «IF reference !== null» +
+
+ «reference.encodeAngleBrackets.formatToParagraph»
+
+
- def private static void appendYangSnippet(StringBuilder sb, ModuleEffectiveStatement module,
- DeclaredStatement> stmt) {
- for (String str : YANG_FORMATTER.toYangTextSnippet(module, stmt)) {
- sb.append(BindingGeneratorUtil.replaceAllIllegalChars(encodeAngleBrackets(encodeJavadocSymbols(str))))
- }
- }
-
- def private static boolean hasBuilderClass(SchemaNode schemaNode) {
- return schemaNode instanceof ContainerSchemaNode || schemaNode instanceof ListSchemaNode
- || schemaNode instanceof RpcDefinition || schemaNode instanceof NotificationDefinition;
- }
-
- def private static String formatSchemaPath(String moduleName, Iterable" + text + "
"
- }
+ «ENDIF»
+ '''
def asLink(String text) {
val StringBuilder sb = new StringBuilder()
@@ -356,33 +232,23 @@ abstract class BaseTemplate extends JavaFileTemplate {
lastChar = text.charAt(text.length - 1)
badEnding = true
}
- sb.append("")
- sb.append(tempText)
- sb.append("")
+ sb.append("").append(tempText).append("")
- if(badEnding)
+ if (badEnding)
sb.append(lastChar)
return sb.toString
}
- protected static def formatToParagraph(String text) {
- if(text === null || text.isEmpty)
- return text
-
- var formattedText = text
+ protected static def formatToParagraph(String inputText) {
val StringBuilder sb = new StringBuilder();
var StringBuilder lineBuilder = new StringBuilder();
var boolean isFirstElementOnNewLineEmptyChar = false;
- formattedText = encodeJavadocSymbols(formattedText)
- formattedText = WS_MATCHER.replaceFrom(formattedText, SPACE)
+ var formattedText = WS_MATCHER.replaceFrom(inputText.encodeJavadocSymbols, SPACE)
formattedText = SPACES_PATTERN.matcher(formattedText).replaceAll(" ")
- val StringTokenizer tokenizer = new StringTokenizer(formattedText, " ", true);
-
+ val StringTokenizer tokenizer = new StringTokenizer(formattedText, " ", true)
while (tokenizer.hasMoreTokens) {
val nextElement = tokenizer.nextToken
@@ -401,7 +267,6 @@ abstract class BaseTemplate extends JavaFileTemplate {
isFirstElementOnNewLineEmptyChar = !isFirstElementOnNewLineEmptyChar;
}
}
-
if (isFirstElementOnNewLineEmptyChar) {
isFirstElementOnNewLineEmptyChar = !isFirstElementOnNewLineEmptyChar
} else {
@@ -430,7 +295,38 @@ abstract class BaseTemplate extends JavaFileTemplate {
def protected emitConstant(Constant c) '''
«IF BindingMapping.QNAME_STATIC_FIELD_NAME.equals(c.name)»
«val entry = c.value as Entry