From f8004ec70173d89a3ac6e9ecf2688a5567fac12e Mon Sep 17 00:00:00 2001 From: fullwall Date: Sat, 13 May 2023 23:55:25 +0800 Subject: [PATCH] Fix nullability not being allowed for collections in PersistenceLoader --- .../net/citizensnpcs/api/persistence/PersistenceLoader.java | 3 +++ .../citizensnpcs/api/persistence/PersistenceLoaderTest.java | 6 ++++++ 2 files changed, 9 insertions(+) diff --git a/src/main/java/net/citizensnpcs/api/persistence/PersistenceLoader.java b/src/main/java/net/citizensnpcs/api/persistence/PersistenceLoader.java index 56b67159..1ded2c46 100644 --- a/src/main/java/net/citizensnpcs/api/persistence/PersistenceLoader.java +++ b/src/main/java/net/citizensnpcs/api/persistence/PersistenceLoader.java @@ -166,6 +166,9 @@ private static void deserialise(PersistField field, Object instance, Object oldV // TODO: this is pretty ugly. if (!Collection.class.isAssignableFrom(collectionType) && !Map.class.isAssignableFrom(collectionType)) throw loadException; + if (Collection.class.isAssignableFrom(type) && !root.keyExists(field.key)) + return; + if (List.class.isAssignableFrom(type)) { List list = (List) (!List.class.isAssignableFrom(collectionType) ? Lists.newArrayList() : collectionType.newInstance()); diff --git a/src/test/java/net/citizensnpcs/api/persistence/PersistenceLoaderTest.java b/src/test/java/net/citizensnpcs/api/persistence/PersistenceLoaderTest.java index 66ad6a67..5e4fe201 100644 --- a/src/test/java/net/citizensnpcs/api/persistence/PersistenceLoaderTest.java +++ b/src/test/java/net/citizensnpcs/api/persistence/PersistenceLoaderTest.java @@ -65,6 +65,12 @@ public void loadsCollections() { } } + @Test + public void loadsNullSets() { + SpecificCollectionClassTest test = PersistenceLoader.load(SpecificCollectionClassTest.class, root); + assertEquals(test.list, null); + } + @Test public void longLoadSaveTest() { LongLoadSaveTest load = new LongLoadSaveTest();