0.1.0   2005-01-30
    * Initial version

0.1.1   2005-02-05
    * Java Beans style interface for sections and for ini too. You should pass
      interface to Ini.Section.to() (or Ini.to()) and you get a Java object
      implements passed interface on top of Ini.section (or Ini). Not only setXX
      and getXX works well, but property change listeners and vetoable change
      listeners also supported.

    * Variable substitution for option values. You can use ${section/option}
      style substitution expressions in any option value.

    * Reorganize XML parsing: now IniParser has parseXML method, which
      simply translate SAX callbacks to IniHandler callbacks

    * Create Convert class for unicode escape conversion: escape and unsecape
      methods.

0.2.1   2005-02-12
    * checked in to CVS CVSROOT: :ext:cvs.sourceforge.net/cvsroot/ini4j/main

    * documentation reorganization: footer navigation bar added

    * ini4j.org domain registered, java package names modified to org.ini4j

    * JUnit tests improved

    * Clover code coverage tool used

    * documentation English cleaned
   
0.2.2   2005-02-13
    * fixed logo png in CVS

    * support for webapps: IniPreferencesFactoryListener
      webapp can use /WEB-INF/user.ini and /ERB-INF/system.ini
      as user and system root preferences

0.2.3
    * fixed xhml bugs in documentation

    * set java.util.prefs.PreferencesFactory property in 
      IniPreferencesFactoryListener

    * fix AbstractBeanInvocationHandler#getProperty(), now it returns zero()
      if getPropertySpi() returns null

    * hasProperty method in AbstractBeanInvocationHandler: if interface has
      hasXXX method, it will return true if bean has XXX property.

0.2.4
    * removed some private constructor (cosmetic change)

    * added factory design pattern for IniParser class: it is
      possible now to change IniParser implementation at runtime:
      either "org.ini4j.IniParser" system property or
      META-INF/services/org.ini4j.IniParser file is the configuration point.
      This is conform with JAR specifications service definition.

      Thanx this to James Ahlborn and Steve Buschman. They are suggested some changes
      in IniParser. I disagree with the changes, but I made the possibility of changing
      IniParser without change Ini4j source :)

    * added org.ini4j.addon package for optional classes.

    * added org.ini4j.addon.FancyIniParser as alternate parser with following features:
      - option without = operator mean empty option
      - empty section names [] mean empty string as section name
      - first section tag ([name]) is optional, by default it is same as []
      - section and/or option names may be converted to lowercase while parsing

0.2.5

    * As per many programmers request, finally [ini4j] backported to JDK 1.4.
      There is a ini4j-compat.jar and retroweaver-rt*.jar in distribution directory.
      These 2 jar need for JDK 1.4 to use [ini4j]. Every JUnit test run successfully,
      so I'm sure that [ini4j] work correctly with JDK 1.4 (JUnit test coverage ~ 98% :)

      I like retroweaver tool, so I'd like to mentoin here: retroweaver.sorceforge.net
      and forked project (I used for ini4j) retroweaver-ng.sourceforge.net

0.2.6

    * Refactored code for customization: Ini, IniPreferences, IniParser now also handle URL
      as input. It makes possible to create C like #include directive at IniParser level,
      when using URL as input source.

    * Added include feature to FancyIniParser: <location> mean: '<' and '>' token, location
      is either relative or absolute URL of include file. Unlimited level of includes allowed.
      Relative URLs only allowed, when container file loaded via URL (not via stream or reader).
 
    * IniFile got getMode() and getFile() accessor methods.

    * PreferencesWrapper class in addon package to support decorator design pattern 
      for java.util.Preferences objects.

    * StrictPreferences decorator class, which has getXXX methods without default parameter,
      and throws java.util.NoSuchElementException on missing values instead of returning default
      value.

