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