X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=bundles%2Forg.simantics.db.layer0%2Fsrc%2Forg%2Fsimantics%2Fdb%2Flayer0%2Futil%2FDomainProcessor3.java;h=20856d4ced9de92d68b013cb6c545bfc95bdfdff;hb=7fe2a02ad295ec7406f44e8f86b7d25deedceb8b;hp=bd67680db6704f73bbe3a73d69aaa7774f8d3b5f;hpb=9acebe9584f8f2a78f0322b6e0e24438e7ceb984;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.db.layer0/src/org/simantics/db/layer0/util/DomainProcessor3.java b/bundles/org.simantics.db.layer0/src/org/simantics/db/layer0/util/DomainProcessor3.java index bd67680db..20856d4ce 100644 --- a/bundles/org.simantics.db.layer0/src/org/simantics/db/layer0/util/DomainProcessor3.java +++ b/bundles/org.simantics.db.layer0/src/org/simantics/db/layer0/util/DomainProcessor3.java @@ -2,6 +2,7 @@ package org.simantics.db.layer0.util; import java.io.IOException; import java.io.InputStream; +import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; import java.util.Iterator; @@ -20,6 +21,7 @@ import org.simantics.db.ReadGraph; import org.simantics.db.Resource; import org.simantics.db.ResourceMap; import org.simantics.db.Statement; +import org.simantics.db.common.StandardStatement; import org.simantics.db.common.primitiverequest.Value; import org.simantics.db.common.procedure.adapter.TransientCacheListener; import org.simantics.db.common.utils.NameUtils; @@ -34,6 +36,7 @@ import org.simantics.db.service.TransferableGraphSupport; import org.simantics.graph.db.TransferableGraphSource; import org.simantics.layer0.Layer0; import org.simantics.scl.runtime.function.Function1; +import org.simantics.utils.datastructures.Pair; import gnu.trove.list.array.TIntArrayList; import gnu.trove.map.hash.TIntIntHashMap; @@ -60,7 +63,7 @@ public class DomainProcessor3 { Map isRelatedToPredicates = null; Set deadPredicates = null; Set strongInverseSet = null; - + List unresolvedWeakLinks = new ArrayList<>(); TIntIntHashMap ids = null; ResourceMap status = null; Map bindings = new HashMap(); @@ -366,8 +369,9 @@ public class DomainProcessor3 { // The inverse is also weak (or there is no inverse) if(!strongInverseSet.contains(predicate)) { - - addToStream(predicate, object); + + unresolvedWeakLinks.add(new StandardStatement(subject, predicate, object)); + //addToStream(predicate, object); if(objectStatus == null) { status.put(object, ExtentStatus.PENDING); @@ -504,7 +508,8 @@ public class DomainProcessor3 { this.datatypeBinding = Bindings.getBindingUnchecked(Datatype.class); this.datatypeSerializer = graph.getService(Databoard.class).getSerializerUnchecked(this.datatypeBinding); - state.internalEntries = ConsistsOfProcess.walk(graph, status, fringe, exclusions, ignoreVirtual); + Pair,Set> pair = ConsistsOfProcess.walk(graph, status, fringe, exclusions, ignoreVirtual); + state.internalEntries = pair.first; for(InternalEntry entry : state.internalEntries) { Resource r = entry.resource; @@ -518,6 +523,12 @@ public class DomainProcessor3 { } } + for(Resource unnamedChild : pair.second) { + if (status.put(unnamedChild, ExtentStatus.INTERNAL) == null) { + fringe.add(unnamedChild); + } + } + if (state.monitor.isCanceled()) throw new CancelTransactionException();