Hi Achim, thank you for your reply
when i use instance:service.ServiceAImpl i don't have dependency injection (DI) so the setReference(IReference r) method of the ServiceAImpl instance is never called. And the reference within ServiceAImpl stays null :) Another way to solve this would be to have a service that reads all objects from the contribution and sets the reference manually. But this approach implies the use of at least a common interface with the required setter method that i want to avoid (..as using reflection)... in fact can't influence or control (at least not that easy:)). in my case these objects are provided by a drop-in jar. any object that requires some sort of infrastructure should provide the desired setter methods to have it injected by hivemind. As i understand <invoke-factory> is the only way in hivemind to have dependency injection. Am i right? :) Wouldn't it be nice to have a rule like <create-instance> with a autowire attribute? ... just a thought :) g, kris Achim Hügen wrote:
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. AchimAm 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>
