hi,
first i'd like to thank dennis for his great work for jibx 1.2 release.
one important question is still unclear for me - the current status of 
inheritance and polymorphism during marshalling, unmarshalling and also 
code generation. some results seem to be correct for my point of view, 
but for some processing parts i would have expected different results.

- MARSHALLING: marshalling for inherited types works correctly, but 
there is no detail info added to the xml, like an attribute 
type="Detail1" or type="Detail2" for the sample below, known from other 
o/x-mappers:

<data>
  <detail>
    <id>1234</id>
  </detail>
  <detail>
    <id>1234</id>
    <description>description</description>
  </detail>
  <detail>
    <id>1234</id>
    <status>OK</status>
  </detail>
</data>

- UNMARSHALLING: unmarshalling is not possible because <detail>-tag is 
not type-safe

- CODE GENERATION: xsd2java code generation tool, does not generate 
expected inheritance in java classes shown in the sample below.

SAMPLE:
---------------------------------------------------------
XSD (using inheritance in .xsd instead of choice)
---------------------------------------------------------
<xsd:complexType name="Base">
  <xsd:sequence>
    <xsd:element name="id" type="xsd:string" />
  </xsd:sequence>
</xsd:complexType>

<xsd:complexType name="Detail1">
  <xsd:complexContent>
    <xsd:extension base="Base">
      <xsd:sequence>
        <xsd:element name="description" type="xsd:string" />
      </xsd:sequence>
    </xsd:extension>
  </xsd:complexContent>
</xsd:complexType>

<xsd:complexType name="Detail2">
  <xsd:complexContent>
    <xsd:extension base="Base">
      <xsd:sequence>
         <xsd:element name="status" type="xsd:string" />
      </xsd:sequence>
    </xsd:extension>
  </xsd:complexContent>
</xsd:complexType>

<xsd:element name="data">
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element name="detail" type="Base" />
                <xsd:element name="detail" type="Detail1" />
                <xsd:element name="detail" type="Detail2" />
            </xsd:sequence>
        </xsd:complexType>
    </xsd:element>
---------------------------------------------------------

---------------------------------------------------------
JAVA CLASSES (self written)
---------------------------------------------------------
public class Base {
    public String id;
}

public class Detail1 extends Base{
    public String description;
}

public class Detail2 extends Base{
    public String status;
}
---------------------------------------------------------

---------------------------------------------------------
BINDING (self written)
---------------------------------------------------------
<mapping type-name="Base" class="Base" abstract="true">
  <value style="element" name="id" field="id"/>
</mapping>

<mapping type-name="Detail1" class="Detail1" abstract="true">
  <structure map-as="Base" />
  <value style="element" name="description" field="description"/>
</mapping>

<mapping type-name="Detail2" class="Detail2" abstract="true">
  <structure map-as="Base" />
  <value style="element" name="status" field="status"/>
</mapping>

<mapping name="data" class="Data">
  <structure map-as="Base" field="base" name="detail" />
  <structure map-as="Detail1" field="base" name="detail" />
  <structure map-as="Detail2" field="base" name="detail" />
</mapping>
---------------------------------------------------------





------------------------------------------------------------------------------
_______________________________________________
jibx-users mailing list
jibx-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jibx-users

Reply via email to