Wener,
Here's the xsd. I used trade types as an example. It's really
exceptions inherited from genericexceptions.
Thanks,
George
<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.example.org/NewXMLSchema"
xmlns:tns="http://www.example.org/NewXMLSchema"
elementFormDefault="qualified">
<complexType name="GenericExceptionType" mixed="false">
<sequence>
<element name="GUID" type="string" minOccurs="0"
maxOccurs="1">
<annotation>
<documentation>
Global Unique ID
assigned by API during
exception creation
</documentation>
</annotation>
</element>
<element name="ClientSystem" type="string"
minOccurs="1"
maxOccurs="1">
<annotation>
<documentation>
Client System who is
logging exception
</documentation>
</annotation>
</element>
<element name="ClientProcess" type="string"
minOccurs="0"
maxOccurs="1">
<annotation>
<documentation>
The Client can identify
a particular "process"
for which they are
logging exceptions,eg.
"VMasterFeed". Through
the API which clears
exceptions, the Client
has the ability to
specify this value to
delete all exceptions for
this value
</documentation>
</annotation>
</element>
<element name="Severity" type="tns:SeverityType"
minOccurs="1" maxOccurs="1">
<annotation>
<documentation>
Enumerated Severity of
trade (Warning or Error)
</documentation>
</annotation>
</element>
<element name="MarginGroup" type="string"
minOccurs="0"
maxOccurs="1">
<annotation>
<documentation>
May contain margingroup
or CoperID
</documentation>
</annotation>
</element>
<element name="COBDate" minOccurs="0" maxOccurs="1"
type="tns:DateType">
<annotation>
<documentation>
Close of business date
for data causing
exception in format
YYYYMMDD
</documentation>
</annotation>
</element>
<element name="Descr" type="string" minOccurs="0"
maxOccurs="1">
</element>
<element name="GenericFields"
type="tns:GenericFieldType"
minOccurs="0" maxOccurs="unbounded">
<annotation>
<documentation>
Generic Key/Value pairs
used for flexibility for
future releases
</documentation>
</annotation>
</element>
</sequence>
<attribute name="Status" type="string" use="optional"
default="NEW">
<annotation>
<documentation>
Field "Status" is for internal
use only. No need to
set.
</documentation>
</annotation></attribute>
</complexType>
<simpleType name="SeverityType">
<restriction base="string">
<enumeration value="Error"></enumeration>
<enumeration value="Warning"></enumeration>
<enumeration value="Fatal"></enumeration>
</restriction>
</simpleType>
<complexType name="RatingExceptionType" block="extension">
<annotation>
<documentation>
Exception to handle missing ratings
</documentation>
</annotation>
<complexContent>
<extension base="tns:GenericExceptionType">
<sequence>
<element name="MLSecNumber" type="string"
minOccurs="0" maxOccurs="1">
</element>
<element name="Cusip" type="string" minOccurs="0"
maxOccurs="1">
</element>
<element name="ISIN" type="string" minOccurs="0"
maxOccurs="1">
</element>
<element name="Ticker" type="string" minOccurs="0"
maxOccurs="1">
</element>
<element name="SecurityDescr" type="string"
minOccurs="0" maxOccurs="1">
</element>
</sequence>
</extension>
</complexContent>
</complexType>
<complexType name="GenericFieldType">
<annotation>
<documentation>
Key/Value pairs. Intended for future expansion
</documentation>
</annotation>
<sequence>
<element name="Value" type="string"></element>
</sequence>
<attribute name="Key" type="string"></attribute>
</complexType>
<complexType name="UMAExceptionsType" mixed="false">
<sequence>
<element name="GenericException"
type="tns:GenericExceptionType" minOccurs="0"
maxOccurs="unbounded">
</element>
<element name="RatingException"
type="tns:RatingExceptionType" minOccurs="0"
maxOccurs="unbounded">
</element>
<element name="MarginHubException"
type="tns:MarginHubExceptionType" minOccurs="0"
maxOccurs="unbounded">
</element>
<element name="FeedException" type="tns:FeedExceptionType"
minOccurs="0" maxOccurs="unbounded">
</element>
</sequence>
<attribute name="APIVersion" type="string" use="optional">
<annotation>
<documentation>
This value is automatically populated by
the API to
identify to the server what version of
the client
API is running
</documentation>
</annotation>
</attribute>
<attribute name="MessageGUID" type="string"></attribute>
</complexType>
<complexType name="FeedExceptionType">
<complexContent>
<extension base="tns:GenericExceptionType">
<sequence>
<element name="FeedSystem" type="string"
minOccurs="1" maxOccurs="1"></element>
<element name="FeedRowException"
type="tns:FeedRowExceptionType" minOccurs="1" maxOccurs="unbounded">
<annotation>
<documentation>
Data value
exceptions for feed
</documentation>
</annotation>
</element>
</sequence>
</extension>
</complexContent>
</complexType>
<simpleType name="DateType">
<restriction base="string">
<length value="8"></length>
</restriction>
</simpleType>
<complexType name="FeedDataExceptionType">
<sequence>
<element name="Column" type="string" minOccurs="1"
maxOccurs="1">
<annotation>
<documentation>
Column with data issue
</documentation>
</annotation>
</element>
<element name="ColumnValue" type="string" minOccurs="0"
maxOccurs="1">
<annotation>
<documentation>
Value of Column having data issue
</documentation>
</annotation>
</element>
<element name="DataExceptionDescr" type="string"
minOccurs="0" maxOccurs="1">
</element>
<element name="ErrorKey" type="string" minOccurs="1"
maxOccurs="1">
<annotation>
<documentation>
Key used to group column data
errors (ie,
"CURRENCYMISSING", "PRICEMISSING"
</documentation>
</annotation></element>
</sequence>
</complexType>
<complexType name="ColumnType" mixed="true">
<sequence>
</sequence>
<attribute name="ColumnName" type="string"
use="required"></attribute>
<attribute name="OrderBy" type="int"></attribute>
</complexType>
<complexType name="FeedRowExceptionType">
<sequence>
<element name="RowID" type="string" minOccurs="1"
maxOccurs="1">
<annotation>
<documentation>
Row identifier provide by client
system
</documentation>
</annotation>
</element>
<element name="TradeID" type="string" minOccurs="0"
maxOccurs="1">
</element>
<element name="ProductType" type="string"></element>
<element name="FeedRowExceptionGUID" type="string"></element>
<element name="FeedDataException"
type="tns:FeedDataExceptionType" minOccurs="1"
maxOccurs="unbounded">
</element>
<element name="FeedRowData" type="tns:FeedRowDataType"
maxOccurs="unbounded" minOccurs="0">
</element>
</sequence>
</complexType>
<complexType name="MarginHubExceptionType">
<annotation>
<documentation>
The name given by the user to the strategy (not the
strategy type)
</documentation>
</annotation>
<complexContent>
<extension base="tns:GenericExceptionType">
<sequence>
<element name="CalculatorName"
type="string" minOccurs="0" maxOccurs="1">
</element>
<element name="StrategyName"
type="string" minOccurs="0" maxOccurs="1">
</element>
<element name="MarginHubExceptionKey"
type="string" minOccurs="0" maxOccurs="1">
<annotation>
<documentation>
Key to group
like exceptions together
for front end
(IE, "Currency MXN not
support")
</documentation>
</annotation></element>
<element name="MarginHubExceptionDescr"
type="string" minOccurs="0" maxOccurs="1">
</element>
</sequence>
</extension>
</complexContent>
</complexType>
<element name="UMAExceptions" type="tns:UMAExceptionsType"></element>
<complexType name="FeedRowDataType">
<sequence>
<element name="Column" type="tns:ColumnType"
maxOccurs="unbounded" minOccurs="0"></element>
</sequence>
</complexType>
</schema>
_____________________________________________
*From: * Louis, George (Liquidity & Risk Technology)
*Sent: * Wednesday, April 02, 2008 3:33 PM
*To: * '[email protected]'
*Subject: * Castor 1.1 XSD Inheritance
Hello,
I have an XSD which defines a generic "Trade" (with some common
elements)
In that XSD, I subclass TradeType into "Bond" and "Equity" (with
trade specific elements, inherited by "extension")
When I build the java Castor objects, I get the following methods:
getBond(index)
getBondCount
GetEquity(index)
getEquity(Count)
What I really want is a "getTrade(index)" and "getTradeCount()"
which give me everything for both Equity and Bond (and which I can
cast into Equity and Bond later)
As I add new subclassed trade types (ie, "Swap"), I'd like it so
my code doesn't have to change (everything is initially referred
to as "Trade"). Right now I have to loop through getBond and
getEquity.
Any idea how to do this?
TIA -George
------------------------------------------------------------------------
This message w/attachments (message) may be privileged, confidential or
proprietary, and if you are not an intended recipient, please notify the
sender, do not use or share it and delete it. Unless specifically
indicated, this message is not an offer to sell or a solicitation of any
investment products or other financial product or service, an official
confirmation of any transaction, or an official statement of Merrill
Lynch. Subject to applicable law, Merrill Lynch may monitor, review and
retain e-communications (EC) traveling through its networks/systems. The
laws of the country of each sender/recipient may impact the handling of
EC, and EC may be archived, supervised and produced in countries other
than the country in which you are located. This message cannot be
guaranteed to be secure or error-free. This message is subject to terms
available at the following link:
http://www.ml.com/e-communications_terms/. By messaging with Merrill
Lynch you consent to the foregoing.
------------------------------------------------------------------------