«IF properties !== null»
«FOR f : properties»
private«IF _final» final«ENDIF» «f.returnType.importedName» «f.fieldName»;
- «val restrictions = f.returnType.restrictions»
- «IF !_final && restrictions != null && !(restrictions.lengthConstraints.empty)»
- «LengthGenerator.generateLengthChecker(f.fieldName.toString, f.returnType, restrictions.lengthConstraints)»
- «ENDIF»
«ENDFOR»
«ENDIF»
'''
*/
def private generateSetters() '''
«FOR field : properties SEPARATOR '\n'»
- «val restrictions = field.returnType.restrictions»
- «IF restrictions != null»
- «IF !restrictions.rangeConstraints.nullOrEmpty»
- «val rangeGenerator = AbstractRangeGenerator.forType(field.returnType)»
- «rangeGenerator.generateRangeChecker(field.name.toFirstUpper, restrictions.rangeConstraints)»
+ «/* FIXME: generate checkers as simple blocks and embed them directly in setters */»
+ «val restrictions = field.returnType.restrictions»
+ «IF !(field.returnType instanceof GeneratedType) && restrictions != null»
+ «IF !restrictions.rangeConstraints.nullOrEmpty»
+ «val rangeGenerator = AbstractRangeGenerator.forType(field.returnType)»
+ «rangeGenerator.generateRangeChecker(field.name.toFirstUpper, restrictions.rangeConstraints)»
- «ENDIF»
+ «ENDIF»
+ «IF !restrictions.lengthConstraints.nullOrEmpty»
+ «LengthGenerator.generateLengthChecker(field.fieldName.toString, field.returnType, restrictions.lengthConstraints)»
+
+ «ENDIF»
«ENDIF»
- public «type.name»«BUILDER» set«field.name.toFirstUpper»(«field.returnType.importedName» value) {
- «IF restrictions != null»
+ public «type.name»«BUILDER» set«field.name.toFirstUpper»(final «field.returnType.importedName» value) {
+ «IF !(field.returnType instanceof GeneratedType) && restrictions != null»
+ «IF restrictions != null && (!restrictions.rangeConstraints.nullOrEmpty || !restrictions.lengthConstraints.nullOrEmpty)»
if (value != null) {
«IF !restrictions.rangeConstraints.nullOrEmpty»
«val rangeGenerator = AbstractRangeGenerator.forType(field.returnType)»
«rangeGenerator.generateRangeCheckerCall(field.name.toFirstUpper, "value.getValue()")»
«ENDIF»
«ENDIF»
- «generateRestrictions(field, "value")»
+ «IF !restrictions.lengthConstraints.nullOrEmpty»
+ «IF field.returnType instanceof ConcreteType»
+ «LengthGenerator.generateLengthCheckerCall(field.fieldName.toString, "value")»
+ «ELSE»
+ «LengthGenerator.generateLengthCheckerCall(field.fieldName.toString, "value.getValue()")»
+ «ENDIF»
+ «ENDIF»
}
«ENDIF»
+ «ENDIF»
this.«field.fieldName» = value;
return this;
}
«ENDIF»
'''
- def private generateRestrictions(GeneratedProperty field, String paramName) '''
- «val Type type = field.returnType»
- «val restrictions = type.getRestrictions»
- «IF restrictions !== null && !restrictions.lengthConstraints.empty»
- «IF type instanceof ConcreteType»
- «LengthGenerator.generateLengthCheckerCall(field.fieldName.toString, paramName)»
- «ELSE»
- «LengthGenerator.generateLengthCheckerCall(field.fieldName.toString, paramName + ".getValue()")»
- «ENDIF»
- «ENDIF»
- '''
-
def private CharSequence generateCopyConstructor(boolean impl) '''
«IF impl»private«ELSE»public«ENDIF» «type.name»«IF impl»«IMPL»«ELSE»«BUILDER»«ENDIF»(«type.name»«IF impl»«BUILDER»«ENDIF» base) {
«val allProps = new ArrayList(properties)»