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
6404e89b
Commit
6404e89b
authored
Apr 09, 2017
by
Greg Messner
Browse files
Completed webhooks support.
parent
beeea2e9
Changes
4
Hide whitespace changes
Inline
Side-by-side
src/main/java/org/gitlab4j/api/webhook/Event.java
View file @
6404e89b
...
...
@@ -7,11 +7,14 @@ 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
=
MergeRequestEvent
.
class
,
name
=
MergeRequestEvent
.
OBJECT_KIND
),
@JsonSubTypes
.
Type
(
value
=
NoteEvent
.
class
,
name
=
NoteEvent
.
OBJECT_KIND
),
@JsonSubTypes
.
Type
(
value
=
PipelineEvent
.
class
,
name
=
PipelineEvent
.
OBJECT_KIND
),
@JsonSubTypes
.
Type
(
value
=
PushEvent
.
class
,
name
=
PushEvent
.
OBJECT_KIND
),
@JsonSubTypes
.
Type
(
value
=
TagPushEvent
.
class
,
name
=
TagPushEvent
.
OBJECT_KIND
)
@JsonSubTypes
.
Type
(
value
=
TagPushEvent
.
class
,
name
=
TagPushEvent
.
OBJECT_KIND
),
@JsonSubTypes
.
Type
(
value
=
WikiPageEvent
.
class
,
name
=
WikiPageEvent
.
OBJECT_KIND
)
})
public
interface
Event
{
public
String
getObjectKind
();
...
...
src/main/java/org/gitlab4j/api/webhook/WebHookListener.java
View file @
6404e89b
...
...
@@ -47,23 +47,23 @@ public interface WebHookListener extends java.util.EventListener {
public
void
onNoteEvent
(
NoteEvent
noteEvent
);
/**
* This method is called when a WebHook
tag push
event has been received.
* This method is called when a WebHook
build
event has been received.
*
* @param
push
Event the
Push
Event instance
* @param
build
Event the
Build
Event instance
*/
public
void
on
Job
Event
(
Push
Event
push
Event
);
public
void
on
Build
Event
(
Build
Event
build
Event
);
/**
* This method is called when a WebHook pipeline event has been received.
*
* @param pushEvent the P
ush
Event instance
* @param pushEvent the P
ipeline
Event instance
*/
public
void
onPipelineEvent
(
P
ushEvent
push
Event
);
public
void
onPipelineEvent
(
P
ipelineEvent
pipeline
Event
);
/**
* This method is called when a WebHook wiki event has been received.
* This method is called when a WebHook wiki
page
event has been received.
*
* @param
push
Event the
Push
Event instance
* @param
wiki
Event the
WikiPage
Event instance
*/
public
void
onWikiEvent
(
Push
Event
push
Event
);
public
void
onWiki
Page
Event
(
WikiPage
Event
wiki
Event
);
}
src/main/java/org/gitlab4j/api/webhook/WebHookManager.java
View file @
6404e89b
...
...
@@ -105,11 +105,14 @@ public class WebHookManager {
LOG
.
info
(
"handleEvent: X-Gitlab-Event="
+
eventName
);
switch
(
eventName
)
{
case
BuildEvent
.
X_GITLAB_EVENT
:
case
IssueEvent
.
X_GITLAB_EVENT
:
case
MergeRequestEvent
.
X_GITLAB_EVENT
:
case
NoteEvent
.
X_GITLAB_EVENT
:
case
PipelineEvent
.
X_GITLAB_EVENT
:
case
PushEvent
.
X_GITLAB_EVENT
:
case
TagPushEvent
.
X_GITLAB_EVENT
:
case
WikiPageEvent
.
X_GITLAB_EVENT
:
break
;
default
:
...
...
@@ -164,11 +167,14 @@ public class WebHookManager {
LOG
.
info
(
"handleEvent: object_kind="
+
event
.
getObjectKind
());
switch
(
event
.
getObjectKind
())
{
case
BuildEvent
.
OBJECT_KIND
:
case
IssueEvent
.
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
:
break
;
default
:
...
...
@@ -210,6 +216,10 @@ public class WebHookManager {
public
void
fireEvent
(
Event
event
)
throws
GitLabApiException
{
switch
(
event
.
getObjectKind
())
{
case
BuildEvent
.
OBJECT_KIND
:
fireBuildEvent
((
BuildEvent
)
event
);
break
;
case
IssueEvent
.
OBJECT_KIND
:
fireIssueEvent
((
IssueEvent
)
event
);
break
;
...
...
@@ -222,6 +232,10 @@ public class WebHookManager {
fireNoteEvent
((
NoteEvent
)
event
);
break
;
case
PipelineEvent
.
OBJECT_KIND
:
firePipelineEvent
((
PipelineEvent
)
event
);
break
;
case
PushEvent
.
OBJECT_KIND
:
firePushEvent
((
PushEvent
)
event
);
break
;
...
...
@@ -230,6 +244,10 @@ public class WebHookManager {
fireTagPushEvent
((
TagPushEvent
)
event
);
break
;
case
WikiPageEvent
.
OBJECT_KIND
:
fireWikiPageEvent
((
WikiPageEvent
)
event
);
break
;
default
:
String
message
=
"Unsupported event object_kind, object_kind="
+
event
.
getObjectKind
();
LOG
.
warning
(
message
);
...
...
@@ -237,6 +255,13 @@ public class WebHookManager {
}
}
protected
void
fireBuildEvent
(
BuildEvent
buildEvent
)
{
for
(
WebHookListener
listener
:
webhookListeners
)
{
listener
.
onBuildEvent
(
buildEvent
);
}
}
protected
void
fireIssueEvent
(
IssueEvent
issueEvent
)
{
for
(
WebHookListener
listener
:
webhookListeners
)
{
...
...
@@ -258,6 +283,13 @@ public class WebHookManager {
}
}
protected
void
firePipelineEvent
(
PipelineEvent
pipelineEvent
)
{
for
(
WebHookListener
listener
:
webhookListeners
)
{
listener
.
onPipelineEvent
(
pipelineEvent
);
}
}
protected
void
firePushEvent
(
PushEvent
pushEvent
)
{
for
(
WebHookListener
listener
:
webhookListeners
)
{
...
...
@@ -271,4 +303,11 @@ public class WebHookManager {
listener
.
onTagPushEvent
(
tagPushEvent
);
}
}
protected
void
fireWikiPageEvent
(
WikiPageEvent
wikiPageEvent
)
{
for
(
WebHookListener
listener
:
webhookListeners
)
{
listener
.
onWikiPageEvent
(
wikiPageEvent
);
}
}
}
src/test/java/org/gitlab4j/api/TestGitLabApiEvents.java
View file @
6404e89b
...
...
@@ -6,12 +6,15 @@ import java.io.IOException;
import
java.io.InputStreamReader
;
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.MergeRequestEvent
;
import
org.gitlab4j.api.webhook.NoteEvent
;
import
org.gitlab4j.api.webhook.PipelineEvent
;
import
org.gitlab4j.api.webhook.PushEvent
;
import
org.gitlab4j.api.webhook.TagPushEvent
;
import
org.gitlab4j.api.webhook.WikiPageEvent
;
import
org.junit.BeforeClass
;
import
org.junit.Test
;
...
...
@@ -50,6 +53,13 @@ public class TestGitLabApiEvents {
assertTrue
(
compareJson
(
mergeRequestEvent
,
"merge-request-event"
));
}
@Test
public
void
testPipelineEvent
()
throws
Exception
{
Event
event
=
makeFakeApiCall
(
PipelineEvent
.
class
,
"pipeline-event"
);
assertTrue
(
compareJson
(
event
,
"pipeline-event"
));
}
@Test
public
void
testPushEvent
()
throws
Exception
{
...
...
@@ -92,10 +102,27 @@ public class TestGitLabApiEvents {
assertTrue
(
compareJson
(
noteEvent
,
"note-snippet-event"
));
}
@Test
public
void
testBuildEvent
()
throws
Exception
{
Event
event
=
makeFakeApiCall
(
BuildEvent
.
class
,
"build-event"
);
assertTrue
(
compareJson
(
event
,
"build-event"
));
}
@Test
public
void
testWikiPageEvent
()
throws
Exception
{
Event
event
=
makeFakeApiCall
(
WikiPageEvent
.
class
,
"wiki-page-event"
);
assertTrue
(
compareJson
(
event
,
"wiki-page-event"
));
}
@Test
public
void
testPolymorphicEvent
()
throws
Exception
{
Event
event
=
makeFakeApiCall
(
Event
.
class
,
"issue-event"
);
Event
event
=
makeFakeApiCall
(
Event
.
class
,
"build-event"
);
assertTrue
(
compareJson
(
event
,
"build-event"
));
event
=
makeFakeApiCall
(
Event
.
class
,
"issue-event"
);
assertTrue
(
compareJson
(
event
,
"issue-event"
));
event
=
makeFakeApiCall
(
Event
.
class
,
"merge-request-event"
);
...
...
@@ -113,8 +140,17 @@ public class TestGitLabApiEvents {
event
=
makeFakeApiCall
(
Event
.
class
,
"note-snippet-event"
);
assertTrue
(
compareJson
(
event
,
"note-snippet-event"
));
event
=
makeFakeApiCall
(
Event
.
class
,
"pipeline-event"
);
assertTrue
(
compareJson
(
event
,
"pipeline-event"
));
event
=
makeFakeApiCall
(
Event
.
class
,
"push-event"
);
assertTrue
(
compareJson
(
event
,
"push-event"
));
event
=
makeFakeApiCall
(
Event
.
class
,
"tag-push-event"
);
assertTrue
(
compareJson
(
event
,
"tag-push-event"
));
event
=
makeFakeApiCall
(
Event
.
class
,
"wiki-page-event"
);
assertTrue
(
compareJson
(
event
,
"wiki-page-event"
));
}
private
<
T
>
T
makeFakeApiCall
(
Class
<
T
>
returnType
,
String
file
)
throws
JsonParseException
,
JsonMappingException
,
IOException
{
...
...
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