Thanks, Nigel. I (most likely) will have a peek once we are past the 1.3 GA release.
Regards Werner N Perkins wrote: > Hi Werner, > > Many thanks for the quick response. > As requested, I have created a Jira issue to cover this (CASTOR-2640). > > The attachment contains a simple example that illustrates the issue. > Please see the readme for further details. > > Regards, > Nigel > > 2009/2/5 Werner Guttmann <[email protected]>: >> Hi Nigel, >> >> what you are describing below should work out of the box. I know that >> you are probably over-simplifying, but I need something to look at in >> detail. >> >> Would you mid creating a new Jira issue at >> >> http://jira.codehaus.org/browse/CASTOR >> >> and attch all files for me (us) to be able to reply the issue at hand. >> >> Thanks in advance >> Werner >> >> N Perkins wrote: >>> Hi, >>> >>> I would be grateful if anyone has any advice regarding the following issue. >>> >>> When using XML code generated classes, I am able to unmarshal a >>> document containing an element that is an extension of the target >>> type. However, the resulting object has the runtime type of the >>> target (base) type, and so any extended values are unavailable. >>> >>> To illustrate, a simple example follows. >>> The schema defines a base ProductType, an extension ShirtType, and >>> dictates that an inventory has a product: >>> >>> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> >>> <xsd:complexType name="InventoryType"> >>> <xsd:sequence> >>> <xsd:element name="product" type="ProductType"/> >>> </xsd:sequence> >>> </xsd:complexType> >>> >>> <xsd:complexType name="ProductType"> >>> <xsd:sequence> >>> <xsd:element name="number" type="xsd:integer"/> >>> <xsd:element name="name" type="xsd:string"/> >>> </xsd:sequence> >>> </xsd:complexType> >>> >>> <xsd:complexType name="ShirtType"> >>> <xsd:complexContent> >>> <xsd:extension base="ProductType"> >>> <xsd:sequence> >>> <xsd:element name="size" type="xsd:integer"/> >>> <xsd:element name="color" type="xsd:string"/> >>> </xsd:sequence> >>> </xsd:extension> >>> </xsd:complexContent> >>> </xsd:complexType> >>> >>> <xsd:element name="inventory" type="InventoryType"/> >>> </xsd:schema> >>> >>> The code generator defines abstract classes for the following complex types: >>> - InventoryType >>> - ProductType >>> - ShirtType (extends ProductType) >>> >>> The code generator defines the following element classes: >>> - Inventory >>> - Product >>> >>> Note that these classes do not cater for the instantiation of an >>> instance of ShirtType. >>> >>> In an instance document, a shirt can be substituted for the base >>> product type, with xsi:type indicating the substitution: >>> >>> <?xml version="1.0" encoding="UTF-8"?> >>> <inventory xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >>> xsi:noNamespaceSchemaLocation="inventory.xsd"> >>> <product xsi:type="ShirtType"> >>> <number>999</number> >>> <name>Test Shirt</name> >>> <size>40</size> >>> <color>Blue</color> >>> </product> >>> </inventory> >>> >>> Invoking getProduct() on the Unmarshalled Inventory instance returns >>> an object with a runtime type of Product, resulting in a loss of type >>> information. Is there any way to have getProduct() return an instance >>> of ShirtType in this scenario? >>> >>> The above example is purely for illustrative purposes. The actual >>> problem domain involves a much more complicated schema, which is prone >>> to change, and outside of my control. My preferred approach, if >>> possible, is to rely solely on the generated classes, and to avoid >>> introducing custom mappings. >>> >>> Any thoughts would be greatly appreciated. >>> Regards, >>> Nigel >>> >>> --------------------------------------------------------------------- >>> To unsubscribe from this list, please visit: >>> >>> http://xircles.codehaus.org/manage_email >>> >>> >> --------------------------------------------------------------------- >> To unsubscribe from this list, please visit: >> >> http://xircles.codehaus.org/manage_email >> >> >> > > --------------------------------------------------------------------- > To unsubscribe from this list, please visit: > > http://xircles.codehaus.org/manage_email > > --------------------------------------------------------------------- To unsubscribe from this list, please visit: http://xircles.codehaus.org/manage_email

