如何使用 IEventBroker 发送事件
How to Send Events with IEventBroker
简单问题:我正在再次评估 E4,并想用 IEventBroker
发送一个简单的事件。多个教程指出这是要走的路:
@Inject
private IEventBroker eventBroker;
this.eventBroker.send("org.acme.event", myEventObject);
然而所有的人都不知道如何将"org.acme.event"注册为主题,所以我不会得到这个例外:
Caused by: java.lang.IllegalArgumentException: invalid topic: org.acme.event
at org.osgi.service.event.Event.validateTopicName(Event.java:236)
at org.osgi.service.event.Event.<init>(Event.java:78)
at org.eclipse.e4.ui.services.internal.events.EventBroker.constructEvent(EventBroker.java:153)
at org.eclipse.e4.ui.services.internal.events.EventBroker.send(EventBroker.java:79)
使用 IEventBroker
发送事件的完整方法是什么?
您不必注册活动主题。
事件主题名称由 OSGi 规范定义(IEventBroker
是 OSGI EventAdmin
的简化接口)。
这里的问题是主题名称的部分只允许'A-Z'、'a-z'、'0-9'、'_'和'-'。部分使用“/”而不是“.”分隔。所以 'org/acme/event' 就可以了。
简单问题:我正在再次评估 E4,并想用 IEventBroker
发送一个简单的事件。多个教程指出这是要走的路:
@Inject
private IEventBroker eventBroker;
this.eventBroker.send("org.acme.event", myEventObject);
然而所有的人都不知道如何将"org.acme.event"注册为主题,所以我不会得到这个例外:
Caused by: java.lang.IllegalArgumentException: invalid topic: org.acme.event
at org.osgi.service.event.Event.validateTopicName(Event.java:236)
at org.osgi.service.event.Event.<init>(Event.java:78)
at org.eclipse.e4.ui.services.internal.events.EventBroker.constructEvent(EventBroker.java:153)
at org.eclipse.e4.ui.services.internal.events.EventBroker.send(EventBroker.java:79)
使用 IEventBroker
发送事件的完整方法是什么?
您不必注册活动主题。
事件主题名称由 OSGi 规范定义(IEventBroker
是 OSGI EventAdmin
的简化接口)。
这里的问题是主题名称的部分只允许'A-Z'、'a-z'、'0-9'、'_'和'-'。部分使用“/”而不是“.”分隔。所以 'org/acme/event' 就可以了。