/** * Upgrade settings using the settings structure and/or special upgrade code. * * @param version * The content version of the settings in {@code validatedSettingsMutable}. * @param customUpgraders * A map of {@link SettingsUpgrader}s for nontrivial settings upgrades. * @param settings * The structure describing the different settings, possibly containing multiple * versions. * @param validatedSettingsMutable * The settings as returned by {@link Settings#validate(int, Map, Map, boolean)}. * This map is modified and contains the upgraded settings when this method returns. * * @return A set of setting names that were removed during the upgrade process or {@code null} * if none were removed. */ public static Set<String> upgrade(int version, Map<Integer, SettingsUpgrader> customUpgraders, Map<String, TreeMap<Integer, SettingsDescription>> settings, Map<String, Object> validatedSettingsMutable) { Set<String> deletedSettings = null; for (int toVersion = version + 1; toVersion <= VERSION; toVersion++) { if (customUpgraders.containsKey(toVersion)) { SettingsUpgrader upgrader = customUpgraders.get(toVersion); deletedSettings = upgrader.upgrade(validatedSettingsMutable); } deletedSettings = upgradeSettingsGeneric(settings, validatedSettingsMutable, deletedSettings, toVersion); } return deletedSettings; }