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


<div align="center">
<h1>The Jakarta Commons <em>Lang</em> Component</h1>
$Id: STATUS.html,v 1.22.2.1 2002/11/23 02:53:33 bayard Exp $<br />
<a href="#Introduction">[Introduction]</a>
<a href="#Dependencies">[Dependencies]</a>
<a href="#Release Info">[Release Info]</a>
<a href="#Known Issues">[Known Issues]</a>
<a href="#Action Items">[Action Items]</a>
<a href="#Committers">[Committers]</a>
<br /><br />
</div>


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

<p>The <em>Lang</em> Component contains a set of Java classes that provide
helper methods for standard Java classes, especially those found in the 
java.lang package in the Sun JDK.
The following classes are included:</p>
<ul>
<li><strong>StringUtils</strong> - Helper for java.lang.String.</li>
<li><strong>CharSetUtils</strong> - Methods for dealing with CharSets, which are sets of characters such as [a-z] and [abcdez].</li>
<li><strong>RandomStringUtils</strong> - Helper for creating randomised Strings.</li>
<li><strong>NumberUtils</strong> - Helper for java.lang.Number and its subclasses.</li>
<li><strong>NumberRange</strong> - A range of numbers with an upper and lower bound.</li>
<li><strong>ObjectUtils</strong> - Helper for java.lang.Object.</li>
<li><strong>SerializationUtils</strong> - Helper for serializing Objects.</li>
<li><strong>SystemUtils</strong> - Utility class defining the Java system properties.</li>
<li><strong>NestedException package</strong> - A sub-package for the creation of nested exceptions.</li>
<li><strong>Enum package</strong> - A sub-package for the creation of enumerated types.</li>
<li><strong>Builder package</strong> - A sub-package for the creation of equals, hashCode, compareTo and toString methods.</li>
</ul>


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

<p>The <em>Lang</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><a href="http://www.junit.org">JUnit Testing Framework</a>
    (Version 3.7 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: 
<a href="http://jakarta.apache.org/builds/jakarta-commons/release/commons-lang/v1.0.1">Version 1.0.1</a>
</p>

<p>Planned Next Release:  
A 1.1 will be released after a undefined period of development. 
</p>


<a name="Known Issues"></a>
<h3>4.  KNOWN ISSUES</h3>
<p>
<ul>
<li>CharRange.UNSET - will have problems if we introduce reverse ranges that go down to \u0000.</lI>
<li>Null effects - the classes are not standardised in how they handle null.</li>
</ul>
</p>


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

<p>Want to help?  Here's some "to do" items the team has identified. Note that all are
still under discussion, so please mail the list before actioning.</p>
<ul>
<li>Reflection utilities - new sub-package to deal with reflection</li>
<li>Operating system information - maybe part of SystemUtils, maybe another project</li>
<li>MathUtils - possible addition of mathmatics helper. Could go in NumberUtils</li>
<li>CalendarUtils - possible addition of a calendar utility class (from Serge Knystautas)</li>
<li>CloneUtils - utility class to enable cloning via various different mechanisms. This code exists in [pattern] at present.</li>
<li>StringUtils truncateNicely method - A substring with some extra power to choose where to cut off. It was in Avalon and was added separately to String Taglib from a code submission. This suggests it may have some commonality. [CODED]</li>
<li>StringUtils parseBoolean method - This method is in OSCore's TextUtils and seems very reusable. It could go in a BooleanUtils if such a need was seen. [CODED]</li>
<li>StringUtils uncapitaliseAllWords method - String Taglib has shown that this method is missing from StringUtils. [CODED]</li>
<li>StringUtils unescape method - String Taglib has shown that this method is missing from StringUtils. It would take a String with "\n" in and convert it to the Java character. unescape and escape should be symmetric. </li>
<li>StringUtils defaultStirng(Object) method - simliar behavior to defaultString(String), returns obj.toString() if obj != null, "" otherwise
<li>StringUtils defaultString(Object, String) method - similar behavior to defaultString(String, String), returns obj.toString() if obj != null, specified string otherwise
<li>ArrayUtils - opinion seems to be that this belongs with [lang] and not [collections]
<li>GUID and other Identifier generators - these may belong in [util], some code exists in [pattern] at the moment
<li>CharUtils - Utilities to work on a char[] in the same way as a String
<li>AStringBuffer - A StringBuffer implementation with additional methods from StringUtils
<li>O(n) - Document all algorithm-implementing methods with the order. Possibly with an O(n) on the end of each parameterm or with an @order tag.</li>
</ul>


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

<p>The following individuals are the primary developers and maintainers of this
component.  Developers who plan to use <em>Lang</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:bayard@apache.org">Henri Yandell</a></li>
<li><a href="mailto:dlr@finemaltcoding.com">Daniel Rall</a></li>
<li><a href="mailto:scolebourne@joda.org">Stephen Colebourne</a></li>
<li><a href="mailto:steven@caswell.name">Steven Caswell</a></li>
</ul>

</body>
</html>
