You have to put a <structure map-as="your.parent.class"/> in the child
mapping to inherit the actual attributes defined in the base class.

-----Original Message-----
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of
[EMAIL PROTECTED]
Sent: Tuesday, March 04, 2008 8:45 AM
To: jibx-users@lists.sourceforge.net
Subject: [jibx-users] Question concerning extensions in mappings

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(Unmars
hallingContext.java:792)
        at
com.cdmtech.svg.elements.JiBX_SVGRoot_JiBXSVGRoot_access2.unmarshal()
        at
org.jibx.runtime.impl.UnmarshallingContext.unmarshalElement(Unmarshallin
gContext.java:2537)
        at
org.jibx.runtime.impl.UnmarshallingContext.unmarshalDocument(Unmarshalli
ngContext.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


-------------------------------------------------------------------------
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