in server/src/jetbrains/buildServer/sharedResources/pages/actions/EditResourceAction.java [55:102]
protected void doProcess(@NotNull final HttpServletRequest request,
@NotNull final HttpServletResponse response,
@NotNull final Element ajaxResponse) {
final String oldName = request.getParameter(SharedResourcesPluginConstants.WEB.PARAM_OLD_RESOURCE_NAME);
final String projectId = request.getParameter(SharedResourcesPluginConstants.WEB.PARAM_PROJECT_ID);
final SProject project = myProjectManager.findProjectById(projectId);
if (project != null) {
final Resource resource = myResourceHelper.getResourceFromRequest(projectId, request);
if (resource != null) {
final String newName = resource.getName();
boolean changedName = !newName.equals(oldName);
// check if there is already resource with such name
if (changedName && containsDuplicateName(project, newName)) {
createNameError(ajaxResponse, newName);
return;
}
boolean selfPersisted = false;
myProjectFeatures.updateFeature(project, resource.getId(), resource.getParameters());
ConfigAction cause = myConfigActionFactory.createAction(project, "'" + resource.getName() + "' shared resource was updated");
if (changedName) {
// my resource can be used only in my build configurations or in build configurations in my subtree
final List<SProject> projects = project.getProjects();
projects.add(project);
for (SProject p: projects) {
boolean updated = false;
final List<BuildTypeSettings> containers = getSettingsContainers(p);
for (BuildTypeSettings settings: containers) {
for (SharedResourcesFeature feature: myBuildFeatures.searchForFeatures(settings)) {
updated = feature.updateLock(settings, oldName, newName) || updated;
}
}
if (updated) {
p.schedulePersisting(cause);
if (!selfPersisted && p.equals(project)) { // make sure we persist current project even if no resource usages were detected
selfPersisted = true;
}
}
}
if (!selfPersisted) {
project.schedulePersisting(cause);
}
} else { // just persist project so that settings will be saved
project.schedulePersisting(cause);
}
addMessage(request, "Resource " + newName + " was updated");
}
}
}