# Jasper TODO list

- JSP 1.2 Compliance
- Jasper as an independent component
- Bugs
- RFEs

## JSP 1.2 Compliance

A new version of the JavaServer Pages specification (JSP 1.2) has entered public draft status on 2000/08/15. As part of the effort to validate the changes and new features, we need to enhance the existing Jasper implementation to support them in the very near term. This section describes each of the major new features (as presented in section B.1 of the Public Draft 1), and summarizes the likely code changes required to implement them.

### jsp:include can now indicate "flush='false'"

The JSP 1.1 specification requires that the "flush" attribute of a tag always be set to "true". In 1.2, a "false" value is allowed, with the following semantics:

- The content will be included in the current JspWriter instead of being sent to the top-level writer (and hence to the output stream).
- The included page cannot set headers or cookies.

Implementation of this change affects the Java code generated by the JSP page compiler, and relies on the new RequestDispatcher semantics of the Servlet 2.3 spec. Basically, the generated code will need to create a wrapped response, to be passed as the second argument to the internal RequestDispatcher.include() that implements this element, which grabs all the output text and copies it to the current JspWriter.

First implementation committed 2000/09/18. Summary of Changes.

### Made the XML view of a JSP page available for input, and for validation

This is one of the main issues that has motivated the need to re-architect Jasper into phases, and to provide an additional parser that accepts input in the XML syntax.

Two parsers now need to coexist in our implementation, and our "generators" will also need to support the production of an input stream in XML syntax which is then passed to the new Validator class for validation against tag libraries.

First implementation committed 2000/09/18. Summary of Changes.

### PropertyEditor.setAsText() can now be used to convert from a literal string attribute value

From the spec: String constants and request parameter values can be used to assign values to any a type that has a PropertyEditor class. When that is the case, the setAsText(String) method is used.

First implementation committed 2000/09/25. Summary of Changes.

### New ValidatorClass and JspPage classes for validation against tag libraries

This is the infrastructure added in the tag libraries to support the validation phase introduced with the support of the XML syntax (see "Made the XML view of a JSP page available for input, and for validation" above).

First implementation committed 2000/09/18. Summary of Changes.

### New IterationTag interface to support iteration without BodyContent

In JSP 1.1, your custom tag must implement BodyTag if it wants to support iteration. In many simple cases where the nested content of a tag is just reprocessed by the iteration anyway, it would be nice to allow a custom tag class that only implements Tag to be able to iterate, with the convenience base class doing the iteration without creating a nested BodyContent. This should also have performance benefits for this use case. This should require fairly minor changes to the generated code for a page using custom tags. Updated support classes will already be part of the API.

First implementation committed 2000/10/17. Summary of Changes.

### Added listener classes to the TLD

With the advent of application events support in Servlet 2.3, it is now possible for tag libraries to define an event listener object. Changes related to this addition are taken care of by the servlet container:

- When processing the web application deployment descriptor at application start time, take specific note of each included directive.
- For each directive, find and parse the corresponding tag library descriptor, and register application event listeners in the same manner that listeners in web.xml are registered.

### Added elements to the TLD to avoid having to write TagExtraInfo classes in the most common cases

The container needs to hanlde appropriately the new optional scripting variable information specified via new tag (sub element of ).

### Added a resetCustomAttributes() method to Tag interface

This new method allows the reuse of tag instances in cases where the invocations of the tag do not set the same attributes. We should revisit our tag lifecycle implementation and improve accordingly.

### Added elements to the TLD for delivering icons and descriptions to use in authoring tools

Nothing to be done here. (yeah!)

## Jasper as an independent component

[From Proposal for Development of Jasper in Tomcat 4.0]

It shall be possible to embed the JSP page compiler as a servlet in any servlet container conforming to the Servlet 2.3 Specification (not just Tomcat). Among other things, this implies that there shall be no internal code dependencies within Jasper on any classes in the org.apache.tomcat.* package hierarchy. Progress Document.

## Bugs

Tomcat bugs are currently tracked at http://znutar.cortexity.com:8888/BugRatViewer. Jasper has its own project name, so you can easily get a report showing only jasper related bugs.

## RFEs

Just as for Tomcat bugs, RFEs are currently tracked at http://znutar.cortexity.com:8888/BugRatViewer.