Change log

0.3.2 (2008-02-17)

  • Fix file close problem: in some case IniFile and IniParser left files open. This cause file deletion problem on some OS.
  • Fix Unicode escape problem: \u sequences now generated correctly (4 character with leading zeros)

0.3.1 (2008-02-11)

  • Added maven repository support: http://www.ini4j.org/repository/release and http://www.ini4j.org/repository/snapshot

0.3.0 (2008-02-10)

  • Migration: CVS to SVN
  • Migration: Ant to Maven

0.2.6 (2005-11-29)

  • 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.

0.2.5 (2005-11-26)

  • 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.4 (2005-11-25)

  • 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.3 (2005-02-18)

  • 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.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.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.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.1.0 2005-01-30

  • Initial version