Use locate_helper to replace locate_* predicates

locate_submit_rule and locate_submit_filter are now refactored into
locate_helper. To make that easier, a noop_filter is introduced in order
to have a default filter implementation (same like default_submit is a
default implementation of submit rule) and avoid need to handle the case
of non-existing filter.

Also removed checks for non-null return values from locate_* predicates.
If a locate_* predicate returns null then this is bug in its
implementation.

Change-Id: I9cef2b6a01ac0288874154a898ddead2ea9446c3
Signed-off-by: Sasa Zivkov <sasa.zivkov@sap.com>
This commit is contained in:
Sasa Zivkov
2012-10-10 14:05:03 +02:00
committed by Gerrit Code Review
parent ee59a26b39
commit 3531ca4b8f
2 changed files with 46 additions and 46 deletions

View File

@@ -116,10 +116,6 @@ public class SubmitRuleEvaluator {
env.set(StoredValues.CHANGE_CONTROL, changeControl);
submitRule = env.once("gerrit", userRuleLocatorName, new VariableTerm());
if (submitRule == null) {
throw new RuleEvalException(userRuleLocatorName + " returned null");
}
if (fastEvalLabels) {
env.once("gerrit", "assume_range_from_label");
}
@@ -160,30 +156,28 @@ public class SubmitRuleEvaluator {
parentEnv.copyStoredValues(childEnv);
Term filterRule =
parentEnv.once("gerrit", filterRuleLocatorName, new VariableTerm());
if (filterRule != null) {
try {
if (fastEvalLabels) {
env.once("gerrit", "assume_range_from_label");
}
Term resultsTerm = toListTerm(results);
results.clear();
Term[] template =
parentEnv.once("gerrit", filterRuleWrapperName, filterRule,
resultsTerm, new VariableTerm());
@SuppressWarnings("unchecked")
final List<? extends Term> termList =
((ListTerm) template[2]).toJava();
results.addAll(termList);
} catch (PrologException err) {
throw new RuleEvalException("Exception calling " + filterRule
+ " on change " + change.getId() + " of "
+ parentState.getProject().getName(), err);
} catch (RuntimeException err) {
throw new RuleEvalException("Exception calling " + filterRule
+ " on change " + change.getId() + " of "
+ parentState.getProject().getName(), err);
try {
if (fastEvalLabels) {
env.once("gerrit", "assume_range_from_label");
}
Term resultsTerm = toListTerm(results);
results.clear();
Term[] template =
parentEnv.once("gerrit", filterRuleWrapperName, filterRule,
resultsTerm, new VariableTerm());
@SuppressWarnings("unchecked")
final List<? extends Term> termList =
((ListTerm) template[2]).toJava();
results.addAll(termList);
} catch (PrologException err) {
throw new RuleEvalException("Exception calling " + filterRule
+ " on change " + change.getId() + " of "
+ parentState.getProject().getName(), err);
} catch (RuntimeException err) {
throw new RuleEvalException("Exception calling " + filterRule
+ " on change " + change.getId() + " of "
+ parentState.getProject().getName(), err);
}
parentState = parentState.getParentState();