From e4320ff6606b0e8bc5184b8b1ae1e7cae95a5726 Mon Sep 17 00:00:00 2001 From: Christian Femers Date: Tue, 24 Sep 2019 05:11:56 +0200 Subject: [PATCH] Added id to machine definition (was only set in the extension point) MachineRegistry will check for consistency --- .../model/am2900/machine/Am2900MachineDefinition.java | 9 +++++++++ .../src/net/mograsim/machine/MachineDefinition.java | 8 ++++++++ .../src/net/mograsim/machine/MachineRegistry.java | 6 +++++- 3 files changed, 22 insertions(+), 1 deletion(-) diff --git a/plugins/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/am2900/machine/Am2900MachineDefinition.java b/plugins/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/am2900/machine/Am2900MachineDefinition.java index e75c79a9..1ed03720 100644 --- a/plugins/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/am2900/machine/Am2900MachineDefinition.java +++ b/plugins/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/am2900/machine/Am2900MachineDefinition.java @@ -11,6 +11,14 @@ import net.mograsim.machine.Register; //(used for detecting installed machines in plugin.core) public class Am2900MachineDefinition implements MachineDefinition { + public static final String AM2900_MACHINE_ID = "Am2900"; + + @Override + public String getId() + { + return AM2900_MACHINE_ID; + } + @Override public Am2900Machine createNew() { @@ -65,4 +73,5 @@ public class Am2900MachineDefinition implements MachineDefinition { return Am2900MicroInstructionMemoryDefinition.instance; } + } diff --git a/plugins/net.mograsim.machine/src/net/mograsim/machine/MachineDefinition.java b/plugins/net.mograsim.machine/src/net/mograsim/machine/MachineDefinition.java index 02cf3757..8f1ee265 100644 --- a/plugins/net.mograsim.machine/src/net/mograsim/machine/MachineDefinition.java +++ b/plugins/net.mograsim.machine/src/net/mograsim/machine/MachineDefinition.java @@ -6,6 +6,14 @@ import net.mograsim.machine.mi.MicroInstructionMemoryDefinition; public interface MachineDefinition { + /** + * This returns the MachineDefinitions ID. This must be consistent and coherent with the id in the extension point (Eclipse plugin xml) + * providing the definition. + * + * @return a human readable, unique id representing the specified machine. + * @author Christian Femers + */ + String getId(); /** * Creates a new instance of the machine diff --git a/plugins/net.mograsim.machine/src/net/mograsim/machine/MachineRegistry.java b/plugins/net.mograsim.machine/src/net/mograsim/machine/MachineRegistry.java index 28e79216..52e5d60d 100644 --- a/plugins/net.mograsim.machine/src/net/mograsim/machine/MachineRegistry.java +++ b/plugins/net.mograsim.machine/src/net/mograsim/machine/MachineRegistry.java @@ -35,7 +35,11 @@ public class MachineRegistry if (o instanceof MachineDefinition) { System.out.println("Found " + id); - installedMachines.put(id, (MachineDefinition) o); + MachineDefinition md = (MachineDefinition) o; + if (Objects.equals(id, md.getId())) + installedMachines.put(id, md); + else + System.err.println("Machine definition ids to not match: " + id + " and " + md.getId()); } else { System.err.println("Invalid machine definition: " + o + "(id=" + id + ""); -- 2.17.1