From: Daniel Kirschten Date: Mon, 15 Jul 2019 14:26:07 +0000 (+0200) Subject: Secured standardComponentIDs against accidental modifications X-Git-Url: https://mograsim.net/gitweb/?a=commitdiff_plain;h=c10574721efeaaa62e150ec26dfcca603810aea7;p=Mograsim.git 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. --- 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)