<html>
<head>
<title>Status File for Jakarta Commons "Digester" Component</title>
<head>
<body bgcolor="white">


<div align="center">
<h1>The Jakarta Commons <em>Digester</em> Component</h1>
$Id: STATUS.html,v 1.6 2003/02/02 19:31:38 rdonkin Exp $<br>
<a href="#Introduction">[Introduction]</a>
<a href="#Dependencies">[Dependencies]</a>
<a href="#Release Info">[Release Info]</a>
<a href="#Committers">[Committers]</a>
<a href="#Action Items">[Action Items]</a>
<br><br>
</div>


<a name="Introduction"></a>
<h3>1.  INTRODUCTION</h3>

 <p>
 This scope of the <em>Digester</em> component is primarily
 oriented to  XML -> Java object mapping.
 </p>
 <p>
  A <em>Digester</em> processes an XML input stream by matching a
  series of element nesting patterns to execute Rules that have been added
  prior to the start of parsing.  This package was inspired by the
  <code>XmlMapper</code> class that was part of Tomcat 3.0 and 3.1,
  but is organized somewhat differently.
 </p>

 <p>
  The original source was donated by the
  <a href="http://jakarta.apache.org/struts">Struts Framework</a> subproject.
 </p>


<a name="Dependencies"></a>
<h3>2.  DEPENDENCIES</h3>

<p>The <em>Digester</em> component is dependent upon the following external
components for development and use:</p>
<ul>
<li><a href="http://java.sun.com/j2se">Java Development Kit</a>
    (Version 1.2 or later)</li>
<li><strong>XML Parser</strong> compatible with the JAXP/1.1 specification.
    Examples compatible implementations include:
    <ul>
    <li><a href="http://java.sun.com/xml">JAXP/1.1 Reference Implementation</a></li>
    <li><a href="http://xml.apache.org/xerces-j">Xerces</a> (Version 1.3.1 or later)</li>
    </ul></li>
<li><a href="http://jakarta.apache.org/jakarta-commons/beanutils/">Jakarta Commons BeanUtils</a></li>
<li><a href="http://jakarta.apache.org/jakarta-commons/collections/">Jakarta Commons Collections</a></li>
</ul>


<a name="Release Info"></a>
<h3>3.  RELEASE INFO</h3>

<p>Current Release: Version 1.4</p>


<a name="Committers"></a>
<h3>4.  COMMITTERS</h3>

<p>The following individuals are the primary developers and maintainers of this
component.  Developers who plan to use <em>Digester</em> in their own
projects are encouraged to collaborate on the future development of this
component to ensure that it continues to meet a variety of needs.</p>
<ul>
<li><a href="mailto:craigmcc@apache.org">Craig McClanahan</a></li>
<li>Rodney Waldhoff</li>
<li><a href="mailto:sanders@apache.org">Scott Sanders</a></li>
<li><a href="mailto:geirm@apache.org">Geir Magnusson Jr.</a></li>
<li><a href="mailto:rdonkin@apache.org">Robert Burrell Donkin</a></li>
</ul>

<a name="Action Items"></a>
<h3>5.  ACTION ITEMS</h3>

<p>The following action items need to be completed prior to a Version 1.2
release of this component:</p>

<table border="1">

  <tr>
    <th width="80%">Action Item</th>
    <th width="20%">Volunteer</th>
  </tr>

  <tr>
    <td><strong>Feedback from logging</strong>.  Let us know how the logging API
    is working for you.
    <td align="center">YOU ;-)</td>
  </tr>

  <tr>
    <td><strong>Install / Use Documentation</strong>.  Create simple
        installation and User's Guide documentation for this component.</td>
    <td align="center">Craig</td>
  </tr>

</table>



</body>
</html>
