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; ...@@ -8,6 +8,7 @@ import com.fasterxml.jackson.annotation.JsonTypeInfo;
include=JsonTypeInfo.As.PROPERTY, include=JsonTypeInfo.As.PROPERTY,
property="object_kind") property="object_kind")
@JsonSubTypes({ @JsonSubTypes({
@JsonSubTypes.Type(value = BuildEvent.class, name = BuildEvent.OBJECT_KIND),
@JsonSubTypes.Type(value = IssueEvent.class, name = IssueEvent.OBJECT_KIND), @JsonSubTypes.Type(value = IssueEvent.class, name = IssueEvent.OBJECT_KIND),
@JsonSubTypes.Type(value = JobEvent.class, name = JobEvent.OBJECT_KIND), @JsonSubTypes.Type(value = JobEvent.class, name = JobEvent.OBJECT_KIND),
@JsonSubTypes.Type(value = MergeRequestEvent.class, name = MergeRequestEvent.OBJECT_KIND), @JsonSubTypes.Type(value = MergeRequestEvent.class, name = MergeRequestEvent.OBJECT_KIND),
......
...@@ -26,7 +26,7 @@ public class JobEvent extends AbstractEvent { ...@@ -26,7 +26,7 @@ public class JobEvent extends AbstractEvent {
private Integer projectId; private Integer projectId;
private String projectName; private String projectName;
private User user; private User user;
private JobCommit commit; private BuildCommit commit;
private EventRepository repository; private EventRepository repository;
public String getObjectKind() { public String getObjectKind() {
...@@ -166,11 +166,11 @@ public class JobEvent extends AbstractEvent { ...@@ -166,11 +166,11 @@ public class JobEvent extends AbstractEvent {
this.user = user; this.user = user;
} }
public JobCommit getCommit() { public BuildCommit getCommit() {
return commit; return commit;
} }
public void setCommit(JobCommit commit) { public void setCommit(BuildCommit commit) {
this.commit = commit; this.commit = commit;
} }
...@@ -182,96 +182,6 @@ public class JobEvent extends AbstractEvent { ...@@ -182,96 +182,6 @@ public class JobEvent extends AbstractEvent {
this.repository = repository; 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 @Override
public String toString() { public String toString() {
return (JacksonJson.toJsonString(this)); return (JacksonJson.toJsonString(this));
......
...@@ -8,11 +8,11 @@ package org.gitlab4j.api.webhook; ...@@ -8,11 +8,11 @@ package org.gitlab4j.api.webhook;
public interface WebHookListener extends java.util.EventListener { 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 { ...@@ -23,6 +23,14 @@ public interface WebHookListener extends java.util.EventListener {
default void onIssueEvent(IssueEvent event) { 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 * This method is called when a WebHook merge request event has been received
* *
......
...@@ -98,8 +98,8 @@ public class WebHookManager implements HookManager { ...@@ -98,8 +98,8 @@ public class WebHookManager implements HookManager {
LOGGER.info("handleEvent: X-Gitlab-Event=" + eventName); LOGGER.info("handleEvent: X-Gitlab-Event=" + eventName);
switch (eventName) { switch (eventName) {
case JobEvent.JOB_HOOK_X_GITLAB_EVENT:
case IssueEvent.X_GITLAB_EVENT: case IssueEvent.X_GITLAB_EVENT:
case JobEvent.JOB_HOOK_X_GITLAB_EVENT:
case MergeRequestEvent.X_GITLAB_EVENT: case MergeRequestEvent.X_GITLAB_EVENT:
case NoteEvent.X_GITLAB_EVENT: case NoteEvent.X_GITLAB_EVENT:
case PipelineEvent.X_GITLAB_EVENT: case PipelineEvent.X_GITLAB_EVENT:
...@@ -159,14 +159,16 @@ public class WebHookManager implements HookManager { ...@@ -159,14 +159,16 @@ public class WebHookManager implements HookManager {
LOGGER.info("handleEvent: object_kind=" + event.getObjectKind()); LOGGER.info("handleEvent: object_kind=" + event.getObjectKind());
switch (event.getObjectKind()) { switch (event.getObjectKind()) {
case JobEvent.OBJECT_KIND: case BuildEvent.OBJECT_KIND:
case IssueEvent.OBJECT_KIND: case IssueEvent.OBJECT_KIND:
case JobEvent.OBJECT_KIND:
case MergeRequestEvent.OBJECT_KIND: case MergeRequestEvent.OBJECT_KIND:
case NoteEvent.OBJECT_KIND: case NoteEvent.OBJECT_KIND:
case PipelineEvent.OBJECT_KIND: case PipelineEvent.OBJECT_KIND:
case PushEvent.OBJECT_KIND: case PushEvent.OBJECT_KIND:
case TagPushEvent.OBJECT_KIND: case TagPushEvent.OBJECT_KIND:
case WikiPageEvent.OBJECT_KIND: case WikiPageEvent.OBJECT_KIND:
fireEvent(event);
break; break;
default: default:
...@@ -174,8 +176,6 @@ public class WebHookManager implements HookManager { ...@@ -174,8 +176,6 @@ public class WebHookManager implements HookManager {
LOGGER.warning(message); LOGGER.warning(message);
throw new GitLabApiException(message); throw new GitLabApiException(message);
} }
fireEvent(event);
} }
/** /**
...@@ -208,14 +208,18 @@ public class WebHookManager implements HookManager { ...@@ -208,14 +208,18 @@ public class WebHookManager implements HookManager {
public void fireEvent(Event event) throws GitLabApiException { public void fireEvent(Event event) throws GitLabApiException {
switch (event.getObjectKind()) { switch (event.getObjectKind()) {
case JobEvent.OBJECT_KIND: case BuildEvent.OBJECT_KIND:
fireJobEvent((JobEvent) event); fireBuildEvent((BuildEvent) event);
break; break;
case IssueEvent.OBJECT_KIND: case IssueEvent.OBJECT_KIND:
fireIssueEvent((IssueEvent) event); fireIssueEvent((IssueEvent) event);
break; break;
case JobEvent.OBJECT_KIND:
fireJobEvent((JobEvent) event);
break;
case MergeRequestEvent.OBJECT_KIND: case MergeRequestEvent.OBJECT_KIND:
fireMergeRequestEvent((MergeRequestEvent) event); fireMergeRequestEvent((MergeRequestEvent) event);
break; break;
...@@ -247,9 +251,9 @@ public class WebHookManager implements HookManager { ...@@ -247,9 +251,9 @@ public class WebHookManager implements HookManager {
} }
} }
protected void fireJobEvent(JobEvent jobEvent) { protected void fireBuildEvent(BuildEvent buildEvent) {
for (WebHookListener listener : webhookListeners) { for (WebHookListener listener : webhookListeners) {
listener.onJobEvent(jobEvent); listener.onBuildEvent(buildEvent);
} }
} }
...@@ -259,6 +263,12 @@ public class WebHookManager implements HookManager { ...@@ -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) { protected void fireMergeRequestEvent(MergeRequestEvent mergeRequestEvent) {
for (WebHookListener listener : webhookListeners) { for (WebHookListener listener : webhookListeners) {
listener.onMergeRequestEvent(mergeRequestEvent); listener.onMergeRequestEvent(mergeRequestEvent);
......
...@@ -23,6 +23,7 @@ import org.gitlab4j.api.systemhooks.SystemHookListener; ...@@ -23,6 +23,7 @@ import org.gitlab4j.api.systemhooks.SystemHookListener;
import org.gitlab4j.api.systemhooks.SystemHookManager; import org.gitlab4j.api.systemhooks.SystemHookManager;
import org.gitlab4j.api.systemhooks.TeamMemberSystemHookEvent; import org.gitlab4j.api.systemhooks.TeamMemberSystemHookEvent;
import org.gitlab4j.api.utils.JacksonJson; import org.gitlab4j.api.utils.JacksonJson;
import org.gitlab4j.api.webhook.BuildEvent;
import org.gitlab4j.api.webhook.Event; import org.gitlab4j.api.webhook.Event;
import org.gitlab4j.api.webhook.IssueEvent; import org.gitlab4j.api.webhook.IssueEvent;
import org.gitlab4j.api.webhook.JobEvent; import org.gitlab4j.api.webhook.JobEvent;
...@@ -123,6 +124,13 @@ public class TestGitLabApiEvents { ...@@ -123,6 +124,13 @@ public class TestGitLabApiEvents {
assertTrue(compareJson(noteEvent, "note-snippet-event.json")); 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 @Test
public void testJobEvent() throws Exception { public void testJobEvent() throws Exception {
...@@ -140,12 +148,15 @@ public class TestGitLabApiEvents { ...@@ -140,12 +148,15 @@ public class TestGitLabApiEvents {
@Test @Test
public void testPolymorphicEvent() throws Exception { public void testPolymorphicEvent() throws Exception {
Event event = unmarshalResource(Event.class, "job-event.json"); Event event = unmarshalResource(Event.class, "build-event.json");
assertTrue(compareJson(event, "job-event.json")); assertTrue(compareJson(event, "build-event.json"));
event = unmarshalResource(Event.class, "issue-event.json"); event = unmarshalResource(Event.class, "issue-event.json");
assertTrue(compareJson(event, "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"); event = unmarshalResource(Event.class, "merge-request-event.json");
assertTrue(compareJson(event, "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