in openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupImport.java [538:596]
public void importConfigs(File base) throws Exception {
final Map<Integer, String> keyMap = new HashMap<>();
Arrays.stream(KeyEvent.class.getDeclaredFields())
.filter(fld -> fld.getName().startsWith("VK_"))
.forEach(fld -> {
try {
keyMap.put(fld.getInt(null), "Shift+" + WordUtils.capitalizeFully(fld.getName().substring(3)));
} catch (IllegalArgumentException|IllegalAccessException e) {
log.error("Unexpected exception while building KEY map {}", fld);
}
});
Class<Configuration> eClazz = Configuration.class;
JAXBContext jc = JAXBContext.newInstance(eClazz);
Unmarshaller unmarshaller = jc.createUnmarshaller();
unmarshaller.setAdapter(new UserAdapter(userDao, userMap));
readList(unmarshaller, base, "configs.xml", CFG_LIST_NODE, CFG_NODE, eClazz, c -> {
if (c.getKey() == null || c.isDeleted()) {
return;
}
String newKey = outdatedConfigKeys.get(c.getKey());
if (newKey != null) {
c.setKey(newKey);
}
Configuration.Type type = configTypes.get(c.getKey());
if (type != null) {
c.setType(type);
if (Configuration.Type.BOOL == type) {
c.setValue(String.valueOf("1".equals(c.getValue()) || "yes".equals(c.getValue()) || "true".equals(c.getValue())));
} else if (Configuration.Type.HOTKEY == type) {
try {
int val = c.getValueN().intValue();
c.setValue(keyMap.get(val));
} catch(Exception e) {
//no-op, value is already HOTKEY
}
}
}
Configuration cfg = cfgDao.forceGet(c.getKey());
if (cfg != null && !cfg.isDeleted()) {
log.warn("Non deleted configuration with same key is found! old value: {}, new value: {}", cfg.getValue(), c.getValue());
}
c.setId(cfg == null ? null : cfg.getId());
if (c.getUser() != null && c.getUser().getId() == null) {
c.setUser(null);
}
if (CONFIG_CRYPT.equals(c.getKey())) {
try {
Class<?> clazz = Class.forName(c.getValue());
clazz.getDeclaredConstructor().newInstance();
} catch (Exception e) {
log.warn("Not existing Crypt class found {}, replacing with SCryptImplementation", c.getValue());
c.setValue(SCryptImplementation.class.getCanonicalName());
}
}
cfgDao.update(c, null);
});
}