Skip to content

Commit

Permalink
fix for GRAILS-6546 "Hibernate naming_strategy is not used when the d…
Browse files Browse the repository at this point in the history
…omain classes are written in java"
  • Loading branch information
graemerocher committed Sep 28, 2010
1 parent 1594639 commit 5171b2b
Showing 1 changed file with 40 additions and 0 deletions.
Expand Up @@ -30,7 +30,9 @@
import org.hibernate.MappingException;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;
import org.hibernate.cfg.ImprovedNamingStrategy;
import org.hibernate.cfg.Mappings;
import org.hibernate.cfg.NamingStrategy;
import org.hibernate.engine.FilterDefinition;

/**
Expand Down Expand Up @@ -73,6 +75,7 @@ public void setGrailsApplication(GrailsApplication application) {
return;
}

configureNamingStrategy();
GrailsClass[] existingDomainClasses = grailsApplication.getArtefacts(DomainClassArtefactHandler.TYPE);
for (GrailsClass existingDomainClass : existingDomainClasses) {
addDomainClass((GrailsDomainClass) existingDomainClass);
Expand Down Expand Up @@ -159,4 +162,41 @@ protected void secondPassCompile() throws MappingException {
super.secondPassCompile();
configLocked = true;
}

/**
* Sets custom naming strategy specified in configuration or the default {@link ImprovedNamingStrategy}.
*/
private void configureNamingStrategy() {
NamingStrategy strategy = null;
Object customStrategy = grailsApplication.getConfig().get("naming_strategy");
if (customStrategy != null) {
Class<?> namingStrategyClass = null;
if (customStrategy instanceof Class<?>) {
namingStrategyClass = (Class<?>)customStrategy;
} else {
try {
namingStrategyClass = this.grailsApplication.getClassLoader().loadClass(customStrategy.toString());
} catch (ClassNotFoundException e) {
// ignore
}
}

if (namingStrategyClass != null) {
try {
strategy = (NamingStrategy)namingStrategyClass.newInstance();
} catch (InstantiationException e) {
// ignore
} catch (IllegalAccessException e) {
// ignore
}
}
}

if (strategy == null) {
strategy = ImprovedNamingStrategy.INSTANCE;
}

setNamingStrategy(strategy);
}

}

1 comment on commit 5171b2b

@dongwq
Copy link

@dongwq dongwq commented on 5171b2b Aug 31, 2011

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

hi, my Q is that here the naming Strategy comes from grails config, but how do I use spring 'dependency inject' to set my naming strategy??
is this a bug?can you tell me

I' m dong
dongwqs@gmail.com

Please sign in to comment.