11package pl .mikigal .config .serializer .universal ;
22
33import pl .mikigal .config .BukkitConfiguration ;
4+ import pl .mikigal .config .exception .InvalidConfigException ;
45import pl .mikigal .config .serializer .Serializer ;
56
67import java .io .Serializable ;
@@ -20,7 +21,7 @@ public class UniversalObjectSerializer extends Serializer<Serializable> {
2021
2122 @ Override
2223 protected void saveObject (String path , Serializable object , BukkitConfiguration configuration ) {
23- this .validateDefaultConstructor (object );
24+ this .validateDefaultConstructor (object . getClass () );
2425
2526 try {
2627 for (Field field : object .getClass ().getDeclaredFields ()) {
@@ -55,6 +56,7 @@ public Serializable deserialize(String path, BukkitConfiguration configuration)
5556 throw new RuntimeException ("An error occurred while deserializing class '" + classPath + "'" , e );
5657 }
5758
59+ this .validateDefaultConstructor (clazz );
5860 if (!Serializable .class .isAssignableFrom (clazz )) {
5961 throw new RuntimeException ("Class " + classPath + " does not implements Serializable" );
6062 }
@@ -82,11 +84,11 @@ public Serializable deserialize(String path, BukkitConfiguration configuration)
8284 return instance ;
8385 }
8486
85- private void validateDefaultConstructor (Object object ) {
87+ private void validateDefaultConstructor (Class <?> clazz ) {
8688 try {
87- object . getClass (). getConstructor ();
89+ clazz . getConstructor (); // Get no-args constructor for test
8890 } catch (NoSuchMethodException e ) {
89- throw new IllegalArgumentException ("Class " + object . getClass () .getName () + " does not have a default constructor" );
91+ throw new InvalidConfigException ("Class " + clazz .getName () + " does not have a default constructor" );
9092 }
9193 }
9294}
0 commit comments