org.codehaus.groovy.grails.compiler.web
Class ControllerActionTransformer

java.lang.Object
  extended by org.codehaus.groovy.grails.compiler.web.ControllerActionTransformer
All Implemented Interfaces:
org.codehaus.groovy.grails.compiler.injection.ClassInjector, org.codehaus.groovy.grails.compiler.injection.GrailsArtefactClassInjector

public class ControllerActionTransformer
extends java.lang.Object
implements org.codehaus.groovy.grails.compiler.injection.GrailsArtefactClassInjector

Enhances controller classes by converting closures actions to method actions and binding request parameters to action arguments.


Field Summary
static java.lang.String VOID_TYPE
           
 
Fields inherited from interface org.codehaus.groovy.grails.compiler.injection.GrailsArtefactClassInjector
EMPTY_CLASS_ARRAY, ZERO_ARGS, ZERO_PARAMETERS
 
Fields inherited from interface org.codehaus.groovy.grails.compiler.injection.ClassInjector
PRIVATE_STATIC_MODIFIER
 
Constructor Summary
ControllerActionTransformer()
           
 
Method Summary
protected  void addMethodToInvokeClosure(org.codehaus.groovy.ast.ClassNode controllerClassNode, org.codehaus.groovy.ast.PropertyNode closureProperty, org.codehaus.groovy.control.SourceUnit source)
           
protected  void annotateActionMethod(org.codehaus.groovy.ast.Parameter[] parameters, org.codehaus.groovy.ast.MethodNode methodNode)
           
protected  void enhanceCommandObjectClass(org.codehaus.groovy.ast.ClassNode commandObjectTypeClassNode, java.lang.String actionName, org.codehaus.groovy.control.SourceUnit source)
           
protected  void error(org.codehaus.groovy.control.SourceUnit source, java.lang.String me)
           
 java.lang.String[] getArtefactTypes()
           
protected  org.codehaus.groovy.ast.stmt.Statement getAutoWireCommandObjectStatement(java.lang.String paramName)
           
protected  org.codehaus.groovy.ast.stmt.Statement getCommandObjectDataBindingStatement(org.codehaus.groovy.ast.ClassNode controllerClassNode, java.lang.String paramName, org.codehaus.groovy.ast.ClassNode commandObjectClassNode)
           
protected  org.codehaus.groovy.ast.expr.Expression getRejectValueExpression(java.lang.String methodParamName)
           
protected  org.codehaus.groovy.ast.stmt.BlockStatement initializeActionParameters(org.codehaus.groovy.ast.ClassNode classNode, org.codehaus.groovy.ast.ASTNode actionNode, java.lang.String actionName, org.codehaus.groovy.ast.Parameter[] actionParameters, org.codehaus.groovy.control.SourceUnit source)
           
protected  void initializeCommandObjectParameter(org.codehaus.groovy.ast.stmt.BlockStatement wrapper, org.codehaus.groovy.ast.ClassNode classNode, org.codehaus.groovy.ast.ClassNode commandObjectTypeClassNode, org.codehaus.groovy.ast.ASTNode actionNode, java.lang.String actionName, java.lang.String paramName, org.codehaus.groovy.control.SourceUnit source)
           
protected  void initializeMethodParameter(org.codehaus.groovy.ast.ClassNode classNode, org.codehaus.groovy.ast.stmt.BlockStatement wrapper, org.codehaus.groovy.ast.ASTNode actionNode, java.lang.String actionName, org.codehaus.groovy.ast.Parameter param, org.codehaus.groovy.control.SourceUnit source)
           
protected  void initializePrimitiveOrTypeWrapperParameter(org.codehaus.groovy.ast.stmt.BlockStatement wrapper, org.codehaus.groovy.ast.Parameter param, java.lang.String requestParameterName)
           
protected  void initializeStringParameter(org.codehaus.groovy.ast.stmt.BlockStatement wrapper, org.codehaus.groovy.ast.Parameter param, java.lang.String requestParameterName)
           
 void performInjection(org.codehaus.groovy.control.SourceUnit source, org.codehaus.groovy.ast.ClassNode classNode)
           
 void performInjection(org.codehaus.groovy.control.SourceUnit source, org.codehaus.groovy.classgen.GeneratorContext context, org.codehaus.groovy.ast.ClassNode classNode)
           
 boolean shouldInject(java.net.URL url)
           
protected  void transformClosureToMethod(org.codehaus.groovy.ast.ClassNode classNode, org.codehaus.groovy.ast.expr.ClosureExpression closureAction, org.codehaus.groovy.ast.PropertyNode property, org.codehaus.groovy.control.SourceUnit source)
           
protected  void warning(org.codehaus.groovy.control.SourceUnit sourceUnit, org.codehaus.groovy.ast.ASTNode node, java.lang.String warningMessage)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

VOID_TYPE

public static final java.lang.String VOID_TYPE
See Also:
Constant Field Values
Constructor Detail

ControllerActionTransformer

public ControllerActionTransformer()
Method Detail

getArtefactTypes

public java.lang.String[] getArtefactTypes()
Specified by:
getArtefactTypes in interface org.codehaus.groovy.grails.compiler.injection.GrailsArtefactClassInjector

performInjection

public void performInjection(org.codehaus.groovy.control.SourceUnit source,
                             org.codehaus.groovy.classgen.GeneratorContext context,
                             org.codehaus.groovy.ast.ClassNode classNode)
Specified by:
performInjection in interface org.codehaus.groovy.grails.compiler.injection.ClassInjector

addMethodToInvokeClosure

protected void addMethodToInvokeClosure(org.codehaus.groovy.ast.ClassNode controllerClassNode,
                                        org.codehaus.groovy.ast.PropertyNode closureProperty,
                                        org.codehaus.groovy.control.SourceUnit source)

annotateActionMethod

protected void annotateActionMethod(org.codehaus.groovy.ast.Parameter[] parameters,
                                    org.codehaus.groovy.ast.MethodNode methodNode)

transformClosureToMethod

protected void transformClosureToMethod(org.codehaus.groovy.ast.ClassNode classNode,
                                        org.codehaus.groovy.ast.expr.ClosureExpression closureAction,
                                        org.codehaus.groovy.ast.PropertyNode property,
                                        org.codehaus.groovy.control.SourceUnit source)

initializeActionParameters

protected org.codehaus.groovy.ast.stmt.BlockStatement initializeActionParameters(org.codehaus.groovy.ast.ClassNode classNode,
                                                                                 org.codehaus.groovy.ast.ASTNode actionNode,
                                                                                 java.lang.String actionName,
                                                                                 org.codehaus.groovy.ast.Parameter[] actionParameters,
                                                                                 org.codehaus.groovy.control.SourceUnit source)

initializeMethodParameter

protected void initializeMethodParameter(org.codehaus.groovy.ast.ClassNode classNode,
                                         org.codehaus.groovy.ast.stmt.BlockStatement wrapper,
                                         org.codehaus.groovy.ast.ASTNode actionNode,
                                         java.lang.String actionName,
                                         org.codehaus.groovy.ast.Parameter param,
                                         org.codehaus.groovy.control.SourceUnit source)

initializeCommandObjectParameter

protected void initializeCommandObjectParameter(org.codehaus.groovy.ast.stmt.BlockStatement wrapper,
                                                org.codehaus.groovy.ast.ClassNode classNode,
                                                org.codehaus.groovy.ast.ClassNode commandObjectTypeClassNode,
                                                org.codehaus.groovy.ast.ASTNode actionNode,
                                                java.lang.String actionName,
                                                java.lang.String paramName,
                                                org.codehaus.groovy.control.SourceUnit source)

enhanceCommandObjectClass

protected void enhanceCommandObjectClass(org.codehaus.groovy.ast.ClassNode commandObjectTypeClassNode,
                                         java.lang.String actionName,
                                         org.codehaus.groovy.control.SourceUnit source)

getCommandObjectDataBindingStatement

protected org.codehaus.groovy.ast.stmt.Statement getCommandObjectDataBindingStatement(org.codehaus.groovy.ast.ClassNode controllerClassNode,
                                                                                      java.lang.String paramName,
                                                                                      org.codehaus.groovy.ast.ClassNode commandObjectClassNode)

getAutoWireCommandObjectStatement

protected org.codehaus.groovy.ast.stmt.Statement getAutoWireCommandObjectStatement(java.lang.String paramName)

initializeStringParameter

protected void initializeStringParameter(org.codehaus.groovy.ast.stmt.BlockStatement wrapper,
                                         org.codehaus.groovy.ast.Parameter param,
                                         java.lang.String requestParameterName)

initializePrimitiveOrTypeWrapperParameter

protected void initializePrimitiveOrTypeWrapperParameter(org.codehaus.groovy.ast.stmt.BlockStatement wrapper,
                                                         org.codehaus.groovy.ast.Parameter param,
                                                         java.lang.String requestParameterName)

getRejectValueExpression

protected org.codehaus.groovy.ast.expr.Expression getRejectValueExpression(java.lang.String methodParamName)

performInjection

public void performInjection(org.codehaus.groovy.control.SourceUnit source,
                             org.codehaus.groovy.ast.ClassNode classNode)
Specified by:
performInjection in interface org.codehaus.groovy.grails.compiler.injection.ClassInjector

shouldInject

public boolean shouldInject(java.net.URL url)
Specified by:
shouldInject in interface org.codehaus.groovy.grails.compiler.injection.ClassInjector

error

protected void error(org.codehaus.groovy.control.SourceUnit source,
                     java.lang.String me)

warning

protected void warning(org.codehaus.groovy.control.SourceUnit sourceUnit,
                       org.codehaus.groovy.ast.ASTNode node,
                       java.lang.String warningMessage)