Merge "Fix NullPointerException in ChangeData.getLabelTypes()"
This commit is contained in:
@@ -758,8 +758,8 @@ public class ChangeData {
|
||||
return change;
|
||||
}
|
||||
|
||||
public LabelTypes getLabelTypes() {
|
||||
return changeControl.getLabelTypes();
|
||||
public LabelTypes getLabelTypes() throws OrmException {
|
||||
return changeControl().getLabelTypes();
|
||||
}
|
||||
|
||||
public ChangeNotes notes() throws OrmException {
|
||||
|
||||
@@ -21,7 +21,9 @@ import com.google.gerrit.server.CurrentUser;
|
||||
import com.google.gerrit.server.permissions.LabelPermission;
|
||||
import com.google.gerrit.server.permissions.PermissionBackendException;
|
||||
import com.google.gerrit.server.query.change.ChangeData;
|
||||
import com.google.gwtorm.server.OrmException;
|
||||
import com.googlecode.prolog_cafe.exceptions.IllegalTypeException;
|
||||
import com.googlecode.prolog_cafe.exceptions.JavaException;
|
||||
import com.googlecode.prolog_cafe.exceptions.PInstantiationException;
|
||||
import com.googlecode.prolog_cafe.exceptions.PrologException;
|
||||
import com.googlecode.prolog_cafe.exceptions.SystemException;
|
||||
@@ -80,19 +82,20 @@ class PRED__check_user_label_3 extends Predicate.P3 {
|
||||
}
|
||||
short val = (short) ((IntegerTerm) a3).intValue();
|
||||
|
||||
ChangeData cd = StoredValues.CHANGE_DATA.get(engine);
|
||||
LabelType type = cd.getLabelTypes().byLabel(label);
|
||||
if (type == null) {
|
||||
return engine.fail();
|
||||
}
|
||||
|
||||
try {
|
||||
ChangeData cd = StoredValues.CHANGE_DATA.get(engine);
|
||||
LabelType type = cd.getLabelTypes().byLabel(label);
|
||||
if (type == null) {
|
||||
return engine.fail();
|
||||
}
|
||||
StoredValues.PERMISSION_BACKEND
|
||||
.get(engine)
|
||||
.user(user)
|
||||
.change(cd)
|
||||
.check(new LabelPermission.WithValue(type, val));
|
||||
return cont;
|
||||
} catch (OrmException err) {
|
||||
throw new JavaException(this, 1, err);
|
||||
} catch (AuthException err) {
|
||||
return engine.fail();
|
||||
} catch (PermissionBackendException err) {
|
||||
|
||||
@@ -20,7 +20,9 @@ import com.google.gerrit.server.CurrentUser;
|
||||
import com.google.gerrit.server.permissions.LabelPermission;
|
||||
import com.google.gerrit.server.permissions.PermissionBackendException;
|
||||
import com.google.gerrit.server.query.change.ChangeData;
|
||||
import com.google.gwtorm.server.OrmException;
|
||||
import com.googlecode.prolog_cafe.exceptions.IllegalTypeException;
|
||||
import com.googlecode.prolog_cafe.exceptions.JavaException;
|
||||
import com.googlecode.prolog_cafe.exceptions.PInstantiationException;
|
||||
import com.googlecode.prolog_cafe.exceptions.PrologException;
|
||||
import com.googlecode.prolog_cafe.exceptions.SystemException;
|
||||
@@ -74,15 +76,16 @@ class PRED__user_label_range_4 extends Predicate.P4 {
|
||||
}
|
||||
CurrentUser user = (CurrentUser) ((JavaObjectTerm) a2).object();
|
||||
|
||||
ChangeData cd = StoredValues.CHANGE_DATA.get(engine);
|
||||
LabelType type = cd.getLabelTypes().byLabel(label);
|
||||
if (type == null) {
|
||||
return engine.fail();
|
||||
}
|
||||
|
||||
Set<LabelPermission.WithValue> can;
|
||||
try {
|
||||
ChangeData cd = StoredValues.CHANGE_DATA.get(engine);
|
||||
LabelType type = cd.getLabelTypes().byLabel(label);
|
||||
if (type == null) {
|
||||
return engine.fail();
|
||||
}
|
||||
can = StoredValues.PERMISSION_BACKEND.get(engine).user(user).change(cd).test(type);
|
||||
} catch (OrmException err) {
|
||||
throw new JavaException(this, 1, err);
|
||||
} catch (PermissionBackendException err) {
|
||||
SystemException se = new SystemException(err.getMessage());
|
||||
se.initCause(err);
|
||||
|
||||
@@ -17,6 +17,8 @@ package gerrit;
|
||||
import com.google.gerrit.common.data.LabelType;
|
||||
import com.google.gerrit.common.data.LabelValue;
|
||||
import com.google.gerrit.rules.StoredValues;
|
||||
import com.google.gwtorm.server.OrmException;
|
||||
import com.googlecode.prolog_cafe.exceptions.JavaException;
|
||||
import com.googlecode.prolog_cafe.exceptions.PrologException;
|
||||
import com.googlecode.prolog_cafe.lang.IntegerTerm;
|
||||
import com.googlecode.prolog_cafe.lang.ListTerm;
|
||||
@@ -51,7 +53,12 @@ class PRED_get_legacy_label_types_1 extends Predicate.P1 {
|
||||
public Operation exec(Prolog engine) throws PrologException {
|
||||
engine.setB0();
|
||||
Term a1 = arg1.dereference();
|
||||
List<LabelType> list = StoredValues.CHANGE_DATA.get(engine).getLabelTypes().getLabelTypes();
|
||||
List<LabelType> list;
|
||||
try {
|
||||
list = StoredValues.CHANGE_DATA.get(engine).getLabelTypes().getLabelTypes();
|
||||
} catch (OrmException err) {
|
||||
throw new JavaException(this, 1, err);
|
||||
}
|
||||
Term head = Prolog.Nil;
|
||||
for (int idx = list.size() - 1; 0 <= idx; idx--) {
|
||||
head = new ListTerm(export(list.get(idx)), head);
|
||||
|
||||
Reference in New Issue
Block a user