]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.scl.runtime/src/org/simantics/scl/runtime/procedure/Procedures.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.scl.runtime / src / org / simantics / scl / runtime / procedure / Procedures.java
diff --git a/bundles/org.simantics.scl.runtime/src/org/simantics/scl/runtime/procedure/Procedures.java b/bundles/org.simantics.scl.runtime/src/org/simantics/scl/runtime/procedure/Procedures.java
new file mode 100755 (executable)
index 0000000..45ddc0d
--- /dev/null
@@ -0,0 +1,45 @@
+package org.simantics.scl.runtime.procedure;
+
+import java.util.UUID;
+
+import org.simantics.scl.runtime.function.Function;
+import org.simantics.scl.runtime.function.FunctionImpl1;
+import org.simantics.scl.runtime.tuple.Tuple0;
+
+
+public class Procedures {
+    public static boolean isInterrupted() {
+        return Thread.currentThread().isInterrupted();
+    }
+    
+    public static void checkInterrupted() throws InterruptedException {
+        if(Thread.interrupted())
+            throw new InterruptedException();
+    }
+    
+    public static String generateUID() {
+        return UUID.randomUUID().toString();
+    }
+    
+    private static Function runProc = new FunctionImpl1() {
+        @Override
+        public Object apply(Object f) {
+            return ((Function)f).apply(Tuple0.INSTANCE);
+        }
+    };
+    
+    public static Function runProc() {
+        return runProc;
+    }
+    
+    public static Object catch_(Class<?> exceptionClass, Function expression, Function handler) throws Throwable {
+        try {
+            return expression.apply(Tuple0.INSTANCE);
+        } catch(Throwable e) {
+            if(exceptionClass.isAssignableFrom(e.getClass()))
+                return handler.apply(e);
+            else
+                throw e;
+        }
+    }
+}