From: Archie C. (JIRA) <ji...@co...> - 2010-09-28 22:00:38
|
JiBX fails when abstract type is used with flexible="true" ---------------------------------------------------------- Key: JIBX-402 URL: http://jira.codehaus.org/browse/JIBX-402 Project: JiBX Issue Type: Bug Components: core Affects Versions: JiBX 1.2.2 Reporter: Archie Cobbs Suppose I have these classes: {noformat} class Parent { public Child getChild(); } abstract class Child { public String getName(); } class Son extends Child { } class Daughter extends Child { } {noformat} and I want to handle XML that like this: {noformat} <parent> <son name="fred"> </parent> {noformat} or {noformat} <parent> <daughter name="sally"> </parent> {noformat} but I also want to allow and ignore other XML inside the <parent> tag using flexible="true". Even though JiBX can always recognize a "son" or "daughter" tag, it won't compile this binding: {noformat} <mapping name="parent" class="Parent" ordered="false" flexible="true"> <structure field="child"/> </mapping> <mapping abstract="true" class="Child"> <value name="name" field="name" style="attribute"/> </mapping> <mapping name="son" class="Son" extends="Child"> <structure map-as="Child"/> </mapping> <mapping name="daughter" class="Daughter" extends="Child"> <structure map-as="Child"/> </mapping> {noformat} You'll get this error: {quote}Error: All child components must define element names for flexible='true' {quote} If you don't use "extends" it works. So basically JiBX has two great features - extending abstract mappings and flexible="true", but they don't work together even though there is no reason why they can't. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://jira.codehaus.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira |