From e4c3a682a61967e4d1c760bf6f4bde2ac79fc530 Mon Sep 17 00:00:00 2001 From: David Pursehouse Date: Tue, 1 Sep 2015 14:30:50 +0900 Subject: [PATCH 1/7] Upgrade Findbugs Maven plugin to 3.0.2 Change-Id: I6e37538bfd9bab169a357a15af5f9dc5d5b928a8 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 57522c7b5..d00067599 100644 --- a/pom.xml +++ b/pom.xml @@ -55,7 +55,7 @@ UTF-8 rsandell 1.5.4 - 2.5.5 + 3.0.2 2.13 From a5d44ea9dc6b42de7aeb63371a42b607e4578fb2 Mon Sep 17 00:00:00 2001 From: David Pursehouse Date: Tue, 1 Sep 2015 13:58:54 +0900 Subject: [PATCH 2/7] GerritTriggerParameters: Be more specific in exception catching Change-Id: Id5f566c350b1eee943daa30ffdea11b576cff8d6 --- .../gerrit/trigger/hudsontrigger/GerritTriggerParameters.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/sonyericsson/hudson/plugins/gerrit/trigger/hudsontrigger/GerritTriggerParameters.java b/src/main/java/com/sonyericsson/hudson/plugins/gerrit/trigger/hudsontrigger/GerritTriggerParameters.java index 05c7ff90a..710e1b8f2 100644 --- a/src/main/java/com/sonyericsson/hudson/plugins/gerrit/trigger/hudsontrigger/GerritTriggerParameters.java +++ b/src/main/java/com/sonyericsson/hudson/plugins/gerrit/trigger/hudsontrigger/GerritTriggerParameters.java @@ -260,7 +260,7 @@ private void setOrCreateParameterValue(List parameters, String v constructor = clazz.getConstructor(types); parameter = constructor.newInstance(args); parameters.add(parameter); - } catch (Exception ex) { + } catch (ReflectiveOperationException ex) { parameter = null; } } From f81b6ff14ae45122a4a54b241e4582e6cb08d21b Mon Sep 17 00:00:00 2001 From: David Pursehouse Date: Tue, 1 Sep 2015 13:59:15 +0900 Subject: [PATCH 3/7] GerritDynamicUrlProcessor: Use StringBuilder to concatenate strings in a loop Change-Id: I92f5c07e374596d50c8a4a463a444ee123baec64 --- .../hudsontrigger/GerritDynamicUrlProcessor.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/sonyericsson/hudson/plugins/gerrit/trigger/hudsontrigger/GerritDynamicUrlProcessor.java b/src/main/java/com/sonyericsson/hudson/plugins/gerrit/trigger/hudsontrigger/GerritDynamicUrlProcessor.java index d6d101568..86579614d 100644 --- a/src/main/java/com/sonyericsson/hudson/plugins/gerrit/trigger/hudsontrigger/GerritDynamicUrlProcessor.java +++ b/src/main/java/com/sonyericsson/hudson/plugins/gerrit/trigger/hudsontrigger/GerritDynamicUrlProcessor.java @@ -88,20 +88,20 @@ private static Pattern buildLinePattern() { + "|" + SHORTNAME_FILE + "|" + SHORTNAME_FORBIDDEN_FILE + ")"; - String operators = "("; + StringBuilder operators = new StringBuilder("("); boolean firstoperator = true; for (CompareType type : CompareType.values()) { if (!firstoperator) { - operators += "|"; + operators.append("|"); } - operators += type.getOperator(); + operators.append(type.getOperator()); firstoperator = false; } - operators += ")"; + operators.append(")"); return Pattern.compile(projectBranchFile + "\\s*" - + operators + + operators.toString() + "\\s*(.+)$"); } From fbbe93faabe6a71e9a761613f64e7aee33ec5f2a Mon Sep 17 00:00:00 2001 From: David Pursehouse Date: Tue, 1 Sep 2015 15:57:00 +0900 Subject: [PATCH 4/7] Use `Integer.valueOf(int)` instead of `new Integer(int)` Change-Id: Ib5c5612b011945434ac9065e88bc0500f122e20c --- .../gerrit/trigger/gerritnotifier/model/BuildMemory.java | 2 +- .../trigger/replication/ReplicationQueueTaskDispatcher.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/sonyericsson/hudson/plugins/gerrit/trigger/gerritnotifier/model/BuildMemory.java b/src/main/java/com/sonyericsson/hudson/plugins/gerrit/trigger/gerritnotifier/model/BuildMemory.java index be3356650..ae88addc7 100644 --- a/src/main/java/com/sonyericsson/hudson/plugins/gerrit/trigger/gerritnotifier/model/BuildMemory.java +++ b/src/main/java/com/sonyericsson/hudson/plugins/gerrit/trigger/gerritnotifier/model/BuildMemory.java @@ -75,7 +75,7 @@ public int compare(GerritTriggeredEvent o1, GerritTriggeredEvent o2) { if (o1 == null && o2 != null) { return -1; } - return new Integer(o1.hashCode()).compareTo(o2.hashCode()); + return Integer.valueOf(o1.hashCode()).compareTo(o2.hashCode()); } } diff --git a/src/main/java/com/sonyericsson/hudson/plugins/gerrit/trigger/replication/ReplicationQueueTaskDispatcher.java b/src/main/java/com/sonyericsson/hudson/plugins/gerrit/trigger/replication/ReplicationQueueTaskDispatcher.java index a3316c381..e24d6c190 100644 --- a/src/main/java/com/sonyericsson/hudson/plugins/gerrit/trigger/replication/ReplicationQueueTaskDispatcher.java +++ b/src/main/java/com/sonyericsson/hudson/plugins/gerrit/trigger/replication/ReplicationQueueTaskDispatcher.java @@ -123,7 +123,7 @@ public CauseOfBlockage canRun(Item item) { if (item.isBuildable()) { return null; } - Integer itemId = new Integer(item.id); + Integer itemId = Integer.valueOf(item.id); if (blockedItems.containsKey(itemId)) { BlockedItem blockedItem = blockedItems.get(itemId); if (blockedItem.canRunWithTimeoutCheck()) { From 76fb8f9b555c826fd3401ae6bfb020c9238ec56f Mon Sep 17 00:00:00 2001 From: David Pursehouse Date: Tue, 1 Sep 2015 17:01:36 +0900 Subject: [PATCH 5/7] GerritMissedEventsPlaybackManager: Fix potential null pointer access The getEventsFromEventsLogPlugin method was potentially dereferencing a null HttpEntity. Move it inside a null-check. Also remove duplicate warning logs. Change-Id: I4556cc0f7cefec3cf9d79459bb1cb0bb675b888d --- .../GerritMissedEventsPlaybackManager.java | 36 ++++++++----------- 1 file changed, 15 insertions(+), 21 deletions(-) diff --git a/src/main/java/com/sonyericsson/hudson/plugins/gerrit/trigger/playback/GerritMissedEventsPlaybackManager.java b/src/main/java/com/sonyericsson/hudson/plugins/gerrit/trigger/playback/GerritMissedEventsPlaybackManager.java index d57705011..f384769fd 100644 --- a/src/main/java/com/sonyericsson/hudson/plugins/gerrit/trigger/playback/GerritMissedEventsPlaybackManager.java +++ b/src/main/java/com/sonyericsson/hudson/plugins/gerrit/trigger/playback/GerritMissedEventsPlaybackManager.java @@ -357,32 +357,26 @@ protected String getEventsFromEventsLogPlugin(IGerritHudsonTriggerConfig config, if (statusCode == HttpURLConnection.HTTP_OK) { try { HttpEntity entity = execute.getEntity(); - ContentType contentType; - if (entity == null) { - logger.warn("Not successful at requesting missed events from {} plugin. Null entity returned)", - statusCode); - } - contentType = ContentType.get(entity); - if (contentType == null) { - contentType = ContentType.DEFAULT_TEXT; - } - Charset charset = contentType.getCharset(); - if (charset == null) { - charset = Charset.defaultCharset(); + if (entity != null) { + ContentType contentType = ContentType.get(entity); + if (contentType == null) { + contentType = ContentType.DEFAULT_TEXT; + } + Charset charset = contentType.getCharset(); + if (charset == null) { + charset = Charset.defaultCharset(); + } + InputStream bodyStream = entity.getContent(); + String body = IOUtils.toString(bodyStream, charset.name()); + logger.debug(body); + return body; } - InputStream bodyStream = entity.getContent(); - String body = IOUtils.toString(bodyStream, charset.name()); - logger.debug(body); - return body; } catch (IOException ioe) { logger.warn(ioe.getMessage(), ioe); - logger.warn("Not successful at requesting missed events from {} plugin. (errorcode: {})", - EVENTS_LOG_PLUGIN_NAME, statusCode); } - } else { - logger.warn("Not successful at requesting missed events from {} plugin. (errorcode: {})", - EVENTS_LOG_PLUGIN_NAME, statusCode); } + logger.warn("Not successful at requesting missed events from {} plugin. (errorcode: {})", + EVENTS_LOG_PLUGIN_NAME, statusCode); return ""; } From 85516acf9beb49ffd401e237550ffe733eb90d27 Mon Sep 17 00:00:00 2001 From: David Pursehouse Date: Tue, 1 Sep 2015 17:11:13 +0900 Subject: [PATCH 6/7] Use explicit UTF-8 charset instead of relying on system default Change-Id: I5470956a13fd309586e3487f825fded5b766fd7f --- .../trigger/hudsontrigger/GerritDynamicUrlProcessor.java | 3 ++- .../gerrit/trigger/hudsontrigger/GerritTriggerParameters.java | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/sonyericsson/hudson/plugins/gerrit/trigger/hudsontrigger/GerritDynamicUrlProcessor.java b/src/main/java/com/sonyericsson/hudson/plugins/gerrit/trigger/hudsontrigger/GerritDynamicUrlProcessor.java index 86579614d..e79c80b2e 100644 --- a/src/main/java/com/sonyericsson/hudson/plugins/gerrit/trigger/hudsontrigger/GerritDynamicUrlProcessor.java +++ b/src/main/java/com/sonyericsson/hudson/plugins/gerrit/trigger/hudsontrigger/GerritDynamicUrlProcessor.java @@ -40,6 +40,7 @@ import java.net.MalformedURLException; import java.net.URL; import java.net.URLConnection; +import java.nio.charset.StandardCharsets; import java.text.ParseException; import java.util.ArrayList; import java.util.List; @@ -246,7 +247,7 @@ public static List fetch(String gerritTriggerConfigUrl, String se BufferedReader reader = null; try { instream = connection.getInputStream(); - reader = new BufferedReader(new InputStreamReader(instream)); + reader = new BufferedReader(new InputStreamReader(instream, StandardCharsets.UTF_8)); return readAndParseTriggerConfig(reader, serverName); } finally { if (reader != null) { diff --git a/src/main/java/com/sonyericsson/hudson/plugins/gerrit/trigger/hudsontrigger/GerritTriggerParameters.java b/src/main/java/com/sonyericsson/hudson/plugins/gerrit/trigger/hudsontrigger/GerritTriggerParameters.java index 710e1b8f2..7497a6737 100644 --- a/src/main/java/com/sonyericsson/hudson/plugins/gerrit/trigger/hudsontrigger/GerritTriggerParameters.java +++ b/src/main/java/com/sonyericsson/hudson/plugins/gerrit/trigger/hudsontrigger/GerritTriggerParameters.java @@ -44,6 +44,7 @@ import java.io.UnsupportedEncodingException; import java.lang.reflect.Constructor; +import java.nio.charset.StandardCharsets; import java.util.List; import org.apache.commons.codec.binary.Base64; @@ -391,7 +392,7 @@ public static void setOrCreateParameters(GerritTriggeredEvent gerritEvent, Job p try { byte[] encodedBytes = Base64.encodeBase64(commitMessage.getBytes("UTF-8")); GERRIT_CHANGE_COMMIT_MESSAGE.setOrCreateBase64EncodedStringParameterValue( - parameters, new String(encodedBytes), escapeQuotes); + parameters, new String(encodedBytes, StandardCharsets.UTF_8), escapeQuotes); } catch (UnsupportedEncodingException uee) { logger.error("Failed to encode commit message as Base64: ", uee); } From 0b44bfc9f50dc74a0e14f6860b3625e03843025d Mon Sep 17 00:00:00 2001 From: David Pursehouse Date: Tue, 1 Sep 2015 20:08:24 +0900 Subject: [PATCH 7/7] Use java.nio.charset.Charset instead of java.nio.charset.StandardCharsets java.nio.charset.StandardCharsets is from Java 1.7, but the plugin is currently built against a version of core Jenkins that only supports Java 1.6 Change-Id: If8dda4b416e84e5cf29dfb3f7f6e96a0dd39177b --- .../trigger/hudsontrigger/GerritDynamicUrlProcessor.java | 4 ++-- .../gerrit/trigger/hudsontrigger/GerritTriggerParameters.java | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/sonyericsson/hudson/plugins/gerrit/trigger/hudsontrigger/GerritDynamicUrlProcessor.java b/src/main/java/com/sonyericsson/hudson/plugins/gerrit/trigger/hudsontrigger/GerritDynamicUrlProcessor.java index e79c80b2e..b751461ba 100644 --- a/src/main/java/com/sonyericsson/hudson/plugins/gerrit/trigger/hudsontrigger/GerritDynamicUrlProcessor.java +++ b/src/main/java/com/sonyericsson/hudson/plugins/gerrit/trigger/hudsontrigger/GerritDynamicUrlProcessor.java @@ -40,7 +40,7 @@ import java.net.MalformedURLException; import java.net.URL; import java.net.URLConnection; -import java.nio.charset.StandardCharsets; +import java.nio.charset.Charset; import java.text.ParseException; import java.util.ArrayList; import java.util.List; @@ -247,7 +247,7 @@ public static List fetch(String gerritTriggerConfigUrl, String se BufferedReader reader = null; try { instream = connection.getInputStream(); - reader = new BufferedReader(new InputStreamReader(instream, StandardCharsets.UTF_8)); + reader = new BufferedReader(new InputStreamReader(instream, Charset.forName("UTF-8"))); return readAndParseTriggerConfig(reader, serverName); } finally { if (reader != null) { diff --git a/src/main/java/com/sonyericsson/hudson/plugins/gerrit/trigger/hudsontrigger/GerritTriggerParameters.java b/src/main/java/com/sonyericsson/hudson/plugins/gerrit/trigger/hudsontrigger/GerritTriggerParameters.java index 7497a6737..b4e989783 100644 --- a/src/main/java/com/sonyericsson/hudson/plugins/gerrit/trigger/hudsontrigger/GerritTriggerParameters.java +++ b/src/main/java/com/sonyericsson/hudson/plugins/gerrit/trigger/hudsontrigger/GerritTriggerParameters.java @@ -44,7 +44,7 @@ import java.io.UnsupportedEncodingException; import java.lang.reflect.Constructor; -import java.nio.charset.StandardCharsets; +import java.nio.charset.Charset; import java.util.List; import org.apache.commons.codec.binary.Base64; @@ -392,7 +392,7 @@ public static void setOrCreateParameters(GerritTriggeredEvent gerritEvent, Job p try { byte[] encodedBytes = Base64.encodeBase64(commitMessage.getBytes("UTF-8")); GERRIT_CHANGE_COMMIT_MESSAGE.setOrCreateBase64EncodedStringParameterValue( - parameters, new String(encodedBytes, StandardCharsets.UTF_8), escapeQuotes); + parameters, new String(encodedBytes, Charset.forName("UTF-8")), escapeQuotes); } catch (UnsupportedEncodingException uee) { logger.error("Failed to encode commit message as Base64: ", uee); }