Skip to content
GitLab
Explore
Projects
Groups
Snippets
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
佳 邓
Gitlab4j Api
Commits
dcdd01bd
Commit
dcdd01bd
authored
11 years ago
by
gmessner
Browse files
Options
Download
Email Patches
Plain Diff
Renamed to WebHookResource.
parent
4ccb4cc5
main
5.0.x
5.0.x.jdk17
6.x
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
src/main/java/com/messners/gitlab/api/webhook/WebHook.java
+0
-203
src/main/java/com/messners/gitlab/api/webhook/WebHook.java
with
0 additions
and
203 deletions
+0
-203
src/main/java/com/messners/gitlab/api/webhook/WebHook.java
deleted
100644 → 0
+
0
-
203
View file @
4ccb4cc5
package
com.messners.gitlab.api.webhook
;
import
java.io.IOException
;
import
java.io.Reader
;
import
java.util.ArrayList
;
import
java.util.List
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.ws.rs.Consumes
;
import
javax.ws.rs.POST
;
import
javax.ws.rs.Path
;
import
javax.ws.rs.core.Context
;
import
javax.ws.rs.core.MediaType
;
import
org.codehaus.jackson.JsonParseException
;
import
org.codehaus.jackson.map.JsonMappingException
;
import
org.codehaus.jackson.map.ObjectMapper
;
import
com.messners.gitlab.api.JacksonJsonConfig
;
import
com.messners.gitlab.api.event.EventObject
;
import
com.messners.gitlab.api.event.PushEvent
;
import
com.messners.gitlab.api.event.WebHookListener
;
/**
* WebHookCallback
*
* This class provides endpoint for GitLab WebHook callouts.
*
* @author Greg Messner <greg@messners.com>
*/
@Path
(
"/gitlab/webhook"
)
public
class
WebHook
{
@Context
HttpServletRequest
request
;
@POST
@Consumes
(
MediaType
.
APPLICATION_JSON
)
@Path
(
"/issue"
)
public
void
issue
()
{
try
{
EventObject
issueEvent
=
WebHook
.
unmarshall
(
EventObject
.
class
,
request
.
getReader
());
WebHook
.
fireIssueEvent
(
issueEvent
);
}
catch
(
JsonParseException
jpe
)
{
System
.
err
.
println
(
"Error parsing JSON data, error="
+
jpe
.
getMessage
());
}
catch
(
JsonMappingException
jme
)
{
System
.
err
.
println
(
"Error mapping JSON data, error="
+
jme
.
getMessage
());
}
catch
(
IOException
ioe
)
{
System
.
err
.
println
(
"Error reading JSON data, error="
+
ioe
.
getMessage
());
}
}
@POST
@Consumes
(
MediaType
.
APPLICATION_JSON
)
@Path
(
"/merge-request"
)
public
void
megeRequest
()
{
try
{
EventObject
mergeRequest
=
WebHook
.
unmarshall
(
EventObject
.
class
,
request
.
getReader
());;
WebHook
.
fireMergeRequestEvent
(
mergeRequest
);
}
catch
(
JsonParseException
jpe
)
{
System
.
err
.
println
(
"Error parsing JSON data, error="
+
jpe
.
getMessage
());
}
catch
(
JsonMappingException
jme
)
{
System
.
err
.
println
(
"Error mapping JSON data, error="
+
jme
.
getMessage
());
}
catch
(
IOException
ioe
)
{
System
.
err
.
println
(
"Error reading JSON data, error="
+
ioe
.
getMessage
());
}
}
@POST
@Consumes
(
MediaType
.
APPLICATION_JSON
)
@Path
(
"/push"
)
public
void
push
()
{
try
{
PushEvent
pushEvent
=
WebHook
.
unmarshall
(
PushEvent
.
class
,
request
.
getReader
());
WebHook
.
firePushEvent
(
pushEvent
);
}
catch
(
JsonParseException
jpe
)
{
System
.
err
.
println
(
"Error parsing JSON data, error="
+
jpe
.
getMessage
());
}
catch
(
JsonMappingException
jme
)
{
System
.
err
.
println
(
"Error mapping JSON data, error="
+
jme
.
getMessage
());
}
catch
(
IOException
ioe
)
{
System
.
err
.
println
(
"Error reading JSON data, error="
+
ioe
.
getMessage
());
}
}
private
static
final
JacksonJsonConfig
jacksonJsonConfig
=
new
JacksonJsonConfig
();
private
static
<
T
>
T
unmarshall
(
Class
<
T
>
returnType
,
Reader
reader
)
throws
JsonParseException
,
JsonMappingException
,
IOException
{
ObjectMapper
objectMapper
=
jacksonJsonConfig
.
getContext
(
returnType
);
return
(
objectMapper
.
readValue
(
reader
,
returnType
));
}
/**
* Collection of objects listening for WebHook events.
*/
private
static
ArrayList
<
WebHookListener
>
webhookListeners
=
new
ArrayList
<
WebHookListener
>();
/**
* Adds a WebHook event listener.
*
* @param listener the WebHookListener to add
*/
public
static
synchronized
void
addListener
(
WebHookListener
listener
)
{
if
(!
webhookListeners
.
contains
(
listener
))
{
webhookListeners
.
add
(
listener
);
}
}
/**
* Removes a WebHook event listener.
*
* @param listener the WebHookListener to remove
*/
public
static
synchronized
void
removeListener
(
WebHookListener
listener
)
{
webhookListeners
.
remove
(
listener
);
}
/**
* Make a copy of the listener object ArrayList so that it cannot
* be changed while we are firing events
*
* @return a copy of the WebHookListener list, or null if no listeners have been added
*/
protected
static
synchronized
List
<
WebHookListener
>
getListenerListCopy
()
{
synchronized
(
WebHook
.
class
)
{
if
(
webhookListeners
.
size
()
<
1
)
{
return
(
null
);
}
List
<
WebHookListener
>
listeners
=
new
ArrayList
<
WebHookListener
>(
webhookListeners
.
size
());
for
(
WebHookListener
listener
:
webhookListeners
)
{
listeners
.
add
(
listener
);
}
return
(
listeners
);
}
}
protected
static
void
fireIssueEvent
(
EventObject
issueEvent
)
{
List
<
WebHookListener
>
listeners
=
getListenerListCopy
();
if
(
listeners
==
null
)
{
return
;
}
/*
* Fire the event to all listeners
*/
for
(
WebHookListener
listener
:
listeners
)
{
listener
.
onIssue
(
issueEvent
);
}
}
protected
static
void
fireMergeRequestEvent
(
EventObject
mergeRequestEvent
)
{
List
<
WebHookListener
>
listeners
=
getListenerListCopy
();
if
(
listeners
==
null
)
{
return
;
}
/*
* Fire the event to all listeners
*/
for
(
WebHookListener
listener
:
listeners
)
{
listener
.
onMergeRequest
(
mergeRequestEvent
);
}
}
protected
static
void
firePushEvent
(
PushEvent
pushEvent
)
{
List
<
WebHookListener
>
listeners
=
getListenerListCopy
();
if
(
listeners
==
null
)
{
return
;
}
/*
* Fire the event to all listeners
*/
for
(
WebHookListener
listener
:
listeners
)
{
listener
.
onPush
(
pushEvent
);
}
}
}
This diff is collapsed.
Click to expand it.
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
Menu
Explore
Projects
Groups
Snippets