public synchronized void saveSecurityConfig(SecurityManagerConfig config) throws Exception {
SecurityManagerConfig oldConfig = new SecurityManagerConfig(this.securityConfig);
SecurityConfigValidator validator = new SecurityConfigValidator(this);
validator.validateManagerConfig(
(SecurityManagerConfig) config.clone(true),
(SecurityManagerConfig) oldConfig.clone(true));
try {
init(config);
if (config.getConfigPasswordEncrypterName()
.equals(oldConfig.getConfigPasswordEncrypterName())
== false) {
updateConfigurationFilesWithEncryptedFields();
}
xStreamPersist(security().get(CONFIG_FILENAME), config, globalPersister());
} catch (IOException e) {
LOGGER.log(Level.SEVERE, "Error saving security config, reverting back to previous", e);
init(oldConfig);
return;
}
fireChanged();
}