in nuget-feed/src/jetbrains/buildServer/nuget/feed/server/tab/PackagesSettingsController.java [155:228]
public void process(@NotNull HttpServletRequest request, @NotNull HttpServletResponse response, @Nullable Element xmlResponse) {
final ActionErrors errors = new ActionErrors();
try {
final SProject project = getProject(request);
if (project == null) {
errors.addError("projectNotFound", "Project was not found");
return;
}
if (project.isReadOnly()) {
errors.addError("cannotEditProject", "Project is read-only");
return;
}
if (PublicKeyUtil.isPublicKeyExpired(request)) {
if (xmlResponse != null) {
PublicKeyUtil.writePublicKeyExpiredError(xmlResponse);
}
return;
}
String name = request.getParameter("name");
Map<String, String> properties;
try {
properties = prepareProperties(request);
} catch (Exception e) {
// In case of exception here, we don't know all possible errors, hence can't save the properties.
Loggers.SERVER.error(e.getMessage(), e);
errors.addError("invalidProperties", "Unable to read the properties");
return;
}
if (errors.hasNoErrors()) {
errors.fillErrors(myDefaultProcessor, properties);
}
String type = properties.get(RepositoryConstants.REPOSITORY_TYPE_KEY);
if (type == null) {
errors.addError(RepositoryConstants.REPOSITORY_TYPE_KEY, "Repository type not found");
return;
}
RepositoryType registryType = myRepositoryRegistry.findType(type);
if (registryType == null) {
errors.addError(RepositoryConstants.REPOSITORY_TYPE_KEY, "Repository type not found");
return;
}
PropertiesProcessor parametersProcessor = registryType.getParametersProcessor();
if (parametersProcessor != null) {
errors.fillErrors(parametersProcessor, properties);
}
if (errors.hasNoErrors()) {
Repository repository = registryType.createRepository(project, properties);
try {
if (StringUtil.isEmpty(name)) {
myRepositoryManager.addRepository(project, repository);
} else {
myRepositoryManager.updateRepository(project, name, repository);
}
} catch (DuplicateIdException e) {
errors.addError(RepositoryConstants.REPOSITORY_NAME_KEY, registryType.getName() + " with the same name already exists");
} catch (Exception e) {
LOG.warnAndDebugDetails("Failed to save " + registryType.getName(), e);
errors.addError("saveFailure", e.getMessage());
}
}
} finally {
if (xmlResponse != null) {
writeErrors(xmlResponse, errors);
}
}
}