You could use the object translator and the "instance" ObjectProvider:
<attribute name="service" translator="object" />
<contribution configuration-id="serviceconfig">
<service id="a" service="instance:service.ServiceAImpl" />
<service id="b" service="instance:service.ServiceBImpl" />
</contribution>
ServiceAImpl and ServiceBImpl must define a no arguments constructor.
Achim
Am Tue, 19 Dec 2006 23:05:09 +0100 schrieb kristian marinkovic
<[EMAIL PROTECTED]>:
hi,
is it possible to easily create a contribution with services
without actually defining the service explicitly :)
I currently ended up coding something like the xml snippet
below because i want the IReference injected into
ServiceAImpl and ServiceBImpl. Is there a way of applying
Dependency Injection on object created withing <rules>?
g,
kris
<service-point id="ref" interface="service.IReference">
<invoke-factory>
<construct class="service.Reference" />
</invoke-factory>
</service-point>
<service-point id="service_a" interface="service.IServiceA">
<invoke-factory>
<construct class="service.ServiceAImpl"/>
</invoke-factory>
</service-point>
<service-point id="service_b" interface="service.IServiceB">
<invoke-factory>
<construct class="service.ServiceBImpl"/>
</invoke-factory>
</service-point>
<schema id="services">
<element name="service" key-attribute="id">
<attribute name="id"/>
<attribute name="service" translator="service" />
<rules>
<push-attribute attribute="service" />
<invoke-parent method="addElement" />
</rules>
</element>
</schema>
<configuration-point id="serviceconfig" schema-id="services" />
<contribution configuration-id="serviceconfig">
<service id="a" service="service_a" />
<service id="b" service="service_b" />
</contribution>