From: Marko Luukkainen Date: Wed, 20 Feb 2019 15:34:56 +0000 (+0200) Subject: Use STR.Component base type for resolving actual type. X-Git-Tag: v1.43.0~136^2~192^2 X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=commitdiff_plain;h=refs%2Fchanges%2F60%2F2660%2F1;p=simantics%2Fplatform.git Use STR.Component base type for resolving actual type. This change should fix at least some problems with multi-instances. gitlab #259 Change-Id: Id8496ba4bc03d9c0e7dba3cc0d0db858896ddce1 --- diff --git a/bundles/org.simantics.structural2/src/org/simantics/structural2/Functions.java b/bundles/org.simantics.structural2/src/org/simantics/structural2/Functions.java index 9b5fc4586..970e6f9e8 100644 --- a/bundles/org.simantics.structural2/src/org/simantics/structural2/Functions.java +++ b/bundles/org.simantics.structural2/src/org/simantics/structural2/Functions.java @@ -562,8 +562,14 @@ public class Functions { } throw new DatabaseException("No type for " + variable.getURI(graph)); } else { - Resource possibleType = graph.getPossibleType(represents, Layer0.getInstance(graph).Entity); - if (graph.syncRequest(new IsInstanceOf(possibleType, StructuralResource2.getInstance(graph).ReplaceableDefinedComponentType), TransientCacheListener.instance()) ) { + StructuralResource2 STR = StructuralResource2.getInstance(graph); + Resource possibleType = graph.getPossibleType(represents, STR.Component); + if (possibleType == null) { + possibleType = graph.getPossibleType(represents, Layer0.getInstance(graph).Entity); + if (possibleType == null) + return null; + } + if (graph.syncRequest(new IsInstanceOf(possibleType, STR.ReplaceableDefinedComponentType), TransientCacheListener.instance()) ) { return graph.syncRequest(new StructuralOverrideDataWalkRequest(variable, represents, possibleType), TransientCacheListener.instance()); } else { return null; @@ -600,8 +606,8 @@ public class Functions { @Override public Variable getVariable(ReadGraph graph, Variable context, String name) throws DatabaseException { - - Resource type = context.getPossibleType(graph); + StructuralResource2 STR = StructuralResource2.getInstance(graph); + Resource type = context.getPossibleType(graph, STR.Component); if(type == null) return null; Tuple2 result = graph.syncRequest(new StructureTypeAndChildMapRequest(type), TransientCacheListener.instance());