+@generateSetter(field: GeneratedProperty, actualType: Type, isList: Boolean) = {
+ @if(!actualType.isInstanceOf[GeneratedType] && getRestrictions(actualType) != null) {
+ @if(getRestrictions(actualType).getRangeConstraint.isPresent) {
+ @{AbstractRangeGenerator.forType(actualType).generateRangeChecker(toFirstUpper(field.getName),
+ getRestrictions(actualType).getRangeConstraint.get)}
+ }
+ @if(getRestrictions(actualType).getLengthConstraint.isPresent) {
+ @{LengthGenerator.generateLengthChecker(fieldName(field), actualType,
+ getRestrictions(actualType).getLengthConstraint.get)}
+ }
+ }
+
+ @if(isList) {
+ public @{genType.getName}Builder set@{toFirstUpper(field.getName)}(final @{ImportedNamesWithProperties.get(field)} values) {
+ @if(!actualType.isInstanceOf[GeneratedType] && getRestrictions(actualType) != null) {
+ if (values != null) {
+ for (@{actualType.getFullyQualifiedName} value : values) {
+ @checkArgument(field, actualType)
+ }
+ }
+ }
+ this.@{fieldName(field)} = values;
+ return this;
+ }
+ } else {
+ public @{genType.getName}Builder set@{toFirstUpper(field.getName)}(final @{ImportedNamesWithProperties.get(field)} value) {
+ @if(!actualType.isInstanceOf[GeneratedType] && getRestrictions(actualType) != null) {
+ if (value != null) {
+ @checkArgument(field, actualType)
+ }
+ }
+ this.@{fieldName(field)} = value;
+ return this;
+ }
+ }
+}
+
+@checkArgument(field: GeneratedProperty, actualType: Type) = {
+ @if(getRestrictions(actualType).getRangeConstraint.isPresent) {
+ @if(actualType.isInstanceOf[ConcreteType]) {
+ @{AbstractRangeGenerator.forType(actualType).generateRangeCheckerCall(toFirstUpper(field.getName), "value")}
+ } else {
+ @{AbstractRangeGenerator.forType(actualType).generateRangeCheckerCall(toFirstUpper(field.getName), "value.getValue()")}
+ }
+ }
+ @if(getRestrictions(actualType).getLengthConstraint.isPresent) {
+ @if(actualType.isInstanceOf[ConcreteType]) {
+ @{LengthGenerator.generateLengthCheckerCall(fieldName(field), "value")}
+ } else {
+ @{LengthGenerator.generateLengthCheckerCall(fieldName(field), "value.getValue()")}
+ }
+ }
+ @for(currentConstant <- genType.getConstantDefinitions) {
+ @defining(fieldName(field)) { suffix =>
+ @if(currentConstant.getName.startsWith(BindingMapping.PATTERN_CONSTANT_NAME)
+ && suffix.equals(currentConstant.getName.substring(BindingMapping.PATTERN_CONSTANT_NAME.length))) {
+ @{importedNames.get("codeHelpers")}.checkPattern(value, @{BindingMapping.MEMBER_PATTERN_LIST}@{suffix}, @{BindingMapping.MEMBER_REGEX_LIST}@{suffix});
+ }
+ }
+ }
+}
+