in src/main/java/com/googlesource/gerrit/plugins/serverconfig/ServerConfigServlet.java [102:131]
private void writeFileAndFireAuditEvent(HttpServletRequest req,
HttpServletResponse res) throws IOException {
File oldFile = resolvePath(req).toFile();
File dir = oldFile.getParentFile();
File newFile = File.createTempFile(oldFile.getName(), ".new", dir);
streamRequestToFile(req, newFile);
try {
FileBasedConfig config = new FileBasedConfig(newFile, FS.DETECTED);
config.load();
String diff = diff(oldFile, newFile);
audit("about to change config file", oldFile.getPath(), diff);
newFile.renameTo(oldFile);
audit("changed config file", oldFile.getPath(), diff);
res.setStatus(HttpServletResponse.SC_NO_CONTENT);
} catch (ConfigInvalidException e) {
log.warn("Configuration file is invalid", e);
Throwable cause = e.getCause();
final String msg =
cause instanceof ConfigInvalidException ? cause.getMessage()
: e.getMessage();
newFile.delete();
respondInvalidConfig(req, res, msg);
}
}