Class EventHandlerUtil


  • public class EventHandlerUtil
    extends java.lang.Object
    Calls on request all registered event handlers for a particular event. Each method accepts two event cartridges (typically one from the application and one from the context). All appropriate event handlers are executed in order until a stopping condition is met. See the docs for the individual methods to see what the stopping condition is for that method.
    Since:
    1.5
    Version:
    $Id: EventHandlerUtil.java 685685 2008-08-13 21:43:27Z nbubna $
    • Constructor Detail

      • EventHandlerUtil

        public EventHandlerUtil()
    • Method Detail

      • referenceInsert

        public static java.lang.Object referenceInsert​(RuntimeServices rsvc,
                                                       InternalContextAdapter context,
                                                       java.lang.String reference,
                                                       java.lang.Object value)
        Called before a reference is inserted. All event handlers are called in sequence. The default implementation inserts the reference as is. This is a major hotspot method called by ASTReference render.
        Parameters:
        reference - reference from template about to be inserted
        value - value about to be inserted (after toString() )
        rsvc - current instance of RuntimeServices
        context - The internal context adapter.
        Returns:
        Object on which toString() should be called for output.
      • shouldLogOnNullSet

        public static boolean shouldLogOnNullSet​(RuntimeServices rsvc,
                                                 InternalContextAdapter context,
                                                 java.lang.String lhs,
                                                 java.lang.String rhs)
        Called when a null is evaluated during a #set. All event handlers are called in sequence until a false is returned. The default implementation always returns true.
        Parameters:
        lhs - Left hand side of the expression.
        rhs - Right hand side of the expression.
        rsvc - current instance of RuntimeServices
        context - The internal context adapter.
        Returns:
        true if to be logged, false otherwise
      • methodException

        public static java.lang.Object methodException​(RuntimeServices rsvc,
                                                       InternalContextAdapter context,
                                                       java.lang.Class claz,
                                                       java.lang.String method,
                                                       java.lang.Exception e)
                                                throws java.lang.Exception
        Called when a method exception is generated during Velocity merge. Only the first valid event handler in the sequence is called. The default implementation simply rethrows the exception.
        Parameters:
        claz - Class that is causing the exception
        method - method called that causes the exception
        e - Exception thrown by the method
        rsvc - current instance of RuntimeServices
        context - The internal context adapter.
        Returns:
        Object to return as method result
        Throws:
        java.lang.Exception - to be wrapped and propogated to app
      • includeEvent

        public static java.lang.String includeEvent​(RuntimeServices rsvc,
                                                    InternalContextAdapter context,
                                                    java.lang.String includeResourcePath,
                                                    java.lang.String currentResourcePath,
                                                    java.lang.String directiveName)
        Called when an include-type directive is encountered (#include or #parse). All the registered event handlers are called unless null is returned. The default implementation always processes the included resource.
        Parameters:
        includeResourcePath - the path as given in the include directive.
        currentResourcePath - the path of the currently rendering template that includes the include directive.
        directiveName - name of the directive used to include the resource. (With the standard directives this is either "parse" or "include").
        rsvc - current instance of RuntimeServices
        context - The internal context adapter.
        Returns:
        a new resource path for the directive, or null to block the include from occurring.
      • invalidGetMethod

        public static java.lang.Object invalidGetMethod​(RuntimeServices rsvc,
                                                        InternalContextAdapter context,
                                                        java.lang.String reference,
                                                        java.lang.Object object,
                                                        java.lang.String property,
                                                        Info info)
        Called when an invalid get method is encountered.
        Parameters:
        rsvc - current instance of RuntimeServices
        context - the context when the reference was found invalid
        reference - complete invalid reference
        object - object from reference, or null if not available
        property - name of property, or null if not relevant
        info - contains info on template, line, col
        Returns:
        substitute return value for missing reference, or null if no substitute
      • invalidSetMethod

        public static void invalidSetMethod​(RuntimeServices rsvc,
                                            InternalContextAdapter context,
                                            java.lang.String leftreference,
                                            java.lang.String rightreference,
                                            Info info)
        Called when an invalid set method is encountered.
        Parameters:
        rsvc - current instance of RuntimeServices
        context - the context when the reference was found invalid
        leftreference - left reference being assigned to
        rightreference - invalid reference on the right
        info - contains info on template, line, col
      • invalidMethod

        public static java.lang.Object invalidMethod​(RuntimeServices rsvc,
                                                     InternalContextAdapter context,
                                                     java.lang.String reference,
                                                     java.lang.Object object,
                                                     java.lang.String method,
                                                     Info info)
        Called when an invalid method is encountered.
        Parameters:
        rsvc - current instance of RuntimeServices
        context - the context when the reference was found invalid
        reference - complete invalid reference
        object - object from reference, or null if not available
        method - name of method, or null if not relevant
        info - contains info on template, line, col
        Returns:
        substitute return value for missing reference, or null if no substitute
      • invalidReferenceHandlerCall

        public static java.lang.Object invalidReferenceHandlerCall​(EventHandlerMethodExecutor methodExecutor,
                                                                   RuntimeServices rsvc,
                                                                   InternalContextAdapter context)
        Calls event handler method with appropriate chaining across event handlers.
        Parameters:
        methodExecutor -
        rsvc - current instance of RuntimeServices
        context - The current context
        Returns:
        return value from method, or null if no return value
      • initializeEventCartridge

        private static void initializeEventCartridge​(RuntimeServices rsvc,
                                                     EventCartridge eventCartridge)
        Initialize the event cartridge if appropriate.
        Parameters:
        rsvc - current instance of RuntimeServices
        eventCartridge - the event cartridge to be initialized
      • callEventHandlers

        private static void callEventHandlers​(java.util.Iterator applicationEventHandlerIterator,
                                              java.util.Iterator contextEventHandlerIterator,
                                              EventHandlerMethodExecutor eventExecutor)
                                       throws java.lang.Exception
        Loop through both the application level and context-attached event handlers.
        Parameters:
        applicationEventHandlerIterator - Iterator that loops through all global event handlers declared at application level
        contextEventHandlerIterator - Iterator that loops through all global event handlers attached to context
        eventExecutor - Strategy object that executes event handler method
        Throws:
        java.lang.Exception - generic exception potentially thrown by event handlers
      • iterateOverEventHandlers

        private static void iterateOverEventHandlers​(java.util.Iterator handlerIterator,
                                                     EventHandlerMethodExecutor eventExecutor)
                                              throws java.lang.Exception
        Loop through a given iterator of event handlers.
        Parameters:
        handlerIterator - Iterator that loops through event handlers
        eventExecutor - Strategy object that executes event handler method
        Throws:
        java.lang.Exception - generic exception potentially thrown by event handlers