I seem to be having a problem with extending mappings.  The problem
runs like this:

I have a base class, and a collection of derived classes.  Some of the
derived classes extend other derived classes.  When I attempt to build
a jibx file for them, I would like to not have to specify the same
element or attribute more then once.  So, I create the base class as a
mapping, then the type which can contain the other types as a second
mapping.

Actually, maybe I can just explain by example best.  This is an
initial pass at writing one of the files I was trying to do this with.
 It is attempting to restore a small subset of SVG into a small
collection of classes.

<binding>
<namespace uri="http://www.w3.org/2000/svg"; default="elements"/>
   <mapping name="svg" class="svg.elements.SVGRoot"
extends="svg.elements.Graphic">
      <value name="viewBox" field="viewBox" style="attribute" usage="optional"/>
   </mapping>
   <!-- not derived from Graphic for the moment, not for any
particular reason though -->
   <mapping name="defs" class="svg.elements.SVGDefs"
extends="svg.elements.SVGBase">
      <collection field="children" item-type="svg.elements.SVGBase"/>
   </mapping>
   <mapping name="style" class="svg.elements.SVGStyle"
extends="svg.elements.SVGBase">
      <value name="type" field="type" usage="optional" style="attribute"/>
      <value field="data" usage="optional" style="cdata"/>
   </mapping>
   <mapping name="rect" class="svg.elements.Rect"
extends="svg.elements.SVGBase">
   </mapping>
   <mapping name="g" class="svg.elements.Graphic"
extends="svg.elements.SVGBase">
      <collection field="children" item-type="svg.elements.SVGBase"/>
   </mapping>
   <mapping class="svg.elements.SVGBase" abstract="true">
      <value name="style" field="styleTextValue" usage="optional"
style="attribute"/>
      <value name="class" field="classValue" usage="optional"
style="attribute"/>
      <value name="transform" field="transform" usage="optional"
style="attribute"/>
      <value name="id" field="id" usage="optional" style="attribute"/>
   </mapping>
</binding>

The problem comes when I try and run the restore.  I get the following error.
org.jibx.runtime.JiBXException: Expected
"{http://www.w3.org/2000/svg}svg"; end tag, found
"{http://www.w3.org/2000/svg}defs"; start tag (line 6, col 9)
        at 
org.jibx.runtime.impl.UnmarshallingContext.parsePastCurrentEndTag(UnmarshallingContext.java:792)
        at com.cdmtech.svg.elements.JiBX_SVGRoot_JiBXSVGRoot_access2.unmarshal()
        at 
org.jibx.runtime.impl.UnmarshallingContext.unmarshalElement(UnmarshallingContext.java:2537)
        at 
org.jibx.runtime.impl.UnmarshallingContext.unmarshalDocument(UnmarshallingContext.java:2680)

Not sure if this style of chained inheritence was legal or not, I
decided to check the documentation.  I was unable to find anything
that helps.  So why is my collection not being inherited?  If I get
rid of the inheritence and just put the collection in the SVGRoot
mapping, it works just fine (for relative values of just fine).
Please help.  Or, feel free to call me an idiot with reasons.  Either
one, so long as its helpful.

-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
jibx-users mailing list
jibx-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jibx-users

Reply via email to