Hi,

I get this exception while running an example
org.jibx.runtime.JiBXException: Mapping for type B must extend abstract mapping for type Ref.

It looks like the error is cause of the way the mapping defines that B extends A and B extends Ref.
<mapping name="b"
           class="B"
          * extends="A"*>
       <structure map-as="A" />
       <value name="bVal" field="b"/>
   </mapping>

A similar error has been reported at http://www.mail-archive.com/jibx-users@lists.sourceforge.net/msg01288.html
but did not see any resolution in the thread.

I am only a couple of days old in JiBX land. Any help, references will be highly appreciated.

My scenario is as follows:
Classes :
--------
class RefHolder {
   public Ref ref;
}

abstract class Ref{
   int refId;
}

class A extends Ref{
   int a;
}

class B extends A{
   int b;
}

Binding :
---------
<binding>
   <mapping name="refHolder" class="RefHolder">
       <structure field="ref"/>
   </mapping>
<mapping class="Ref"
           abstract="true">
       <value name="refId" field="refId"/>
   </mapping>

   <mapping name="a"
           class="A"
           extends="Ref">
       <structure map-as="Ref" />
       <value name="aVal" field="a"/>
   </mapping>

   <mapping name="b"
           class="B"
           extends="A">
       <structure map-as="A" />
       <value name="bVal" field="b"/>
   </mapping>
</binding>

Main Class:
------------
public class RefHolderTest {

   public static void main(String[] args) throws JiBXException {
IBindingFactory bindingFactory = BindingDirectory.getFactory(RefHolder.class); IMarshallingContext mctx = bindingFactory.createMarshallingContext();
       mctx.setIndent(2);
RefHolder refHolderB = new RefHolder();
       B b = new B();
       b.b=100;
       refHolderB.ref = b;
       mctx.marshalDocument(refHolderB, "UTF-8", null, System.out);
}
}

Exception details:
--------------------
Exception in thread "main" org.jibx.runtime.JiBXException: Mapping for type B must extend abstract mapping for type Ref
   at JiBX_JiBXCustomizationXMLTest_bindingRef_access.baseMarshal()
at RefHolder.JiBX_JiBXCustomizationXMLTest_binding_marshal_1_0(RefHolder.java)
   at JiBX_JiBXCustomizationXMLTest_bindingRefHolder_access.marshal()
   at RefHolder.marshal(RefHolder.java)
at org.jibx.runtime.impl.MarshallingContext.marshalRoot(MarshallingContext.java:1035) at org.jibx.runtime.impl.MarshallingContext.marshalDocument(MarshallingContext.java:1127)
   at RefHolderTest.main(RefHolderTest.java:38)

regards
vcv
-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys - and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
jibx-users mailing list
jibx-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jibx-users

Reply via email to