--- /dev/null
+package org.simantics.scl.commands;\r
+\r
+import java.util.concurrent.ConcurrentHashMap;\r
+\r
+import org.simantics.db.ReadGraph;\r
+import org.simantics.scl.commands.internal.CommandImpl;\r
+\r
+\r
+public class Commands {\r
+ private static final ConcurrentHashMap<String, Command> COMMAND_CACHE = \r
+ new ConcurrentHashMap<String, Command>();\r
+\r
+ /**\r
+ * Returns a command object of given type. This method always succeeds,\r
+ * but may return a command object whose check-method always returns fail\r
+ * and commit will throw an exception.\r
+ */\r
+ public static Command get(ReadGraph graph, String name) {\r
+ Command command = COMMAND_CACHE.get(name);\r
+ if(command == null) {\r
+ command = CommandImpl.create(graph, name);\r
+ COMMAND_CACHE.put(name, command);\r
+ }\r
+ return command;\r
+ }\r
+}\r