Package org.apache.velocity.app.event
Class EventHandlerUtil
- java.lang.Object
-
- org.apache.velocity.app.event.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 Summary
Constructors Constructor Description EventHandlerUtil()
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description private static void
callEventHandlers(java.util.Iterator applicationEventHandlerIterator, java.util.Iterator contextEventHandlerIterator, EventHandlerMethodExecutor eventExecutor)
Loop through both the application level and context-attached event handlers.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).private static void
initializeEventCartridge(RuntimeServices rsvc, EventCartridge eventCartridge)
Initialize the event cartridge if appropriate.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.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.static java.lang.Object
invalidReferenceHandlerCall(EventHandlerMethodExecutor methodExecutor, RuntimeServices rsvc, InternalContextAdapter context)
Calls event handler method with appropriate chaining across event handlers.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.private static void
iterateOverEventHandlers(java.util.Iterator handlerIterator, EventHandlerMethodExecutor eventExecutor)
Loop through a given iterator of event handlers.static java.lang.Object
methodException(RuntimeServices rsvc, InternalContextAdapter context, java.lang.Class claz, java.lang.String method, java.lang.Exception e)
Called when a method exception is generated during Velocity merge.static java.lang.Object
referenceInsert(RuntimeServices rsvc, InternalContextAdapter context, java.lang.String reference, java.lang.Object value)
Called before a reference is inserted.static boolean
shouldLogOnNullSet(RuntimeServices rsvc, InternalContextAdapter context, java.lang.String lhs, java.lang.String rhs)
Called when a null is evaluated during a #set.
-
-
-
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 insertedvalue
- value about to be inserted (after toString() )rsvc
- current instance of RuntimeServicescontext
- 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 RuntimeServicescontext
- 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 exceptionmethod
- method called that causes the exceptione
- Exception thrown by the methodrsvc
- current instance of RuntimeServicescontext
- 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 RuntimeServicescontext
- 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 RuntimeServicescontext
- the context when the reference was found invalidreference
- complete invalid referenceobject
- object from reference, or null if not availableproperty
- name of property, or null if not relevantinfo
- 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 RuntimeServicescontext
- the context when the reference was found invalidleftreference
- left reference being assigned torightreference
- invalid reference on the rightinfo
- 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 RuntimeServicescontext
- the context when the reference was found invalidreference
- complete invalid referenceobject
- object from reference, or null if not availablemethod
- name of method, or null if not relevantinfo
- 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 RuntimeServicescontext
- 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 RuntimeServiceseventCartridge
- 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 levelcontextEventHandlerIterator
- Iterator that loops through all global event handlers attached to contexteventExecutor
- 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 handlerseventExecutor
- Strategy object that executes event handler method- Throws:
java.lang.Exception
- generic exception potentially thrown by event handlers
-
-