From: Christian Femers Date: Tue, 3 Sep 2019 07:20:24 +0000 (+0200) Subject: Make MachineRegistry actually work X-Git-Url: https://mograsim.net/gitweb/?p=Mograsim.git;a=commitdiff_plain;h=d9d1417497a549911283d2ff31ca9f4f806a4fb4 Make MachineRegistry actually work --- diff --git a/net.mograsim.machine/src/net/mograsim/machine/MachineRegistry.java b/net.mograsim.machine/src/net/mograsim/machine/MachineRegistry.java index 865a8993..47da15bf 100644 --- a/net.mograsim.machine/src/net/mograsim/machine/MachineRegistry.java +++ b/net.mograsim.machine/src/net/mograsim/machine/MachineRegistry.java @@ -2,38 +2,40 @@ package net.mograsim.machine; import java.util.Arrays; import java.util.Collections; -import java.util.HashSet; -import java.util.Set; +import java.util.HashMap; +import java.util.Map; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IConfigurationElement; import org.eclipse.core.runtime.IExtensionRegistry; -import org.eclipse.core.runtime.ISafeRunnable; -import org.eclipse.core.runtime.SafeRunner; -import org.eclipse.e4.core.di.annotations.Execute; +import org.eclipse.core.runtime.Platform; public class MachineRegistry { - private static final String MACHINE_EXT_ID = "net.mograsim.machine.machinedefinition"; + private static final String MACHINE_EXT_ID = "net.mograsim.machine.machine_definition"; - private static Set installedMachines = new HashSet<>(); + private static Map installedMachines = new HashMap<>(); - @Execute - public void execute(IExtensionRegistry registry) + public static void reload() { + IExtensionRegistry registry = Platform.getExtensionRegistry(); System.out.println(Arrays.toString(registry.getExtensionPoints("net.mograsim.machine"))); IConfigurationElement[] config = registry.getConfigurationElementsFor(MACHINE_EXT_ID); try { for (IConfigurationElement e : config) { + System.out.println(e.getNamespaceIdentifier()); + System.out.println(Arrays.toString(e.getAttributeNames())); final Object o = e.createExecutableExtension("class"); - if (o instanceof MachineDefinition) + final String id = e.getAttribute("unique_id"); + if (o instanceof MachineDefinition) { - executeExtension(o); + System.out.println("Found " + id); + installedMachines.put(id, (MachineDefinition) o); } else { - System.err.println("Invalid machine definition: " + o); + System.err.println("Invalid machine definition: " + o + "(id=" + id + ""); } } } @@ -43,27 +45,8 @@ public class MachineRegistry } } - private void executeExtension(final Object o) + public static Map getinstalledMachines() { - ISafeRunnable runnable = new ISafeRunnable() - { - @Override - public void handleException(Throwable e) - { - System.out.println("Exception in client"); - } - - @Override - public void run() throws Exception - { - System.out.println(((MachineDefinition) o).getAddressBits()); - } - }; - SafeRunner.run(runnable); - } - - public static Set getinstalledMachines() - { - return Collections.unmodifiableSet(installedMachines); + return Collections.unmodifiableMap(installedMachines); } }