sca-assembly message
[Date Prev]
| [Thread Prev]
| [Thread Next]
| [Date Next]
--
[Date Index]
| [Thread Index]
| [List Home]
Subject: [NEW ISSUE] Problems with the Extension Points in the SCA XSDs
- From: Mike Edwards <mike_edwards@uk.ibm.com>
- To: "OASIS Assembly" <sca-assembly@lists.oasis-open.org>
- Date: Mon, 22 Mar 2010 14:19:58 +0000
Raiser:
Mike Edwards
Target:
sca-assembly-1.1-spec-cd05.doc
Description:
The SCA XSDs mix two different forms
of extensibility and this causes significant problems such as UPA errors.
The two forms of extensibility are:
1) The use of substitution groups for
the extensibility of:
implementation
interface
binding
wireFormat
operationSelector
importBase
exportBase
2) The use of
<any namespace="##other"
processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
for extensibility in many locations
A UPA problem potentially exists in
any place where ONE or MORE of the elements in the list 1) above is declared
to be used within another element in
combination with 2) in a sequence or choice where it may occur that one
of the
list 1) elements is validly succeeded
by an <any/> of the form in 2). IF an extended version of any
of the 1) elements
is created, in a non-sca namespace (this
is REQUIRED for any non-standard extension), then a UPA error will be
reported whenever such an extension
is used.
The following locations in the current
XSDs are at fault:
- ComponentType type
- Component type ("lash up"
fix applied here)
- Callback type
- ContributionType type
Proposal:
For the locations affected, provide
flexible extensibility using the following element instead of <any/>:
<element ref="sca:extensions"
minOccurs="0" maxOccurs="1" />
...as has already been done for some
elements/types including the "Contract" type:
1) ComponentType
<complexType name="ComponentType">
<complexContent>
<extension
base="sca:CommonExtensionBase">
<sequence>
<element ref="sca:implementation" minOccurs="0"/>
<choice minOccurs="0" maxOccurs="unbounded">
<element name="service" type="sca:ComponentService"/>
<element name="reference" type="sca:ComponentTypeReference"/>
<element name="property" type="sca:Property"/>
</choice>
<element ref="sca:extensions" minOccurs="0"
maxOccurs="1" />
</sequence>
</extension>
</complexContent>
</complexType>
2) Callback type
<complexType name="Callback">
<complexContent>
<extension
base="sca:CommonExtensionBase">
<choice minOccurs="0" maxOccurs="unbounded">
<element ref="sca:binding"/>
<element ref="sca:requires"/>
<element ref="sca:policySetAttachment"/>
<element ref="sca:extensions" minOccurs="0"
maxOccurs="1" />
</choice>
<attribute name="requires" type="sca:listOfQNames"
use="optional"/>
<attribute name="policySets" type="sca:listOfQNames"
use="optional"/>
</extension>
</complexContent>
</complexType>
3) ContributionType type
<complexType name="ContributionType">
<complexContent>
<extension
base="sca:CommonExtensionBase">
<sequence>
<element name="deployable" type="sca:DeployableType"
minOccurs="0" maxOccurs="unbounded"/>
<element ref="sca:importBase" minOccurs="0"
maxOccurs="unbounded"/>
<element ref="sca:exportBase" minOccurs="0"
maxOccurs="unbounded"/>
<element ref="sca:extensions" minOccurs="0"
maxOccurs="1" />
</sequence>
</extension>
</complexContent>
</complexType>
4) Component type (strictly this is
already "fixed" but is not consistent with the above...)
<complexType name="Component">
<complexContent>
<extension
base="sca:CommonExtensionBase">
<sequence>
<element ref="sca:implementation" minOccurs="0"
maxOccurs="1"/>
<choice minOccurs="0" maxOccurs="unbounded">
<element name="service" type="sca:ComponentService"/>
<element name="reference" type="sca:ComponentReference"/>
<element name="property" type="sca:PropertyValue"/>
<element ref="sca:requires"/>
<element ref="sca:policySetAttachment"/>
</choice>
<element ref="sca:extensions" minOccurs="0"
maxOccurs="1" />
</sequence>
<attribute name="name" type="NCName" use="required"/>
<attribute name="autowire" type="boolean"
use="optional"/>
<attribute name="requires" type="sca:listOfQNames"
use="optional"/>
<attribute name="policySets" type="sca:listOfQNames"
use="optional"/>
</extension>
</complexContent>
</complexType>
This leaves all the other locations
where <any/> is used, but in those cases there is no use of substitution
groups
in any of the peer elements of the <any/>.
Yours, Mike.
Strategist - Emerging Technologies,
SCA & SDO.
Co Chair OASIS SCA Assembly TC.
IBM Hursley Park, Mail Point 146, Winchester,
SO21 2JN, Great Britain.
Phone & FAX: +44-1962-818014
Mobile: +44-7802-467431
Email: mike_edwards@uk.ibm.com
Unless stated otherwise above:
IBM United Kingdom Limited - Registered in England and Wales with number
741598.
Registered office: PO Box 41, North Harbour, Portsmouth, Hampshire PO6
3AU
[Date Prev]
| [Thread Prev]
| [Thread Next]
| [Date Next]
--
[Date Index]
| [Thread Index]
| [List Home]