]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.structural2/src/org/simantics/structural2/StructuralRVIResolver.java
(refs #7461) Fix to StructuralRVIResolver.getPossibleRVI
[simantics/platform.git] / bundles / org.simantics.structural2 / src / org / simantics / structural2 / StructuralRVIResolver.java
index b2913f3203eccc550c799d3632282c2372fd7d6c..8cf61b3e0ade8e4dc74ed2e44ca334d655a6ee0c 100644 (file)
@@ -40,10 +40,12 @@ public class StructuralRVIResolver extends StandardRVIResolver {
             Binding rviBinding = databoard.getBindingUnchecked( RVI.class );
             return RVI.empty(rviBinding);
         }
-        Variable base = variable.getParent(graph);
-        while(!isRVIBase(graph, base)) base = base.getParent(graph);
-        RVIPart part = getRVIPart(graph, variable);
-        return new RVIBuilder(base.getRVI(graph)).append(part).toRVI();
+        else {
+            Variable base = variable.getParent(graph);
+            while(!isRVIBase(graph, base)) base = base.getParent(graph);
+            RVIPart part = getRVIPart(graph, variable);
+            return new RVIBuilder(base.getRVI(graph)).append(part).toRVI();
+        }
     }
     
     @Override
@@ -53,15 +55,19 @@ public class StructuralRVIResolver extends StandardRVIResolver {
             Binding rviBinding = databoard.getBindingUnchecked( RVI.class );
             return RVI.empty(rviBinding);
         }
-        Variable base = variable.getParent(graph);
-        if(base == null) return null;
-        while(!isRVIBase(graph, base)) {
-            base = base.getParent(graph);
+        else {
+            Variable base = variable.getParent(graph);
             if(base == null) return null;
+            while(!isRVIBase(graph, base)) {
+                base = base.getParent(graph);
+                if(base == null) return null;
+            }
+            RVIPart part = getRVIPart(graph, variable);
+            if(part == null) return null;
+            RVI baseRVI = base.getPossibleRVI(graph);
+            if(baseRVI == null) return null;
+            return new RVIBuilder(baseRVI).append(part).toRVI();
         }
-        RVIPart part = getRVIPart(graph, variable);
-        if(part == null) return null;
-        return new RVIBuilder(base.getRVI(graph)).append(part).toRVI();
     }
 
     protected boolean isPartOfComponentType(ReadGraph graph, Resource resource)