Class ActionEvent
- java.lang.Object
-
- org.apache.turbine.modules.ActionEvent
-
- Direct Known Subclasses:
VelocityActionEvent
public abstract class ActionEvent extends Object implements Action
This is an alternative to the Action class that allows you to do event based actions. Essentially, you label all your submit buttons with the prefix of "eventSubmit_" and the suffix of "methodName". For example, "eventSubmit_doDelete". Then any class that subclasses this class will get its "doDelete(PipelineData data)" method executed. If for any reason, it was not able to execute the method, it will fall back to executing the doPerform() method which is required to be implemented.
Limitations:
Because ParameterParser makes all the key values lowercase, we have to do some work to format the string into a method name. For example, a button name eventSubmit_doDelete gets converted into eventsubmit_dodelete. Thus, we need to form some sort of naming convention so that dodelete can be turned into doDelete.
Thus, the convention is this:
- The variable name MUST have the prefix "eventSubmit_".
- The variable name after the prefix MUST begin with the letters "do".
- The first letter after the "do" will be capitalized and the rest will be lowercase
- Version:
- $Id$
- Author:
- Jon S. Stevens , Henning P. Schmiedehausen, Quinton McCombs, Peter Courcoux
-
-
Field Summary
Fields Modifier and Type Field Description protected boolean
bubbleUpException
If true, then exceptions raised in eventSubmit_do<xxx> methods as well as in doPerform methods are bubbled up to the Turbine servlet's handleException method.protected static String
BUTTON
The name of the button to look for.protected static int
BUTTON_LENGTH
The length of the button to look for.protected static String
DEFAULT_METHOD
The default method.protected static int
LENGTH
The length of the button to look for.protected org.apache.logging.log4j.Logger
log
Loggingprotected static int
METHOD_NAME_LENGTH
The length of the method name.protected static String
METHOD_NAME_PREFIX
The prefix of the method name.-
Fields inherited from interface org.apache.turbine.modules.Action
CACHE_SIZE_DEFAULT, CACHE_SIZE_KEY, NAME, PREFIX
-
-
Constructor Summary
Constructors Constructor Description ActionEvent()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected boolean
considerKey(String key, org.apache.fulcrum.parser.ParameterParser pp)
Checks whether the selected key really is a valid event.void
doPerform(PipelineData pipelineData)
This overrides the default Action.doPerform() to execute the doEvent() method.protected void
executeEvents(org.apache.fulcrum.parser.ParameterParser pp, Class<?>[] signature, Object[] parameters)
This method should be called to execute the event based system.protected String
formatString(String input, org.apache.fulcrum.parser.ParameterParser pp)
This method does the conversion of the lowercase method name into the proper case.protected Method
getMethod(String name, Class<?>[] signature, org.apache.fulcrum.parser.ParameterParser pp)
Retrieve a method of the given name and signature.
-
-
-
Field Detail
-
log
protected org.apache.logging.log4j.Logger log
Logging
-
BUTTON
protected static final String BUTTON
The name of the button to look for.- See Also:
- Constant Field Values
-
BUTTON_LENGTH
protected static final int BUTTON_LENGTH
The length of the button to look for.
-
DEFAULT_METHOD
protected static final String DEFAULT_METHOD
The default method.- See Also:
- Constant Field Values
-
METHOD_NAME_PREFIX
protected static final String METHOD_NAME_PREFIX
The prefix of the method name.- See Also:
- Constant Field Values
-
METHOD_NAME_LENGTH
protected static final int METHOD_NAME_LENGTH
The length of the method name.
-
LENGTH
protected static final int LENGTH
The length of the button to look for.
-
bubbleUpException
protected boolean bubbleUpException
If true, then exceptions raised in eventSubmit_do<xxx> methods as well as in doPerform methods are bubbled up to the Turbine servlet's handleException method.
-
-
Constructor Detail
-
ActionEvent
public ActionEvent()
-
-
Method Detail
-
getMethod
protected Method getMethod(String name, Class<?>[] signature, org.apache.fulcrum.parser.ParameterParser pp) throws NoSuchMethodException
Retrieve a method of the given name and signature. The value is cached.- Parameters:
name
- the name of the methodsignature
- an array of classes forming the signature of the methodpp
- ParameterParser for correct folding- Returns:
- the method object
- Throws:
NoSuchMethodException
- if the method does not exist
-
doPerform
public void doPerform(PipelineData pipelineData) throws Exception
This overrides the default Action.doPerform() to execute the doEvent() method. If that fails, then it will execute the doPerform() method instead.
-
executeEvents
protected void executeEvents(org.apache.fulcrum.parser.ParameterParser pp, Class<?>[] signature, Object[] parameters) throws Exception
This method should be called to execute the event based system.- Parameters:
pp
- the parameter parsersignature
- the signature of the method to callparameters
- the parameters for the method to call- Throws:
Exception
- a generic exception.
-
formatString
protected String formatString(String input, org.apache.fulcrum.parser.ParameterParser pp)
This method does the conversion of the lowercase method name into the proper case.- Parameters:
input
- The unconverted method name.pp
- The parameter parser (for correct folding)- Returns:
- A string with the method name in the proper case.
-
considerKey
protected boolean considerKey(String key, org.apache.fulcrum.parser.ParameterParser pp)
Checks whether the selected key really is a valid event.- Parameters:
key
- The selected keypp
- The parameter parser to look for the key value- Returns:
- true if this key is really an ActionEvent Key
-
-