You are viewing an old version of this page. View the current version.
Compare with Current
View Page History
« Previous
Version 17
Next »
Reference/Service Wiring Cases:
Component Reference |
Component Service |
Effective Wire |
Normalized/Resolved Component Reference |
<component name="C1">
<reference name="R1" target="C2/S1">
<binding.sca/>
<binding.y/>
</reference>
</component> |
<component name="C2">
<service name="S1">
<binding.sca/>
</service>
</component> |
C1/R1 -- binding.sca --> C2/S1 |
<reference name="R1">
<binding.sca uri="C2/S1"/>
</reference> |
|
<component name="C2">
<service name="S1">
<binding.y/>
</service>
</component> |
C1/R1 -- binding.y --> C2/S1 |
<reference name="R1">
<binding.y uri="C2/S1"/>
</reference> |
|
<component name="C2">
<service name="S1">
<binding.x/>
</service>
</component> |
Invalid (no matching binding) |
Invalid |
<component name="C1">
<reference name="R1" target="C2/S1 C3/S1">
<binding.sca/>
<binding.y/>
</reference>
</component> |
<component name="C2">
<service name="S1">
<binding.sca/>
</service>
</component>
<component name="C3">
<service name="S1">
<binding.y/>
</service>
</component> |
Two wires:
1. C1/R1-->C2/S1 (binding.sca)
2. C1/R1-->C3/S1 (binding.y) |
<reference name="R1">
<binding.sca uri="C2/S1"/>
<binding.y uri="C3/S1"/>
</reference> |
<reference name="R1" multiplicity="1..1">
<binding.x uri="http://a"/>
<binding.y uri="http://b"/>
</reference> |
|
Is this valid to have more than bindings with explicit URIs
for a reference with multiplity 0..1 or 1..1? |
Invalid |
<reference name="R1" multiplicity="1..N">
<binding.x uri="http://a"/>
<binding.y uri="http://b"/>
</reference> |
|
Are there two wires?
C1/R1-->http://a (binding.x)
C1/R1-->http://b (binding.y)
Are the following references equivalent
if the multiplicity is 1..N or 0..N?
<reference name="R1" target="C2/S1 C3/S1">
<binding.sca/>
</reference>
<reference name="R1">
<binding.sca uri="C2/S1"/>
<binding.sca uri="C3/S1"/>
</reference> |
<reference name="R1">
<binding.x uri="http://a"/>
<binding.y uri="http://b"/>
</reference> |
Inner Component Reference |
Composite Reference |
Outer Component Reference |
Effective Wire |
Normalized/Resolved Component Reference |
Multiplicity = 1..1
<component name="C1">
<reference name="R1" target="C2/S1">
</reference>
</component> |
<reference name="R1" promote="C1/R1">
<binding.x>
</reference> |
<reference name="R1">
</reference> |
C1/R1-->C2/S1 (binding.x) |
<reference name="R1">
<binding.x uri="C2/S1"/>
</reference> |
Multiplicity = 1..1
<component name="C1">
<reference name="R1" target="C2/S1">
</reference></component> |
<reference name="R1" promote="C1/R1">
<binding.x>
</reference> |
<reference name="R1" target="C3/S1">
</reference> |
Is it valid to override the target? |
Invalid (violates the multiplicity) |
Multiplicity = 1..N
<component name="C1">
<reference name="R1" target="C2/S1">
</reference>
</component> |
<reference name="R1" promote="C1/R1">
<binding.x uri="http://a">
</reference> |
<reference name="R1">
</reference> |
C1/R1-->C2/S1 (binding.sca)
C1/R1-->http://a (binding.x)
(Spec line 1071: Component services and component references can be
promoted to composite services and references and also be wired internally
within the composite at the same time. For a reference, this only makes
sense if the reference supports a multiplicity greater than 1.) |
<reference name="R1">
<binding.sca uri="C2/S1"/>
<binding.x uri=
http://a/
>
</reference> |
Multiplicity = 1..N
<component name="C1">
<reference name="R1" target="C2/S1">
</reference></component> |
<reference name="R1" promote="C1/R1">
</reference> |
<reference name="R1" target="C3/S1">
</reference> |
C1/R1-->C2/S1 (binding.sca)
C1/R1-->C3/S1 (binding.sca)? |
<reference name="R1">
<binding.sca uri="C2/S1"/>
<binding.sca uri="C3/S1"/>
</reference> |