in src/main/java/com/googlesource/gerrit/plugins/task/TaskAttributeFactory.java [131:177]
public Optional<TaskAttribute> create() {
try {
if (options.evaluationTime) {
attribute.evaluationMilliSeconds = millis();
}
boolean applicable = matchCache.match(task.applicable);
if (!task.isVisible) {
if (!task.isTrusted || (!applicable && !options.onlyApplicable)) {
return Optional.of(unknown());
}
}
if (applicable || !options.onlyApplicable) {
attribute.hasPass = task.pass != null || task.fail != null;
attribute.subTasks = getSubTasks();
attribute.status = getStatus();
if (options.onlyInvalid && !isValidQueries()) {
attribute.status = Status.INVALID;
}
boolean groupApplicable = attribute.status != null;
if (groupApplicable || !options.onlyApplicable) {
if (!options.onlyInvalid
|| attribute.status == Status.INVALID
|| attribute.subTasks != null) {
if (!options.onlyApplicable) {
attribute.applicable = applicable;
}
if (task.inProgress != null) {
attribute.inProgress = matchCache.matchOrNull(task.inProgress);
}
attribute.hint = getHint(attribute.status, task);
attribute.exported = task.exported.isEmpty() ? null : task.exported;
if (options.evaluationTime) {
attribute.evaluationMilliSeconds = millis() - attribute.evaluationMilliSeconds;
}
return Optional.of(attribute);
}
}
}
} catch (QueryParseException | RuntimeException e) {
return Optional.of(invalid()); // bad applicability query
}
return Optional.empty();
}