Skip to content

Commit 923cf34

Browse files
committed
Fixes to support actual Job Hook event (docs at GitLab are wrong) (#357).
1 parent baebd03 commit 923cf34

File tree

5 files changed

+46
-106
lines changed

5 files changed

+46
-106
lines changed

src/main/java/org/gitlab4j/api/webhook/Event.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
include=JsonTypeInfo.As.PROPERTY,
99
property="object_kind")
1010
@JsonSubTypes({
11+
@JsonSubTypes.Type(value = BuildEvent.class, name = BuildEvent.OBJECT_KIND),
1112
@JsonSubTypes.Type(value = IssueEvent.class, name = IssueEvent.OBJECT_KIND),
1213
@JsonSubTypes.Type(value = JobEvent.class, name = JobEvent.OBJECT_KIND),
1314
@JsonSubTypes.Type(value = MergeRequestEvent.class, name = MergeRequestEvent.OBJECT_KIND),

src/main/java/org/gitlab4j/api/webhook/JobEvent.java

Lines changed: 3 additions & 93 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ public class JobEvent extends AbstractEvent {
2626
private Integer projectId;
2727
private String projectName;
2828
private User user;
29-
private JobCommit commit;
29+
private BuildCommit commit;
3030
private EventRepository repository;
3131

3232
public String getObjectKind() {
@@ -166,11 +166,11 @@ public void setUser(User user) {
166166
this.user = user;
167167
}
168168

169-
public JobCommit getCommit() {
169+
public BuildCommit getCommit() {
170170
return commit;
171171
}
172172

173-
public void setCommit(JobCommit commit) {
173+
public void setCommit(BuildCommit commit) {
174174
this.commit = commit;
175175
}
176176

@@ -182,96 +182,6 @@ public void setRepository(EventRepository repository) {
182182
this.repository = repository;
183183
}
184184

185-
public class JobCommit {
186-
187-
private Integer id;
188-
private String sha;
189-
private String message;
190-
private String authorName;
191-
private String authorEmail;
192-
private String status;
193-
private Integer duration;
194-
private Date startedAt;
195-
private Date finishedAt;
196-
197-
public Integer getId() {
198-
return id;
199-
}
200-
201-
public void setId(Integer id) {
202-
this.id = id;
203-
}
204-
205-
public String getSha() {
206-
return sha;
207-
}
208-
209-
public void setSha(String sha) {
210-
this.sha = sha;
211-
}
212-
213-
public String getMessage() {
214-
return message;
215-
}
216-
217-
public void setMessage(String message) {
218-
this.message = message;
219-
}
220-
221-
public String getAuthorName() {
222-
return authorName;
223-
}
224-
225-
public void setAuthorName(String authorName) {
226-
this.authorName = authorName;
227-
}
228-
229-
public String getAuthorEmail() {
230-
return authorEmail;
231-
}
232-
233-
public void setAuthorEmail(String authorEmail) {
234-
this.authorEmail = authorEmail;
235-
}
236-
237-
public String getStatus() {
238-
return status;
239-
}
240-
241-
public void setStatus(String status) {
242-
this.status = status;
243-
}
244-
245-
public Integer getDuration() {
246-
return duration;
247-
}
248-
249-
public void setDuration(Integer duration) {
250-
this.duration = duration;
251-
}
252-
253-
public Date getStartedAt() {
254-
return startedAt;
255-
}
256-
257-
public void setStartedAt(Date startedAt) {
258-
this.startedAt = startedAt;
259-
}
260-
261-
public Date getFinishedAt() {
262-
return finishedAt;
263-
}
264-
265-
public void setFinishedAt(Date finishedAt) {
266-
this.finishedAt = finishedAt;
267-
}
268-
269-
@Override
270-
public String toString() {
271-
return (JacksonJson.toJsonString(this));
272-
}
273-
}
274-
275185
@Override
276186
public String toString() {
277187
return (JacksonJson.toJsonString(this));

src/main/java/org/gitlab4j/api/webhook/WebHookListener.java

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,11 @@
88
public interface WebHookListener extends java.util.EventListener {
99

1010
/**
11-
* This method is called when a WebHook job event has been received.
11+
* This method is called when a WebHook build event has been received.
1212
*
13-
* @param jobEvent the JobEvent instance
13+
* @param buildEvent the BuildEvent instance
1414
*/
15-
default void onJobEvent(JobEvent jobEvent) {
15+
default void onBuildEvent(BuildEvent buildEvent) {
1616
}
1717

1818
/**
@@ -23,6 +23,14 @@ default void onJobEvent(JobEvent jobEvent) {
2323
default void onIssueEvent(IssueEvent event) {
2424
}
2525

26+
/**
27+
* This method is called when a WebHook job event has been received.
28+
*
29+
* @param jobEvent the JobEvent instance
30+
*/
31+
default void onJobEvent(JobEvent jobEvent) {
32+
}
33+
2634
/**
2735
* This method is called when a WebHook merge request event has been received
2836
*

src/main/java/org/gitlab4j/api/webhook/WebHookManager.java

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -98,8 +98,8 @@ public Event handleRequest(HttpServletRequest request) throws GitLabApiException
9898
LOGGER.info("handleEvent: X-Gitlab-Event=" + eventName);
9999
switch (eventName) {
100100

101-
case JobEvent.JOB_HOOK_X_GITLAB_EVENT:
102101
case IssueEvent.X_GITLAB_EVENT:
102+
case JobEvent.JOB_HOOK_X_GITLAB_EVENT:
103103
case MergeRequestEvent.X_GITLAB_EVENT:
104104
case NoteEvent.X_GITLAB_EVENT:
105105
case PipelineEvent.X_GITLAB_EVENT:
@@ -159,23 +159,23 @@ public void handleEvent(Event event) throws GitLabApiException {
159159
LOGGER.info("handleEvent: object_kind=" + event.getObjectKind());
160160

161161
switch (event.getObjectKind()) {
162-
case JobEvent.OBJECT_KIND:
162+
case BuildEvent.OBJECT_KIND:
163163
case IssueEvent.OBJECT_KIND:
164+
case JobEvent.OBJECT_KIND:
164165
case MergeRequestEvent.OBJECT_KIND:
165166
case NoteEvent.OBJECT_KIND:
166167
case PipelineEvent.OBJECT_KIND:
167168
case PushEvent.OBJECT_KIND:
168169
case TagPushEvent.OBJECT_KIND:
169170
case WikiPageEvent.OBJECT_KIND:
171+
fireEvent(event);
170172
break;
171173

172174
default:
173175
String message = "Unsupported event object_kind, object_kind=" + event.getObjectKind();
174176
LOGGER.warning(message);
175177
throw new GitLabApiException(message);
176178
}
177-
178-
fireEvent(event);
179179
}
180180

181181
/**
@@ -208,14 +208,18 @@ public void removeListener(WebHookListener listener) {
208208
public void fireEvent(Event event) throws GitLabApiException {
209209

210210
switch (event.getObjectKind()) {
211-
case JobEvent.OBJECT_KIND:
212-
fireJobEvent((JobEvent) event);
211+
case BuildEvent.OBJECT_KIND:
212+
fireBuildEvent((BuildEvent) event);
213213
break;
214214

215215
case IssueEvent.OBJECT_KIND:
216216
fireIssueEvent((IssueEvent) event);
217217
break;
218218

219+
case JobEvent.OBJECT_KIND:
220+
fireJobEvent((JobEvent) event);
221+
break;
222+
219223
case MergeRequestEvent.OBJECT_KIND:
220224
fireMergeRequestEvent((MergeRequestEvent) event);
221225
break;
@@ -247,9 +251,9 @@ public void fireEvent(Event event) throws GitLabApiException {
247251
}
248252
}
249253

250-
protected void fireJobEvent(JobEvent jobEvent) {
254+
protected void fireBuildEvent(BuildEvent buildEvent) {
251255
for (WebHookListener listener : webhookListeners) {
252-
listener.onJobEvent(jobEvent);
256+
listener.onBuildEvent(buildEvent);
253257
}
254258
}
255259

@@ -259,6 +263,12 @@ protected void fireIssueEvent(IssueEvent issueEvent) {
259263
}
260264
}
261265

266+
protected void fireJobEvent(JobEvent jobEvent) {
267+
for (WebHookListener listener : webhookListeners) {
268+
listener.onJobEvent(jobEvent);
269+
}
270+
}
271+
262272
protected void fireMergeRequestEvent(MergeRequestEvent mergeRequestEvent) {
263273
for (WebHookListener listener : webhookListeners) {
264274
listener.onMergeRequestEvent(mergeRequestEvent);

src/test/java/org/gitlab4j/api/TestGitLabApiEvents.java

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import org.gitlab4j.api.systemhooks.SystemHookManager;
2424
import org.gitlab4j.api.systemhooks.TeamMemberSystemHookEvent;
2525
import org.gitlab4j.api.utils.JacksonJson;
26+
import org.gitlab4j.api.webhook.BuildEvent;
2627
import org.gitlab4j.api.webhook.Event;
2728
import org.gitlab4j.api.webhook.IssueEvent;
2829
import org.gitlab4j.api.webhook.JobEvent;
@@ -123,6 +124,13 @@ public void testNoteSnippetEvent() throws Exception {
123124
assertTrue(compareJson(noteEvent, "note-snippet-event.json"));
124125
}
125126

127+
@Test
128+
public void testBuildEvent() throws Exception {
129+
130+
Event event = unmarshalResource(BuildEvent.class, "build-event.json");
131+
assertTrue(compareJson(event, "build-event.json"));
132+
}
133+
126134
@Test
127135
public void testJobEvent() throws Exception {
128136

@@ -140,12 +148,15 @@ public void testWikiPageEvent() throws Exception {
140148
@Test
141149
public void testPolymorphicEvent() throws Exception {
142150

143-
Event event = unmarshalResource(Event.class, "job-event.json");
144-
assertTrue(compareJson(event, "job-event.json"));
151+
Event event = unmarshalResource(Event.class, "build-event.json");
152+
assertTrue(compareJson(event, "build-event.json"));
145153

146154
event = unmarshalResource(Event.class, "issue-event.json");
147155
assertTrue(compareJson(event, "issue-event.json"));
148156

157+
event = unmarshalResource(Event.class, "job-event.json");
158+
assertTrue(compareJson(event, "job-event.json"));
159+
149160
event = unmarshalResource(Event.class, "merge-request-event.json");
150161
assertTrue(compareJson(event, "merge-request-event.json"));
151162

0 commit comments

Comments
 (0)