]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.scl.commands/src/org/simantics/scl/commands/Commands.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.scl.commands / src / org / simantics / scl / commands / Commands.java
diff --git a/bundles/org.simantics.scl.commands/src/org/simantics/scl/commands/Commands.java b/bundles/org.simantics.scl.commands/src/org/simantics/scl/commands/Commands.java
new file mode 100644 (file)
index 0000000..1042680
--- /dev/null
@@ -0,0 +1,26 @@
+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