Skip to content

Commit e8a07aa

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

File tree

2 files changed

+21
-5
lines changed

2 files changed

+21
-5
lines changed

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

+19-5
Original file line numberDiff line numberDiff line change
@@ -90,11 +90,23 @@
9090
import java.lang.reflect.Method;
9191
import java.lang.reflect.Modifier;
9292
import java.net.URL;
93-
import java.util.*;
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;
9498
import java.util.regex.Pattern;
9599

96100
import static org.codehaus.groovy.ast.tools.GeneralUtils.*;
97-
import static org.grails.compiler.injection.GrailsASTUtils.*;
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;
98110

99111
/**
100112
* Enhances controller classes by converting closures actions to method actions and binding
@@ -786,12 +798,14 @@ protected void initializeAndValidateCommandObjectParameter(final BlockStatement
786798
}
787799

788800
if (argumentIsValidateable) {
789-
final MethodCallExpression validateMethodCallExpression = callX(localVarX(paramName, commandObjectNode), "validate");
790-
final MethodNode validateMethod = commandObjectNode.getMethod("validate", new Parameter[0]);
801+
final MethodCallExpression validateMethodCallExpression =
802+
new MethodCallExpression(new VariableExpression(paramName), "validate", EMPTY_TUPLE);
803+
final MethodNode validateMethod =
804+
commandObjectNode.getMethod("validate", new Parameter[0]);
791805
if (validateMethod != null) {
792806
validateMethodCallExpression.setMethodTarget(validateMethod);
793807
}
794-
final Statement ifCommandObjectIsNotNullThenValidate = ifS(boolX(varX(paramName)), stmt(validateMethodCallExpression));
808+
final Statement ifCommandObjectIsNotNullThenValidate = new IfStatement(new BooleanExpression(new VariableExpression(paramName)), new ExpressionStatement(validateMethodCallExpression), new ExpressionStatement(new EmptyExpression()));
795809
wrapper.addStatement(ifCommandObjectIsNotNullThenValidate);
796810
} else {
797811
// 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

+2
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ 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
89
import spock.lang.Specification
910

1011
class CommandObjectsSpec extends Specification implements ControllerUnitTest<TestController>, DataTest {
@@ -322,6 +323,7 @@ class CommandObjectsSpec extends Specification implements ControllerUnitTest<Tes
322323
model.pId == 2
323324
}
324325

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

0 commit comments

Comments
 (0)