Eliminate potential NPEs with ChangeData.getChange()

Callers were supposed to be calling hasChange() to determine whether
getChange() would return null, but none were. Remove this error-prone
pair of methods and just use change(), which includes lazy loading.
There are a few places where we need to catch an additional
OrmException but these are easy enough to fix.

Change-Id: I23335e362715f59e2c093ffec88427739ff0cffc
This commit is contained in:
Dave Borowitz
2014-01-03 09:03:24 -08:00
parent 784a5b30a0
commit 86d070f83e
10 changed files with 35 additions and 52 deletions

View File

@@ -15,7 +15,6 @@
package gerrit;
import com.google.gerrit.reviewdb.client.Branch;
import com.google.gerrit.reviewdb.client.Change;
import com.google.gerrit.rules.StoredValues;
import com.googlecode.prolog_cafe.lang.Operation;
@@ -36,8 +35,7 @@ public class PRED_change_branch_1 extends Predicate.P1 {
engine.setB0();
Term a1 = arg1.dereference();
Change change = StoredValues.CHANGE_DATA.get(engine).getChange();
Branch.NameKey name = change.getDest();
Branch.NameKey name = StoredValues.getChange(engine).getDest();
if (!a1.unify(SymbolTerm.create(name.get()), engine.trail)) {
return engine.fail();

View File

@@ -15,7 +15,6 @@
package gerrit;
import com.google.gerrit.reviewdb.client.Account;
import com.google.gerrit.reviewdb.client.Change;
import com.google.gerrit.rules.StoredValues;
import com.googlecode.prolog_cafe.lang.IntegerTerm;
@@ -40,8 +39,7 @@ public class PRED_change_owner_1 extends Predicate.P1 {
engine.setB0();
Term a1 = arg1.dereference();
Change change = StoredValues.CHANGE_DATA.get(engine).getChange();
Account.Id ownerId = change.getOwner();
Account.Id ownerId = StoredValues.getChange(engine).getOwner();
if (!a1.unify(new StructureTerm(user, new IntegerTerm(ownerId.get())), engine.trail)) {
return engine.fail();

View File

@@ -14,7 +14,6 @@
package gerrit;
import com.google.gerrit.reviewdb.client.Change;
import com.google.gerrit.reviewdb.client.Project;
import com.google.gerrit.rules.StoredValues;
@@ -36,8 +35,7 @@ public class PRED_change_project_1 extends Predicate.P1 {
engine.setB0();
Term a1 = arg1.dereference();
Change change = StoredValues.CHANGE_DATA.get(engine).getChange();
Project.NameKey name = change.getProject();
Project.NameKey name = StoredValues.getChange(engine).getProject();
if (!a1.unify(SymbolTerm.create(name.get()), engine.trail)) {
return engine.fail();

View File

@@ -36,7 +36,7 @@ public class PRED_change_topic_1 extends Predicate.P1 {
Term a1 = arg1.dereference();
Term topicTerm = Prolog.Nil;
Change change = StoredValues.CHANGE_DATA.get(engine).getChange();
Change change = StoredValues.getChange(engine);
String topic = change.getTopic();
if (topic != null) {
topicTerm = SymbolTerm.create(topic);