[ACCEPTED]-Inject list of objects in CDI (Weld)-jboss-weld
Combining my attempts with an answer from 8 the Weld forum:
@Inject @Any
private Instance<SocialNetworkService> services;
Instance
implements Iterable
, so it is then 7 possible to simply use the for-each loop. The 6 @Any
qualifier is needed.
Another way to do this 5 is by using the event system:
- create a
MessageEvent
(containing all the information about the message) instead of 4 injecting a list of social networks, simply 3 inject the event:
@Inject private Event<MessageEvent> msgEvent;
and fire it:
msgEvent.fire(new MessageEvent(message));
observe the 2 event in all services (regardless of their 1 interface, which might be a plus):
public void consumeMessageEvent(@Observes MessageEvent msgEvent) {..}
I had a look at the JSR-299 specification 10 and it doesn't seem that you can do what 9 you want to do easily and I do not have 8 experience enough with Weld to provide code 7 for this special case.
However, based on 6 chapter 12.3 "Bean Discovery" you might 5 be able to declare the implementations as 4 @Alternative's (to avoid Weld complain about 3 multiple implementations) and listen to 2 ProcessBean events to collect when implementations 1 of SocialNetworkService are seen.
More Related questions
We use cookies to improve the performance of the site. By staying on our site, you agree to the terms of use of cookies.