Commit 923cf342 authored by Greg Messner's avatar Greg Messner
Browse files

Fixes to support actual Job Hook event (docs at GitLab are wrong) (#357).

parent baebd037
......@@ -8,6 +8,7 @@ import com.fasterxml.jackson.annotation.JsonTypeInfo;
include=JsonTypeInfo.As.PROPERTY,
property="object_kind")
@JsonSubTypes({
@JsonSubTypes.Type(value = BuildEvent.class, name = BuildEvent.OBJECT_KIND),
@JsonSubTypes.Type(value = IssueEvent.class, name = IssueEvent.OBJECT_KIND),
@JsonSubTypes.Type(value = JobEvent.class, name = JobEvent.OBJECT_KIND),
@JsonSubTypes.Type(value = MergeRequestEvent.class, name = MergeRequestEvent.OBJECT_KIND),
......
......@@ -26,7 +26,7 @@ public class JobEvent extends AbstractEvent {
private Integer projectId;
private String projectName;
private User user;
private JobCommit commit;
private BuildCommit commit;
private EventRepository repository;
public String getObjectKind() {
......@@ -166,11 +166,11 @@ public class JobEvent extends AbstractEvent {
this.user = user;
}
public JobCommit getCommit() {
public BuildCommit getCommit() {
return commit;
}
public void setCommit(JobCommit commit) {
public void setCommit(BuildCommit commit) {
this.commit = commit;
}
......@@ -182,96 +182,6 @@ public class JobEvent extends AbstractEvent {
this.repository = repository;
}
public class JobCommit {
private Integer id;
private String sha;
private String message;
private String authorName;
private String authorEmail;
private String status;
private Integer duration;
private Date startedAt;
private Date finishedAt;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getSha() {
return sha;
}
public void setSha(String sha) {
this.sha = sha;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public String getAuthorName() {
return authorName;
}
public void setAuthorName(String authorName) {
this.authorName = authorName;
}
public String getAuthorEmail() {
return authorEmail;
}
public void setAuthorEmail(String authorEmail) {
this.authorEmail = authorEmail;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public Integer getDuration() {
return duration;
}
public void setDuration(Integer duration) {
this.duration = duration;
}
public Date getStartedAt() {
return startedAt;
}
public void setStartedAt(Date startedAt) {
this.startedAt = startedAt;
}
public Date getFinishedAt() {
return finishedAt;
}
public void setFinishedAt(Date finishedAt) {
this.finishedAt = finishedAt;
}
@Override
public String toString() {
return (JacksonJson.toJsonString(this));
}
}
@Override
public String toString() {
return (JacksonJson.toJsonString(this));
......
......@@ -8,11 +8,11 @@ package org.gitlab4j.api.webhook;
public interface WebHookListener extends java.util.EventListener {
/**
* This method is called when a WebHook job event has been received.
* This method is called when a WebHook build event has been received.
*
* @param jobEvent the JobEvent instance
* @param buildEvent the BuildEvent instance
*/
default void onJobEvent(JobEvent jobEvent) {
default void onBuildEvent(BuildEvent buildEvent) {
}
/**
......@@ -23,6 +23,14 @@ public interface WebHookListener extends java.util.EventListener {
default void onIssueEvent(IssueEvent event) {
}
/**
* This method is called when a WebHook job event has been received.
*
* @param jobEvent the JobEvent instance
*/
default void onJobEvent(JobEvent jobEvent) {
}
/**
* This method is called when a WebHook merge request event has been received
*
......
......@@ -98,8 +98,8 @@ public class WebHookManager implements HookManager {
LOGGER.info("handleEvent: X-Gitlab-Event=" + eventName);
switch (eventName) {
case JobEvent.JOB_HOOK_X_GITLAB_EVENT:
case IssueEvent.X_GITLAB_EVENT:
case JobEvent.JOB_HOOK_X_GITLAB_EVENT:
case MergeRequestEvent.X_GITLAB_EVENT:
case NoteEvent.X_GITLAB_EVENT:
case PipelineEvent.X_GITLAB_EVENT:
......@@ -159,14 +159,16 @@ public class WebHookManager implements HookManager {
LOGGER.info("handleEvent: object_kind=" + event.getObjectKind());
switch (event.getObjectKind()) {
case JobEvent.OBJECT_KIND:
case BuildEvent.OBJECT_KIND:
case IssueEvent.OBJECT_KIND:
case JobEvent.OBJECT_KIND:
case MergeRequestEvent.OBJECT_KIND:
case NoteEvent.OBJECT_KIND:
case PipelineEvent.OBJECT_KIND:
case PushEvent.OBJECT_KIND:
case TagPushEvent.OBJECT_KIND:
case WikiPageEvent.OBJECT_KIND:
fireEvent(event);
break;
default:
......@@ -174,8 +176,6 @@ public class WebHookManager implements HookManager {
LOGGER.warning(message);
throw new GitLabApiException(message);
}
fireEvent(event);
}
/**
......@@ -208,14 +208,18 @@ public class WebHookManager implements HookManager {
public void fireEvent(Event event) throws GitLabApiException {
switch (event.getObjectKind()) {
case JobEvent.OBJECT_KIND:
fireJobEvent((JobEvent) event);
case BuildEvent.OBJECT_KIND:
fireBuildEvent((BuildEvent) event);
break;
case IssueEvent.OBJECT_KIND:
fireIssueEvent((IssueEvent) event);
break;
case JobEvent.OBJECT_KIND:
fireJobEvent((JobEvent) event);
break;
case MergeRequestEvent.OBJECT_KIND:
fireMergeRequestEvent((MergeRequestEvent) event);
break;
......@@ -247,9 +251,9 @@ public class WebHookManager implements HookManager {
}
}
protected void fireJobEvent(JobEvent jobEvent) {
protected void fireBuildEvent(BuildEvent buildEvent) {
for (WebHookListener listener : webhookListeners) {
listener.onJobEvent(jobEvent);
listener.onBuildEvent(buildEvent);
}
}
......@@ -259,6 +263,12 @@ public class WebHookManager implements HookManager {
}
}
protected void fireJobEvent(JobEvent jobEvent) {
for (WebHookListener listener : webhookListeners) {
listener.onJobEvent(jobEvent);
}
}
protected void fireMergeRequestEvent(MergeRequestEvent mergeRequestEvent) {
for (WebHookListener listener : webhookListeners) {
listener.onMergeRequestEvent(mergeRequestEvent);
......
......@@ -23,6 +23,7 @@ import org.gitlab4j.api.systemhooks.SystemHookListener;
import org.gitlab4j.api.systemhooks.SystemHookManager;
import org.gitlab4j.api.systemhooks.TeamMemberSystemHookEvent;
import org.gitlab4j.api.utils.JacksonJson;
import org.gitlab4j.api.webhook.BuildEvent;
import org.gitlab4j.api.webhook.Event;
import org.gitlab4j.api.webhook.IssueEvent;
import org.gitlab4j.api.webhook.JobEvent;
......@@ -123,6 +124,13 @@ public class TestGitLabApiEvents {
assertTrue(compareJson(noteEvent, "note-snippet-event.json"));
}
@Test
public void testBuildEvent() throws Exception {
Event event = unmarshalResource(BuildEvent.class, "build-event.json");
assertTrue(compareJson(event, "build-event.json"));
}
@Test
public void testJobEvent() throws Exception {
......@@ -140,12 +148,15 @@ public class TestGitLabApiEvents {
@Test
public void testPolymorphicEvent() throws Exception {
Event event = unmarshalResource(Event.class, "job-event.json");
assertTrue(compareJson(event, "job-event.json"));
Event event = unmarshalResource(Event.class, "build-event.json");
assertTrue(compareJson(event, "build-event.json"));
event = unmarshalResource(Event.class, "issue-event.json");
assertTrue(compareJson(event, "issue-event.json"));
event = unmarshalResource(Event.class, "job-event.json");
assertTrue(compareJson(event, "job-event.json"));
event = unmarshalResource(Event.class, "merge-request-event.json");
assertTrue(compareJson(event, "merge-request-event.json"));
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment