]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.db.layer0/src/org/simantics/db/layer0/scl/CompileResourceValueRequest.java
Fixed multiple issues causing dangling references to discarded queries
[simantics/platform.git] / bundles / org.simantics.db.layer0 / src / org / simantics / db / layer0 / scl / CompileResourceValueRequest.java
index c8d168f50320b547966e8bccb95d5473bf071ac5..cdc787d2683a135985244b31414379a0ac45d791 100644 (file)
@@ -24,7 +24,7 @@ import org.simantics.scl.runtime.function.Function1;
  * 
  * @author Antti Villberg
  */
-public class CompileResourceValueRequest extends AbstractExpressionCompilationRequest<CompilationContext, Resource> {
+public class CompileResourceValueRequest extends AbstractExpressionCompilationRequest<CompilationContext, Object> {
 
     public static class CompilationContext extends AbstractExpressionCompilationContext {
         public CompilationContext(RuntimeEnvironment runtimeEnvironment) {
@@ -42,8 +42,8 @@ public class CompileResourceValueRequest extends AbstractExpressionCompilationRe
         SCLContext sclContext = SCLContext.getCurrent();
         Object oldGraph = sclContext.get("graph");
         try {
-            Function1<Resource,Object> exp = graph.syncRequest(new CompileResourceValueRequest(literal),
-                    TransientCacheListener.<Function1<Resource,Object>>instance());
+            Function1<Object,Object> exp = graph.syncRequest(new CompileResourceValueRequest(literal),
+                    TransientCacheListener.instance());
             sclContext.put("graph", graph);
             return exp.apply(literal);
         } catch (DatabaseException e) {
@@ -55,6 +55,10 @@ public class CompileResourceValueRequest extends AbstractExpressionCompilationRe
         }
     }
 
+    public static Function1<Object,Object> compile(ReadGraph graph, Resource literal) throws DatabaseException {
+        return graph.syncRequest(new CompileResourceValueRequest(literal), TransientCacheListener.instance());
+    }
+
     @Override
     protected String getExpressionText(ReadGraph graph)
             throws DatabaseException {
@@ -106,4 +110,30 @@ public class CompileResourceValueRequest extends AbstractExpressionCompilationRe
             return null;
     }
 
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+        result = prime * result + ((literal == null) ? 0 : literal.hashCode());
+        return result;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj)
+            return true;
+        if (obj == null)
+            return false;
+        if (getClass() != obj.getClass())
+            return false;
+        CompileResourceValueRequest other = (CompileResourceValueRequest) obj;
+        if (literal == null) {
+            if (other.literal != null)
+                return false;
+        } else if (!literal.equals(other.literal))
+            return false;
+        return true;
+    }
+
+    
 }