From 340c1c44bad78992ec49746d3776c3cff1a96fbd Mon Sep 17 00:00:00 2001
From: Maxim Epishchev <epishev@garant.ru>
Date: Wed, 3 Feb 2016 14:34:44 +0300
Subject: Limit size "key" field in BitBucket POST API

Refactoring method ApiClient::computeAPIKey() to check maximum size of computed key.
Now field size contolled by special constant ApiClient::MAX_KEY_SIZE_BB_API.

This changes will resolve, in my opinion, issue with continuously rebuilding: method ApiClient::hasBuildStatus() fail and PR's are always trigger new builds.
---
 .../BitbucketPullRequestsBuilder.java                   | 17 +++++++++++++++--
 1 file changed, 15 insertions(+), 2 deletions(-)

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

diff --git a/src/main/java/bitbucketpullrequestbuilder/bitbucketpullrequestbuilder/BitbucketPullRequestsBuilder.java b/src/main/java/bitbucketpullrequestbuilder/bitbucketpullrequestbuilder/BitbucketPullRequestsBuilder.java
index c5d4159..d337796 100644
--- a/src/main/java/bitbucketpullrequestbuilder/bitbucketpullrequestbuilder/BitbucketPullRequestsBuilder.java
+++ b/src/main/java/bitbucketpullrequestbuilder/bitbucketpullrequestbuilder/BitbucketPullRequestsBuilder.java
@@ -2,10 +2,15 @@ package bitbucketpullrequestbuilder.bitbucketpullrequestbuilder;
 
 import bitbucketpullrequestbuilder.bitbucketpullrequestbuilder.bitbucket.Pullrequest;
 import hudson.model.AbstractProject;
+
+import java.io.UnsupportedEncodingException;
 import java.security.MessageDigest;
+import java.security.NoSuchAlgorithmException;
 
 import java.util.Collection;
+import java.util.logging.Level;
 import java.util.logging.Logger;
+
 import org.apache.commons.codec.binary.Hex;
 
 /**
@@ -54,12 +59,20 @@ public class BitbucketPullRequestsBuilder {
         return this.project;
     }        
     
+    /**
+     * Return MD5 hashed full project name or full project name, if MD5 hash provider inaccessible
+     * @return unique project id
+     */
     public String getProjectId() {
       try {
         final MessageDigest MD5 = MessageDigest.getInstance("MD5");
         return new String(Hex.encodeHex(MD5.digest(this.project.getFullName().getBytes("UTF-8"))));
-      } catch (Exception exc) {
-        logger.severe(exc.toString());
+      } catch (NoSuchAlgorithmException exc) {
+        logger.log(Level.WARNING, "Failed to produce hash", exc);
+        exc.printStackTrace();
+      } catch (UnsupportedEncodingException exc) {
+        logger.log(Level.WARNING, "Failed to produce hash", exc);
+        exc.printStackTrace();
       }
       return this.project.getFullName();
     }
-- 
cgit v1.2.3