| Tuscany Wiki > Home > SCA Java Project > Multiple bindings and reference multiplicity |
| 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> |