X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=binding%2Fmdsal-binding-java-api-generator%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fyangtools%2Fsal%2Fjava%2Fapi%2Fgenerator%2FBaseTemplate.xtend;h=c729af79e0fa47bf1f3a1d0b476275e2f9af5b99;hb=3abb1680f36ece1f05e6bca3f326a9430ae1405b;hp=d3c2908c81224aaf072c16122e4965b93dd8d1d6;hpb=46b5e37bd0ad6a2caad7a33a07c4feaddf132b54;p=mdsal.git
diff --git a/binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/yangtools/sal/java/api/generator/BaseTemplate.xtend b/binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/yangtools/sal/java/api/generator/BaseTemplate.xtend
index d3c2908c81..c729af79e0 100644
--- a/binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/yangtools/sal/java/api/generator/BaseTemplate.xtend
+++ b/binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/yangtools/sal/java/api/generator/BaseTemplate.xtend
@@ -18,13 +18,14 @@ import java.util.StringTokenizer
import java.util.regex.Pattern
import org.opendaylight.yangtools.binding.generator.util.Types
import org.opendaylight.yangtools.sal.binding.model.api.ConcreteType
+import org.opendaylight.yangtools.sal.binding.model.api.Constant
import org.opendaylight.yangtools.sal.binding.model.api.GeneratedProperty
import org.opendaylight.yangtools.sal.binding.model.api.GeneratedTransferObject
import org.opendaylight.yangtools.sal.binding.model.api.GeneratedType
import org.opendaylight.yangtools.sal.binding.model.api.MethodSignature
import org.opendaylight.yangtools.sal.binding.model.api.Restrictions
import org.opendaylight.yangtools.sal.binding.model.api.Type
-import org.opendaylight.yangtools.sal.binding.model.api.Constant
+import org.opendaylight.yangtools.sal.binding.model.api.TypeMember
import org.opendaylight.yangtools.yang.common.QName
abstract class BaseTemplate {
@@ -96,6 +97,10 @@ abstract class BaseTemplate {
return getter.name.substring(prefix).toFirstLower;
}
+ final protected def isAccessor(MethodSignature maybeGetter) {
+ return maybeGetter.name.startsWith("is") || maybeGetter.name.startsWith("get");
+ }
+
/**
* Template method which generates the getter method for field
*
@@ -103,7 +108,7 @@ abstract class BaseTemplate {
* generated property with data about field which is generated as the getter method
* @return string with the getter method source code in JAVA format
*/
- final protected def getterMethod(GeneratedProperty field) {
+ protected def getterMethod(GeneratedProperty field) {
'''
public «field.returnType.importedName» «field.getterMethodName»() {
«IF field.returnType.importedName.contains("[]")»
@@ -213,20 +218,15 @@ abstract class BaseTemplate {
}
private static final CharMatcher AMP_MATCHER = CharMatcher.is('&');
- private static final CharMatcher GT_MATCHER = CharMatcher.is('>');
- private static final CharMatcher LT_MATCHER = CharMatcher.is('<');
def encodeJavadocSymbols(String description) {
if (description.nullOrEmpty) {
return description;
}
- var ret = description.replace("*/", "*/")
-
- // FIXME: Use Guava's HtmlEscapers once we have it available
+ var ret = description.replace("*/", "*/");
ret = AMP_MATCHER.replaceFrom(ret, "&");
- ret = GT_MATCHER.replaceFrom(ret, ">");
- ret = LT_MATCHER.replaceFrom(ret, "<");
+
return ret;
}
@@ -247,6 +247,25 @@ abstract class BaseTemplate {
'''.toString
}
+ def protected String formatDataForJavaDoc(TypeMember type, String additionalComment) {
+ val StringBuilder typeDescriptionBuilder = new StringBuilder();
+ if (!type.comment.nullOrEmpty) {
+ typeDescriptionBuilder.append(formatToParagraph(type.comment))
+ typeDescriptionBuilder.append(NEW_LINE)
+ typeDescriptionBuilder.append(NEW_LINE)
+ typeDescriptionBuilder.append(NEW_LINE)
+ }
+ typeDescriptionBuilder.append(additionalComment)
+ var typeDescription = wrapToDocumentation(typeDescriptionBuilder.toString)
+ return '''
+ «typeDescription»
+ '''.toString
+ }
+
+ def asCode(String text) {
+ return "" + text + "
"
+ }
+
def asLink(String text) {
val StringBuilder sb = new StringBuilder()
var tempText = text
@@ -279,17 +298,17 @@ abstract class BaseTemplate {
var StringBuilder lineBuilder = new StringBuilder();
var boolean isFirstElementOnNewLineEmptyChar = false;
- formattedText = formattedText.encodeJavadocSymbols
+ formattedText = encodeJavadocSymbols(formattedText)
formattedText = NL_MATCHER.removeFrom(formattedText)
formattedText = TAB_MATCHER.removeFrom(formattedText)
formattedText = SPACES_PATTERN.matcher(formattedText).replaceAll(" ")
val StringTokenizer tokenizer = new StringTokenizer(formattedText, " ", true);
- while(tokenizer.hasMoreElements) {
+ while (tokenizer.hasMoreElements) {
val nextElement = tokenizer.nextElement.toString
- if(lineBuilder.length + nextElement.length > 80) {
+ if (lineBuilder.length != 0 && lineBuilder.length + nextElement.length > 80) {
if (lineBuilder.charAt(lineBuilder.length - 1) == ' ') {
lineBuilder.setLength(0)
lineBuilder.append(lineBuilder.substring(0, lineBuilder.length - 1))
@@ -308,7 +327,7 @@ abstract class BaseTemplate {
}
}
- if(isFirstElementOnNewLineEmptyChar) {
+ if (isFirstElementOnNewLineEmptyChar) {
isFirstElementOnNewLineEmptyChar = !isFirstElementOnNewLineEmptyChar
}
@@ -391,8 +410,8 @@ abstract class BaseTemplate {
def protected emitConstant(Constant c) '''
«IF c.value instanceof QName»
«val qname = c.value as QName»
- public static final «c.type.importedName» «c.name» = «QName.name».cachedReference(
- «QName.name».create("«qname.namespace.toString»", "«qname.formattedRevision»", "«qname.localName»"));
+ public static final «c.type.importedName» «c.name» = «QName.name».create("«qname.namespace.toString»",
+ "«qname.formattedRevision»", "«qname.localName»").intern();
«ELSE»
public static final «c.type.importedName» «c.name» = «c.value»;
«ENDIF»