Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
佳 邓
Gitlab4j Api
Commits
923cf342
Commit
923cf342
authored
May 17, 2019
by
Greg Messner
Browse files
Fixes to support actual Job Hook event (docs at GitLab are wrong) (#357).
parent
baebd037
Changes
5
Hide whitespace changes
Inline
Side-by-side
src/main/java/org/gitlab4j/api/webhook/Event.java
View file @
923cf342
...
...
@@ -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
),
...
...
src/main/java/org/gitlab4j/api/webhook/JobEvent.java
View file @
923cf342
...
...
@@ -26,7 +26,7 @@ public class JobEvent extends AbstractEvent {
private
Integer
projectId
;
private
String
projectName
;
private
User
user
;
private
Job
Commit
commit
;
private
Build
Commit
commit
;
private
EventRepository
repository
;
public
String
getObjectKind
()
{
...
...
@@ -166,11 +166,11 @@ public class JobEvent extends AbstractEvent {
this
.
user
=
user
;
}
public
Job
Commit
getCommit
()
{
public
Build
Commit
getCommit
()
{
return
commit
;
}
public
void
setCommit
(
Job
Commit
commit
)
{
public
void
setCommit
(
Build
Commit
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
));
...
...
src/main/java/org/gitlab4j/api/webhook/WebHookListener.java
View file @
923cf342
...
...
@@ -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
job
Event the
Job
Event instance
* @param
build
Event the
Build
Event instance
*/
default
void
on
Job
Event
(
Job
Event
job
Event
)
{
default
void
on
Build
Event
(
Build
Event
build
Event
)
{
}
/**
...
...
@@ -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
*
...
...
src/main/java/org/gitlab4j/api/webhook/WebHookManager.java
View file @
923cf342
...
...
@@ -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
Job
Event
.
OBJECT_KIND
:
case
Build
Event
.
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
Job
Event
.
OBJECT_KIND
:
fire
Job
Event
((
Job
Event
)
event
);
case
Build
Event
.
OBJECT_KIND
:
fire
Build
Event
((
Build
Event
)
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
fire
Job
Event
(
Job
Event
job
Event
)
{
protected
void
fire
Build
Event
(
Build
Event
build
Event
)
{
for
(
WebHookListener
listener
:
webhookListeners
)
{
listener
.
on
Job
Event
(
job
Event
);
listener
.
on
Build
Event
(
build
Event
);
}
}
...
...
@@ -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
);
...
...
src/test/java/org/gitlab4j/api/TestGitLabApiEvents.java
View file @
923cf342
...
...
@@ -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"
));
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment