Validated SCA constraints

  • [ASM40001]: The extension of a componentType side file name MUST be .componentType
  • [ASM40003] The @name attribute of a service child element of a componentType MUST be unique amongst the service elements of that componentType.
  • [ASM40004] The @name attribute of a reference child element of a componentType MUST be unique amongst the reference elements of that componentType.
  • [ASM40005] The @name attribute of a property child element of a componentType MUST be unique amongst the property elements of that componentType.
  • [ASM40007] The value of the property @type attribute MUST be the QName of an XML schema type.
  • [ASM40010] A single property element MUST NOT contain both a @type attribute and an @element attribute
  • [ASM40011] When the componentType has @mustSupply="true" for a property element, a component using the implementation MUST supply a value for the property since the implementation has no default value for the property.
  • [ASM50001]: The @name attribute of a component child element of a composite MUST be unique amongst the component elements of that composite.
  • [ASM50002] The @name attribute of a service element of a component MUST be unique amongst the service elements of that component.
  • [ASM50003] The @name attribute of a service element of a component MUST match the @name attribute of a service element of the componentType of the implementation child element of the component.
  • [ASM50004] If an interface is declared for a component service, the interface MUST provide a compatible subset of the interface declared for the equivalent service in the componentType of the implementation
  • [ASM50007] The @name attribute of a service element of a component MUST be unique amongst the service elements of that component
  • [ASM50008] The @name attribute of a reference element of a component MUST match the @name attribute of a reference element of the componentType of the implementation child element of the component.
  • [ASM50009] The value of multiplicity for a component reference MUST only be equal or further restrict any value for the multiplicity of the reference with the same name in the componentType of the implementation, where further restriction means 0..n to 0..1 or 1..n to 1..1.
  • [ASM50010] If @wiredByImpl="true" is set for a reference, then the reference MUST NOT be wired statically within a composite, but left unwired.
  • [ASM50013] If @wiredByImpl="true", other methods of specifying the target service MUST NOT be used.
  • [ASM50014] If @autowire="true", the autowire procedure MUST only be used if no target is identified by any of the other ways listed above. It is not an error if @autowire="true" and a target is also defined through some other means, however in this case the autowire procedure MUST NOT be used.
  • [ASM50026] If a reference has a value specified for one or more target services in its @target attribute, there MUST NOT be any child binding elements declared for that reference
  • [ASM50027] If the @value attribute of a component property element is declared, the type of the property MUST be an XML Schema simple type and the @value attribute MUST contain a single value of that type.
  • [ASM50028] If the value subelement of a component property is specified, the type of the property MUST be an XML Schema simple type or an XML schema complex type.
  • [ASM50029] If a component property value is declared using a child element of the property element, the type of the property MUST be an XML Schema global element and the declared child element MUST be an instance of that global element.
  • [ASM50031] The @name attribute of a property element of a component MUST be unique amongst the property elements of that component.
  • [ASM50032] If a property is single-valued, the value subelement MUST NOT occur more than once.
  • [ASM50033] A property value subelement MUST NOT be used when the @value attribute is used to specify the value for that property.
  • [ASM50034] If any "wire" element with its @replace attribute set to "true" has a particular reference specified in its @source attribute, the value of the @target attribute for that reference MUST be ignored and MUST NOT be used to define target services for that reference
  • [ASM50035] A single property element MUST NOT contain both a @type attribute and an @element attribute.
  • [ASM50036] The property type specified for the property element of a component MUST be compatible with the type of the property with the same @name declared in the component type of the implementation used by the component. If no type is declared in the component property element, the type of the property declared in the componentType of the implementation MUST be used.
  • [ASM50037] The @name attribute of a property element of a component MUST match the @name attribute of a property element of the componentType of the implementation child element of the component.
  • [ASM50038] In these cases where the types of two property elements are matched, the types declared for the two "property" elements MUST be compatible.
  • [ASM50039] A reference with multiplicity 0..1 MUST have no more than one target service defined.
  • [ASM50040] A reference with multiplicity 1..1 MUST have exactly one target service defined.
  • [ASM50041] A reference with multiplicity 1..n MUST have at least one target service defined.
  • [ASM50042] If a component reference has @multiplicity 0..1 or 1..1 and @nonOverridable==true, then the component reference MUST NOT be promoted by any composite reference.
  • [ASM50044] When a property has multiple values set, all the values MUST be contained within a single property element.
  • [ASM60001]: A composite @name attribute value MUST be unique within the namespace of the composite.
  • [ASM60002] @local="true" for a composite means that all the components within the composite MUST run in the same operating system process.
  • [ASM60003] The name of a composite service element MUST be unique across all the composite services in the composite.
  • [ASM60004] A composite service element's @promote attribute MUST identify one of the component services within that composite.
  • [ASM60005] If a composite service interface is specified it MUST be the same or a compatible subset of the interface provided by the promoted component service.
  • [ASM60006] The name of a composite "reference" element MUST be unique across all the composite references in the composite.
  • [ASM60007] Each of the URIs declared by a composite reference's @promote attribute MUST identify a component reference within the composite.
  • [ASM60008] the interfaces of the component references promoted by a composite reference MUST be the same, or if the composite reference itself declares an interface then each of the component reference interfaces MUST be a compatible subset of the composite reference interface..
  • [ASM60011] The multiplicity of a composite reference MUST be equal to or further restrict the multiplicity of each of the component references that it promotes, with the exception that the multiplicity of the composite reference does not have to require a target if there is already a target on the component reference. This means that a component reference with multiplicity 1..1 and a target can be promoted by a composite reference with multiplicity 0..1, and a component reference with multiplicity 1..n and one or more targets can be promoted by a composite reference with multiplicity 0..n or 0..1.
  • [ASM60012] If a composite reference has an interface specified, it MUST provide an interface which is the same or which is a compatible superset of the interface(s) declared by the promoted component reference(s).
  • [ASM60013] If no interface is declared on a composite reference, the interface from one of its promoted component references MUST be used for the component type associated with the composite.
  • [ASM60014] The @name attribute of a composite property MUST be unique amongst the properties of the same composite.
  • [ASM60031] The SCA runtime MUST raise an error if the composite resulting from the inclusion of one composite into another is invalid.
  • [ASM60032] For a composite used as a component implementation, each composite service offered by the composite MUST promote a component service of a component that is within the composite.
  • [ASM60033] For a composite used as a component implementation, every component reference of components within the composite with a multiplicity of 1..1 or 1..n MUST be wired or promoted.
  • [ASM60034] For a composite used as a component implementation, all properties of components within the composite, where the underlying component implementation specifies "mustSupply=true" for the property, MUST either specify a value for the property or source the value from a composite property.
  • [ASM60035] All the component references promoted by a single composite reference MUST have the same value for @wiredByImpl.
  • [ASM60036] If the @wiredByImpl attribute is not specified on the composite reference, the default value is "true" if all of the promoted component references have a wiredByImpl value of "true", and the default value is "false" if all the promoted component references have a wiredByImpl value of "false". If the @wiredByImpl attribute is specified, its value MUST be "true" if all of the promoted component references have a wiredByImpl value of "true", and its value MUST be "false" if all the promoted component references have a wiredByImpl value of "false".
  • [ASM60037] include processing MUST take place before the processing of the @promote attribute of a composite reference is performed.
  • [ASM60038] include processing MUST take place before the processing of the @promote attribute of a composite service is performed.
  • [ASM60039]include processing MUST take place before the @source and @target attributes of a wire are resolved.
  • [ASM60040] A single property element MUST NOT contain both a @type attribute and an @element attribute.
  • [ASM60041] If the included composite has the value true for the attribute @local then the including composite MUST have the same value for the @local attribute, else it is an error.
  • [ASM60042] The @name attribute of an include element MUST be the QName of a composite in the SCA Domain.
  • [ASM60043] The interface declared by the target of a wire MUST be a compatible superset of the interface declared by the source of the wire.
  • [ASM60045] An SCA runtime MUST introspect the componentType of a Composite used as a Component Implementation following the rules defined in the section "Component Type of a Composite used as a Component Implementation"
  • [ASM60047] If there is no component service with @name corresponding to service-name, the SCA runtime MUST raise an error.
  • [ASM60048] If service-name is not present, the target component MUST have one and only one service with an interface that is a compatible superset of the wire source’s interface and satisifies the policy requirements of the wire source, and the SCA runtime MUST use this service for the wire.
  • [ASM60049] If binding-name is present, the binding subelement of the target service with @name corresponding to binding-name MUST be used for the wire.
  • [ASM60050] If there is no binding subelement of the target service with @name corresponding to binding-name, the SCA runtime MUST raise an error.
  • [ASM80002] Remotable service Interfaces MUST NOT make use of method or operation overloading.
  • [ASM80003] If a remotable service is called locally or remotely, the SCA container MUST ensure sure that no modification of input messages by the service or post-invocation modifications to return messages are seen by the caller.
  • [ASM90002] When a service or reference has multiple bindings, all noncallback bindings of the service or reference MUST have unique names, and all callback bindings of the service or reference MUST have unique names.
  • [ASM90005] For a binding.sca of a component service, the @uri attribute MUST NOT be present.
  • [CPP110001]: An SCA implementation MUST reject a composite file that does not conform to http://docs.oasis-open.org/opencsa/sca/200912/sca-interface-cpp-1.1.xsd or http://docs.oasis-open.org/opencsa/sca/200912/sca-implementation-cpp-1.1.xsd.
  • [CPP110002]: An SCA implementation MUST reject a componentType file that does not conform to http://docs.oasis-open.org/opencsa/sca/200912/sca-interface-cpp-1.1.xsd.
  • [CPP110003]: An SCA implementation MUST reject a contribution file that does not conform to http://docs.oasis-open.org/opencsa/sca/200912/sca-contribution-cpp-1.1.xsd
  • [ASM12001] For any contribution packaging it MUST be possible to present the artifacts of the packaging to SCA as a hierarchy of resources based off of a single root
  • [ASM12002] Within any contribution packaging A directory resource SHOULD exist at the root of the hierarchy named META-INF
  • [ASM12003] Within any contribution packaging a document SHOULD exist directly under the META-INF directory named sca-contribution.xml which lists the SCA Composites within the contribution that are runnable.
  • [ASM12005] Where present, artifact-related or packaging-related artifact resolution mechanisms MUST be used by the SCA runtime to resolve artifact dependencies.
  • [ASM12006] SCA requires that all runtimes MUST support the ZIP packaging format for contributions.
  • [ASM12010] Where present, non-SCA artifact resolution mechanisms MUST be used by the SCA runtime in precendence to the SCA mechanisms
  • [ASM12021] The SCA runtime MUST raise an error if an artifact cannot be resolved using these mechanisms, if present.
  • [ASM12025] The SCA runtime MUST raise an error if an artifact cannot be resolved by using artifact-related or packaging-related artifact resolution mechanisms, if present, by searching locations identified by the import statements of the contribution, if present, and by searching the contents of the contribution.
  • [ASM12027] An SCA runtime MUST reject files that do not conform to the schema declared in sca-contribution.xsd.
  • [ASM12032] Checking for errors in artifacts MUST NOT be done for artifacts in the Installed state (ie where the artifacts are simply part of installed contributions)
  • [ASM12033] Errors in artifacts MUST be detected either during the Deployment of the artifacts, or during the process of putting the artifacts into the Running state,
  • [ASM13001] An SCA runtime MUST reject a composite file that does not conform to the sca-core.xsd, sca-interface-wsdl.xsd, scaimplementation- composite.xsd and sca-binding-sca.xsd schema.
  • [ASM13002] An SCA runtime MUST reject a contribution file that does not conform to the sca-contribution.xsd schema.
  • [ASM13003] An SCA runtime MUST reject a definitions file that does not conform to the sca-definitions.xsd schema.
  • [CPP20007]: The @name attribute of a function child element of a interface.cpp MUST be unique amongst the function elements of that interface.cpp.
  • [CPP20008]: The @name attribute of a callbackFunction child element of a interface.cpp MUST be unique amongst the callbackFunction elements of that interface.cpp.
  • [CPP20009]: The name of the componentType file for a C++ implementation MUST match the class name (excluding any namespace definition) of the implementations as defined by the @class attribute of the implementation.cpp element.
  • [CPP20010]: The @name attribute of a function child element of a implementation.cpp MUST be unique amongst the function elements of that implementation.