blob: 8fb3c268f3fc2c6a66eeba98468340f9ba9f2237 [file] [log] [blame]
<?xml version="1.0"?>
<!--
Copyright 2002,2004 The Apache Software Foundation.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<document>
<properties>
<title>TODO</title>
<author email="jstrachan@apache.org">James Strachan</author>
</properties>
<body>
<section name="TODO">
<p>
The following is a list of items that need to be completed in
Jelly. Contributions are welcome!.
</p>
<section name="Core tasks">
<ul>
<li>Implementa a META-INF/services mechanism for mapping Jelly libraries to namespace URIs
in a similar way to how the commons-discovery and JAXP libraries work.
This would allow Jelly libraries to be distributed in a self contained JAR then just put
on the classpath and they'd be usable.
</li>
<li>
Implement a JJAR/Maven mechanism so that using a new Jelly library via a namespace URI would
automatically download the jar and its dependencies from some local/remote repository.
</li>
<li>Maybe add a Scope class to make it easier to plugin custom scopes such as
request, session, applicaiton, initParams, params, transation etc.
In a workflow setting this could also include transient and persistent scopes
</li>
<li>Write a JellyServlet so that Jelly can be used as a page templating system.
</li>
<li>Implement a HTML parser for Jelly, probably using NeckoHTML so that non-XML can be parsed
and tags with prefixes can be bound to Jelly tags.
</li>
<li>write a Cocoon JellyGenerator so that Jelly scripts can be used easily inside Cocoon</li>
<li>consider implementing a Jelly Doclet so that Jelly can be used to code generate
stuff from javadoc tags in a similar way to XDoclet but making use of the JSTL tags and
the Velocity like expression language (Jexl) which will avoid the need to use huge numbers
of tags.
</li>
<li>Rename the DynaTag interface to be DynamicAttributes along with JSP1.3,
also add a namespace URI parameter
</li>
<li>Add support for namespace URI use inside XPath expressions.</li>
<li>When defining new tags using &lt;define:tag&gt;, we should allow attributes to be named,<br/>
specified as required, specify the optional conditions and so forth for validating instances.<br/>
I guess this could just be normal script though.
</li>
<li>The org.apache.commons.jelly.impl package doesn't have a great name - <br/>
Can we think of a better one? <br/>
Also some of the classes in this package could maybe do with a rename? <br/>
ScriptBlock for example - should we just call it a Block or maybe a CompositeScript?
</li>
<li>Add an adapter to run JSP tag libraries inside Jelly when Jelly is used in a
Servlet / JSP environment?
</li>
<li>Document much more!</li>
</ul>
</section>
<section name="Ideas for new tag libraries">
<ul>
<li>
An XSD tag library that can be used to parse XSD documents and create DynaBeans from the complex types.
<pre>
&lt;xsd:element name="MyDynamicClass"&gt;
&lt;xsd:complexType&gt;
...
&lt;/xsd:complexType&gt;
&lt;/xsd:element&gt;</pre>
Also we could consider using class names or XSD type names to do conversions of values, maybe using
the ConvertUtils class in beanutils.
</li>
<li>conside a tag library which implements the <a href="http://stx.gingerall.cz/stx/index.html">STX</a>
specification for the SAX based transformation of XML. This is kinda like XPath and XSLT but is based
purely on a SAX stream. Maybe we could wrap <a href="http://www.obqo.de/joost">Joost</a>
in a Jelly tag library
</li>
<li>Implement a Schematron tag library for validing XML using a path based approach, rather than schema based.</li>
<li>
Provide support for running a piece of Jelly script remotely. This would be particularly useful for distributed
testing. Maybe integrating or enhancing something like
<a href="http://sourceforge.net/projects/remoteant">rant</a>
</li>
</ul>
</section>
<section name="Changes to existing tag libraries">
<ul>
<li>Add JSL test cases to test for ordering of patterns and that the correct output comes out.</li>
</ul>
</section>
<section name="Ponder about">
<p>
The following is a list of things that might be good to add to Jelly, maybe after more thought.
</p>
<ul>
<li>
maybe consider a tag which will switch the default EL to XPath; then XPath and EL can be peers. Then ${foo}
can be used as an XPath expression anywhere
</li>
<li>We could autogenerate XML Schemas or RelaxNG docs for tag libraries to help validate scripts</li>
<li>Patch TagLibrary to alias all &lt;mixedCase&gt; tags to &lt;mixed-case&gt; tags</li>
</ul>
</section>
</section>
</body>
</document>