编辑:我想我发现我必须使用EventBus。因此,我必须将我的监听器类(带有@subscribe方法的类)注册到EventBus。我如何获得Nexus'的实例? EventBus注册我的"听众"?
我目前正在为Nexus 2开发一个webhook插件,更具体地说是OSS 2.13.0-01。类似于this(适用于Nexus 1.x)。 eventinspector 虽然不像Nexus 2.x那样有效。我浏览了Nexus 2.x here的源代码,但我还没有得到线索。我的想法最初是我只需要实现一个监听器,但是我没有能够得到任何事件,也没有看到任何好的调试机会来找出方法。那么:在nexus 2.x中,如何在事件发生时调用我的方法调用事件?事件总线是最佳选择吗?
谢谢! bigcrash
答案 0 :(得分:2)
我不确定您感兴趣的事件,但我构建了一个插件,用于检测是否将新工件添加到Nexus。我实现了一个类
@Named
@Singleton
public class ArtifactFinder extends ComponentSupport implements EventSubscriber
并实施了一个方法
@Subscribe
public void onDeployEvent(RepositoryItemEventStoreCreate event)
{
StorageItem item = event.getItem();
writeOut(item, "+ ");
}
答案 1 :(得分:0)
根据JF Meiers的回答,这是Nexus Repository Manager OSS 2.13.0-01的工作版本,我们希望获取所有ItemEventStoreCreate事件以发送存储项目的webhook:
@Named
@Singleton
public class testEventPlugin extends ComponentSupport implements EventSubscriber {
@Subscribe
public void onDeployEvent(RepositoryItemEventStoreCreate event) {
HttpClient client = new HttpClient();
GetMethod method = new GetMethod("http://api.webhookinbox.com/i/EfwQnwLM/in/");
try {
int statusCode = client.executeMethod(method);
byte[] responseBody = method.getResponseBody();
System.out.println(new String(responseBody));
} catch (Exception e) {
System.err.println("Fatal error: " + e.getMessage());
e.printStackTrace();
} finally {
method.releaseConnection();
}
}
}
谢谢! bigcrash