From: Christian Femers Date: Tue, 3 Sep 2019 04:51:28 +0000 (+0200) Subject: Needed to add special class loading, too X-Git-Url: https://mograsim.net/gitweb/?p=Mograsim.git;a=commitdiff_plain;h=d6d5c48722671ccc034011d9eba468b23ee53e80 Needed to add special class loading, too --- 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 f346d029..05e4f2d6 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 @@ -130,8 +130,16 @@ public class IndirectGUIComponentCreator { loader = Objects.requireNonNull(resourceLoaders.get(parts[1])); } - JsonObject jsonContents = JsonHandler.readJson(loader.loadResource(resID), JsonObject.class); - return loadComponentFromJsonObject(model, id, name, jsonContents); + if (resID.endsWith(".json")) + { + JsonObject jsonContents = JsonHandler.readJson(loader.loadResource(resID), JsonObject.class); + return loadComponentFromJsonObject(model, id, name, jsonContents); + } + loader.loadClass(resID); + ComponentSupplier componentSupplier = componentSuppliers.get(resID); + if (componentSupplier != null) + return componentSupplier.create(model, params, name); + throw new IllegalArgumentException("Component supplier not found for ID " + id + " (class cannot initialize?)"); } catch (IOException e) { @@ -139,7 +147,7 @@ public class IndirectGUIComponentCreator } catch (ClassCastException | ReflectiveOperationException e) { - throw new IllegalArgumentException("invaild resource loader specified:" + parts[1], e); + throw new IllegalArgumentException("class not found / invaild resource loader specified:" + parts[1], e); } } else if (resolvedID.startsWith("file:")) { diff --git a/net.mograsim.logic.model/src/net/mograsim/logic/model/serializing/ResourceLoader.java b/net.mograsim.logic.model/src/net/mograsim/logic/model/serializing/ResourceLoader.java index 83dd745c..1052d5fb 100644 --- a/net.mograsim.logic.model/src/net/mograsim/logic/model/serializing/ResourceLoader.java +++ b/net.mograsim.logic.model/src/net/mograsim/logic/model/serializing/ResourceLoader.java @@ -20,4 +20,6 @@ import net.mograsim.logic.model.model.components.GUIComponent; public interface ResourceLoader { InputStream loadResource(String path) throws IOException; + + Class loadClass(String name) throws ClassNotFoundException; }