in grails-datastore-gorm-hibernate/src/main/groovy/org/grails/orm/hibernate/cfg/HibernateMappingBuilder.groovy [652:698]
void methodMissing(String name, Object args) {
if(methodMissingIncludes != null && !methodMissingIncludes.contains(name)) {
return
}
else if(methodMissingExcludes.contains(name)) {
return
}
boolean hasArgs = args.asBoolean()
if ('user-type' == name && hasArgs && (args[0] instanceof Map)) {
hibernateCustomUserType(args[0])
}
else if('importFrom' == name && hasArgs && (args[0] instanceof Class)) {
// ignore, handled by constraints
List<Closure> constraintsToImports = ClassPropertyFetcher.getStaticPropertyValuesFromInheritanceHierarchy((Class)args[0], GormProperties.CONSTRAINTS, Closure)
if(constraintsToImports) {
List originalIncludes = this.methodMissingIncludes
List originalExludes = this.methodMissingExcludes
try {
if(args[-1] instanceof Map) {
Map argMap = (Map) args[-1]
def includes = argMap.get(INCLUDE_PARAM)
def excludes = argMap.get(EXCLUDE_PARAM)
if(includes instanceof List) {
this.methodMissingIncludes = includes
}
if(excludes instanceof List) {
this.methodMissingExcludes = excludes
}
}
for(Closure callable in constraintsToImports) {
callable.setDelegate(this)
callable.setResolveStrategy(Closure.DELEGATE_ONLY)
callable.call()
}
} finally {
this.methodMissingIncludes = originalIncludes
this.methodMissingExcludes = originalExludes
}
}
}
else if (args && ((args[0] instanceof Map) || (args[0] instanceof Closure))) {
handleMethodMissing(name, args)
}
}