11package me .kodysimpson .simpapi .config ;
22
33import com .fasterxml .jackson .core .JsonFactory ;
4+ import com .fasterxml .jackson .core .JsonGenerator ;
5+ import com .fasterxml .jackson .core .JsonParser ;
6+ import com .fasterxml .jackson .databind .DeserializationFeature ;
47import com .fasterxml .jackson .databind .ObjectMapper ;
58import com .fasterxml .jackson .dataformat .yaml .YAMLFactory ;
69import org .bukkit .plugin .java .JavaPlugin ;
@@ -15,18 +18,21 @@ public enum FileType{
1518 JSON , YAML
1619 }
1720
18- public static <T > T loadConfig (JavaPlugin plugin , Class <T > configClass , String fileName , FileType fileType ) throws NoSuchMethodException , InvocationTargetException , InstantiationException , IllegalAccessException {
21+ public static <T > T loadConfig (JavaPlugin plugin , Class <T > configClass , String fileName , ConfigManager . FileType fileType ) throws NoSuchMethodException , InvocationTargetException , InstantiationException , IllegalAccessException {
1922
2023 T config = null ;
2124 File messagesConfigFile = null ;
2225 ObjectMapper mapper = null ;
2326
24- if (fileType == FileType .YAML ){
27+ String fileNameA = configClass .getAnnotation (Config .class ).fileName ();
28+ System .out .println ("Grabbed filename: " + fileNameA );
29+
30+ if (fileType == ConfigManager .FileType .YAML ){
2531 messagesConfigFile = new File (plugin .getDataFolder (), fileName + ".yml" );
26- mapper = new ObjectMapper (new YAMLFactory ());
27- }else if (fileType == FileType .JSON ){
32+ mapper = new ObjectMapper (new YAMLFactory ()). configure ( JsonGenerator . Feature . IGNORE_UNKNOWN , true ). configure ( JsonParser . Feature . IGNORE_UNDEFINED , true ). configure ( DeserializationFeature . FAIL_ON_UNKNOWN_PROPERTIES , false ) ;
33+ }else if (fileType == ConfigManager . FileType .JSON ){
2834 messagesConfigFile = new File (plugin .getDataFolder (), fileName + ".json" );
29- mapper = new ObjectMapper (new JsonFactory ());
35+ mapper = new ObjectMapper (new JsonFactory ()). configure ( JsonGenerator . Feature . IGNORE_UNKNOWN , true ). configure ( JsonParser . Feature . IGNORE_UNDEFINED , true ). configure ( DeserializationFeature . FAIL_ON_UNKNOWN_PROPERTIES , false ) ;
3036 }
3137
3238 if (!messagesConfigFile .exists ()){
@@ -40,12 +46,34 @@ public static <T> T loadConfig(JavaPlugin plugin, Class<T> configClass, String f
4046 }else {
4147 //since it exists already, load the values into the object
4248 try {
43- return mapper .readValue (messagesConfigFile , configClass );
49+ T t = mapper .readValue (messagesConfigFile , configClass );
50+ saveConfig (plugin , t , fileName , ConfigManager .FileType .YAML );
51+ return t ;
4452 } catch (IOException e ) {
4553 e .printStackTrace ();
4654 }
4755 }
4856 return config ;
4957 }
5058
59+ public static void saveConfig (JavaPlugin plugin , Object configObject , String fileName , ConfigManager .FileType fileType ) {
60+
61+ File messagesConfigFile = null ;
62+ ObjectMapper mapper = null ;
63+ if (fileType == ConfigManager .FileType .YAML ){
64+ messagesConfigFile = new File (plugin .getDataFolder (), fileName + ".yml" );
65+ mapper = new ObjectMapper (new YAMLFactory ()).configure (JsonGenerator .Feature .IGNORE_UNKNOWN , true ).configure (JsonParser .Feature .IGNORE_UNDEFINED , true ).configure (DeserializationFeature .FAIL_ON_UNKNOWN_PROPERTIES , false );
66+ }else if (fileType == ConfigManager .FileType .JSON ){
67+ messagesConfigFile = new File (plugin .getDataFolder (), fileName + ".json" );
68+ mapper = new ObjectMapper (new JsonFactory ()).configure (JsonGenerator .Feature .IGNORE_UNKNOWN , true ).configure (JsonParser .Feature .IGNORE_UNDEFINED , true ).configure (DeserializationFeature .FAIL_ON_UNKNOWN_PROPERTIES , false );
69+ }
70+
71+ try {
72+ mapper .writeValue (messagesConfigFile , configObject );
73+ } catch (IOException e ) {
74+ e .printStackTrace ();
75+ }
76+
77+ }
78+
5179}
0 commit comments