Я перемещаюсь из org.apache.felix.scr
аннотации к org.osgi.service.component
аннотации. У меня есть набор компонентов, которые наследуются от общего абстрактного класса. В случае felix я могу использовать аннотацию @Component
с опцией componentAbstract=true
над суперклассом, а затем использовать аннотацию @Reference
в суперклассе. Я не могу найти, как перенести это в аннотации osgi.Абстрактные компоненты через org.osgi.service.component аннотации
Можно ли использовать аннотации компонентов в суперклассе компонента? И если да, то каким образом это подходящий способ обработки свойств и генерации метатипов?
Итак, что я ищу, это что-то вроде этого
/* No component definition should be generated for the parent, as it is
abstract and cannot be instantiated */
@Component(property="parent.property=parentValue")
public abstract class Parent {
@Reference
protected Service aService;
protected activate(Map<String,Object> props) {
System.out.println("I have my parent property: "+props.get("parent.property"));
@Override
public abstract void doSomething();
}
/* For this class, the proper Component definition should be generated, also
including the information coming from the annotations in the parent */
@Component(property="child.property=childValue")
public class Child extends Parent {
@Activate
public activate(Map<String,Object> props) {
super.activate(props);
System.out.println("I have my child property: "+props.get("child.property"));
}
public void doSomething() {
aService.doSomething();
}
}
Спасибо за ссылку. Объяснение ясно, но действительно фокусируется на родителях в разных связках. В моем случае оба класса являются частью одного и того же пакета, поэтому аргументы действительно не выполняются. –
Однако я переписал абстрактный класс в заводский компонент и сделаю адаптеры, которые будут выполнять всю специализированную реализацию из дочернего класса. –
С Maven Bundle Плагин можно использовать следующую конфигурацию: '<конфигурации>< _dsannotations-опции> наследует _ dsannotations-опции> Instructions> конфигурация>' –
Puce