Changes for release 2.6 (tag release-2.6.0):

- Added the ReadWriteLock interface and the
  WriterPreferenceReadWriteLock class.
- Added the Resources and NotFoundException classes.
- Added the MessageFactory class.
- Added the LocaleOptions class.
- Added more methods to StreamUtils.
- Added more methods to ArrayUtils.
- Added new constructors to Attributes.
- Added the locale prefix to StreamUtils.open.
- Fixed an error in StringUtils.printf that was causing negative
  floating point values to be printed incorrectly.
  

Changes for release 2.5 (tag release-2.5.0):

- Added the EqualToEvaluator, GreaterThanEvaluator,
  GreaterThanOrEqualToEvaluator, LessThanEvaluator,
  and LessThanOrEqualToEvaluator classes.
- Added the Counter class.
- Deprecated the ComparisonEvaluator class.


Changes for release 2.4:

- Added more methods to the ArrayUtils class.
- Added more methods to the Finder class.
- The ConsoleLogger command line arguments are now case-insensitive.
- Moved the repository to subversion. (2.4.1)


Changes for release 2.3:

- Added more constructors to the Attribute class.
- Added more methods to the Finder class.
- Added more methods to the StreamUtils class.
- Reduced the warning level of a logging message in StreamUtils.open.


Changes for release 2.2:

- Fixed ConsoleLogger so it handles the ALL option.


Changes for release 2.1 (cvs rtag rel-2-1):

- Removed CertTestApp and HashTestApp.  (merge from rel-2-0-1)
- Fixed an error in DocumentUtils that was causing the namespace to be
  set in some attributes but not others.  Now namespaces are not set
  in any attributes.  (merge from rel-2-0-2)
- Fixed XMLUtils.parseDocument so it handles namespaces properly.
  (merge from rel-2-0-3)
- Fixed ObjectFactory.call() so it searches the parent classes for methods
  as well as the current class.
- Fixed ObjectFactory.newInstance(Object, String) so that it will check
  parent classes as well as the current class.
- Rewrote NodeUtils.clone() to use Document.importNode when appropriate.
- Modified XMLUtils.parseDocument() to include comments and whitespace.
- Added the ArrayIterator class.
- Added the EnumerationIterator class.
- Added the NamedNodeMapIterator class.
- Added the XmlPrettyPrinter class.
- Added the ConsoleLogger class.
- Added the UnionCollection class.
- Added the ReverseList class.
- Added the EmptyIterator class.
- Added the Tree interface and related classes.
- Added the Transform interface and StringTransform and MapTransform
  classes.
- Added the CollectionUtils class.
- Added more methods to the NodeUtils class.
- Added more methods to the ObjectFactory class.
- Added more methods to the Finder class.
- Added more methods to the ArrayUtils class.
- Added more methods to the FileUtils class.
- Added more methods to the StringUtils class.
- Deprecated the EmptyCollection, EmptyList, EmptyMap, and EmptySet
  classes.  You should use the EMPTY_LIST, EMPTY_MAP, and EMPTY_SET
  fields of java.util.Collections instead.  These classes will be
  removed in release 3.0.
  

Changes for release 2.0 (cvs rtag rel-2-0):

- Improved some of the javadocs.
- Fixed the LexicographicalComparator to handled null values properly.
- Added the DOMSAXListener class.
- Added the NodeComparator class.
- Added the NodeListIterator class.
- Added the NodeUtils class.
- Added the NodeTypeEvaluator class.
- Added the NodeSublist class.
- Added Hasher interface and HasherFactory class.
- Added XMLUtils.parseDocument method.
- Added SQLUtils.rollback method.
- Added DocumentUtils.newDocument method.
- Added more DocumentUtils.newElement methods.
- Removed the XMLUtils.parse methods.  Use XMLUtils.parseDocument instead.
- Removed the XMLUtils.parseDate method.  Use XMLDateFormat instead.
- Removed the XMLUtils.toDateString method.  Use XMLDateFormat instead.
- Removed the XMLUtils.toDateTimeString method.  Use XMLDateFormat instead.
- Removed the XMLUtils.toTimeString method.  Use XMLDateFormat instead.
- Removed the CertUtils.getX509Certificate(byte[]) method, use
  CertUtils.getX509Certificate(InputStream) instead.
- Removed the CertUtils.getX509Certificate(String) method, use
  CertUtils.getX509Certificate(InputStream) instead.
- Removed the HashUtils class.  Use the Hasher interface and the
  HasherFactory class instead.
  

Changes for release 1.5 (cvs rtag rel_1_5):

- Fixed a problem in the DOMInserter class that was causing problems if
  you inserted the root element followed by an immediate child of the
  root.
- Fixed a NullPointerException in SQLUtils.exists.
- Modified StringUtils.printf to output a truncated value when appropriate.
- Improved some of the javadocs.
- Added a PooledDataSource class.
- Added an XMLDateFormat class.
- Added a new XMLWriter class for writing generic XML documents.
- Added a NodeIterator class for iterating over Document objects.
- Renamed previous XMLWriter class to XMLObjectWriter.
- Deprecated the XMLUtils parseDate, toDateString, toDateTimeString,
  and toTimeString classes.  Use the new XMLDateFormat class instead.


Changes for release 1.4 (cvs rtag rel_1_4):

- Moved the cc.kss.sci packages to a separate kss-sci library.
- Added a FileUtils class.
- Added an XPathUtils class.
- Added a LexicographicalComparator class.
- Added more methods to DocumentUtils.
- Deprecated XMLUtils.parse(String).  Use StringUtils.open() combined with
  XMLUtils.parse(InputStream) instead.


Changes for release 1.3 (cvs rtag rel_1_3):

- Added a build.xml ant script to assist with building deployments.
- Added SAXListener and SAXListenerHandler classes to make it easier to
  deal with portions of XML files.
- Added StringUtils.empty() to check for empty strings.
- Added XMLUtils.asMap() to convert an Attributes object to a Map.
- Added a convenience function to XMLHandler for dealing with attribute names.
- Added an ObjectIdEvaluator class.
- Added a TypeEvaluator class.
- Modified the indenting of the XMLWriter to use a cleaner API.
- Modified the XMLParser to be namespace aware.
- Improved the sensitivity of the Checkpoint timing.


Changes for release 1.2 (cvs rtag rel_1_2):

- Added an XMLWriter base class.
- Added a compare method to the StringUtils class.
- Added a Reporter class for generating reports from Collections.
- Added an AllEvaluator and AnyEvaluator.
- Added more constructors to the Attribute class.
- Added an empty() method to the Stack interface.
- Added close() methods to StreamUtils and SQLUtils.
- Improved the exception messages for StreamUtils.open().
- Removed the cc.kss.gui package, moving all its classes into a separate kss-gui
  library.
- Modified StreamUtils.open() to assume a url type of file if no url type is
  specified.
- Moved the random number classes from cc.kss.sci.statistics into
  cc.kss.sci.math and removed the cc.kss.sci.statistics package.  A statistical
  analysis package is being developed as a separate kss-stat library.
  

Changes for release 1.1:

- Added javadoc overview comments for the library and for each package.
- Added a SmallList class for viewing a small number of items as a list.
- Added a ResultSetEnumeration class for viewing a ResultSet as an Enumeration.
- Added more methods to the XMLUtils class.
- Added more methods to the SQLUtils class.
- Improved a number of the javadoc comments.
- Fixed an error in Sorter.orderedCollection() which was causing duplicate
  values to be removed.


Changes for release 1.0 (cvs rtag rel_1_0):

(Note: This is the first truly public release.)
- Renamed all packages from ca.kss to cc.kss to reflect the
  officially registered domain name of kss.cc.
- Added a DocumentUtils class to assist in creating DOM elements.
- Added a base-32 encoder.
- Added more methods to the SQLUtils class.
- Added more methods to the XMLUtils class.
- Added an SQLThread class for executing SQL statements in the background.
- Added a MatchesEvaluator class for dealing with regular expressions.
- Removed the Encoder.getInstance() method deprecated in release 0.3.
- Removed the StringUtils.trim() method deprecated in release 0.2.
- Changed the Encoder abstract class to an interface.


Changes for release 0.4 (cvs tag rel_0_4):

- Added a SystemUtils class.
- Added methods to XMLUtils to convert to and from DOM elements.
- Added some preliminary use of the built-in Logger class.
- Added a Sorter and Finder class and some related functionals.
- Added more methods to the StringUtils class.
- Added a DaemonThread class and a background method to the thread package.
- Added a method to StreamUtils to allow different types of streams to be
  opened using a single URL-like interface.
- Added a Stack interface and implementations.
- Added the ability to deal with non-option style arguments in the OptionParser.
- Removed some unneeded import statements.
- Improved the error reporting in the ObjectFactory.
- Increased the warning level of the Eclipse compiler and made some minor
  improvements in the code as a result.
- Made a number of static items in XMLUtils final.
- Made the Processor methods public.


Changes for release 0.3 (cvs tag rel_0_3): 

- Added an EncoderFactory class and a base02 (binary) encoder.
- Added an ObjectFactory class to make it easier to construct classes and
  call their methods.
- Added escape() and unescape() to the StringUtils class.
- Added escape() and unescape() to the XMLUtils class.
- Added toDateString(), toTimeString(), and toDateTimeString() to
  the XMLUtils class.
- Added methods to the XMLUtils class to allow quick substring searches
  based on tag names.
- Fixed an error in Pair.equals that was causing p.equals(p2) to fail
  in some instances.
- Fixed an error in the OptionSpecification that was causing default
  values to be ignored.
- Updated the date parsing in XMLUtils to make it more robust.
- Deprecated the Encoder.getInstance() method - to be removed in 0.4.
- Optimization: StringUtils.equal() method now checks for equal references
  before using the slower string comparison.



Changes for release 0.2 (cvs tag rel_0_2):

- Started a gui package.
- Started a util.sql package.
- Started a util.http package by moving in some old 'klassens' code.
- Started a util.security package by moving in some old 'klassens' code.
- Started a sci.statistics package by moving in some old 'klassens' code.
- Added more classes to the util.container package.
- Added more classes to the util.functional package.
- Added more classes to the util.thread package.
- Added more methods to the ArrayUtils class.
- Added more methods to the MapUtils class.
- Added more methods to the StreamUtils class.
- Added more methods to the StringUtils class.
- Renamed the sci.geo package to sci.geophysics.
- Fixed a NullPointerException which was occurring in the OptionParser class.
- Fixed an error in the ImmutableListIterator declaration.
- Merged a number of the test programs into more common ones.
