Skip to content

Commit 5584909

Browse files
committed
Revert "Revert "fix #13945 - use local variable instead of casting the object""
This reverts commit e8a07aa.
1 parent e8a07aa commit 5584909

File tree

2 files changed

+5
-21
lines changed

2 files changed

+5
-21
lines changed

grails-plugin-controllers/src/main/groovy/org/grails/compiler/web/ControllerActionTransformer.java

Lines changed: 5 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -90,23 +90,11 @@
9090
import java.lang.reflect.Method;
9191
import java.lang.reflect.Modifier;
9292
import java.net.URL;
93-
import java.util.ArrayList;
94-
import java.util.Collection;
95-
import java.util.HashMap;
96-
import java.util.List;
97-
import java.util.Map;
93+
import java.util.*;
9894
import java.util.regex.Pattern;
9995

10096
import static org.codehaus.groovy.ast.tools.GeneralUtils.*;
101-
import static org.grails.compiler.injection.GrailsASTUtils.applyDefaultMethodTarget;
102-
import static org.grails.compiler.injection.GrailsASTUtils.applyMethodTarget;
103-
import static org.grails.compiler.injection.GrailsASTUtils.buildGetMapExpression;
104-
import static org.grails.compiler.injection.GrailsASTUtils.buildGetPropertyExpression;
105-
import static org.grails.compiler.injection.GrailsASTUtils.buildSetPropertyExpression;
106-
import static org.grails.compiler.injection.GrailsASTUtils.hasAnnotation;
107-
import static org.grails.compiler.injection.GrailsASTUtils.hasParameters;
108-
import static org.grails.compiler.injection.GrailsASTUtils.isInheritedFromTrait;
109-
import static org.grails.compiler.injection.GrailsASTUtils.removeAnnotation;
97+
import static org.grails.compiler.injection.GrailsASTUtils.*;
11098

11199
/**
112100
* Enhances controller classes by converting closures actions to method actions and binding
@@ -798,14 +786,12 @@ protected void initializeAndValidateCommandObjectParameter(final BlockStatement
798786
}
799787

800788
if (argumentIsValidateable) {
801-
final MethodCallExpression validateMethodCallExpression =
802-
new MethodCallExpression(new VariableExpression(paramName), "validate", EMPTY_TUPLE);
803-
final MethodNode validateMethod =
804-
commandObjectNode.getMethod("validate", new Parameter[0]);
789+
final MethodCallExpression validateMethodCallExpression = callX(localVarX(paramName, commandObjectNode), "validate");
790+
final MethodNode validateMethod = commandObjectNode.getMethod("validate", new Parameter[0]);
805791
if (validateMethod != null) {
806792
validateMethodCallExpression.setMethodTarget(validateMethod);
807793
}
808-
final Statement ifCommandObjectIsNotNullThenValidate = new IfStatement(new BooleanExpression(new VariableExpression(paramName)), new ExpressionStatement(validateMethodCallExpression), new ExpressionStatement(new EmptyExpression()));
794+
final Statement ifCommandObjectIsNotNullThenValidate = ifS(boolX(varX(paramName)), stmt(validateMethodCallExpression));
809795
wrapper.addStatement(ifCommandObjectIsNotNullThenValidate);
810796
} else {
811797
// try to dynamically invoke the .validate() method if it is available at runtime...

grails-test-suite-web/src/test/groovy/org/grails/web/commandobjects/CommandObjectsSpec.groovy

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ import grails.testing.gorm.DataTest
55
import grails.testing.web.controllers.ControllerUnitTest
66
import grails.validation.Validateable
77
import spock.lang.Issue
8-
import spock.lang.PendingFeature
98
import spock.lang.Specification
109

1110
class CommandObjectsSpec extends Specification implements ControllerUnitTest<TestController>, DataTest {
@@ -323,7 +322,6 @@ class CommandObjectsSpec extends Specification implements ControllerUnitTest<Tes
323322
model.pId == 2
324323
}
325324

326-
@PendingFeature()
327325
@Issue('https://github.com/grails/grails-core/issues/13945')
328326
void "calling actions involving inherited command objects - parent command"() {
329327
given:

0 commit comments

Comments
 (0)