Apache Axiom 1.2.16 Release Note

Axiom 1.2.16 comes with the following new features:

  • OMSourcedElement support has been extended to DOOM. This is an important step towards full feature parity between LLOM and DOOM.

  • Axiom now ships a drop-in replacement for abdera-parser, so that the latest Axiom version can be used together with Abdera 1.1.3. See here for more details.

In addition, the sources can now be built with Java 8.

A list of other issues fixed in this release can be found here.

Changes in this release

  • The semantics of the OMInformationItem#getOMFactory() method have slightly changed in Axiom 1.2.16. In previous versions, getOMFactory() returned the OMFactory instance that was used to create the information item. This meant that e.g. on an OMText node created using a SOAPFactory instance, that method would return that exact same SOAPFactory instance. In Axiom 1.2.16, getOMFactory() returns the OMFactory or SOAPFactory instance corresponding to the type of information item. For plain XML information items created using one of the methods defined by OMFactory (such as OMText, OMAttribute, as well as OMElement instances that don’t implement any SOAP specific interfaces), this will always be the OMFactory instance returned by OMMetaFactory#getOMFactory() (and never a SOAPFactory instance). For information items created using one of the methods defined by SOAPFactory (i.e. OMElement instances implementing one of the SOAP interfaces, as well as SOAPMessage instances), nothing changes with respect to previous Axiom versions, and getOMFactory() will return the SOAPFactory instance corresponding to the SOAP version of the information item.

    The rationale for this change is that it allows to eliminate the factory attribute from all classes (except for the SOAPMessage implementations). It also enables significant simplification of the internal implementation code.

  • Some of the legacy default constructors have been removed from the OMFactory, SOAPFactory and OMMetaFactory implementations. Note that they were not part of the public API, but considered internal implementation details. Application code should always use the OMAbstractFactory APIs to get references to factory instances, and never refer to implementation classes directly.