DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT <http://issues.apache.org/bugzilla/show_bug.cgi?id=28388>. ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND INSERTED IN THE BUG DATABASE.
http://issues.apache.org/bugzilla/show_bug.cgi?id=28388 patch to event handling configuration / new event handlers Summary: patch to event handling configuration / new event handlers Product: Velocity Version: 1.5 Platform: Other OS/Version: Other Status: NEW Severity: Normal Priority: Other Component: Source AssignedTo: [EMAIL PROTECTED] ReportedBy: [EMAIL PROTECTED] Substantial patch to event handling infrastructure. See readme.txt and discussion on velocity-dev list for more detail. Key changes: (1) Event handlers can be registered in the velocity-properties, e.g. eventhandler.referenceinsertion.class = org.apache.velocity.app.event.implement.EscapeXMLEntities (2) Multiple event handlers can be registered for a given type and are applied in a "filter" pattern. The specifics vary per event handler (documented in the JavaDocs). The following example would first enforce a relative path rule to included templates, and would then check to see if the template is actually available. eventhandler.include.class = org.apache.velocity.app.event.implement.IncludeRelativePath,org.apache.velocity .app.event.implement.IncludeNotFound (3) Event handlers have a new lifecycle. Before they are called they are initialized with a link to RuntimeServices. This allows the handlers to retrieve Velocity properties and to have access to a number of interesting system methods. Each event handler is also given the current context when it is called. This allows the template designer (or custom directives) to change the behavior of the event. A nice example of this is the EscapeXMLEntities reference insertion handler, which stops escaping HTML when an "ignoreEscape" flag is set in the context. (4) New implemented event handlers include: -- EscapeXMLEntities (escapes HTML/XML & < > ") -- IncludeNotFound -- IncludeRelativePath -- PrintExceptions Using these built-in event handlers, users can do useful things (e.g. escape HTML) with no extra coding just by configuring velocity.properties. (5) The patch is almost entirely backwards compatible. The old "attach the handler to the context" still works, although this results in a per-request rather than per-application lifecycle for the handler. One difference... the API for the event handlers has changed, and as such will require minor editing and recompilation of user code. (I think this is worth it). All tests (old and new) work. --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]