Skip to content

Commit 536ad8e

Browse files
committed
Improved non-args constructor validation
1 parent 2813858 commit 536ad8e

File tree

1 file changed

+6
-4
lines changed

1 file changed

+6
-4
lines changed

src/main/java/pl/mikigal/config/serializer/universal/UniversalObjectSerializer.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package pl.mikigal.config.serializer.universal;
22

33
import pl.mikigal.config.BukkitConfiguration;
4+
import pl.mikigal.config.exception.InvalidConfigException;
45
import pl.mikigal.config.serializer.Serializer;
56

67
import 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

Comments
 (0)