From 607d92868e60ce62c22ef58db03723026e5339aa Mon Sep 17 00:00:00 2001 From: tastybento Date: Tue, 28 May 2019 09:30:21 -0700 Subject: [PATCH] Hides deprecated flags from the flags list. Related to https://github.com/BentoBoxWorld/BentoBox/issues/680 Redoes commit 095237cd5db3b7169df1275759c885b42d9d8d45#diff-fee448dd4d94f3c5faaab7655c47682c Unknown flags in the database are now handled correctly. Added a test to confirm correct operation. --- .../java/world/bentobox/bentobox/lists/Flags.java | 10 ++++++---- .../database/json/adapters/FlagAdapterTest.java | 14 ++++++++++++++ 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/src/main/java/world/bentobox/bentobox/lists/Flags.java b/src/main/java/world/bentobox/bentobox/lists/Flags.java index 90f9661a0..3fd8a06fb 100644 --- a/src/main/java/world/bentobox/bentobox/lists/Flags.java +++ b/src/main/java/world/bentobox/bentobox/lists/Flags.java @@ -1,7 +1,12 @@ package world.bentobox.bentobox.lists; +import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; + import org.bukkit.Bukkit; import org.bukkit.Material; + import world.bentobox.bentobox.api.flags.Flag; import world.bentobox.bentobox.api.flags.Flag.Type; import world.bentobox.bentobox.api.flags.clicklisteners.CycleClick; @@ -52,10 +57,6 @@ import world.bentobox.bentobox.listeners.flags.worldsettings.RemoveMobsListener; import world.bentobox.bentobox.listeners.flags.worldsettings.TreesGrowingOutsideRangeListener; import world.bentobox.bentobox.managers.RanksManager; -import java.util.Arrays; -import java.util.List; -import java.util.stream.Collectors; - /** * Contains built-in {@link Flag Flags} that are registered by default into the {@link world.bentobox.bentobox.managers.FlagsManager FlagsManager} at startup. */ @@ -424,6 +425,7 @@ public final class Flags { */ public static List values() { return Arrays.stream(Flags.class.getFields()) + .filter(field -> field.getAnnotation(Deprecated.class) == null) // Ensures it is not deprecated .map(field -> { try { return (Flag)field.get(null); diff --git a/src/test/java/world/bentobox/bentobox/database/json/adapters/FlagAdapterTest.java b/src/test/java/world/bentobox/bentobox/database/json/adapters/FlagAdapterTest.java index e85b3a922..232c1fb87 100644 --- a/src/test/java/world/bentobox/bentobox/database/json/adapters/FlagAdapterTest.java +++ b/src/test/java/world/bentobox/bentobox/database/json/adapters/FlagAdapterTest.java @@ -1,7 +1,9 @@ package world.bentobox.bentobox.database.json.adapters; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertTrue; import static org.mockito.Matchers.any; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; @@ -106,4 +108,16 @@ public class FlagAdapterTest { Mockito.verify(reader).nextString(); assertEquals(Flags.ANIMAL_SPAWN, flag); } + + @Test + public void testReadJsonReaderNoSuchFlag() throws IOException { + FlagTypeAdapter fa = new FlagTypeAdapter(plugin); + JsonReader reader = mock(JsonReader.class); + Mockito.when(reader.peek()).thenReturn(JsonToken.STRING); + Mockito.when(reader.nextString()).thenReturn("MUMBO_JUMBO"); + Flag flag = fa.read(reader); + Mockito.verify(reader).nextString(); + assertNotNull(flag); + assertTrue(flag.getID().startsWith("NULL_FLAG_")); + } }