summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTomas Daarstad <tomas.daarstad@tieto.com>2012-02-06 14:29:29 +0100
committerTomas Daarstad <tomas.daarstad@tieto.com>2012-02-13 08:05:32 +0100
commit3c2ed21ff388e3b10fe67c8359ae2239ba71466f (patch)
tree5eef90fe83b10c229f6452f053c156a693abae70
parent648b82a40c6c9788368bf348b467df905e4432e0 (diff)
Added a check to prevent NullPointerException
Added a check to prevent ArrayIndexOutOfBoundsException Change-Id: Id2c474af64115a94aeb92a5160173df576eb6d3c Reviewed-by: Tomas Daarstad <tomas.daarstad@tieto.com> Reviewed-by: Tomas Ljunggren <tomas.ljunggren@tieto.com>
-rw-r--r--gerrit-httpd/src/main/java/com/google/gerrit/httpd/rpc/topic/ChangeSetInfoFactory.java3
-rw-r--r--gerrit-httpd/src/main/java/com/google/gerrit/httpd/rpc/topic/ChangeSetInfoNotAvailableException.java5
-rw-r--r--gerrit-server/src/main/java/com/google/gerrit/server/ChangeUtil.java18
3 files changed, 21 insertions, 5 deletions
diff --git a/gerrit-httpd/src/main/java/com/google/gerrit/httpd/rpc/topic/ChangeSetInfoFactory.java b/gerrit-httpd/src/main/java/com/google/gerrit/httpd/rpc/topic/ChangeSetInfoFactory.java
index b62dd8ff3d..a686a095e0 100644
--- a/gerrit-httpd/src/main/java/com/google/gerrit/httpd/rpc/topic/ChangeSetInfoFactory.java
+++ b/gerrit-httpd/src/main/java/com/google/gerrit/httpd/rpc/topic/ChangeSetInfoFactory.java
@@ -54,6 +54,9 @@ public class ChangeSetInfoFactory {
final List<ChangeSetElement> changeSetElements = db.changeSetElements().byChangeSet(csId).toList();
// Our data source will be the last change in the ChangeSet
//
+ if(changeSetElements.isEmpty()){
+ throw new ChangeSetInfoNotAvailableException();
+ }
final Change.Id changeId = changeSetElements.get(changeSetElements.size() - 1).getChangeId();
final Change change = db.changes().get(changeId);
final PatchSet patchSet = db.patchSets().get(change.currentPatchSetId());
diff --git a/gerrit-httpd/src/main/java/com/google/gerrit/httpd/rpc/topic/ChangeSetInfoNotAvailableException.java b/gerrit-httpd/src/main/java/com/google/gerrit/httpd/rpc/topic/ChangeSetInfoNotAvailableException.java
index 90426304a4..902c444e7b 100644
--- a/gerrit-httpd/src/main/java/com/google/gerrit/httpd/rpc/topic/ChangeSetInfoNotAvailableException.java
+++ b/gerrit-httpd/src/main/java/com/google/gerrit/httpd/rpc/topic/ChangeSetInfoNotAvailableException.java
@@ -16,9 +16,14 @@ package com.google.gerrit.httpd.rpc.topic;
public final class ChangeSetInfoNotAvailableException extends Exception {
private static final long serialVersionUID = 1L;
+ public static final String MESSAGE = "No change set elements in list";
public ChangeSetInfoNotAvailableException(Exception cause) {
super(cause);
}
+ public ChangeSetInfoNotAvailableException() {
+ super(MESSAGE);
+ }
+
}
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/ChangeUtil.java b/gerrit-server/src/main/java/com/google/gerrit/server/ChangeUtil.java
index f1e2b08454..960af5c9a3 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/ChangeUtil.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/ChangeUtil.java
@@ -67,6 +67,8 @@ import org.eclipse.jgit.revwalk.RevCommit;
import org.eclipse.jgit.revwalk.RevWalk;
import org.eclipse.jgit.util.Base64;
import org.eclipse.jgit.util.NB;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import java.io.IOException;
import java.util.ArrayList;
@@ -79,6 +81,8 @@ import java.util.regex.Matcher;
public class ChangeUtil {
private static int uuidPrefix;
private static int uuidSeq;
+ private static final Logger log = LoggerFactory
+ .getLogger(ChangeUtil.class);
/**
* Generate a new unique identifier for change message entities.
@@ -280,11 +284,15 @@ public class ChangeUtil {
}
db.patchSetApprovals().update(approvals);
- // Email the reviewers
- final AbandonedSender cm = senderFactory.create(updatedChange);
- cm.setFrom(user.getAccountId());
- cm.setChangeMessage(cmsg);
- cm.send();
+ if (senderFactory != null) {
+ // Email the reviewers
+ final AbandonedSender cm = senderFactory.create(updatedChange);
+ cm.setFrom(user.getAccountId());
+ cm.setChangeMessage(cmsg);
+ cm.send();
+ } else {
+ log.error("Abandoned sender factory is null!");
+ }
hooks.doChangeAbandonedHook(updatedChange, user.getAccount(), message);
}