Skip to content

Commit e947ef1

Browse files
committed
Merge branch '2.1.x' into 2.2.x
Conflicts: grails-core/src/main/groovy/org/codehaus/groovy/grails/compiler/injection/GrailsASTUtils.java
2 parents 18ef04e + 7399121 commit e947ef1

File tree

4 files changed

+15
-23
lines changed

4 files changed

+15
-23
lines changed

grails-core/src/main/groovy/org/codehaus/groovy/grails/compiler/injection/GrailsASTUtils.java

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -37,14 +37,7 @@
3737
import org.apache.commons.collections.CollectionUtils;
3838
import org.apache.commons.collections.Predicate;
3939
import org.apache.commons.lang.StringUtils;
40-
import org.codehaus.groovy.ast.ASTNode;
41-
import org.codehaus.groovy.ast.AnnotationNode;
42-
import org.codehaus.groovy.ast.ClassHelper;
43-
import org.codehaus.groovy.ast.ClassNode;
44-
import org.codehaus.groovy.ast.ConstructorNode;
45-
import org.codehaus.groovy.ast.MethodNode;
46-
import org.codehaus.groovy.ast.Parameter;
47-
import org.codehaus.groovy.ast.PropertyNode;
40+
import org.codehaus.groovy.ast.*;
4841
import org.codehaus.groovy.ast.expr.ArgumentListExpression;
4942
import org.codehaus.groovy.ast.expr.BinaryExpression;
5043
import org.codehaus.groovy.ast.expr.BooleanExpression;
@@ -639,11 +632,12 @@ else if (isCandidateInstanceMethod(supportedSuperType, declaredMethod)) {
639632
}
640633
}
641634

642-
public static void addFieldIfNonExistent(ClassNode classNode, ClassNode fieldType, String fieldName) {
635+
public static FieldNode addFieldIfNonExistent(ClassNode classNode, ClassNode fieldType, String fieldName) {
643636
if (classNode != null && classNode.getField(fieldName) == null) {
644-
classNode.addField(fieldName, Modifier.PRIVATE, fieldType,
637+
return classNode.addField(fieldName, Modifier.PRIVATE, fieldType,
645638
new ConstructorCallExpression(fieldType, new ArgumentListExpression()));
646639
}
640+
return null;
647641
}
648642

649643
public static void addAnnotationIfNecessary(ClassNode classNode, @SuppressWarnings("unused") Class<Entity> entityClass) {

grails-plugin-testing/src/main/groovy/grails/test/mixin/domain/DomainClassUnitTestMixin.groovy

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -23,29 +23,26 @@ import org.codehaus.groovy.grails.commons.GrailsClassUtils
2323
import org.codehaus.groovy.grails.commons.GrailsDomainClass
2424
import org.codehaus.groovy.grails.plugins.DomainClassGrailsPlugin
2525
import org.codehaus.groovy.grails.plugins.web.ControllersGrailsPlugin
26+
import org.codehaus.groovy.grails.validation.ConstrainedProperty
27+
import org.codehaus.groovy.grails.validation.ConstraintEvalUtils
2628
import org.codehaus.groovy.grails.validation.ConstraintsEvaluator
2729
import org.codehaus.groovy.grails.validation.ConstraintsEvaluatorFactoryBean
28-
import org.codehaus.groovy.grails.validation.GrailsDomainClassValidator
2930
import org.grails.datastore.gorm.GormEnhancer
3031
import org.grails.datastore.gorm.events.AutoTimestampEventListener
3132
import org.grails.datastore.gorm.events.DomainEventListener
32-
import org.junit.After
33-
import org.junit.Before
34-
import org.junit.BeforeClass
35-
import org.grails.datastore.mapping.core.Datastore
33+
import org.grails.datastore.gorm.validation.constraints.UniqueConstraintFactory
3634
import org.grails.datastore.mapping.core.DatastoreUtils
3735
import org.grails.datastore.mapping.core.Session
3836
import org.grails.datastore.mapping.model.PersistentEntity
37+
import org.grails.datastore.mapping.reflect.ClassPropertyFetcher
3938
import org.grails.datastore.mapping.simple.SimpleMapDatastore
4039
import org.grails.datastore.mapping.transactions.DatastoreTransactionManager
40+
import org.junit.After
41+
import org.junit.AfterClass
42+
import org.junit.Before
43+
import org.junit.BeforeClass
4144
import org.springframework.transaction.PlatformTransactionManager
4245
import org.springframework.validation.Validator
43-
import org.codehaus.groovy.grails.validation.ConstraintEvalUtils
44-
import org.codehaus.groovy.grails.validation.ConstrainedProperty
45-
import org.grails.datastore.gorm.validation.constraints.UniqueConstraint
46-
import org.grails.datastore.gorm.validation.constraints.UniqueConstraintFactory
47-
import org.junit.AfterClass
48-
import org.grails.datastore.mapping.reflect.ClassPropertyFetcher
4946

5047
/**
5148
* <p>A mixin that can be applied to JUnit or Spock tests to add testing support

grails-plugin-testing/src/main/groovy/org/codehaus/groovy/grails/compiler/injection/test/TestMixinTransformation.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,8 @@ public void weaveMixinsIntoClass(ClassNode classNode, ListExpression values) {
116116

117117
final String fieldName = '$' + GrailsNameUtils.getPropertyName(mixinClassNode.getName());
118118

119-
GrailsASTUtils.addFieldIfNonExistent(classNode, mixinClassNode, fieldName);
119+
FieldNode fieldNode = GrailsASTUtils.addFieldIfNonExistent(classNode, mixinClassNode, fieldName);
120+
if(fieldNode == null) return; // already woven
120121
VariableExpression fieldReference = new VariableExpression(fieldName);
121122

122123
while (!mixinClassNode.getName().equals(OBJECT_CLASS)) {

grails-test-suite-uber/src/test/groovy/org/codehaus/groovy/grails/validation/CascadingErrorCountSpec.groovy

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import grails.test.mixin.Mock
88
/**
99
*/
1010
@TestFor(CascadingPerson)
11-
@Mock(Name)
11+
@Mock([CascadingPerson, Name])
1212
class CascadingErrorCountSpec extends Specification {
1313

1414
void "Test that the error count is correct when validating sorted set"() {

0 commit comments

Comments
 (0)