blob: bc0858eedef88cc52a91ed2adffa743e22d98c0d [file] [log] [blame]
<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.33 2003/02/02 09:10:24 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
a basic set of common utility code on top of the standard Java classes.
The following principal classes are included:</p>
<ul>
<li><strong>Main package</strong> - A package for the manipulation of basic Java classes
<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>BooleanUtils</strong> - Helper for boolean and java.lang.Boolean.</li>
<li><strong>NumberUtils</strong> - Helper for java.lang.Number and its subclasses.</li>
<li><strong>ObjectUtils</strong> - Helper for java.lang.Object.</li>
<li><strong>ArrayUtils</strong> - Helper for manipulating arrays.</li>
<li><strong>ClassUtils</strong> - Helper for manipulating java.lang.Class objects.</li>
<li><strong>SerializationUtils</strong> - Helper for serializing Objects.</li>
<li><strong>SystemUtils</strong> - Utility class defining the Java system properties.</li>
</ul>
<li><strong>Builder package</strong> - A package for the creation of equals, hashCode, compareTo and toString methods.
<ul>
<li><strong>ToStringBuilder</strong> - Helper for building toString methods.</li>
<li><strong>EqualsBuilder</strong> - Helper for building equals methods.</li>
<li><strong>HashCodeBuilder</strong> - Helper for building hashCode methods.</li>
<li><strong>CompareToBuilder</strong> - Helper for building compareTo methods.</li>
</ul>
<li><strong>Enum package</strong> - A package for the creation of enumerated types.
<ul>
<li><strong>EnumUtils</strong> - Helper for manipulating enumerated types.</li>
<li><strong>Enum</strong> - Abstract superclass for enumerated types to extend.</li>
<li><strong>ValuedEnum</strong> - Superclass for enumerated types with an integer constant.</li>
</ul>
<li><strong>Exception package</strong> - A package for the creation and manipulation of nested exceptions.</li>
<ul>
<li><strong>ExceptionUtils</strong> - Helper for manipulating exceptions.</li>
<li><strong>NestedException</strong> - An exception that supports a nested exception.</li>
<li><strong>NestedRuntimeException</strong> - An exception that supports a nested exception.</li>
<li><strong>NestedError</strong> - An exception that supports a nested exception.</li>
</ul>
<li><strong>Functor package</strong> - A package for basic f(x) type functions.
<ul>
<li><strong>Predicate</strong> - f(x) that evaluates an Object and returns a boolean.</li>
<li><strong>PredicateUtils</strong> - Implementations of most commonly required predicates.</li>
<li><strong>Transformer</strong> - f(x) that transforms one Object into another.</li>
<li><strong>TransformerUtils</strong> - Implementations of most commonly required transformers.</li>
<li><strong>Executor</strong> - f(x) that receives an Object and executes an action.</li>
<li><strong>ExecutorUtils</strong> - Implementations of most commonly required executors.</li>
<li><strong>Factory</strong> - f(x) that creates an Object.</li>
<li><strong>FactoryUtils</strong> - Implementations of most commonly required factories.</li>
</ul>
<li><strong>Math package</strong> - A package for simple business (not scientific) maths classes.
<ul>
<li><strong>Range</strong> - A range of numbers.</li>
<li><strong>Fraction</strong> - A fraction.</li>
</ul>
<li><strong>Util package</strong> - A package for common useful utilities.
<ul>
<li><strong>BitField</strong> - A class to assist with manipulating bits.</li>
<li><strong>IdentifierUtils</strong> - Implementation of various identifier factories.</li>
<li><strong>Validate</strong> - A class to simplify method argument validation.</li>
</ul>
</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">Version 1.0</a>
</p>
<p>Planned Next Release:
A 2.0 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 as possibly being in scope for Lang. Note that all are still under discussion, so please mail the list before actioning.</p>
<ul>
<li>Reflection utilities - work underway in reflect package.</li>
<li>Operating system information - maybe part of SystemUtils, maybe another project</li>
<li>Maths utils - possible addition of mathmatics helper.</li>
<li>Date and Calendar utils - work underway in time package.</li>
<li>DateRange</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 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 - [DONE. Test symmetry] </li>
<li>StringUtils performance improvements. </li>
<li>StringUtils.reverseSplit(String, String delim, int count). Should basically be a 'reverseArray(reverseDelimitedString(split(txt, delim, count)))</li>
<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>
<li>Money and Currency</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>
<li><a href="mailto:rdonkin@apache.org">Robert Burrell Donkin</a></li>
</ul>
</body>
</html>