OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

sca-assembly message

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]


Subject: Errata for SCA Assembly Specification


 

On behalf of BEA Systems, I hereby contribute the following suggested errata for SCA Assembly Specification.

 

The line numbers and section numbers are based on the corresponding input specification for this TC.

 

Michael Rowley

 

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>

Binding name attribute not a QName

Conflicting Specification of Values for Many-Valued String Properties

Unclear how Composites are discovered when Referenced

Component URI is not well described

Need to define Namespace handling for included Composites

XSD definitions of Component Service and Component Reference have unintended features

Java interface to WSDL mapping is not defined

Schema definition for Component, Component Reference @autowire attribute is incorrect

SCA <anyAttribute.../> declarations should use namespace ##other rather than ##any

Conflict Between SCA XSD and Specification Body about the handling of Multi-Valued Properties

 



[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]