From 76c57ce16f7b1b90325214e05f916bc486ad792d Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Wed, 27 May 2015 21:24:59 +0200 Subject: [PATCH] BUG-1485: Move restriction generation It is only used in the class template, so move it and make it private to increase clarity. Change-Id: I751c4a5a0af06dd89a79ce43546ec9c12490f166 Signed-off-by: Robert Varga --- .../sal/java/api/generator/BaseTemplate.xtend | 44 ------------------ .../java/api/generator/ClassTemplate.xtend | 46 +++++++++++++++++++ 2 files changed, 46 insertions(+), 44 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 d98b52fc47..c93f428131 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 @@ -328,50 +328,6 @@ abstract class BaseTemplate { return sb.toString } - def generateRestrictions(Type type, String paramName, Type returnType) ''' - «val restrictions = type.getRestrictions» - «IF restrictions !== null» - «val boolean isNestedType = !(returnType instanceof ConcreteType)» - «IF !restrictions.lengthConstraints.empty» - «generateLengthRestriction(returnType, restrictions, paramName, isNestedType)» - «ENDIF» - «IF !restrictions.rangeConstraints.empty» - «generateRangeRestriction(returnType, paramName, isNestedType)» - «ENDIF» - «ENDIF» - ''' - - def private generateLengthRestriction(Type returnType, Restrictions restrictions, String paramName, boolean isNestedType) ''' - «val clazz = restrictions.lengthConstraints.iterator.next.min.class» - if («paramName» != null) { - «printLengthConstraint(returnType, clazz, paramName, isNestedType, returnType.name.contains("["))» - boolean isValidLength = false; - for («Range.importedName»<«clazz.importedNumber»> r : «IF isNestedType»«returnType.importedName».«ENDIF»length()) { - if (r.contains(_constraint)) { - isValidLength = true; - } - } - if (!isValidLength) { - throw new IllegalArgumentException(String.format("Invalid length: %s, expected: %s.", «paramName», «IF isNestedType»«returnType.importedName».«ENDIF»length())); - } - } - ''' - - def private generateRangeRestriction(Type returnType, String paramName, boolean isNestedType) ''' - if («paramName» != null) { - «printRangeConstraint(returnType, paramName, isNestedType)» - boolean isValidRange = false; - for («Range.importedName»<«returnType.importedNumber»> r : «IF isNestedType»«returnType.importedName».«ENDIF»range()) { - if (r.contains(_constraint)) { - isValidRange = true; - } - } - if (!isValidRange) { - throw new IllegalArgumentException(String.format("Invalid range: %s, expected: %s.", «paramName», «IF isNestedType»«returnType.importedName».«ENDIF»range())); - } - } - ''' - /** * Print length constraint. * This should always be a BigInteger (only string and binary can have length restriction) diff --git a/code-generator/binding-java-api-generator/src/main/java/org/opendaylight/yangtools/sal/java/api/generator/ClassTemplate.xtend b/code-generator/binding-java-api-generator/src/main/java/org/opendaylight/yangtools/sal/java/api/generator/ClassTemplate.xtend index 6da9c0a7b1..e32a990559 100644 --- a/code-generator/binding-java-api-generator/src/main/java/org/opendaylight/yangtools/sal/java/api/generator/ClassTemplate.xtend +++ b/code-generator/binding-java-api-generator/src/main/java/org/opendaylight/yangtools/sal/java/api/generator/ClassTemplate.xtend @@ -28,6 +28,8 @@ import org.opendaylight.yangtools.sal.binding.model.api.GeneratedType import org.opendaylight.yangtools.sal.binding.model.api.Restrictions import org.opendaylight.yangtools.yang.model.api.type.BitsTypeDefinition import com.google.common.base.Preconditions +import org.opendaylight.yangtools.sal.binding.model.api.Type +import org.opendaylight.yangtools.sal.binding.model.api.ConcreteType /** * Template for generating JAVA class. @@ -339,6 +341,50 @@ class ClassTemplate extends BaseTemplate { } ''' + def private generateRestrictions(Type type, String paramName, Type returnType) ''' + «val restrictions = type.getRestrictions» + «IF restrictions !== null» + «val boolean isNestedType = !(returnType instanceof ConcreteType)» + «IF !restrictions.lengthConstraints.empty» + «generateLengthRestriction(returnType, restrictions, paramName, isNestedType)» + «ENDIF» + «IF !restrictions.rangeConstraints.empty» + «generateRangeRestriction(returnType, paramName, isNestedType)» + «ENDIF» + «ENDIF» + ''' + + def private generateLengthRestriction(Type returnType, Restrictions restrictions, String paramName, boolean isNestedType) ''' + «val clazz = restrictions.lengthConstraints.iterator.next.min.class» + if («paramName» != null) { + «printLengthConstraint(returnType, clazz, paramName, isNestedType, returnType.name.contains("["))» + boolean isValidLength = false; + for («Range.importedName»<«clazz.importedNumber»> r : «IF isNestedType»«returnType.importedName».«ENDIF»length()) { + if (r.contains(_constraint)) { + isValidLength = true; + } + } + if (!isValidLength) { + throw new IllegalArgumentException(String.format("Invalid length: %s, expected: %s.", «paramName», «IF isNestedType»«returnType.importedName».«ENDIF»length())); + } + } + ''' + + def private generateRangeRestriction(Type returnType, String paramName, boolean isNestedType) ''' + if («paramName» != null) { + «printRangeConstraint(returnType, paramName, isNestedType)» + boolean isValidRange = false; + for («Range.importedName»<«returnType.importedNumber»> r : «IF isNestedType»«returnType.importedName».«ENDIF»range()) { + if (r.contains(_constraint)) { + isValidRange = true; + } + } + if (!isValidRange) { + throw new IllegalArgumentException(String.format("Invalid range: %s, expected: %s.", «paramName», «IF isNestedType»«returnType.importedName».«ENDIF»range())); + } + } + ''' + def protected copyConstructor() ''' /** * Creates a copy from Source Object. -- 2.36.6