On Jun 25, 2013, at 10:44 PM, Jeremy Boynes <jboy...@apache.org> wrote:

> I have been thinking about improvements to Jasper as well around better 
> support for Servlet 3.0 concepts. One area would be decoupling it from 
> Tomcat, bootstrapping using an SCI as hinted in ContextConfig. I'd also be 
> interested in improving the Ant task as well, such as support for 
> pre-compiling a separate package that would be treated as a web fragment 
> (including web.xml-less pre-compilation, generating a web-fragment.xml rather 
> than a web.xml snippet or potentially eliminating the XML entirely if the 
> generated code can be annotated with @WebServlet).

I started on this and ended up with two patches that are converging. For 55166 
(which started out somewhere different), I have a patch to update local entity 
handling in Catalina's XML parsing; for 53737, I started to have Jasper's 
translator rely only on the ServletContext and not need to parse merged web.xml 
XML passed as a ServletContext attribute. These are converging in a few areas.

Jasper's descriptor parser (used for web.xml and TLDs) can only validate 
DTD-based documents. I opened 55212 about adding it. Such a fix could benefit 
from using the same resolver and cached copies that Catalina does. This is less 
of an issue if Jasper uses the ServletContext as it could rely on the container 
to parse/validate web.xml. It would still be needed if we wanted JspC to 
validate files standalone but there is a separate ant task that can do that.

Another area of convergence is in parsing TLDs: currently both Catalina and 
Jasper do it, differently. I believe Catalina only reads them to detect the 
Listeners they define and if that's the case we could perhaps add a SCI to 
Jasper that handled all TLD functionality including registering the listeners 
programmatically (at least that's what Servlet 8.3 implies) . That would remove 
Catalina's dependency on web-jsptaglibrary*.xsd and on TLD-related classes. To 
support validation though we would need to add the XSD-based validation in 
Jasper.

Finally, Jasper parses these documents first into DOM and the into its own 
version based on TreeNode (this is separate from the parse tree used for actual 
JSPs). Jasper already depends on tomcat-util for the JarScanner so could 
potentially use Digester for this in the same way Catalina does. It would 
simplify the fragment merge logic in JspC if it could reuse what was in 
Catalina's WebXml (something I'm hacking around in 53737 right now).  
Alternatively, we could still eliminate the intermediary DOM and TreeNode forms 
and use SAX or StAX to parse directly into Jasper's objects - especially for 
TLDs where it is using the spec's classes (TagLibraryInfo and TagInfo) as the 
model.

I'm planning on merging these two patches and pressing on with a converged 
solution, but probably won't be able to do much until next weekend.

Cheers
Jeremy
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to