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»