X-Git-Url: https://gerrit.simantics.org/r/gitweb?p=simantics%2Fplatform.git;a=blobdiff_plain;f=bundles%2Forg.simantics.db.layer0%2Fsrc%2Forg%2Fsimantics%2Fdb%2Flayer0%2Fscl%2FAbstractExpressionCompilationRequest.java;h=3a95f25304f78248cde70c51fdd4eb127ff39d9c;hp=d40f82d4dc1219055b83fe4c722edff93703d63e;hb=2d97029aeaaf5d6a965eae98c1646eef29ae2f8b;hpb=25ff14b9cb52ccec8a7d6117f089d9ccbbb08ce2 diff --git a/bundles/org.simantics.db.layer0/src/org/simantics/db/layer0/scl/AbstractExpressionCompilationRequest.java b/bundles/org.simantics.db.layer0/src/org/simantics/db/layer0/scl/AbstractExpressionCompilationRequest.java index d40f82d4d..3a95f2530 100644 --- a/bundles/org.simantics.db.layer0/src/org/simantics/db/layer0/scl/AbstractExpressionCompilationRequest.java +++ b/bundles/org.simantics.db.layer0/src/org/simantics/db/layer0/scl/AbstractExpressionCompilationRequest.java @@ -5,6 +5,7 @@ import java.util.List; import org.simantics.databoard.Bindings; import org.simantics.db.ReadGraph; +import org.simantics.db.Resource; import org.simantics.db.exception.DatabaseException; import org.simantics.db.exception.RuntimeDatabaseException; import org.simantics.db.request.Read; @@ -34,6 +35,8 @@ import org.simantics.scl.compiler.types.util.MultiFunction; import org.simantics.scl.runtime.SCLContext; import org.simantics.scl.runtime.function.Function1; import org.simantics.utils.datastructures.Pair; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import gnu.trove.map.hash.THashMap; @@ -62,6 +65,8 @@ import gnu.trove.map.hash.THashMap; public abstract class AbstractExpressionCompilationRequest implements Read> { + private static final Logger LOGGER = LoggerFactory.getLogger(AbstractExpressionCompilationRequest.class); + protected static final Type RESOURCE = Types.con("Simantics/DB", "Resource"); protected static final Type VARIABLE = Types.con("Simantics/Variables", "Variable"); protected static Name PROPERTY_VALUE = Name.create("Simantics/Variables", "propertyValue"); @@ -143,12 +148,13 @@ implements Read> { return false; } + @SuppressWarnings("unchecked") private Function1 eval(ExpressionEvaluator evaluator, ReadGraph graph) throws DatabaseException { Object oldGraph = SCLContext.getCurrent().put("graph", graph); try { return (Function1)evaluator.eval(); } catch(RuntimeDatabaseException e) { - e.printStackTrace(); + LOGGER.error("Failed to evaluate SCL expression", e); if(e.getCause() instanceof DatabaseException) throw (DatabaseException)e.getCause(); else @@ -167,7 +173,7 @@ implements Read> { throw new SCLDatabaseException(b.toString()+b2.toString(), b2.toString(), e.getErrors()); } catch(Throwable e) { // Should not happen! - e.printStackTrace(); + LOGGER.error("This error should never happen", e); throw new RuntimeException(e); } finally { SCLContext.getCurrent().put("graph", oldGraph); @@ -186,12 +192,11 @@ implements Read> { return concreteEffects; } catch(MatchException e) { // Should not happen! - e.printStackTrace(); + LOGGER.error("Failed to get expression effects", e); throw new RuntimeException(e); } } - @SuppressWarnings("unchecked") @Override public Function1 perform(final ReadGraph graph) throws DatabaseException { CompilationContext context = getCompilationContext(graph); @@ -225,10 +230,10 @@ implements Read> { else return base; } - - protected static String resolveExpectedValueType(ReadGraph graph, org.simantics.db.layer0.variable.Variable context) throws DatabaseException { + + protected static String resolveExpectedValueType(ReadGraph graph, Resource predicate) throws DatabaseException { Layer0 L0 = Layer0.getInstance(graph); - String valueType = graph.getPossibleRelatedValue(context.getPredicateResource(graph), L0.RequiresValueType, Bindings.STRING); - return valueType; + return graph.getPossibleRelatedValue(predicate, L0.RequiresValueType, Bindings.STRING); } + }