Uploaded image for project: 'Velocity'
  1. Velocity
  2. VELOCITY-260

patch to event handling configuration / new event handlers

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 1.5
    • 1.5
    • Engine
    • None
    • Operating System: other
      Platform: Other
    • 28388

    Description

      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.

      Attachments

        1. ASF.LICENSE.NOT.GRANTED--about this patch.txt
          5 kB
          Will Glass-Husain
        2. ASF.LICENSE.NOT.GRANTED--event1.patch
          107 kB
          Will Glass-Husain
        3. ASF.LICENSE.NOT.GRANTED--includeevent.zip
          4 kB
          Will Glass-Husain
        4. ASF.LICENSE.NOT.GRANTED--src.zip
          22 kB
          Will Glass-Husain
        5. ASF.LICENSE.NOT.GRANTED--testcases.xml
          15 kB
          Will Glass-Husain
        6. ASF.LICENSE.NOT.GRANTED--testcases.xml
          15 kB
          Will Glass-Husain

        Issue Links

          Activity

            People

              Unassigned Unassigned
              wglass@forio.com Will Glass-Husain
              Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: