This page lists the errata for the published SCA Assembly Specification Version 1.00. These errata will be considered for a future update of the specification.
1. Allow use of an <include/> element anywhere in a <composite/>
Agreed changes:
1) Change the definition of the composite complex type in the sca-core.xsd (crrently lines 3160 to 3183 in the specification) to the following:
<element name="composite" type="sca:Composite"/> <complexType name="Composite"> <sequence minOccurs="0" maxOccurs="unbounded"> <choice minOccurs="0" maxOccurs="unbounded"> <element name="include" type="sca:Include"/> <element name="service" type="sca:Service"/> <element name="property" type="sca:Property"/> <element name="component" type="sca:Component"/> <element name="reference" type="sca:Reference"/> <element name="wire" type="sca:Wire"/> </choice> <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/> </sequence> <attribute name="name" type="NCName" use="required"/> <attribute name="targetNamespace" type="anyURI" use="required"/> <attribute name="local" type="boolean" use="optional" default="false"/> <attribute name="autowire" type="boolean" use="optional" default="false"/> <attribute name="constrainingType" type="QName" use="optional"/> <attribute name="requires" type="sca:listOfQNames" use="optional"/> <attribute name="policySets" type="sca:listOfQNames" use="optional"/> <anyAttribute namespace="##any" processContents="lax"/> </complexType>
2) Remove the top-level <include.../> element in the sca-core.xsd, currently line 3416 in the Assembly specification
2. Binding cardinality for services is specified in a conflicting way
Change lines 180/181 to indicate that zero or more bindings are allowed:
180 A service element has zero or more binding elements as children. If no bindings are specified,
181 then the bindings specified for the service by the implementation are in effect.
3. References to Composites in Examples should be QNames
(Issue SCA-233)
Change line 397 to read as follows:
<implementation.composite name="foo:MyValueComposite"/>
4. Autowire Example has Errors
(Issue SCA-234)
The Autowire examples between lines 1768 and 1841 have errors associated with the <implementation.composite.../> elements, which are fixed as follows:
a) Added a foo: namespace to the composites
b) each <implementation.composite uses @name and a QName for the composite, using the foo: namespace:
1. Example without Autowire
<?xml version="1.0" encoding="UTF-8"?> <!-- Autowire Example - No autowire --> <composite xmlns:xsd="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.osoa.org/xmlns/sca/1.0" targetNamespace="http://foo.com" xmlns:foo="http://foo.com" name="AccountComposite"> <service name="PaymentService" promote="PaymentsComponent"/> <component name="PaymentsComponent"> <implementation.java class="com.foo.accounts.Payments"/> <service name="PaymentService"/> <reference name="CustomerAccountService" target="CustomerAccountComponent"/> <reference name="ProductPricingService" target="ProductPricingComponent"/> <reference name="AccountsLedgerService" target="AccountsLedgerComponent"/> <reference name="ExternalBankingService"/> </component> <component name="CustomerAccountComponent"> <implementation.java class="com.foo.accounts.CustomerAccount"/> </component> <component name="ProductPricingComponent"> <implementation.composite name="foo:ProductPricingComposite"/> </component> <component name="AccountsLedgerComponent"> <implementation.composite name="foo:AccountsLedgerComposite"/> </component> <reference name="ExternalBankingService" promote="PaymentsComponent/ExternalBankingService"/> </composite>
2. Example with Autowire
<?xml version="1.0" encoding="UTF-8"?> <!-- Autowire Example - With autowire --> <composite xmlns:xsd="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.osoa.org/xmlns/sca/1.0" targetNamespace="http://foo.com" xmlns:foo="http://foo.com" name="AccountComposite"> <service name="PaymentService" promote="PaymentsComponent"> <interface.java class="com.foo.PaymentServiceInterface"/> </service> <component name="PaymentsComponent" autowire="true"> <implementation.java class="com.foo.accounts.Payments"/> <service name="PaymentService"/> <reference name="CustomerAccountService"/> <reference name="ProductPricingService"/> <reference name="AccountsLedgerService"/> <reference name="ExternalBankingService"/> </component> <component name="CustomerAccountComponent"> <implementation.java class="com.foo.accounts.CustomerAccount"/> </component> <component name="ProductPricingComponent"> <implementation.composite name="foo:ProductPricingComposite"/> </component> <component name="AccountsLedgerComponent"> <implementation.composite name="foo:AccountsLedgerComposite"/> </component> <reference name="ExternalBankingService" promote="PaymentsComponent/ExternalBankingService"/> </composite>
Pseudo-schema errors - mismatches with the formal XSD
(Issue SCA-240)
Many of the pseudo-schemas in the specification have errors and/or omissions that mean they conflict with the formal XSDs. The following pseudo-schemas are updated as shown:
Line 100:
<?xml version="1.0" encoding="UTF-8"?> <!-- Component schema snippet --> <composite xmlns="http://www.osoa.org/xmlns/sca/1.0" targetNamespace="xs:anyURI" name="xs:QName" local="xs:boolean"? autowire="xs:boolean"? constrainingType="QName"? requires="list of xs:QName"? policySets="list of xs:QName"?> ... <component name="xs:NCName" requires="list of xs:QName"? autowire="xs:boolean"? requires="list of xs:QName"? policySets="list of xs:QName"? constrainingType="xs:QName"?>* <implementation/>? <service name="xs:NCName" requires="list of xs:QName"? policySets="list of xs:QName"?>* <interface/>? <operation/>* <binding uri="xs:anyURI"? requires="list of xs:QName"? policySets="list of xs:QName"?/>* <callback/>? </service> <reference name="xs:NCName" multiplicity="0..1 or 1..1 or 0..n or 1..n"? autowire="xs:boolean"? target="list of xs:anyURI"? policySets="list of xs:QName"? wiredByImpl="xs:boolean"? requires="list of xs:QName"?>* <interface/>? <operation/>* <binding uri="xs:anyURI"? requires="list of xs:QName"? policySets="list of xs:QName"?/>* <callback/>? </reference> <property name="xs:NCName" (type="xs:QName" | element="xs:QName")? many="xs:boolean"? source="xs:string"? file="xs:anyURI"?>* property-value? </property> </component> ... </composite>
Line 454:
<?xml version="1.0" encoding="ASCII"?> <!-- Component type schema snippet --> <componentType xmlns="http://www.osoa.org/xmlns/sca/1.0" constrainingType="QName"? > <service name="xs:NCName" requires="list of xs:QName"? policySets="list of xs:QName"?>* <interface/> <operation/>* <binding uri="xs:anyURI"? requires="list of xs:QName"? policySets="list of xs:QName"?/>* <callback/>? </service> <reference name="xs:NCName" target="list of xs:anyURI"? multiplicity="0..1 or 1..1 or 0..n or 1..n"? wiredByImpl="xs:boolean"? requires="list of xs:QName"? policySets="list of xs:QName"?>* <interface/>? <operation/>* <binding uri="xs:anyURI"? requires="list of xs:QName"? policySets="list of xs:QName"?/>* <callback/>? </reference> <property name="xs:NCName" (type="xs:QName" | element="xs:QName") many="xs:boolean"? mustSupply="xs:boolean"? policySets="list of xs:QName"?>* default-property-value? </property> <implementation requires="list of xs:QName"? policySets="list of xs:QName"?/>? </componentType>
Line 949:
<?xml version="1.0" encoding="ASCII"?> <!-- Composite schema snippet --> <composite xmlns="http://www.osoa.org/xmlns/sca/1.0" targetNamespace="xs:anyURI" name="xs:QName" local="xs:boolean"? autowire="xs:boolean"? constrainingType="QName"? requires="list of xs:QName"? policySets="list of xs:QName"?> <include name="xs:QName"/>* <service name="xs:NCName" promote="xs:anyURI" requires="list of xs:QName"? policySets="list of xs:QName"?>* <interface/>? <operation/>* <binding uri="xs:anyURI"? name="xs:QName"? requires="list of xs:QName"? policySets="list of xs:QName"?/>* <callback/>? </service> <reference name="xs:NCName" target="list of xs:anyURI"? promote="list of xs:anyURI" wiredByImpl="xs:boolean"? multiplicity="0..1 or 1..1 or 0..n or 1..n"? requires="list of xs:QName"? policySets="list of xs:QName"?>* <interface/>? <operation/>* <binding uri="xs:anyURI"? name="xs:QName"? requires="list of xs:QName"? policySets="list of xs:QName"?/>* <callback/>? </reference> <property name="xs:NCName" (type="xs:QName" | element="xs:QName") many="xs:boolean"? mustSupply="xs:boolean"?>* default-property-value? </property> <component name="xs:NCName" autowire="xs:boolean"? requires="list of xs:QName"? policySets="list of xs:QName"?>* <implementation/>? <service name="xs:NCName" requires="list of xs:QName"? policySets="list of xs:QName"?>* <interface/>? <operation/>* <binding uri="xs:anyURI"? name="xs:QName"? requires="list of xs:QName"? policySets="list of xs:QName"?/>* <callback/>? </service> <property name="xs:NCName" (type="xs:QName" | element="xs:QName") source="xs:string"? file="xs:anyURI"?>* property-value </property> <reference name="xs:NCName" target="list of xs:anyURI"? autowire="xs:boolean"? wiredByImpl="xs:boolean"? requires="list of xs:QName"? policySets="list of xs:QName"? multiplicity="0..1 or 1..1 or 0..n or 1..n"?/>* <interface/>? <operation/>* <binding uri="xs:anyURI"? name="xs:QName"? requires="list of xs:QName"? policySets="list of xs:QName"?/>* <callback/>? </reference> </component> <wire source="xs:anyURI" target="xs:anyURI" />* </composite>
Line 1295:
<?xml version="1.0" encoding="ASCII"?> <!-- Reference schema snippet --> <composite xmlns="http://www.osoa.org/xmlns/sca/1.0" targetNamespace="xs:anyURI" name="xs:QName" local="xs:boolean"? autowire="xs:boolean"? constrainingType="QName"? requires="list of xs:QName"? policySets="list of xs:QName"?> ... <reference name="xs:NCName" target="list of xs:anyURI"? promote="list of xs:anyURI"? wiredByImpl="xs:boolean"? multiplicity="0..1 or 1..1 or 0..n or 1..n"? requires="list of xs:QName"? policySets="list of xs:QName"?>* <interface/>? <operation name="xs:NCName" requires="list of xs:QName"? policySets="list of xs:QName"?/>* <binding uri="xs:anyURI"? name="xs:QName"? requires="list of xs:QName" policySets="list of xs:QName"?/>* <callback requires="list of xs:QName"? policySets="list of xs:QName"?>? <binding uri="xs:anyURI"? name="xs:QName"? requires="list of xs:QName"? policySets="list of xs:QName"?/>+ </callback> </reference> ... </composite>
Line 1472:
<?xml version="1.0" encoding="ASCII"?> <!-- Service schema snippet --> <composite xmlns="http://www.osoa.org/xmlns/sca/1.0" targetNamespace="xs:anyURI" name="xs:QName" local="xs:boolean"? autowire="xs:boolean"? constrainingType="QName"? requires="list of xs:QName"? policySets="list of xs:QName"?> ... <service name="xs:NCName" promote="xs:anyURI" requires="list of xs:QName"? policySets="list of xs:QName"?>* <interface/>? <operation name="xs:NCName" requires="list of xs:QName"? policySets="list of xs:QName"?/>* <binding uri="xs:anyURI"? name="xs:QName"? requires="list of xs:QName" policySets="list of xs:QName"?/>* <callback requires="list of xs:QName"? policySets="list of xs:QName"?>? <binding uri="xs:anyURI"? name="xs:QName"? requires="list of xs:QName"? policySets="list of xs:QName"?/>+ </callback> </service> ... </composite>
Line 1874:
<?xml version="1.0" encoding="ASCII"?> <!-- Composite Implementation schema snippet --> <composite xmlns="http://www.osoa.org/xmlns/sca/1.0" targetNamespace="xs:anyURI" name="xs:QName" local="xs:boolean"? autowire="xs:boolean"? constrainingType="QName"? requires="list of xs:QName"? policySets="list of xs:QName"?> ... <component name="xs:NCName" autowire="xs:boolean"? requires="list of xs:QName"? policySets="list of xs:QName"?>* <implementation.composite name="xs:QName"/>? <service name="xs:NCName" requires="list of xs:QName"? policySets="list of xs:QName"?>* <interface/>? <operation/>* <binding uri="xs:anyURI" name="xs:QName"? requires="list of xs:QName" policySets="list of xs:QName"?/>* <callback/>? </service> <property name="xs:NCName" (type="xs:QName" | element="xs:QName") source="xs:string"? file="xs:anyURI"?>* property-value </property> <reference name="xs:NCName" target="list of xs:anyURI"? autowire="xs:boolean"? wiredByImpl="xs:boolean"? requires="list of xs:QName"? policySets="list of xs:QName"? multiplicity="0..1 or 1..1 or 0..n or 1..n"?/>* <interface/>? <operation/>* <binding uri="xs:anyURI"? name="xs:QName"? requires="list of xs:QName" policySets="list of xs:QName"?/>* <callback/>? </reference> </component> ... </composite>