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]



Reply via email to