Skip to content

Commit

Permalink
Some refactoring for webhooks
Browse files Browse the repository at this point in the history
  • Loading branch information
mouseratti committed Jun 23, 2017
1 parent 15eeb29 commit 51d69e5
Show file tree
Hide file tree
Showing 4 changed files with 13 additions and 47 deletions.
Expand Up @@ -9,7 +9,6 @@
import hudson.util.FormValidation;
import hudson.util.Secret;
import net.sf.json.JSONObject;
import org.jenkinsci.plugins.gitlab.models.webhook.MergeRequest;
import org.kohsuke.stapler.DataBoundConstructor;
import org.kohsuke.stapler.QueryParameter;
import org.kohsuke.stapler.StaplerRequest;
Expand All @@ -20,8 +19,6 @@
import java.util.Map;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public final class GitlabBuildTrigger extends Trigger<AbstractProject<?, ?>> {

Expand Down
21 changes: 0 additions & 21 deletions src/main/java/org/jenkinsci/plugins/gitlab/GitlabCause.java
@@ -1,9 +1,6 @@
package org.jenkinsci.plugins.gitlab;

import hudson.model.Cause;
import org.jenkinsci.plugins.gitlab.models.webhook.MergeRequest;

import java.util.HashMap;
import java.util.Map;

public class GitlabCause extends Cause {
Expand Down Expand Up @@ -46,21 +43,6 @@ public GitlabCause(Integer mergeRequestId,
this.targetProjectId = targetProjectId;
this.lastCommitId = lastCommitId;
}
public GitlabCause(MergeRequest m, HashMap<String, String> params) {
this.mergeRequestId = m.getId();
this.mergeRequestIid = m.getIid();
this.sourceName = m.getSource().name;
this.sourceRepository = m.getSource().http_url;
this.sourceBranch = m.getSource_branch();
this.targetBranch = m.getTarget_branch();
this.customParameters = params;
this.title = m.getTitle();
this.description = m.getDescription();
this.sourceProjectId = m.getSource_project_id();
this.targetProjectId = m.getTarget_project_id();
this.lastCommitId = m.getLast_commit().id;
}

@Override
public String getShortDescription() {
return "Gitlab Merge Request #" + mergeRequestIid + " : " + sourceName + "/" + sourceBranch +
Expand Down Expand Up @@ -115,7 +97,4 @@ public String getLastCommitId() {
return lastCommitId;
}

// public static GitlabCause fromMergeRequest(MergeRequest mergeRequest) {
//
// }
}
23 changes: 13 additions & 10 deletions src/main/java/org/jenkinsci/plugins/gitlab/GitlabWebhooks.java
Expand Up @@ -14,7 +14,6 @@

import javax.servlet.ServletException;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import java.util.logging.Logger;
Expand All @@ -26,22 +25,27 @@
public class GitlabWebhooks implements UnprotectedRootAction {

private static final Logger LOGGER = Logger.getLogger(GitlabWebhooks.class.getName());
private static ArrayList<GitlabBuildTrigger> triggers = new ArrayList<GitlabBuildTrigger>();
private static HashMap<String, GitlabBuildTrigger> triggers = new HashMap<String, GitlabBuildTrigger>();
public static final String URLNAME = "gitlab-webhook";

/**
* @param t
*/
public static void addTrigger(GitlabBuildTrigger t) {
triggers.add(t);
String key = t.getProjectPath();
if (triggers.containsKey(key)) {
triggers.remove(key);
}
triggers.put(key, t);
}

/**
* @param m
* @return
*/
private static GitlabBuildTrigger findTrigger(MergeRequest m) {
for (GitlabBuildTrigger t : triggers) {
for (String key : triggers.keySet()) {
GitlabBuildTrigger t = triggers.get(key);
try {
if (t.getProjectPath().equals(m.getTarget().path_with_namespace)) {
return t;
Expand Down Expand Up @@ -78,12 +82,11 @@ public void generateResponse(StaplerRequest req, StaplerResponse rsp, Object nod
LOGGER.fine(String.format("MergeRequest is %s", mergeRequest));
GitlabBuildTrigger trigger = mergeRequest != null ? findTrigger(mergeRequest) : null;
if (trigger != null) {
GitlabCause cause = new GitlabCause(mergeRequest, new HashMap<String, String>());
GitlabAPI api = trigger.getBuilder().getGitlab().get();
GitlabProject project = api.getProject(cause.getTargetProjectId());
GitlabMergeRequest gitlabMergeRequest = api.getMergeRequest(project, cause.getMergeRequestId());
GitlabMergeRequestWrapper mergeRequestWrapper;
GitlabMergeRequestBuilder currentBuilder = trigger.getBuilder();
GitlabAPI api = currentBuilder.getGitlab().get();
GitlabProject project = api.getProject(mergeRequest.getTarget_project_id());
GitlabMergeRequest gitlabMergeRequest = api.getMergeRequest(project, mergeRequest.getId());
GitlabMergeRequestWrapper mergeRequestWrapper;
Map<Integer, GitlabMergeRequestWrapper> mergeRequestWrapperMap = currentBuilder.getMergeRequests();

if (mergeRequestWrapperMap.containsKey(mergeRequest.getId())) {
Expand All @@ -96,7 +99,7 @@ public void generateResponse(StaplerRequest req, StaplerResponse rsp, Object nod
mergeRequest.getId().toString(),
mergeRequest.getLast_commit().id);
LOGGER.info(String.format("Webhook detected! Trying to build %s", mergeRequest.toString()));
currentBuilder.getBuilds().build(cause, new HashMap<String, String>(), project, gitlabMergeRequest);
mergeRequestWrapper.check(gitlabMergeRequest);
} else {
LOGGER.info(String.format("No suitable trigger found for MergeRequest %s! Skipping webhook", mergeRequest));
}
Expand Down
Expand Up @@ -43,15 +43,6 @@ public Integer getIid() {
return result;
}

public String getTarget_branch() {
String result = this.target_branch != null ? this.target_branch : this.object_attributes.target_branch;
return result;
}
public String getSource_branch() {
String result = this.source_branch != null ? this.source_branch : this.object_attributes.source_branch;
return result;
}

public MergeRequestRepository getSource() {
MergeRequestRepository result = this.source != null ? this.source : this.object_attributes.source;
return result;
Expand All @@ -77,10 +68,6 @@ public Commit getLast_commit() {
return result;
}

public Integer getSource_project_id() {
Integer result = this.source_project_id != null ? this.source_project_id : this.object_attributes.source_project_id;
return result;
}
public Integer getTarget_project_id() {
Integer result = this.target_project_id != null ? this.target_project_id : this.object_attributes.target_project_id;
return result;
Expand Down

0 comments on commit 51d69e5

Please sign in to comment.