in rest-api/src/jetbrains/buildServer/server/rest/data/build/GenericBuildsFilter.java [219:303]
public boolean isIncluded(@NotNull final SBuild build) {
if (myAgentName != null && !myAgentName.equals(build.getAgentName())) {
return false;
}
if (myBuildType != null && !myBuildType.getBuildTypeId().equals(build.getBuildTypeId())) {
return false;
}
if (myProject != null && !isUnderProject(myProject, build)) {
return false;
}
if (myStatus != null && !myStatus.equalsIgnoreCase(build.getStatusDescriptor().getStatus().getText())) {
return false;
}
if (myNumber != null && !myNumber.equals(build.getBuildNumber())) {
return false;
}
if (!FilterUtil.isIncludedByBooleanFilter(myPersonal, build.isPersonal())) {
return false;
}
if (!FilterUtil.isIncludedByBooleanFilter(myCanceled, build.getCanceledInfo() != null)) {
return false;
}
if (!FilterUtil.isIncludedByBooleanFilter(myRunning, !build.isFinished())) {
return false;
}
if (!FilterUtil.isIncludedByBooleanFilter(myPinned, build.isPinned())) {
return false;
}
if (myTags != null && myTags.size() > 0 && myTags.get(0).startsWith("format:extended")) {
@NotNull final List<String> buildTags = build.getTags();
//unofficial experimental support for "tag:(format:regexp,value:.*)" tag specification
//todo: locator parsing logic should be moved to build locator parsing
final Locator tagsLocator;
try {
tagsLocator = new Locator(myTags.get(0));
if (!isTagsMatchLocator(buildTags, tagsLocator)){
return false;
}
final Set<String> unusedDimensions = tagsLocator.getUnusedDimensions();
if (unusedDimensions.size() > 0) {
throw new BadRequestException("Unknown dimensions in locator 'tag': " + unusedDimensions);
}
} catch (LocatorProcessException e) {
throw new BadRequestException("Invalid locator 'tag': " + e.getMessage(), e);
}
}else if (myTags != null && myTags.size() > 0 && !build.getTags().containsAll(myTags)) {
return false;
}
if (!myBranchMatcher.matches(build.getBuildPromotion())) {
return false;
} else {
//default to only default branch
if (!myBranchMatcher.isDefined()) {
@Nullable final Branch buildBranch = build.getBuildPromotion().getBranch();
if (buildBranch != null && !buildBranch.isDefaultBranch())
return false;
}
}
if (myUser != null) {
final SUser userWhoTriggered = build.getTriggeredBy().getUser();
if (!build.getTriggeredBy().isTriggeredByUser() || (userWhoTriggered == null) || (myUser.getId() != userWhoTriggered.getId())) {
return false;
}
}
if (isExcludedBySince(build))
return false;
if (myUntil != null) {
if (myUntil.before(build)) {
return false;
}
}
if (myAgents != null && !myAgents.contains(build.getAgent())) {
return false;
}
if (myParameterCondition != null){
if (!myParameterCondition.matches(BuildParametersUtil.getResultingParameters(build.getBuildPromotion()))) {
return false;
}
}
return true;
}