package org.simantics.document.server.request;
+import java.util.Collections;
import java.util.List;
import java.util.Map;
}
public ServerSCLHandlerValueRequest(ReadGraph graph, Resource s, Resource o, Resource p) throws DatabaseException {
- this(getComponentTypeAndRoot(graph, s), o, resolveExpectedValueType(graph, p));
+ this(getComponentTypeAndRoot(graph, s, o), o, resolveExpectedValueType(graph, p));
}
private static Pair<Resource,Resource> getComponentTypeAndRoot(ReadGraph graph, Variable property) throws DatabaseException {
return Pair.make(parent.getType(graph), root);
}
- private static Pair<Resource,Resource> getComponentTypeAndRoot(ReadGraph graph, Resource component) throws DatabaseException {
+ private static Pair<Resource,Resource> getComponentTypeAndRoot(ReadGraph graph, Resource component, Resource literal) throws DatabaseException {
if(component != null) {
Resource type = graph.syncRequest(new FindPossibleComponentTypeRequest(component));
if(type != null) {
Resource root = graph.syncRequest(new IndexRoot(doc));
return Pair.make(componentType, root);
}
+ // TODO: For Antti to consider and fix later
+ // Introduced to handle procedural user components where component == null
+ } else if (literal != null) {
+ Resource root = graph.syncRequest(new IndexRoot(literal));
+ return Pair.make(null, root);
+ } else {
+ throw new DatabaseException("Couldn't resolve component type and root for component == null && literal == null");
}
- throw new IllegalStateException();
+ //throw new IllegalStateException();
}
public static List<TCon> getEffects(ReadGraph graph, Variable context) throws DatabaseException {
@Override
public CompilationContext perform(ReadGraph graph) throws DatabaseException {
RuntimeEnvironment runtimeEnvironment = graph.syncRequest(getRuntimeEnvironmentRequest(parameter.first, parameter.second));
- Map<String, ComponentTypeProperty> propertyMap =
- graph.syncRequest(new ReadComponentTypeInterfaceRequest(parameter.first, runtimeEnvironment.getEnvironment()),
- TransientCacheListener.<Map<String, ComponentTypeProperty>>instance());
+ Map<String, ComponentTypeProperty> propertyMap;
+ if (parameter.first != null) {
+ propertyMap =
+ graph.syncRequest(new ReadComponentTypeInterfaceRequest(parameter.first, runtimeEnvironment.getEnvironment()),
+ TransientCacheListener.<Map<String, ComponentTypeProperty>>instance());
+ } else {
+ // TODO: Antti to consider
+ // To handle procedural user components
+ propertyMap = Collections.emptyMap();
+ }
+// Map<String, ComponentTypeProperty> propertyMap =
+// graph.syncRequest(new ReadComponentTypeInterfaceRequest(parameter.first, runtimeEnvironment.getEnvironment()),
+// TransientCacheListener.<Map<String, ComponentTypeProperty>>instance());
return new CompilationContext(runtimeEnvironment, propertyMap);
}
});