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


<div align="center">
<h1>The Jakarta Commons <em>Collections</em> Package</h1>
$Id: STATUS.html,v 1.1 2001/04/14 15:39:00 rwaldhoff 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>The <em>Collections</em> package contains a set of Java classes that
extend or augment the Java Collections Framework.
The following classes are included:</p>
<ul>
<li><strong>CursorableLinkedList</strong> - an implementing of the java.util.List
    interface supporting a java.util.ListIterator that allows concurrent
    modifications to the underlying list.</li>
</ul>

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

<p>The <em>Collections</em> package 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><a href="http://www.junit.org">JUnit Testing Framework</a>
    (Version 3.2 or later) - for unit tests only, not required
    for deployment</li>
</ul>


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

<p>Current Release:  <strong>Unreleased, CVS Repository Only</strong></p>

<p>Planned Next Release:  TBD</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>Collections</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:donaldp@apache.org">Peter Donald</a></li>
   <li><a href="mailto:craigmcc@apache.org">Craig McClanahan</a></li>
   <li><a href="mailto:rwaldhoff@apache.org">Rodney Waldhoff</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.0
release of this component:</p>

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

  <tr>
    <td><strong>Additional Contributions</strong>.  Other collections
    classes from the existing Jakarta code base.</td>
    <td align="center">Craig<br>Peter</td>
  </tr>

  <tr>
    <td><strong>Generalized Unit Tests</strong>.  Create a generic
    set of Unit Tests that test the standard contracts of the basic
    Java Collections interfaces (List, Set, etc.)</td>
    <td align="center">Rod</td>
  </tr>

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

</table>

</body>
</html>
