diff options
author | ElgarL <ElgarL@palmergames.com> | 2012-08-19 14:49:16 +0100 |
---|---|---|
committer | ElgarL <ElgarL@palmergames.com> | 2012-08-19 14:49:16 +0100 |
commit | 97c8eae84cd3d6fc17ecf21984cf076c880466ee (patch) | |
tree | 3e7bcdda6041a3f1f09c26693e5e943c02528238 /EssentialsGroupManager | |
parent | ff264228401ce0499f13d4773d96fecfa625125c (diff) | |
download | Essentials-97c8eae84cd3d6fc17ecf21984cf076c880466ee.tar Essentials-97c8eae84cd3d6fc17ecf21984cf076c880466ee.tar.gz Essentials-97c8eae84cd3d6fc17ecf21984cf076c880466ee.tar.lz Essentials-97c8eae84cd3d6fc17ecf21984cf076c880466ee.tar.xz Essentials-97c8eae84cd3d6fc17ecf21984cf076c880466ee.zip |
No more null errors from corrupt config.yml's.
Diffstat (limited to 'EssentialsGroupManager')
-rw-r--r-- | EssentialsGroupManager/src/Changelog.txt | 3 | ||||
-rw-r--r-- | EssentialsGroupManager/src/org/anjocaido/groupmanager/GMConfiguration.java | 94 |
2 files changed, 67 insertions, 30 deletions
diff --git a/EssentialsGroupManager/src/Changelog.txt b/EssentialsGroupManager/src/Changelog.txt index 498537647..2f535277b 100644 --- a/EssentialsGroupManager/src/Changelog.txt +++ b/EssentialsGroupManager/src/Changelog.txt @@ -193,4 +193,5 @@ v 2.0: - Fix a cases sensitivity bug in world loading.
- Stop using the YamlConfiguration in bukkit for our config handling. We can now support periods in world names.
- Fix GlobalGroups not loading permission nodes.
- - Fix an error with Logging set to 'OFF' triggering a cast exception.
\ No newline at end of file + - Fix an error with Logging set to 'OFF' triggering a cast exception.
+ - No more null errors from corrupt config.yml's.
\ No newline at end of file diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/GMConfiguration.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/GMConfiguration.java index fcc018d17..95fd35eb0 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/GMConfiguration.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/GMConfiguration.java @@ -7,6 +7,7 @@ package org.anjocaido.groupmanager; import java.io.File; import java.io.FileInputStream; import java.io.IOException; +import java.util.HashMap; import java.util.Map; import java.util.logging.Level; @@ -21,10 +22,10 @@ import org.yaml.snakeyaml.reader.UnicodeReader; */ public class GMConfiguration { - private boolean opOverride; - private boolean toggleValidate; - private Integer saveInterval; - private Integer backupDuration; + private boolean opOverride = true; + private boolean toggleValidate = true; + private Integer saveInterval = 10; + private Integer backupDuration = 24; private String loggerLevel = "OFF"; private Map<String, Object> mirrorsMap; @@ -35,6 +36,16 @@ public class GMConfiguration { public GMConfiguration(GroupManager plugin) { this.plugin = plugin; + + /* + * Set defaults + */ + opOverride = true; + toggleValidate = true; + saveInterval = 10; + backupDuration = 24; + loggerLevel = "OFF"; + load(); } @@ -44,14 +55,14 @@ public class GMConfiguration { if (!plugin.getDataFolder().exists()) { plugin.getDataFolder().mkdirs(); } - + File configFile = new File(plugin.getDataFolder(), "config.yml"); if (!configFile.exists()) { try { Tasks.copy(plugin.getResourceAsStream("config.yml"), configFile); } catch (IOException ex) { - GroupManager.logger.log(Level.SEVERE, null, ex); + GroupManager.logger.log(Level.SEVERE, "Error creating a new config.yml", ex); } } @@ -61,7 +72,7 @@ public class GMConfiguration { FileInputStream configInputStream = new FileInputStream(configFile); GMconfig = (Map<String, Object>) configYAML.load(new UnicodeReader(configInputStream)); configInputStream.close(); - + } catch (Exception ex) { throw new IllegalArgumentException("The following file couldn't pass on Parser.\n" + configFile.getPath(), ex); } @@ -69,28 +80,53 @@ public class GMConfiguration { /* * Read our config settings ands store them for reading later. */ - Map<String, Object> config = getElement("config", getElement("settings", GMconfig)); - - opOverride = (Boolean) config.get("opOverrides"); - toggleValidate = (Boolean) config.get("validate_toggle"); - - /* - * data node for save/backup timers. - */ - Map<String, Object> save = getElement("save", getElement("data", getElement("settings", GMconfig))); - - saveInterval = (Integer) save.get("minutes"); - backupDuration = (Integer) save.get("hours"); - - Object level = ((Map<String, String>) getElement("settings", GMconfig).get("logging")).get("level"); - if (level instanceof String) - level = (String) level; - - /* - * Store our mirrors map for parsing later. - */ - mirrorsMap = (Map<String, Object>) ((Map<String, Object>) GMconfig.get("settings")).get("mirrors"); - + try { + Map<String, Object> config = getElement("config", getElement("settings", GMconfig)); + + opOverride = (Boolean) config.get("opOverrides"); + toggleValidate = (Boolean) config.get("validate_toggle"); + + /* + * data node for save/backup timers. + */ + try { + Map<String, Object> save = getElement("save", getElement("data", getElement("settings", GMconfig))); + + try { + saveInterval = (Integer) save.get("minutes"); + } catch (Exception ex) { + GroupManager.logger.log(Level.SEVERE, "Missing or corrupt 'minutes' node. Using default setting", ex); + } + + try { + backupDuration = (Integer) save.get("hours"); + } catch (Exception ex) { + GroupManager.logger.log(Level.SEVERE, "Missing or corrupt 'hours' node. Using default setting", ex); + } + + } catch (Exception ex) { + GroupManager.logger.log(Level.SEVERE, "Missing or corrupt 'data' node. Using default settings", ex); + } + + + + Object level = ((Map<String, String>) getElement("settings", GMconfig).get("logging")).get("level"); + if (level instanceof String) + level = (String) level; + + /* + * Store our mirrors map for parsing later. + */ + mirrorsMap = (Map<String, Object>) ((Map<String, Object>) GMconfig.get("settings")).get("mirrors"); + + } catch (Exception ex) { + /* + * Flag the error and use defaults + */ + GroupManager.logger.log(Level.SEVERE, "There are errors in your config.yml. Using default settings", ex); + + mirrorsMap = new HashMap<String, Object>(); + } // Setup defaults adjustLoggerLevel(); plugin.setValidateOnlinePlayer(isToggleValidate()); |