Alexis Agahi wrote:
Steve just told me that it is not mandatory to declare lazy component in block.xml (obviously if there is no need to configure it manually)
Just a note concerning implicit components ...
1. if a packaged profile (<classname>.xprofile) is provided the implict component will be based on the first packaged profile
2. if a packaged configuration (<classname>.xconfig) is provided the implict component will be configured accordingly
That is really a nice feature that help to keep but, I have a little question.
If I have 2 impl (ImplA & ImplB) of an interface
for example For ImplA * @avalon.component version="1.0" name="ImplAName" lifestyle="singleton" * @avalon.service type="path.Interface"
For ImplB * @avalon.component version="1.0" name="ImplBName" lifestyle="singleton" * @avalon.service type="path.Interface"
How can I declare a dependency using a specific implem * @avalon.dependency type="path.Interface:1.0" key="KeyA" ?
You cannot declare a dependency on an implementation - but you can declare a directive under a <component> tag in you block descriptor to tell Merlin about you assembly requirement. For example
<component name="aaa" class="ImplAName"/>
<component name="bbb" class="ImplBName"/> <component name="ccc" class="Whatever">
<dependencies>
<dependency key="KeyA" source="aaa"/>
</dependencies>
</component>How will merlin choose one implem (A or B) instead of another?
In the above example its simply a case of referencing a declared component. The source attribute is a relative path statement, so for example if you have a component burried away deep inside a few nested blocks, you can reference it using something like "xxx/yyy/zzz/aaa" (whic is a path relative to the container in which the component is contained).
There is a tutorial dealing with this subject at the following url. http://avalon.apache.org/merlin/starting/tutorial/dependencies/index.html
Cheers, Steve.
--
Stephen J. McConnell mailto:[EMAIL PROTECTED]
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
