From c2bf3960924fd870b8d3183f396c5e43b84e0aa3 Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Thu, 28 May 2015 02:26:42 +0200 Subject: [PATCH] BUG-1485: move generateLengthMethod to BuilderTemplate While it looks this method is shared, it is not, as ClassTemplate defines its own. Move it to BuilderTemplate and make it private, reducing confusion. Change-Id: I998f200a963dea39b1e2fedaf7a9fd1e394db58d Signed-off-by: Robert Varga --- .../sal/java/api/generator/BaseTemplate.xtend | 31 ------------------- .../java/api/generator/BuilderTemplate.xtend | 28 +++++++++++++++++ 2 files changed, 28 insertions(+), 31 deletions(-) diff --git a/code-generator/binding-java-api-generator/src/main/java/org/opendaylight/yangtools/sal/java/api/generator/BaseTemplate.xtend b/code-generator/binding-java-api-generator/src/main/java/org/opendaylight/yangtools/sal/java/api/generator/BaseTemplate.xtend index 2f1388a593..9fed74f915 100644 --- a/code-generator/binding-java-api-generator/src/main/java/org/opendaylight/yangtools/sal/java/api/generator/BaseTemplate.xtend +++ b/code-generator/binding-java-api-generator/src/main/java/org/opendaylight/yangtools/sal/java/api/generator/BaseTemplate.xtend @@ -9,8 +9,6 @@ package org.opendaylight.yangtools.sal.java.api.generator import com.google.common.base.CharMatcher import com.google.common.base.Splitter -import com.google.common.collect.ImmutableList -import com.google.common.collect.Range import java.math.BigDecimal import java.math.BigInteger import java.util.Arrays @@ -422,35 +420,6 @@ abstract class BaseTemplate { ENDIF »''' - def protected generateLengthMethod(String methodName, Type type, String className, String varName) ''' - «val Restrictions restrictions = type.restrictions» - «IF restrictions != null && !(restrictions.lengthConstraints.empty)» - «val numberClass = restrictions.lengthConstraints.iterator.next.min.class» - public static «List.importedName»<«Range.importedName»<«numberClass.importedNumber»>> «methodName»() { - «IF numberClass.equals(typeof(BigDecimal))» - «lengthBody(restrictions, numberClass, className, varName)» - «ELSE» - «lengthBody(restrictions, typeof(BigInteger), className, varName)» - «ENDIF» - } - «ENDIF» - ''' - - def private lengthBody(Restrictions restrictions, Class numberClass, String className, String varName) ''' - if («varName» == null) { - synchronized («className».class) { - if («varName» == null) { - «ImmutableList.importedName».Builder<«Range.importedName»<«numberClass.importedName»>> builder = «ImmutableList.importedName».builder(); - «FOR r : restrictions.lengthConstraints» - builder.add(«Range.importedName».closed(«numericValue(numberClass, r.min)», «numericValue(numberClass, r.max)»)); - «ENDFOR» - «varName» = builder.build(); - } - } - } - return «varName»; - ''' - def protected String importedNumber(Class clazz) { if (clazz.equals(typeof(BigDecimal))) { return BigDecimal.importedName diff --git a/code-generator/binding-java-api-generator/src/main/java/org/opendaylight/yangtools/sal/java/api/generator/BuilderTemplate.xtend b/code-generator/binding-java-api-generator/src/main/java/org/opendaylight/yangtools/sal/java/api/generator/BuilderTemplate.xtend index 9806ff5d2c..5d3ed13994 100644 --- a/code-generator/binding-java-api-generator/src/main/java/org/opendaylight/yangtools/sal/java/api/generator/BuilderTemplate.xtend +++ b/code-generator/binding-java-api-generator/src/main/java/org/opendaylight/yangtools/sal/java/api/generator/BuilderTemplate.xtend @@ -532,6 +532,34 @@ class BuilderTemplate extends BaseTemplate { } ''' + def private generateLengthMethod(String methodName, Type type, String className, String varName) ''' + «val Restrictions restrictions = type.restrictions» + «IF restrictions != null && !(restrictions.lengthConstraints.empty)» + «val numberClass = restrictions.lengthConstraints.iterator.next.min.class» + public static «List.importedName»<«Range.importedName»<«numberClass.importedNumber»>> «methodName»() { + «IF numberClass.equals(typeof(BigDecimal))» + «lengthBody(restrictions, numberClass, className, varName)» + «ELSE» + «lengthBody(restrictions, typeof(BigInteger), className, varName)» + «ENDIF» + } + «ENDIF» + ''' + + def private lengthBody(Restrictions restrictions, Class numberClass, String className, String varName) ''' + if («varName» == null) { + synchronized («className».class) { + if («varName» == null) { + «ImmutableList.importedName».Builder<«Range.importedName»<«numberClass.importedName»>> builder = «ImmutableList.importedName».builder(); + «FOR r : restrictions.lengthConstraints» + builder.add(«Range.importedName».closed(«numericValue(numberClass, r.min)», «numericValue(numberClass, r.max)»)); + «ENDFOR» + «varName» = builder.build(); + } + } + } + return «varName»; + ''' def private generateRangeMethod(String methodName, Restrictions restrictions, Type returnType, String className, String varName) ''' «IF restrictions != null && !(restrictions.rangeConstraints.empty)» -- 2.36.6