Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@

import org.codehaus.groovy.grails.commons.AbstractGrailsClass;
import org.codehaus.groovy.grails.commons.ExternalGrailsDomainClass;
import org.codehaus.groovy.grails.commons.GrailsApplication;
import org.codehaus.groovy.grails.commons.GrailsDomainClassProperty;
import org.codehaus.groovy.grails.commons.GrailsDomainConfigurationUtil;
import org.codehaus.groovy.grails.exceptions.InvalidPropertyException;
Expand All @@ -35,6 +36,7 @@
import org.hibernate.type.AnyType;
import org.hibernate.type.AssociationType;
import org.hibernate.type.Type;
import org.springframework.context.MessageSource;
import org.springframework.core.type.StandardAnnotationMetadata;
import org.springframework.validation.Validator;

Expand All @@ -60,6 +62,8 @@ public class GrailsHibernateDomainClass extends AbstractGrailsClass implements E

private Validator validator;

private GrailsApplication application;

private Set subClasses = new HashSet();
private Map constraints = Collections.emptyMap();
private Map<String, Object> defaultConstraints = Collections.emptyMap();
Expand All @@ -73,9 +77,10 @@ public class GrailsHibernateDomainClass extends AbstractGrailsClass implements E
* @param metaData The ClassMetaData for this class retrieved from the SF
* @param defaultConstraints The default global constraints definition
*/
public GrailsHibernateDomainClass(Class<?> clazz, SessionFactory sessionFactory,
public GrailsHibernateDomainClass(Class<?> clazz, SessionFactory sessionFactory, GrailsApplication application,
ClassMetadata metaData, Map<String, Object> defaultConstraints) {
super(clazz, "");
this.application = application;

new StandardAnnotationMetadata(clazz);
String ident = metaData.getIdentifierPropertyName();
Expand Down Expand Up @@ -249,6 +254,8 @@ public Validator getValidator() {
if (validator == null) {
GrailsDomainClassValidator gdcv = new GrailsDomainClassValidator();
gdcv.setDomainClass(this);
MessageSource messageSource = application.getMainContext().getBean(MessageSource.class);
gdcv.setMessageSource(messageSource);
validator = gdcv;
}
return validator;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -143,7 +143,7 @@ private static void configureDomainClass(SessionFactory sessionFactory, GrailsAp
if (dc == null) {
// a patch to add inheritance to this system
GrailsHibernateDomainClass ghdc = new GrailsHibernateDomainClass(
persistentClass, sessionFactory, cmd, defaultContraints);
persistentClass, sessionFactory, application, cmd, defaultContraints);

hibernateDomainClassMap.put(persistentClass.getName(), ghdc);
dc = (GrailsDomainClass) application.addArtefact(DomainClassArtefactHandler.TYPE, ghdc);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,7 @@ hibernate {
doWithRuntimeConfiguration dependentPlugins, springConfig

appCtx = springConfig.getApplicationContext()
ga.setMainContext(appCtx)
applicationContext = appCtx
dependentPlugins*.doWithApplicationContext(appCtx)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,11 @@ class Owner {
assertEquals 0, Animal.count()
}

public void testValidatorHasMessageSource() {
def Animal = ga.getDomainClass("Animal")
assertEquals applicationContext.getBean("messageSource"), Animal.validator.messageSource
}

void testEvents() {
def Owner = ga.getDomainClass("Owner").clazz

Expand Down