Allow child builders that are annotated with @Builder
diff --git a/grails-datastore-core/src/main/groovy/org/grails/datastore/mapping/config/ConfigurationBuilder.groovy b/grails-datastore-core/src/main/groovy/org/grails/datastore/mapping/config/ConfigurationBuilder.groovy index a2cc220..9cdd0db 100644 --- a/grails-datastore-core/src/main/groovy/org/grails/datastore/mapping/config/ConfigurationBuilder.groovy +++ b/grails-datastore-core/src/main/groovy/org/grails/datastore/mapping/config/ConfigurationBuilder.groovy
@@ -2,11 +2,13 @@ import groovy.transform.CompileStatic import groovy.transform.builder.Builder +import groovy.transform.builder.SimpleStrategy import groovy.util.logging.Slf4j import org.grails.datastore.mapping.reflect.NameUtils import org.springframework.core.env.PropertyResolver import org.springframework.util.ReflectionUtils +import java.lang.annotation.Annotation import java.lang.reflect.Method import java.lang.reflect.Modifier @@ -131,6 +133,15 @@ continue } + Builder builderAnnotation = argType.getAnnotation(Builder) + if(builderAnnotation != null && builderAnnotation.builderStrategy() == SimpleStrategy) { + def newBuilder = argType.newInstance() + newChildBuilder(newBuilder, propertyPath) + buildRecurse(newBuilder, propertyPath) + method.invoke(builder, newBuilder) + continue + } + def valueOfMethod = ReflectionUtils.findMethod(argType, 'valueOf') if (valueOfMethod != null && Modifier.isStatic(valueOfMethod.modifiers)) { try {
diff --git a/grails-datastore-core/src/main/groovy/org/grails/datastore/mapping/core/exceptions/ConfigurationException.java b/grails-datastore-core/src/main/groovy/org/grails/datastore/mapping/core/exceptions/ConfigurationException.java index 6af6a5d..52f9204 100644 --- a/grails-datastore-core/src/main/groovy/org/grails/datastore/mapping/core/exceptions/ConfigurationException.java +++ b/grails-datastore-core/src/main/groovy/org/grails/datastore/mapping/core/exceptions/ConfigurationException.java
@@ -3,7 +3,7 @@ /** * An exception thrown if a configuration error occurs * - * @aurhor Graeme Rocher + * @author Graeme Rocher * @since 6.0 */ public class ConfigurationException extends RuntimeException {