Class ActionEvent

  • All Implemented Interfaces:
    Action, Assembler
    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
    If you follow these conventions, then you should be ok with your method naming in your Action class.
    Version:
    $Id$
    Author:
    Jon S. Stevens , Henning P. Schmiedehausen, Quinton McCombs, Peter Courcoux
    • 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 method
        signature - an array of classes forming the signature of the method
        pp - 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.
        Specified by:
        doPerform in interface Action
        Parameters:
        pipelineData - Turbine information.
        Throws:
        Exception - a generic exception.
      • 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 parser
        signature - the signature of the method to call
        parameters - 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 key
        pp - The parameter parser to look for the key value
        Returns:
        true if this key is really an ActionEvent Key