Release News

The current production download code is the version 1.1.6a release. This is a minor correction to the 1.1.6 release, which fixes two particular issues: Paths on Windows were handled incorrectly in 1.1.6, leading to failures when default values were specified for primitive values, and the starter project sample had an error in the "bind" Ant task definition. It includes all the other features of 1.1.6, with many fixes and several enhancements to earlier releases in the 1.1.X series. See the Changes section for the most important changes, and the changes.txt file in the distribution for more details.

Incompatibility Note: The 1.1.6 release introduced a backward-incompatible change to the actual binding factory structure. If you compile a binding using the 1.1.6 or later binding compiler and then try to use the bound classes with an older runtime you'll get an error like:


Unable to access binding information for class xxx.xxx.xxx.Xxx
Make sure classes generated by the binding compiler are available at runtime

This change was necessary to solve a problem with very large binding definitions, which previously could create methods in the generated factory class which were larger than the JVM limit. With this change in place, there should be no practical limit on the size of bindings.

Status

The 1.2 release of JiBX is largely complete, with documentation the main piece that still needs work. The 1.2 focus is on improving tool support. It includes updated and enhanced versions of the binding generator, schema generator, and code generator from schema. The first 1.2 beta release will be in June, 2008.

JiBX/WS, a full-featured replacement for the JibxSoap demonstration project, is also nearing release. JiBX/WS brings exciting new features for developers using JiBX with web services, including first-class support for both REST and POX web services, as well as SOAP, and substantial performance benefits as compared to other frameworks. The first JiBX/WS beta release will be available in June, 2008.

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 September, 2008.

Changes from earlier versions

The 1.1.6 production release adds new features and fixes a number of problems found with earlier versions in the 1.1.X series, including:

  • Fixed handling of abstract <mapping> with no content or attributes present.
  • Corrected problem with adding constructor to mapped user interfaces when add-constructors="true".
  • Added enum-value-method='...' option to support Java 5 enums with values which don't match the names (using the defined method to get the actual text value from an enum instance).
  • Corrected binding validation problem where using the same <mapping> name in different namespaces reported a duplicate name error.
  • Fixed problems with nillable="true" and optional="true" combination on a <value> element, and also with primitive values which are nillable and/or optional.
  • Fixed problems with file path names using a period, and with binding file names including characters not allowed in Java identifiers.
  • Improved the documentation with new tutorial sections on Using inner classes and Using enumerations, as well as adding some missing attributes to the binding detail descriptions.
  • Updated the binding.dtd and binding.xsd definitions (in the docs directory of the distribution) with corrections and added attributes.

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.