Nexus 2 - 插件开发 - 活动

时间:2017-03-13 12:56:19

标签: java nexus

编辑:我想我发现我必须使用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

2 个答案:

答案 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