Eclipse e4 OSGI服务@Component注释

时间:2016-04-14 07:10:17

标签: osgi rcp e4

如果创建以下OSGI-INF / service.xml并通过Service-Component设置它:我的MANIFEXT.MF中的OSGi-INF / service.xml

<?xml version="1.0" encoding="UTF-8"?>
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="EvalManagerContextFunction">

   <implementation class="x.y.context.EvalManagerContextFunction"/>

   <property name="service.context.key" type="String" value="x.y.eval.EvalManager"/>

   <service>
      <provide interface="org.eclipse.e4.core.contexts.IContextFunction"/>
   </service>

</scr:component>

如果第一次请求EvalManager(调用ContextFunction类compute),则创建Ev​​alManager。

现在,如果我尝试对注释执行相同的操作,则不会调用compute函数。

@Component(name = "EvalManagerContextFunction", service = IContextFunction.class, property = "service.context.key=x.y.eval.EvalManager")
public class EvalManagerContextFunction extends ContextFunction {

    @Override
    public Object compute(IEclipseContext context, String contextKey) {

        EvalManager manager = ContextInjectionFactory.make(EvalManager.class, context);

        context.get(MApplication.class).getContext().set(EvalManager.class, ContextInjectionFactory.make(EvalManager.class, context));

        return manager;

    }

}

1 个答案:

答案 0 :(得分:1)

我无法在Eclipse核心源中的任何位置看到对@Component注释类的任何引用,因此它似乎不受支持。

Eclipse Marketplace here中有一个插件似乎增加了对此的支持(我没试过这个)。

更新:Eclipse Neon Milestone 6(4.6M6)版本中添加了对此的支持。