Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Keep direct link to trigger in EventListener #365

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}

/**
Expand All @@ -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;
Expand All @@ -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;
Expand All @@ -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;
Expand Down Expand Up @@ -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;
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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());
}
}
Expand Down Expand Up @@ -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());
Expand All @@ -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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,9 +49,9 @@ public class EventListenerTest {
public void setup() {
project = mock(AbstractProject.class);
doReturn("MockProject").when(project).getFullName();
listener = new EventListener(project);
listener = spy(listener);
trigger = mock(GerritTrigger.class);
listener = new EventListener(project, trigger);
listener = spy(listener);
doNothing().when(listener).schedule(same(trigger), any(GerritCause.class), any(GerritTriggeredEvent.class));

jenkins = mock(Jenkins.class);
Expand Down