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
82c1deea
Commit
82c1deea
authored
Apr 16, 2019
by
Greg Messner
Browse files
Added support for merge_request system hook (#332).
parent
44b47f3a
Changes
2
Hide whitespace changes
Inline
Side-by-side
src/main/java/org/gitlab4j/api/systemhooks/SystemHookManager.java
View file @
82c1deea
...
...
@@ -15,6 +15,8 @@ import org.gitlab4j.api.HookManager;
import
org.gitlab4j.api.utils.HttpRequestUtils
;
import
org.gitlab4j.api.utils.JacksonJson
;
import
com.fasterxml.jackson.databind.JsonNode
;
/**
* This class provides a handler for processing GitLab System Hook callouts.
*/
...
...
@@ -77,15 +79,36 @@ public class SystemHookManager extends HookManager {
try
{
SystemHookEvent
event
;
JsonNode
tree
;
if
(
LOGGER
.
isLoggable
(
Level
.
FINE
))
{
LOGGER
.
fine
(
HttpRequestUtils
.
getShortRequestDump
(
"System Hook"
,
true
,
request
));
String
postData
=
HttpRequestUtils
.
getPostDataAsString
(
request
);
LOGGER
.
fine
(
"Raw POST data:\n"
+
postData
);
event
=
jacksonJson
.
unmarshal
(
SystemHookEvent
.
class
,
postData
);
LOGGER
.
fine
(
event
.
getEventName
()
+
"\n"
+
jacksonJson
.
marshal
(
event
)
+
"\n"
);
tree
=
jacksonJson
.
readTree
(
postData
);
}
else
{
InputStreamReader
reader
=
new
InputStreamReader
(
request
.
getInputStream
());
event
=
jacksonJson
.
unmarshal
(
SystemHookEvent
.
class
,
reader
);
tree
=
jacksonJson
.
readTree
(
reader
);
}
if
(
tree
.
has
(
"object_kind"
))
{
String
objectKind
=
tree
.
asText
(
"object_kind"
);
switch
(
objectKind
)
{
case
MergeRequestSystemHookEvent
.
OBJECT_KIND
:
event
=
jacksonJson
.
unmarshal
(
MergeRequestSystemHookEvent
.
class
,
tree
);
break
;
default
:
String
message
=
"Unsupported object_kind, object_kind="
+
objectKind
;
LOGGER
.
warning
(
message
);
throw
new
GitLabApiException
(
message
);
}
}
else
{
event
=
jacksonJson
.
unmarshal
(
SystemHookEvent
.
class
,
tree
);
}
if
(
LOGGER
.
isLoggable
(
Level
.
FINE
))
{
LOGGER
.
fine
(
event
.
getEventName
()
+
"\n"
+
jacksonJson
.
marshal
(
event
)
+
"\n"
);
}
event
.
setRequestUrl
(
request
.
getRequestURL
().
toString
());
...
...
@@ -161,6 +184,8 @@ public class SystemHookManager extends HookManager {
fireTagPushEvent
((
TagPushSystemHookEvent
)
event
);
}
else
if
(
event
instanceof
RepositorySystemHookEvent
)
{
fireRepositoryEvent
((
RepositorySystemHookEvent
)
event
);
}
else
if
(
event
instanceof
MergeRequestSystemHookEvent
)
{
fireMergeRequestEvent
((
MergeRequestSystemHookEvent
)
event
);
}
else
{
String
message
=
"Unsupported event, event_named="
+
event
.
getEventName
();
LOGGER
.
warning
(
message
);
...
...
@@ -221,4 +246,10 @@ public class SystemHookManager extends HookManager {
listener
.
onRepositoryEvent
(
event
);
}
}
protected
void
fireMergeRequestEvent
(
MergeRequestSystemHookEvent
event
)
{
for
(
SystemHookListener
listener
:
systemHookListeners
)
{
listener
.
onMergeRequestEvent
(
event
);
}
}
}
src/test/java/org/gitlab4j/api/TestGitLabApiEvents.java
View file @
82c1deea
...
...
@@ -5,6 +5,7 @@ import static org.junit.Assert.assertTrue;
import
java.io.IOException
;
import
java.io.InputStreamReader
;
import
org.gitlab4j.api.systemhooks.MergeRequestSystemHookEvent
;
import
org.gitlab4j.api.utils.JacksonJson
;
import
org.gitlab4j.api.webhook.BuildEvent
;
import
org.gitlab4j.api.webhook.Event
;
...
...
@@ -53,6 +54,13 @@ public class TestGitLabApiEvents {
assertTrue
(
compareJson
(
mergeRequestEvent
,
"merge-request-event"
));
}
@Test
public
void
testMergeRequestSystemHookEvent
()
throws
Exception
{
MergeRequestSystemHookEvent
mergeRequestEvent
=
makeFakeApiCall
(
MergeRequestSystemHookEvent
.
class
,
"merge-request-system-hook-event"
);
assertTrue
(
compareJson
(
mergeRequestEvent
,
"merge-request-system-hook-event"
));
}
@Test
public
void
testPipelineEvent
()
throws
Exception
{
...
...
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