in server/src/jetbrains/buildServer/sharedResources/server/analysis/ResourceUsageAnalyzer.java [76:109]
public Map<String, Resource> findUsedResources(@NotNull final SProject project) {
final Map<String, Resource> result = new HashMap<>();
final String projectId = project.getProjectId();
final Map<String, Resource> availableToMeResources = myResources.getResourcesMap(projectId);
if (!availableToMeResources.isEmpty()) {
final List<BuildTypeSettings> lookupScope = getLookupScope(project);
for (final BuildTypeSettings btSettings: lookupScope) {
final Collection<SharedResourcesFeature> features = myFeatures.searchForFeatures(btSettings);
if (!features.isEmpty()) {
Map<String, Resource> currentBtResources;
final String btProjectId = btSettings.getProject().getProjectId();
if (btProjectId.equals(projectId)) {
currentBtResources = availableToMeResources;
} else {
currentBtResources = CollectionsUtil.filterMapByValues(
myResources.getResourcesMap(btProjectId), availableToMeResources::containsValue);
}
if (!currentBtResources.isEmpty()) {
for (SharedResourcesFeature feature : features) {
final Map<String, Lock> lockedResources = feature.getLockedResources();
if (!lockedResources.isEmpty()) {
for (String resourceName : lockedResources.keySet()) {
if (currentBtResources.containsKey(resourceName)) {
result.put(resourceName, currentBtResources.get(resourceName));
}
}
}
}
}
}
}
}
return result;
}