Description
Problem: Service provider adds an optional element to the responses it sends, assuming client can handle, while client is unaware and has not (or cannot) retrieve updated WSDL and regenerate client. Axis2 client generated with ADB, cannot handle and throws an exception.
Solution:
Optional "Ignore Unexpected Elements" mode for wsdl2java using adb - allows for forward-compatible clients that can recover from unxpected elements in service responses.
Based on the work in Issue 3037 - This patch is more up to date, is for both trunk and 1_5 branch, handles more scenarios, and will correctly parse the portion of the response after the unexpected element.
To use, pass the "-Eiu" parameter to wsdl2java
Handles the following scenarios:
1) unexpected element in a xsd:choice, xsd:any, xsd:all
2) appended unexpected element in a xsd:sequence.
For xsd:sequence, the unexpected element, and subsequent elements within that sequence are not captured. If a service adds a new element within a sequence, it should be appended, as the generated client is strict with ordering, and can't differentiate an out-of-order sequence from an additional inserted element.
Attachments
Attachments
Issue Links
- is duplicated by
-
AXIS2-3037 'RuntimeException: Unexpected subelement' when wsdl adds a new property
- Resolved
- is related to
-
AXIS2-5273 Allow forward-compatibility by ignoring unexpected enumeration values
- Resolved