From 49ffd99bfcdc19ba3ada480aa3cf4bd6879d2d45 Mon Sep 17 00:00:00 2001
From: "S.nishio" <nishio@densan-labs.net>
Date: Sun, 9 Feb 2014 01:44:43 +0900
Subject: initial commit

---
 .../BitbucketBuilds.java                           | 65 ++++++++++++++++++++++
 1 file changed, 65 insertions(+)
 create mode 100644 src/main/java/bitbucketpullrequestbuilder/bitbucketpullrequestbuilder/BitbucketBuilds.java

(limited to 'src/main/java/bitbucketpullrequestbuilder/bitbucketpullrequestbuilder/BitbucketBuilds.java')

diff --git a/src/main/java/bitbucketpullrequestbuilder/bitbucketpullrequestbuilder/BitbucketBuilds.java b/src/main/java/bitbucketpullrequestbuilder/bitbucketpullrequestbuilder/BitbucketBuilds.java
new file mode 100644
index 0000000..a940ca9
--- /dev/null
+++ b/src/main/java/bitbucketpullrequestbuilder/bitbucketpullrequestbuilder/BitbucketBuilds.java
@@ -0,0 +1,65 @@
+package bitbucketpullrequestbuilder.bitbucketpullrequestbuilder;
+
+import hudson.model.AbstractBuild;
+import hudson.model.Cause;
+import hudson.model.Result;
+import jenkins.model.Jenkins;
+
+import java.io.IOException;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+/**
+ * Created by nishio
+ */
+public class BitbucketBuilds {
+    private static final Logger logger = Logger.getLogger(BitbucketBuilds.class.getName());
+    private BitbucketBuildTrigger trigger;
+    private BitbucketRepository repository;
+
+    public BitbucketBuilds(BitbucketBuildTrigger trigger, BitbucketRepository repository) {
+        this.trigger = trigger;
+        this.repository = repository;
+    }
+
+    public BitbucketCause getCause(AbstractBuild build) {
+        Cause cause = build.getCause(BitbucketCause.class);
+        if (cause == null || !(cause instanceof BitbucketCause)) {
+            return null;
+        }
+        return (BitbucketCause) cause;
+    }
+
+    public void onStarted(AbstractBuild build) {
+        BitbucketCause cause = this.getCause(build);
+        if (cause == null) {
+            return;
+        }
+        try {
+            build.setDescription(cause.getShortDescription());
+        } catch (IOException e) {
+            logger.log(Level.SEVERE, "Can't update build description", e);
+        }
+    }
+
+    public void onCompleted(AbstractBuild build) {
+        BitbucketCause cause = this.getCause(build);
+        if (cause == null) {
+            return;
+        }
+        Result result = build.getResult();
+        String rootUrl = Jenkins.getInstance().getRootUrl();
+        String buildUrl = "";
+        if (rootUrl == null) {
+            buildUrl = " PLEASE SET JENKINS ROOT URL FROM GLOBAL CONFIGURATION " + build.getUrl();
+        }
+        else {
+            buildUrl = rootUrl + build.getUrl();
+        }
+        if(result == Result.SUCCESS) {
+            repository.postFinishedComment(cause.getPullRequestId(), true, buildUrl);
+        } else if (result == Result.FAILURE || result == Result.UNSTABLE) {
+            repository.postFinishedComment(cause.getPullRequestId(), false, buildUrl);
+        }
+    }
+}
-- 
cgit v1.2.3