Hi there!

I just found an unsupported use case that I'm "stuck" with. Consider a class A that implements the interfaces B, C and EventHandler. For B and C class A wants to be registered as service declaratively. Therefore I use the scr annotations. For interface EventHandler I want to register my service programmatically, as it needs to specify a filter expression). Based on the available annotations I'm not able to do it.

@Service
@Component(...)
public class A implements B, C, EventHandler {

        public void activate(ComponentContext context) {
                Dictionary d = new Hashtable();
                d.put(EventConstants.EVENT_TOPIC, "...");
                d.put(EventConstants.EVENT_FILTER, "(...)");
                context.registerService( EventHandler.class.getName(), this, d);
                // ...
        }

        // ...

}

I think there's no way to do it, as I cannot specify multiple @Service annotations and the value-param of @Service only takes exactly one Class<?> parameter, not an array or sth. Another possibility would be a list of excluded interfaces, if auto-detection was used.

Is there a way to do somehow else? Or is this in fact an unsupported use case?

Kind regards,
        Daniel Bimschas

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to