[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]
Subject: NEW ISSUE: Promoting a reference with multiplicity 1..n and targetsshould default to 0..n
TARGET: Assembly Model Specification
DESCRIPTION: Promoting a reference with multiplicity 1..n and targets should default to 0..n
The description of the @nonOverridable attribute for component
references has a special rule for promotion of a component reference
with @nonOverridable==false, multiplicity 1..1, and a target. In this
case, the default multiplicity of the promoting composite reference
is 0..1. This is based on the assumption that an additional wire will
not normally be required at the composite level because a wire is
already in place at the component level.
The same rationale for a special rule applies to component references
with multiplicity 1..n and one or more targets. For consistency, the
multiplicity of the promoting composite reference should be 0..n by
default, irrespective of the setting of @nonOverridable. This is based
on the assumption that additional wires will not normally be required
at the composite level because one or more wires are already in place
at the component level.
PROPOSAL:
Note 1: This proposal assumes that the proposed resolution for
ASSEMBLY-134 contained in the JIRA is accepted.
Note 2: This proposal moves some text from the description of
the @nonOverridable attribute for component references to the
description of the @multiplicity attribute for composite references.
Replace the description of the @nonOverridable attribute for
component references by the following:
nonOverridable : boolean (0..1) - a boolean value, "false" by default,
which indicates whether this component reference can have its targets
overridden by a composite reference which promotes the component reference.
If @nonOverridable==false, the target(s) of the promoting composite
reference replace all the targets explicitly declared on the component
reference for any value of @multiplicity on the component reference.
If @nonOverridable==true, and the component reference has @multiplicity
0..1 or 1..1 and the reference has a target, promotion implies that the
promoting composite reference has @wiredbyImpl==true and the composite
reference cannot supply a target, but can influence the policy attached
to the component reference.
If @nonOverridable==true, and the component reference @multiplicity is
0..n or 1..n, promotion targeting is additive.
Replace the description of the @multiplicity attribute for
composite references by the following:
multiplicity : (0..1) - Defines the number of wires that can connect the
reference to target services. When present, the multiplicity can have one
of the following values:
. 0..1 – zero or one wire can have the reference as a source
. 1..1 – one wire can have the reference as a source
. 0..n - zero or more wires can have the reference as a source
. 1..n – one or more wires can have the reference as a source
The default value for the @multiplicity attribute depends on the
promotion multiplicity constraint of the promoted component reference
or references. The promotion multiplicity constraint is the same as
the multiplicity of the promoted component reference, except in the
following cases:
. if the promoted component reference has @nonOverridable==false
and @multiplicity 0..1 or 1..1 and the reference has a target, the
promotion multiplicity constraint of the component reference is 0..1.
. if the promoted component reference has @multiplicity 1..n and
the reference has one or more targets, the promotion multiplicity
constraint of the component reference is 0..n.
If the composite reference promotes a single component reference, the
default multiplicity of the composite reference is the promotion
multiplicity constraint of the promoted component reference.
If the composite reference promotes multiple component references
with the same promotion multiplicity constraint, the default multiplicity
of the composite reference is the promotion multiplicity constraint of
the promoted component references.
If the composite reference promotes multiple component references
with different promotion multiplicity constraints, there is no default
value for the @multiplicity attribute of the composite reference and a
value for @multiplicity MUST be specified. [ASMxxxxx]
The value specified for the @multiplicity attribute of a composite
reference MUST be compatible with the promotion multiplicity constraint
of each of the promoted component references, i.e., the multiplicity
has to be equal or further restrict. In more detail:
. Multiplicity 0..1 can be used where each of the promoted component
references has a promotion multiplicity constraint of 0..1 or 0..n
. Multiplicity 1..1 can be used where each of the promoted component
references has a promotion multiplicity constraint of 0..1, 0..n,
1..1, or 1..n
. Multiplicity 1..n can be used where each of the promoted component
references has a promotion multiplicity constraint of 1..n or 0..n
. Multiplicity 0..n can be used where each of the promoted component
references has a promotion multiplicity constraint of 0..n.
[ASM60011]
Simon
[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]