From d6d5c48722671ccc034011d9eba468b23ee53e80 Mon Sep 17 00:00:00 2001 From: Christian Femers Date: Tue, 3 Sep 2019 06:51:28 +0200 Subject: [PATCH] Needed to add special class loading, too --- .../serializing/IndirectGUIComponentCreator.java | 14 +++++++++++--- .../logic/model/serializing/ResourceLoader.java | 2 ++ 2 files changed, 13 insertions(+), 3 deletions(-) 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; } -- 2.17.1