JEP: Title: Updating JAXP to Xerces 2.11.0 Author: Joe Wang Organization: Oracle Created: 2014/01/24 Type: Feature State: Draft Exposure: Open Component: core/libs Scope: SE JSR: TBD RFE: Discussion: core dash libs dash dev at openjdk dot java dot net Start: 2014/Q1 Effort: L Duration: L Template: 1.0 Internal-refs: Oracle:A360: Reviewed-by: Alan Bateman, Roger Riggs, Lance Andersen Endorsed-by: Funded-by: Release: 9 Target: 06/01/15 Summary ------- Upgrade the Xerces implementation in the JDK to Xerces 2.11.0, which synchronizes the JDK with the current code base of Apache Xerces. Goals ----- The JDK contains an older Xerces implementation, version 2.7.1. Although there were updates in JDK 7 to bring in some changes, we did not bring it completely up to date to any later release. The goal of this JEP is to complete the update and bring the JDK to Xerces' latest release, 2.11.0. Non-Goals --------- The Xerces implementation in the JDK contains many changes and improvement that are JDK specific on top of version 2.7.1. It is not a goal to completely synchronize the JDK codebase with that of Apache Xerces. Motivation ---------- Upgrading to the latest Apache release would greatly improve the quality of the JDK implementation as demonstrated by JDK7 during which the most important bug fixes in Xerces and all of changes in Xalan were brought over. The JDK currently has all of the critical fixes up to Xerces 2.10. However,since the update was partial, we were unable to update the implementation version. Completing the update would allow us to do so, eliminating any confusion while keeping JDK up to date. Description ----------- Upgrade JAXP to the following standards that Xerces 2.11.0 support: - W3C XML Schema 1.1 (Working Drafts, December 2009) - W3C XML Schema Definition Language (XSD): Component Designators (Candidate Recommendation, January 2010) - Element Traversal Specification (part of DOM Standards, recommendation in 2008) - OASIS XML Catalogs 1.1 Update JAXP with following changes from Xerces 2.11.0: - Implementation of the above standards; - All of the bug fixes since Xerces 2.7.1. Between Xerces 2.7.1 and 2.10.0, All of the blockers and critical fixes along with some major and minor fixes have been integrated into JDK 7. What is left are 97 major, 90 minor, and 14 trivial bug fixes; - Numerous revisions that were not recorded in the Xerces issue tracker. Testing ------- Relevant tests from Xerces will be brought over. New tests related to the standards described above will need to be added to JCK 9. New tests will need to be developed to ensure sufficient coverage of the changes so that there is good confidence in the compatibility. Significant testing will be required to ensure that the update described above will introduce no regressions in the existing implementation. Risks and Assumptions --------------------- The addition of the standard support, as listed above, was achieved by adding new properties. There were no significant changes to the API. Since the integration of Xerces 2.7.1 in JDK6, there have been many changes, improvement and feature additions made independent of the original Xerces Implementation, including the incorporation of the StAX implementation that shared and modified the scanner implementation from Xerces. Bringing over changes from Xerces therefore may introduce conflicts in the existing implementation. Some Xerces patches therefore, may need to be modified to resolve any conflicts that may arise. The assumption is that we will find relevant tests from the Xerces repository. However, there may not be sufficient tests for some changes, and there were changes that went directly into the repository without a bug id associated with them. There may be significant effort needed to add new tests. The update will be done in batches that will contain a number of bug fixes and revisions. Not every revision may have a corresponding test. Verification will in such cases be done by running all existing tests. Impact ------ - Other JDK components: Components such as JAX-WS may be affected. Intermediate JDK builds should be tested to assess any impact on these components. - Java EE components: Java EE components such as JAX-WS may be affected. Intermediate JDK builds should be made available for EE to run compatibility tests. - Compatibility: New standard support, such as W3C XML Schema 1.1, will added with the update. However, the implementation will remain compatible with older standard such as W3C XML Schema 1.0. Full verification will be done periodically to ensure compatibility. - I18n/L10n: Some new error messages will need to be translated. - JCK: New tests will need to be added.