Release News

The current production download code is the version 1.1.5 production release. The last prior production distribution was version 1.1.3 - version 1.1.4 was only distributed as jar files, and the changes from this version has been incorporated into 1.1.5.

Status

Work is getting started on a 1.2 release of JiBX which focuses on improving the tool support. This will include updated and enhanced versions of the binding generator, schema generator, and code generator from schema. These tools will also be used for a production-grade version of JibxSoap. The first 1.2 beta release is planned for July, 2007.

Work is also starting on JiBX 2.0. The main focus of the 2.0 changes is an entirely new code generation model, which is designed to support both direct bytecode generation (as in the 1.X code) and source code generation. The first beta release of JiBX 2.0 is planned for October, 2007.

Changes from earlier versions

The 1.1.5 production release corrects several code generation failures, and also provides support for namespaces used in abstract <mapping>s. It is a recommended upgrade for all JiBX users.

The 1.1.3 production release fixed several problems found in the 1.1 release, including:

  • Corrected a pair of problems with nested unordered groups, which resulted in exceptions during code generation.
  • Changed child component order under <binding> element to namespace, format, include, in order to allow namespaces to be applied to included bindings, and formats from includes to be used in the including binding.
  • Fixed handling of abstract mappings with attributes (with or without content), and also fixed namespace declarations for abstract mappings.
  • Fixed problem with abstract base mapping use in unordered collection failing code generation (stack size mismatch)
  • Fixed add-constructors='true' option to make existing default constructors accessible, and to add superclass default constructors where necessary.
  • Corrected a problem in working with arrays of longs or doubles which could result in modified classes failing JVM validation.
  • Changed default JiBX build Ant target to build the full distribution with debug information included, added a new "small-jars" target to compile and jar without debug information.
  • Loosened some overly-stringent checks during binding validation.

The 1.1 production release added several major new features to those supported by the 1.0.x releases, including:

  • Support for StAX parsers and writers as an alternative to the default XMLPull parser (see StAX support for details on using this).
  • Compatibility with the Apache Axis2 web services framework.
  • Support for "flexible" unmarshalling, where unknown elements are ignored within unordered groups (using the new flexible attribute in the structure attribute group).
  • Allow the use of required elements within unordered groups, with runtime exceptions if the elements are not present when unmarshalling.
  • Detection of duplicated element errors within unordered groups (and the option of disabling this using the new allow-repeats attribute in the structure attribute group)
  • Added direct support for using Java 5 enum types as values.
  • Provided an option to add no-argument constructors to bound classes if not already present (the new add-constructors attribute of the binding element).
  • Added an easy way to specify the type of instance to be created for an interface or abstract class when unmarshalling (using the new create-type attribute in the object attribute group).
  • Added support for the ugly-but-useful W3C XML Schema nillable kludge, allowing elements to be included in instance documents to represent null values (using the new nillable attribute in the object attribute group).
  • Changed the mapping element type-name attribute, the structure element map-as attribute, the format element label attribute, and the value element format attribute to be namespace-qualified values. To support this change the names of the built-in conversion formats had to be changed.
  • Provided J2ME compatibility, with new "j2me" build target to build J2ME version of the distribution jars.
  • More checking for possible errors during validation of the binding definition.

Some of these new features (including the changed names for the built-in format definitions, and the changed default behavior to throw an exception when a bound element in an unordered groups is repeated) may cause problems for existing bindings that worked on JiBX 1.0.x. Users with custom marshallers/unmarshallers which rely on namespace index values may also be effected by the xsi:nil support change, which added the schema instance namespace at a fixed position in the table of namespaces (index #2). I apologize for breaking full compatibility, but felt that these changes were important enough for the future to justify the inconvenience to current users.

See the Bugs and Bug Reporting page for information about known issues and details of how to report problems.