Eclipse e4:访问PostContextCreate中的属性

时间:2014-05-22 22:55:20

标签: java eclipse eclipse-rcp e4

我在e4 RCP应用程序中使用生命周期的PostContextCreate部分来创建应用程序的后端“业务逻辑”部分。然后我使用IEclipseContext将其注入上下文。我现在需要在应用程序的执行之间保留一些业务逻辑配置选项。我有一些问题:

  1. 看起来属性(例如可从MContext访问)在这里非常有用,简单的Map<String,String>听起来非常适合我的简单要求,但我怎样才能在PostContextCreate中获取它们?
  2. 如果我的应用程序在clearPersistedState设置为true的情况下运行,我的属性是否会保留? (我猜不是)。
  3. 如果我关闭clearPersistedState,那么它会尝试持续注入上下文中的其他内容吗?
  4. 或者我说这一切都错了?欢迎大家提出意见。我可能只是放弃并读/写我自己的属性文件。

1 个答案:

答案 0 :(得分:2)

我认为Map返回的MApplicationElement.getPersistedState()旨在用于持久数据。这将由-clearPersistedState清除。

生命周期的PostContextCreate方法在启动时很早就开始运行,并且此时并不是所有内容都可用。因此,您可能必须等待应用程序启动完成事件(UIEvents.UILifeCycle.APP_STARTUP_COMPLETE)才能访问持久状态数据。

您始终可以使用传统的Platform.getStateLocation(bundle)获取工作区.metadata中的位置来存储任意数据。 clearPersistedState没有涉及到这一点。

更新

订阅应用启动完成:

@PostContextCreate
public void postContextCreate(IEventBroker eventBroker)
{
  eventBroker.subscribe(UIEvents.UILifeCycle.APP_STARTUP_COMPLETE, new AppStartupCompleteEventHandler());
}


private static final class AppStartupCompleteEventHandler implements EventHandler
{ 
  @Override
  public void handleEvent(final Event event)
  {
    ... your code here
  }
}