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]

Reply via email to