diff --git a/src/main/java/com/sonyericsson/hudson/plugins/gerrit/trigger/hudsontrigger/EventListener.java b/src/main/java/com/sonyericsson/hudson/plugins/gerrit/trigger/hudsontrigger/EventListener.java index c0f9e881f..c27f7f8b8 100644 --- a/src/main/java/com/sonyericsson/hudson/plugins/gerrit/trigger/hudsontrigger/EventListener.java +++ b/src/main/java/com/sonyericsson/hudson/plugins/gerrit/trigger/hudsontrigger/EventListener.java @@ -73,23 +73,27 @@ public final class EventListener implements GerritEventListener { private static final Logger logger = LoggerFactory.getLogger(EventListener.class); private final String job; + private final transient GerritTrigger trigger; /** * Standard constructor. * * @param job the job to handle. + * @param trigger the trigger */ - EventListener(@Nonnull Job job) { - this(job.getFullName()); + EventListener(@Nonnull Job job, GerritTrigger trigger) { + this(job.getFullName(), trigger); } /** * Standard constructor. * * @param fullName the job to handle full name. + * @param trigger the trigger */ - EventListener(@Nonnull String fullName) { + EventListener(@Nonnull String fullName, GerritTrigger trigger) { this.job = fullName; + this.trigger = trigger; } /** @@ -104,7 +108,7 @@ public String getJob() { @Override public void gerritEvent(GerritEvent event) { logger.trace("event: {}", event); - GerritTrigger t = getTrigger(); + GerritTrigger t = trigger; if (t == null) { logger.warn("Couldn't find a configured trigger for {}", job); return; @@ -126,7 +130,7 @@ public void gerritEvent(GerritEvent event) { */ public void gerritEvent(ManualPatchsetCreated event) { logger.trace("event: {}", event); - GerritTrigger t = getTrigger(); + GerritTrigger t = trigger; if (t == null) { logger.warn("Couldn't find a configured trigger for {}", job); return; @@ -145,7 +149,7 @@ public void gerritEvent(ManualPatchsetCreated event) { */ public void gerritEvent(CommentAdded event) { logger.trace("event: {}", event); - GerritTrigger t = getTrigger(); + GerritTrigger t = trigger; if (t == null) { logger.warn("Couldn't find a configured trigger for {}", job); return; @@ -370,11 +374,7 @@ private void notifyOnTriggered(GerritTrigger t, GerritTriggeredEvent event) { @CheckForNull @Restricted(NoExternalUse.class) public GerritTrigger getTrigger() { - Job p = findJob(); - if (p == null) { - return null; - } - return GerritTrigger.getTrigger(p); + return trigger; } /** diff --git a/src/main/java/com/sonyericsson/hudson/plugins/gerrit/trigger/hudsontrigger/GerritTrigger.java b/src/main/java/com/sonyericsson/hudson/plugins/gerrit/trigger/hudsontrigger/GerritTrigger.java index b4258cce8..d6a2dafe2 100644 --- a/src/main/java/com/sonyericsson/hudson/plugins/gerrit/trigger/hudsontrigger/GerritTrigger.java +++ b/src/main/java/com/sonyericsson/hudson/plugins/gerrit/trigger/hudsontrigger/GerritTrigger.java @@ -516,7 +516,7 @@ void onJobRenamed(String oldFullName, String newFullName) { if (plugin != null) { GerritHandler handler = plugin.getHandler(); if (handler != null) { - handler.removeListener(new EventListener(oldFullName)); + handler.removeListener(new EventListener(oldFullName, this)); handler.addListener(createListener()); } } @@ -572,7 +572,7 @@ private void addThisTriggerAsListener(Job project) { if (plugin != null) { GerritHandler handler = plugin.getHandler(); if (handler != null) { - handler.addListener(createListener(project)); + handler.addListener(createListener(project, this)); } else { logger.warn("The plugin has no handler instance (BUG)! Project {} will not be triggered!", project.getFullDisplayName()); @@ -586,19 +586,20 @@ private void addThisTriggerAsListener(Job project) { /** * Creates an {@link EventListener} for the provided project. * @param project the project + * @param trigger the trigger * @return a new listener instance */ - /*package*/ static EventListener createListener(Job project) { - return new EventListener(project); + /*package*/ static EventListener createListener(Job project, GerritTrigger trigger) { + return new EventListener(project, trigger); } /** * Creates an {@link EventListener} for this trigger's job. * @return a new listener instance. - * @see #createListener(hudson.model.Job) + * @see #createListener(hudson.model.Job, GerritTrigger) */ /*package*/ EventListener createListener() { - return createListener(job); + return createListener(job, this); } @Override