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