1 package org.simantics.db.common.request;
3 import org.simantics.db.ComputationalValue;
4 import org.simantics.db.ReadGraph;
5 import org.simantics.db.Resource;
6 import org.simantics.db.common.utils.Functions;
7 import org.simantics.db.exception.DatabaseException;
8 import org.simantics.db.exception.RuntimeDatabaseException;
9 import org.simantics.layer0.Layer0;
10 import org.simantics.scl.runtime.function.FunctionImpl3;
13 * Adapts a resource to (SCL) value.
14 * @author Hannu Niemistö
16 public class AdaptValue extends ResourceRead<Object> {
18 public AdaptValue(Resource resource) {
22 public static final FunctionImpl3<ReadGraph,Resource,Object,Object> functionApplication = new FunctionImpl3<ReadGraph,Resource,Object,Object>() {
25 public Object apply(ReadGraph graph, Resource resource, Object context) {
27 return Functions.exec(graph, resource, graph, resource, context);
28 } catch (DatabaseException e) {
29 throw new RuntimeDatabaseException(e);
36 public Object perform(ReadGraph graph) throws DatabaseException {
37 String uri = graph.getURI(resource);
38 if(Layer0.URIs.Functions_functionApplication.equals(uri)) return functionApplication;
39 ComputationalValue ev = graph.adapt(resource, ComputationalValue.class);
40 return ev.getValue(graph, resource);