in server/src/jetbrains/buildServer/serverSide/priority/PriorityClassManagerImpl.java [206:243]
public void savePriorityClass(@NotNull final PriorityClass priorityClass) throws DuplicatePriorityClassNameException {
if (priorityClass.getId().equals(DEFAULT_PRIORITY_CLASS_ID)) return;
myLock.writeLock().lock();
try {
if (priorityClass.getId().equals(PERSONAL_PRIORITY_CLASS_ID)) {
myPriorityClasses.put(PERSONAL_PRIORITY_CLASS_ID, new PersonalPriorityClass(priorityClass.getPriority()));
} else {
PriorityClass sameNamePriorityClass = findPriorityClassByName(priorityClass.getName());
if (sameNamePriorityClass != null && !priorityClass.equals(sameNamePriorityClass)) {
throw new DuplicatePriorityClassNameException("The priority class name '" + priorityClass.getName() + "' already exists");
}
PriorityClassImpl oldPc = myPriorityClasses.get(priorityClass.getId());
if (oldPc != null) {
Set<String> oldBuildTypeIds = oldPc.getExternalIds();
oldBuildTypeIds.removeAll(((PriorityClassImpl)priorityClass).getExternalIds());
for (String btId : oldBuildTypeIds) {
myBuildTypePriorityClasses.remove(btId);
}
}
for (String btId : ((PriorityClassImpl)priorityClass).getExternalIds()) {
PriorityClass oldPriorityClass = findBuildTypePriorityClass(btId);
if (oldPriorityClass != null) {
SBuildType buildType = myServer.getProjectManager().findBuildTypeByExternalId(btId);
if (buildType != null) {
PriorityClassImpl updatedOldPriorityClass = (PriorityClassImpl)oldPriorityClass.removeBuildTypes(asList(buildType.getBuildTypeId()));
myPriorityClasses.put(updatedOldPriorityClass.getId(), updatedOldPriorityClass);
}
}
myBuildTypePriorityClasses.put(btId, priorityClass.getId());
}
myPriorityClasses.put(priorityClass.getId(), (PriorityClassImpl)priorityClass);
}
} finally {
myLock.writeLock().unlock();
}
savePriorityClasses();
}