Overview

As explained in commit a247b83cd9c9aefd3c329d493c5ce7cd11d0cdfa, the XppDriver from XStream relies on the XPP3 library which publishes javax.xml.namespace.QName as part of its JAR. The QName type is also published by the java.xml system module in modular JREs (i.e., Java 9 or higher).

This results in a split package between the unnamed module and the java.xml system module, which the Java Language Specification defines as illegal (see §6.5.5.2 and §7.4.3).

Most Java compilers do not currently enforce this rule; however, the Eclipse compiler does. This makes it impossible to use spring-oxm out-of-the-box in the Eclipse IDE. In addition, if bug JDK-8215739 is fixed in a future version of OpenJDK, this rule will affect all users of spring-oxm.

In light of that, the team has decided to switch the default driver in XStreamMarshaller from XppDriver to DomDriver. Users can naturally switch back to the XppDriver if they wish, since the defaultDriver is configurable.

Deliverables

  • [x] Change default driver in XStreamMarshaller from XppDriver to DomDriver.
  • [x] Revert related changes in a247b83cd9c9aefd3c329d493c5ce7cd11d0cdfa.