From c10574721efeaaa62e150ec26dfcca603810aea7 Mon Sep 17 00:00:00 2001 From: Daniel Kirschten Date: Mon, 15 Jul 2019 16:26:07 +0200 Subject: [PATCH] Secured standardComponentIDs against accidental modifications It is possible to call remove() on Map.keySet(), which will remove that key (and value) from the original map. --- .../logic/model/serializing/IndirectGUIComponentCreator.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/net.mograsim.logic.model/src/net/mograsim/logic/model/serializing/IndirectGUIComponentCreator.java b/net.mograsim.logic.model/src/net/mograsim/logic/model/serializing/IndirectGUIComponentCreator.java index 23f8bcb8..6513f3dd 100644 --- a/net.mograsim.logic.model/src/net/mograsim/logic/model/serializing/IndirectGUIComponentCreator.java +++ b/net.mograsim.logic.model/src/net/mograsim/logic/model/serializing/IndirectGUIComponentCreator.java @@ -4,8 +4,10 @@ import java.io.IOException; import java.io.InputStream; import java.io.UncheckedIOException; import java.util.Collection; +import java.util.Collections; import java.util.HashMap; import java.util.Map; +import java.util.Set; import com.google.gson.JsonElement; import com.google.gson.JsonNull; @@ -18,6 +20,7 @@ import net.mograsim.logic.model.util.JsonHandler; public class IndirectGUIComponentCreator { private static final Map standardComponentIDs = new HashMap<>(); + private static final Set standardComponentIDSetUnmodifiable = Collections.unmodifiableSet(standardComponentIDs.keySet()); private static final Map componentSuppliers = new HashMap<>(); @@ -56,7 +59,7 @@ public class IndirectGUIComponentCreator public static Collection getStandardComponentIDs() { - return standardComponentIDs.keySet(); + return standardComponentIDSetUnmodifiable; } public static void setComponentSupplier(String className, ComponentSupplier componentSupplier) -- 2.17.1