Skip to content

Commit a5bf8e1

Browse files
committed
Merge branch 'master' of github.com:grails/grails-core
2 parents e263b38 + 17d2ccc commit a5bf8e1

21 files changed

+252
-28
lines changed

src/java/org/codehaus/groovy/grails/commons/GrailsDomainConfigurationUtil.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@
5555
import org.codehaus.groovy.grails.exceptions.GrailsConfigurationException;
5656
import org.codehaus.groovy.grails.orm.hibernate.cfg.GrailsDomainBinder;
5757
import org.codehaus.groovy.grails.orm.hibernate.cfg.PropertyConfig;
58+
import org.codehaus.groovy.grails.plugins.PluginManagerHolder;
5859
import org.codehaus.groovy.grails.validation.ConstrainedProperty;
5960
import org.codehaus.groovy.grails.validation.ConstrainedPropertyBuilder;
6061
import org.codehaus.groovy.runtime.DefaultGroovyMethods;
@@ -376,8 +377,10 @@ public static Map<String, ConstrainedProperty> evaluateConstraints(final Class<?
376377

377378
Map<String, ConstrainedProperty> constrainedProperties = delegate.getConstrainedProperties();
378379
if (properties != null && !(constrainedProperties.isEmpty() && javaEntity)) {
380+
boolean hasHibernate = PluginManagerHolder.getPluginManager().hasGrailsPlugin("hibernate");
379381
for (GrailsDomainClassProperty p : properties) {
380-
PropertyConfig propertyConfig = GrailsDomainBinder.getPropertyConfig(p);
382+
// assume no formula issues if Hibernate isn't available to avoid CNFE
383+
PropertyConfig propertyConfig = hasHibernate ? GrailsDomainBinder.getPropertyConfig(p) : null;
381384
if (propertyConfig != null && propertyConfig.getFormula() != null) {
382385
if (constrainedProperties.remove(p.getName()) != null) {
383386
// constraint is registered but cannot be applied to a derived property

src/test/grails/test/GrailsUnitTestCaseTests.groovy

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,9 @@ import grails.converters.XML
2020
import junit.framework.AssertionFailedError
2121

2222
import org.codehaus.groovy.grails.commons.ConfigurationHolder
23+
import org.codehaus.groovy.grails.plugins.GrailsPlugin
24+
import org.codehaus.groovy.grails.plugins.MockGrailsPluginManager
25+
import org.codehaus.groovy.grails.plugins.PluginManagerHolder
2326
import org.codehaus.groovy.grails.plugins.codecs.HTMLCodec
2427

2528
/**
@@ -150,6 +153,17 @@ class GrailsUnitTestCaseTests extends GroovyTestCase {
150153

151154
class TestUnitTestCase extends GrailsUnitTestCase {
152155

156+
protected void setUp() {
157+
super.setUp()
158+
PluginManagerHolder.pluginManager = new MockGrailsPluginManager()
159+
PluginManagerHolder.pluginManager.registerMockPlugin([getName: { -> 'hibernate' }] as GrailsPlugin)
160+
}
161+
162+
protected void tearDown() {
163+
super.tearDown()
164+
PluginManagerHolder.pluginManager = null
165+
}
166+
153167
void testMockInstances1() {
154168
mockDomain(GrailsUnitTestClass)
155169

src/test/grails/test/MockUtilsSaveDomainTests.groovy

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,9 @@
1414
*/
1515
package grails.test
1616

17+
import org.codehaus.groovy.grails.plugins.GrailsPlugin
18+
import org.codehaus.groovy.grails.plugins.MockGrailsPluginManager
19+
import org.codehaus.groovy.grails.plugins.PluginManagerHolder
1720
import org.springframework.validation.Errors
1821

1922
class MockUtilsSaveDomainTests extends GroovyTestCase {
@@ -30,11 +33,14 @@ class MockUtilsSaveDomainTests extends GroovyTestCase {
3033
protected void setUp() {
3134
metaTestHelper.setUp()
3235
errorsMap = new IdentityHashMap()
36+
PluginManagerHolder.pluginManager = new MockGrailsPluginManager()
37+
PluginManagerHolder.pluginManager.registerMockPlugin([getName: { -> 'hibernate' }] as GrailsPlugin)
3338
}
3439

3540
protected void tearDown() {
3641
metaTestHelper.tearDown()
3742
MockUtils.resetIds()
43+
PluginManagerHolder.pluginManager = null
3844
}
3945

4046
/**

src/test/grails/test/MockUtilsTests.groovy

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,9 @@
1414
*/
1515
package grails.test
1616

17+
import org.codehaus.groovy.grails.plugins.GrailsPlugin
18+
import org.codehaus.groovy.grails.plugins.MockGrailsPluginManager
19+
import org.codehaus.groovy.grails.plugins.PluginManagerHolder
1720
import org.codehaus.groovy.grails.web.taglib.exceptions.GrailsTagException
1821
import org.springframework.mock.web.MockHttpServletRequest
1922
import org.springframework.mock.web.MockHttpServletResponse
@@ -37,14 +40,19 @@ class MockUtilsTests extends GroovyTestCase {
3740

3841
private Map errorsMap
3942

40-
void setUp() {
43+
protected void setUp() {
44+
super.setUp()
4145
metaTestHelper.setUp()
4246
errorsMap = new IdentityHashMap()
47+
PluginManagerHolder.pluginManager = new MockGrailsPluginManager()
48+
PluginManagerHolder.pluginManager.registerMockPlugin([getName: { -> 'hibernate' }] as GrailsPlugin)
4349
}
4450

45-
void tearDown() {
51+
protected void tearDown() {
52+
super.tearDown()
4653
metaTestHelper.tearDown()
4754
MockUtils.resetIds()
55+
PluginManagerHolder.pluginManager = null
4856
}
4957

5058
/**

src/test/org/codehaus/groovy/grails/commons/DefaultGrailsDomainClassTests.groovy

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
package org.codehaus.groovy.grails.commons
22

33
import org.codehaus.groovy.grails.exceptions.InvalidPropertyException
4+
import org.codehaus.groovy.grails.plugins.GrailsPlugin
5+
import org.codehaus.groovy.grails.plugins.MockGrailsPluginManager
6+
import org.codehaus.groovy.grails.plugins.PluginManagerHolder
47

58
/**
69
* Note there are more tests for DefaultGrailsDomainClass in test/persistence written in Java
@@ -9,6 +12,17 @@ class DefaultGrailsDomainClassTests extends GroovyTestCase {
912

1013
def gcl = new GroovyClassLoader()
1114

15+
protected void setUp() {
16+
super.setUp()
17+
PluginManagerHolder.pluginManager = new MockGrailsPluginManager()
18+
PluginManagerHolder.pluginManager.registerMockPlugin([getName: { -> 'hibernate' }] as GrailsPlugin)
19+
}
20+
21+
protected void tearDown() {
22+
super.tearDown()
23+
PluginManagerHolder.pluginManager = null
24+
}
25+
1226
void testFetchMode() {
1327
gcl.parseClass """
1428
class Test {

src/test/org/codehaus/groovy/grails/commons/GrailsDomainConfigurationUtilTests.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,9 @@
2626

2727
import org.codehaus.groovy.grails.orm.hibernate.cfg.DefaultGrailsDomainConfiguration;
2828
import org.codehaus.groovy.grails.orm.hibernate.cfg.GrailsDomainBinder;
29+
import org.codehaus.groovy.grails.plugins.MockGrailsPluginManager;
30+
import org.codehaus.groovy.grails.plugins.PluginManagerHolder;
31+
import org.codehaus.groovy.grails.scaffolding.DefaultGrailsTemplateGeneratorTests;
2932
import org.codehaus.groovy.grails.validation.ConstrainedProperty;
3033
import org.codehaus.groovy.grails.validation.NullableConstraint;
3134
import org.hibernate.cfg.ImprovedNamingStrategy;
@@ -42,12 +45,16 @@ public class GrailsDomainConfigurationUtilTests extends TestCase {
4245
protected void setUp() throws Exception {
4346
super.setUp();
4447
ExpandoMetaClass.enableGlobally();
48+
MockGrailsPluginManager pluginManager = new MockGrailsPluginManager();
49+
PluginManagerHolder.setPluginManager(pluginManager);
50+
pluginManager.registerMockPlugin(DefaultGrailsTemplateGeneratorTests.fakeHibernatePlugin);
4551
}
4652

4753
@Override
4854
protected void tearDown() throws Exception {
4955
super.tearDown();
5056
GrailsDomainBinder.namingStrategy = ImprovedNamingStrategy.INSTANCE;
57+
PluginManagerHolder.setPluginManager(null);
5158
}
5259

5360
public void testIsBasicType() {

src/test/org/codehaus/groovy/grails/orm/hibernate/AbstractGrailsHibernateTests.groovy

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,8 @@ hibernate {
102102
mockManager.doArtefactConfiguration()
103103
ctx.registerMockBean(PluginMetaManager.BEAN_ID, new DefaultPluginMetaManager())
104104

105+
afterPluginInitialization()
106+
105107
ga.initialise()
106108
ga.setApplicationContext(ctx)
107109
ApplicationHolder.setApplication(ga)
@@ -164,6 +166,9 @@ hibernate {
164166

165167
protected void onTearDown() {
166168
}
169+
170+
protected void afterPluginInitialization() {
171+
}
167172
}
168173

169174
class MockHibernateGrailsPlugin {

src/test/org/codehaus/groovy/grails/orm/hibernate/BidirectionalListMappingTests.groovy

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@ package org.codehaus.groovy.grails.orm.hibernate
22

33
import org.codehaus.groovy.grails.orm.hibernate.cfg.DefaultGrailsDomainConfiguration
44
import org.codehaus.groovy.grails.commons.DefaultGrailsApplication
5+
import org.codehaus.groovy.grails.plugins.GrailsPlugin
6+
import org.codehaus.groovy.grails.plugins.MockGrailsPluginManager
7+
import org.codehaus.groovy.grails.plugins.PluginManagerHolder
58

69
import org.hibernate.FetchMode
710
import org.hibernate.engine.CascadeStyle
@@ -35,6 +38,9 @@ class BidirectionalListMappingTests extends GroovyTestCase {
3538
protected void setUp() {
3639
ExpandoMetaClass.enableGlobally()
3740

41+
PluginManagerHolder.pluginManager = new MockGrailsPluginManager()
42+
PluginManagerHolder.pluginManager.registerMockPlugin([getName: { -> 'hibernate' }] as GrailsPlugin)
43+
3844
def gcl = new GroovyClassLoader()
3945
gcl.parseClass '''
4046
class TestFaqSection {
@@ -63,6 +69,11 @@ class TestFaqElement {
6369
config.buildMappings()
6470
}
6571

72+
protected void tearDown() {
73+
super.tearDown()
74+
PluginManagerHolder.pluginManager = null
75+
}
76+
6677
void testIndexBackrefMapping() {
6778
PersistentClass faqSection = config.getClassMapping("TestFaqSection")
6879
PersistentClass faqElement = config.getClassMapping("TestFaqElement")

src/test/org/codehaus/groovy/grails/orm/hibernate/ComponentDomainTests.groovy

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
package org.codehaus.groovy.grails.orm.hibernate
22

33
import org.codehaus.groovy.grails.commons.test.AbstractGrailsMockTests
4+
import org.codehaus.groovy.grails.plugins.GrailsPlugin
5+
import org.codehaus.groovy.grails.plugins.MockGrailsPluginManager
6+
import org.codehaus.groovy.grails.plugins.PluginManagerHolder
47

58
class ComponentDomainTests extends AbstractGrailsMockTests {
69

@@ -17,6 +20,9 @@ class ComponentDomainTests extends AbstractGrailsMockTests {
1720
}
1821

1922
protected void onSetUp() {
23+
PluginManagerHolder.pluginManager = new MockGrailsPluginManager()
24+
PluginManagerHolder.pluginManager.registerMockPlugin([getName: { -> 'hibernate' }] as GrailsPlugin)
25+
2026
gcl.parseClass('''
2127
class Person {
2228
Long id
@@ -36,4 +42,8 @@ class Address {
3642
'''
3743
)
3844
}
45+
46+
protected void onTearDown() {
47+
PluginManagerHolder.pluginManager = null
48+
}
3949
}

src/test/org/codehaus/groovy/grails/orm/hibernate/DerivedPropertiesTests.groovy

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
package org.codehaus.groovy.grails.orm.hibernate
22

3+
import org.codehaus.groovy.grails.plugins.GrailsPlugin
4+
import org.codehaus.groovy.grails.plugins.MockGrailsPluginManager
5+
import org.codehaus.groovy.grails.plugins.PluginManagerHolder
6+
37
class DerivedPropertiesTests extends AbstractGrailsHibernateTests {
48

59
protected void onSetUp() {
@@ -29,7 +33,17 @@ class ClassWithConstrainedDerivedProperty {
2933
'''
3034
}
3135

36+
protected void afterPluginInitialization() {
37+
// base class registers its own plugins but the hibernate plugin has the wrong name
38+
PluginManagerHolder.pluginManager.plugins['hibernate'] = PluginManagerHolder.pluginManager.plugins['mockHibernate']
39+
}
40+
41+
protected void onTearDown() {
42+
PluginManagerHolder.pluginManager = null
43+
}
44+
3245
void testDerivedPropertiesCannotBeMadeValidateable() {
46+
3347
def myDomainClass = ga.getDomainClass('ClassWithConstrainedDerivedProperty')
3448
def myClass = myDomainClass.clazz
3549

0 commit comments

Comments
 (0)