diff --git a/src/main/java/com/messners/gitlab/api/webhook/WebHookApplication.java b/src/main/java/com/messners/gitlab/api/webhook/WebHookApplication.java deleted file mode 100644 index 6e7ea791c6746184211897934e3389ee802cd766..0000000000000000000000000000000000000000 --- a/src/main/java/com/messners/gitlab/api/webhook/WebHookApplication.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.messners.gitlab.api.webhook; - -import javax.ws.rs.core.Application; -import java.util.HashSet; -import java.util.Set; - -public class WebHookApplication extends Application { - - @Override - public Set> getClasses () { - Set> resources = new HashSet>(); - resources.add(WebHookResource.class); - return (resources); - } -} \ No newline at end of file diff --git a/src/main/java/com/messners/gitlab/api/webhook/WebHookListener.java b/src/main/java/com/messners/gitlab/api/webhook/WebHookListener.java deleted file mode 100644 index c2da5c1fcba9db213482ea73e0e965f63d5742d2..0000000000000000000000000000000000000000 --- a/src/main/java/com/messners/gitlab/api/webhook/WebHookListener.java +++ /dev/null @@ -1,36 +0,0 @@ - -package com.messners.gitlab.api.webhook; - -/** - * This class defines an event listener for the event fired when - * a WebHook notification has been received from a GitLab server. - * - * @author Greg Messner - */ -public interface WebHookListener extends java.util.EventListener { - - /** - * This method is called when a WebHook issue notification has been received. - * - * @param event the EventObject instance containing info on the issue - */ - public void onIssue (EventObject event); - - - /**. - * This method is called when a WebHook merge request notification has been received - * - * @param event the EventObject instance containing info on the merge request - */ - public void onMergeRequest (EventObject event); - - - /** - * This method is called when a WebHook push notification has been received. - * - * @param pushEvent the PushEvent instance - */ - public void onPush (PushEvent pushEvent); -} - - diff --git a/src/main/java/com/messners/gitlab/api/webhook/WebHookResource.java b/src/main/java/com/messners/gitlab/api/webhook/WebHookResource.java deleted file mode 100644 index 18ece9db85083fb7c61e44d0627d59ce676d12de..0000000000000000000000000000000000000000 --- a/src/main/java/com/messners/gitlab/api/webhook/WebHookResource.java +++ /dev/null @@ -1,200 +0,0 @@ - -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; - -/** - * WebHookResource - * - * This class provides endpoint for GitLab WebHook callouts. - * - * @author Greg Messner - */ -@Path("/webhook") -public class WebHookResource { - - @Context HttpServletRequest request; - - @POST - @Consumes(MediaType.APPLICATION_JSON) - @Path("/issue") - public void issue () { - - try { - - EventObject issueEvent = WebHookResource.unmarshall(EventObject.class, request.getReader()); - WebHookResource.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 = WebHookResource.unmarshall(EventObject.class, request.getReader());; - WebHookResource.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 = WebHookResource.unmarshall(PushEvent.class, request.getReader()); - WebHookResource.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 unmarshall (Class 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 webhookListeners = new ArrayList(); - - /** - * 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 getListenerListCopy () { - - synchronized (WebHookResource.class) { - - if (webhookListeners.size() < 1) { - return (null); - } - - List listeners = new ArrayList(webhookListeners.size()); - for (WebHookListener listener : webhookListeners) { - listeners.add(listener); - } - - return (listeners); - } - } - - - protected static void fireIssueEvent (EventObject issueEvent) { - - List 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 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 listeners = getListenerListCopy(); - if (listeners == null) { - return; - } - - /* - * Fire the event to all listeners - */ - for (WebHookListener listener : listeners) { - listener.onPush(pushEvent); - } - } -}