1 package net.mograsim.machine;
3 import java.util.Arrays;
4 import java.util.Collections;
5 import java.util.HashMap;
8 import org.eclipse.core.runtime.CoreException;
9 import org.eclipse.core.runtime.IConfigurationElement;
10 import org.eclipse.core.runtime.IExtensionRegistry;
11 import org.eclipse.core.runtime.Platform;
13 public class MachineRegistry
15 private static final String MACHINE_EXT_ID = "net.mograsim.machine.machine_definition";
17 private static Map<String, MachineDefinition> installedMachines = new HashMap<>();
19 public static void reload()
21 IExtensionRegistry registry = Platform.getExtensionRegistry();
22 System.out.println(Arrays.toString(registry.getExtensionPoints("net.mograsim.machine")));
23 IConfigurationElement[] config = registry.getConfigurationElementsFor(MACHINE_EXT_ID);
26 for (IConfigurationElement e : config)
28 System.out.println(e.getNamespaceIdentifier());
29 System.out.println(Arrays.toString(e.getAttributeNames()));
30 final Object o = e.createExecutableExtension("class");
31 final String id = e.getAttribute("unique_id");
32 if (o instanceof MachineDefinition)
34 System.out.println("Found " + id);
35 installedMachines.put(id, (MachineDefinition) o);
38 System.err.println("Invalid machine definition: " + o + "(id=" + id + "");
42 catch (CoreException ex)
44 System.out.println(ex.getMessage());
48 public static Map<String, MachineDefinition> getinstalledMachines()
50 return Collections.unmodifiableMap(installedMachines);