*
* @return A new {@link «targetTypeName»} instance.
*/
- public «targetTypeName» build() {
+ public «targetType.importedNonNull» build() {
return new «type.enclosedTypes.get(0).importedName»(this);
}
* </ul>
*
* @param arg grouping object
- * @throws IllegalArgumentException if given argument is none of valid types or has property with incompatible value
+ * @throws «IAE.importedName» if given argument is none of valid types or has property with incompatible value
*/
'''
def private generateIfCheck(Type impl, List<Type> done) '''
«IF (impl instanceof GeneratedType && (impl as GeneratedType).hasNonDefaultMethods)»
«val implType = impl as GeneratedType»
- if (arg instanceof «implType.importedName») {
+ if (arg instanceof «implType.importedName» castArg) {
«printPropertySetter(implType)»
isValidArg = true;
}
«val ifc = implementedIfc as GeneratedType»
«FOR getter : ifc.nonDefaultMethods»
«IF BindingMapping.isGetterMethodName(getter.name) && !hasOverrideAnnotation(getter)»
- «printPropertySetter(getter, '''((«ifc.importedName»)arg).«getter.name»()''', getter.propertyNameFromGetter)»;
+ «printPropertySetter(getter, '''castArg.«getter.name»()''', getter.propertyNameFromGetter)»;
«ENDIF»
«ENDFOR»
«ENDIF»
«ENDFOR»
'''
- def private generateSetter(GeneratedProperty field) {
+ def private generateSetter(BuilderGeneratedProperty field) {
val returnType = field.returnType
if (returnType instanceof ParameterizedType) {
if (Types.isListType(returnType) || Types.isSetType(returnType)) {
return generateSimpleSetter(field, returnType)
}
- def private generateListSetter(GeneratedProperty field, Type actualType) '''
+ def private generateListSetter(BuilderGeneratedProperty field, Type actualType) '''
«val restrictions = restrictionsForSetter(actualType)»
«IF restrictions !== null»
«generateCheckers(field, restrictions, actualType)»
«ENDIF»
+
+ /**
+ * Set the property corresponding to {@link «targetType.importedName»#«field.getterName»()} to the specified
+ * value.
+ *
+ * @param values desired value
+ * @return this builder
+ */
public «type.getName» set«field.getName.toFirstUpper»(final «field.returnType.importedName» values) {
«IF restrictions !== null»
if (values != null) {
'''
- def private generateMapSetter(GeneratedProperty field, Type actualType) '''
+ def private generateMapSetter(BuilderGeneratedProperty field, Type actualType) '''
«val restrictions = restrictionsForSetter(actualType)»
«IF restrictions !== null»
«generateCheckers(field, restrictions, actualType)»
«ENDIF»
+
+ /**
+ * Set the property corresponding to {@link «targetType.importedName»#«field.getterName»()} to the specified
+ * value.
+ *
+ * @param values desired value
+ * @return this builder
+ */
public «type.getName» set«field.name.toFirstUpper»(final «field.returnType.importedName» values) {
«IF restrictions !== null»
if (values != null) {
}
'''
- def private generateSimpleSetter(GeneratedProperty field, Type actualType) '''
+ def private generateSimpleSetter(BuilderGeneratedProperty field, Type actualType) '''
«val restrictions = restrictionsForSetter(actualType)»
«IF restrictions !== null»
«generateCheckers(field, restrictions, actualType)»
«ENDIF»
+ /**
+ * Set the property corresponding to {@link «targetType.importedName»#«field.getterName»()} to the specified
+ * value.
+ *
+ * @param value desired value
+ * @return this builder
+ */
«val setterName = "set" + field.getName.toFirstUpper»
public «type.getName» «setterName»(final «field.returnType.importedName» value) {
«IF restrictions !== null»
*
* @param augmentation augmentation to be added
* @return this builder
- * @throws NullPointerException if {@code augmentation} is null
+ * @throws «NPE.importedName» if {@code augmentation} is null
*/
public «type.name» addAugmentation(«augmentTypeRef» augmentation) {
if (!(this.«AUGMENTATION_FIELD» instanceof «hashMapRef»)) {
}
private def generateAugmentation() '''
+ /**
+ * Return the specified augmentation, if it is present in this builder.
+ *
+ * @param <E$$> augmentation type
+ * @param augmentationType augmentation type class
+ * @return Augmentation object from this builder, or {@code null} if not present
+ * @throws «NPE.importedName» if {@code augmentType} is {@code null}
+ */
@«SUPPRESS_WARNINGS.importedName»({ "unchecked", "checkstyle:methodTypeParameterName"})
public <E$$ extends «augmentType.importedName»> E$$ «AUGMENTABLE_AUGMENTATION_NAME»(«CLASS.importedName»<E$$> augmentationType) {
return (E$$) «AUGMENTATION_FIELD».get(«JU_OBJECTS.importedName».requireNonNull(augmentationType));
«ENDFOR»
'''
- override protected generateCopyAugmentation(Type implType) {
- val hashMapRef = JU_HASHMAP.importedName
- val augmentTypeRef = augmentType.importedName
- return '''
- «JU_MAP.importedName»<«CLASS.importedName»<? extends «augmentTypeRef»>, «augmentTypeRef»> aug = base.augmentations();
- if (!aug.isEmpty()) {
- this.«AUGMENTATION_FIELD» = new «hashMapRef»<>(aug);
- }
- '''
- }
+ override protected generateCopyAugmentation(Type implType) '''
+ final var aug = base.augmentations();
+ if (!aug.isEmpty()) {
+ this.«AUGMENTATION_FIELD» = new «JU_HASHMAP.importedName»<>(aug);
+ }
+ '''
}