Add ability to warn for use of deprecated paths.

This commit is contained in:
asofold 2013-06-10 19:08:57 +02:00
parent 228a6478a8
commit 7805d8d486
3 changed files with 65 additions and 2 deletions

View File

@ -15,6 +15,7 @@ package fr.neatmonster.nocheatplus.config;
public abstract class ConfPaths {
// Sub-paths that are used with different path prefixes potentially.
// TODO: These might better be in another class.
public static final String SUB_DEBUG = "debug";
public static final String SUB_IGNOREPASSABLE = "ignorepassable";
public static final String SUB_ALLOWINSTANTBREAK = "allowinstantbreak";

View File

@ -164,6 +164,7 @@ public class ConfigManager {
worldsMap.clear();
// Try to obtain and parse the global configuration file.
final File globalFile = new File(plugin.getDataFolder(), "config.yml");
PathUtils.warnPaths(globalFile, "global config", false);
final ConfigFile globalConfig = new ConfigFile();
globalConfig.setDefaults(new DefaultConfig());
globalConfig.options().copyDefaults(true);
@ -210,7 +211,7 @@ public class ConfigManager {
}
for (final Entry<String, File> worldEntry : worldFiles.entrySet()) {
final File worldFile = worldEntry.getValue();
PathUtils.warnGlobalOnlyPaths(worldFile, worldEntry.getKey());
PathUtils.warnPaths(worldFile, worldEntry.getKey(), true);
final ConfigFile worldConfig = new ConfigFile();
worldConfig.setDefaults(worldDefaults);
worldConfig.options().copyDefaults(true);

View File

@ -21,6 +21,9 @@ import fr.neatmonster.nocheatplus.utilities.ds.prefixtree.SimpleCharPrefixTree;
public class PathUtils {
private static final Set<String> deprecatedFields = new LinkedHashSet<String>();
private static final SimpleCharPrefixTree deprecatedPrefixes = new SimpleCharPrefixTree();
/** Field names of ConfPaths. */
private static final Set<String> globalOnlyFields = new HashSet<String>();
@ -54,10 +57,23 @@ public class PathUtils {
}
}
}
if (field.isAnnotationPresent(Deprecated.class)){
deprecatedFields.add(name);
addDeprecated(field);
}
}
}
private static void addGlobalOnlyPath(final Field field) {
private static void addDeprecated(final Field field) {
try {
final String path = field.get(null).toString();
deprecatedPrefixes.feed(path);
} catch (IllegalArgumentException e) {
} catch (IllegalAccessException e) {
}
}
private static void addGlobalOnlyPath(final Field field) {
try {
final String path = field.get(null).toString();
globalOnlyPaths.add(path);
@ -81,6 +97,51 @@ public class PathUtils {
}
}
/**
* Run all warning checks (GlobalConfig, deprecated, ...).
* @param file
* @param configName
*/
public static void warnPaths(File file, String configName, boolean isWorldConfig){
final ConfigFile config = new ConfigFile();
try {
config.load(file);
if (isWorldConfig){
warnGlobalOnlyPaths(config, configName);
}
warnDeprecatedPaths(config, configName);
} catch (FileNotFoundException e) {
} catch (IOException e) {
} catch (InvalidConfigurationException e) {
}
}
/**
* Warn about paths that are deprecated (not in use).
* @param config
* @param paths
* @param configName
*/
public static void warnDeprecatedPaths(ConfigFile config, String configName){
warnPaths(config, deprecatedPrefixes, " (" + configName + ") is not in use anymore.");
}
/**
* Warn about paths that are deprecated (not in use).
* @param file
* @param configName
*/
public static void warnDeprecatedPaths(File file, String configName){
final ConfigFile config = new ConfigFile();
try {
config.load(file);
warnDeprecatedPaths(config, configName);
} catch (FileNotFoundException e) {
} catch (IOException e) {
} catch (InvalidConfigurationException e) {
}
}
/**
* Warn about paths that are only to be set in the global config.
* @param config