I am designing a framework in Jasper for enabling plugins that
work closely with Jasper to generate Java codes instead of calls
to tag handlers.  The main idea is to take take JSTL tags, such as

        <c:forEach var="i" begin="1", end="100">
            ${i}
        </c:forEach>

and generates the Java codes

        for (int i = 0; i <= 100; i++) {
            pageContext.setAttribute("i", String.valueOf(i));
            out.print(evaluate("${i}"));
        }

or even

        for (int i = 0; i <= 100; i++) {
            out.print(i);
        }

The design is not to do the actual optimization in Jasper, but to
provide a framework for taglib writers to develop plugins to Jasper
that will do the actual optimization.  Eventually, Jasper will be
bundled with 1 or 2 plugins for JSTL, as test cases for the framework
and as examples for writing the plugins.

The plugins are specified in a xml file:

        <tag-plugins>
            <tag-plugin>
                <tag-class>the name of the tag class</tag-class>
                <plugin-class>the name of the pkugin class</plugin-class>
            </tag-plugin>
        <tag-plugins>
        
There are currently 3 interfaces:

TagPluginFactory
   Used for creating a TagPlugin.
   
TagPlugin
   Created at code generation time for a specific tag invokation.  Used
   by Jasper to generate java codes.
   
TagPlugContext
   Created by Japser and used by the plugin to query properties of
   the current tag, and to use resources in Jasper.
   
This work is at the very early stage of the design, and is purely
experimental.  I'll be checking in sources for this work, and they
should not affect the other part of Jasper, when plugins are not
turned on.

I welcome comments and suggestions.


--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to