Merge remote-tracking branch 'origin/development' into development
[Mograsim.git] / net.mograsim.logic.model / src / net / mograsim / logic / model / serializing / IndirectGUIComponentCreator.java
index 1c6a484..23f8bcb 100644 (file)
@@ -2,6 +2,7 @@ package net.mograsim.logic.model.serializing;
 
 import java.io.IOException;
 import java.io.InputStream;
+import java.io.UncheckedIOException;
 import java.util.Collection;
 import java.util.HashMap;
 import java.util.Map;
@@ -11,6 +12,7 @@ import com.google.gson.JsonNull;
 
 import net.mograsim.logic.model.model.ViewModelModifiable;
 import net.mograsim.logic.model.model.components.GUIComponent;
+import net.mograsim.logic.model.snippets.CodeSnippetSupplier;
 import net.mograsim.logic.model.util.JsonHandler;
 
 public class IndirectGUIComponentCreator
@@ -94,9 +96,18 @@ public class IndirectGUIComponentCreator
                                if (componentSupplier != null)
                                        return componentSupplier.create(model, params, name);
                        } else
-                               // we know id has to start with "file:" here
-                               // because standardComponentIDs only contains strings starting with "class:" or "file:"
-                               return SubmodelComponentDeserializer.create(model, resolvedID.substring(5), name);
+                       // we know id has to start with "file:" here
+                       // because standardComponentIDs only contains strings starting with "class:" or "file:"
+                       if (params != null && !JsonNull.INSTANCE.equals(params))
+                               throw new IllegalArgumentException("Can't give params to a component deserialized from a JSON file");
+                       try
+                       {
+                               return SubmodelComponentSerializer.deserialize(model, resolvedID.substring(5), name, id, null);
+                       }
+                       catch (IOException e)
+                       {
+                               throw new UncheckedIOException(e);
+                       }
                }
                throw new RuntimeException("Could not get component supplier for ID " + id);
        }