X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;ds=sidebyside;f=bundles%2Forg.simantics.db.impl%2Fsrc%2Forg%2Fsimantics%2Fdb%2Fimpl%2Fquery%2FExternalReadEntry.java;fp=bundles%2Forg.simantics.db.impl%2Fsrc%2Forg%2Fsimantics%2Fdb%2Fimpl%2Fquery%2FExternalReadEntry.java;h=40b6f6fab408ac8d37ed13224cb2953e0ff9d469;hb=8e67ae458c3ee4711eff252f971d9a4219d51210;hp=7fb8598b7c36087f074ea71425b8c4c2434fc0d1;hpb=3850fec72035293b9a4ede780d01aedc5fbc9056;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.db.impl/src/org/simantics/db/impl/query/ExternalReadEntry.java b/bundles/org.simantics.db.impl/src/org/simantics/db/impl/query/ExternalReadEntry.java index 7fb8598b7..40b6f6fab 100644 --- a/bundles/org.simantics.db.impl/src/org/simantics/db/impl/query/ExternalReadEntry.java +++ b/bundles/org.simantics.db.impl/src/org/simantics/db/impl/query/ExternalReadEntry.java @@ -15,6 +15,7 @@ import java.util.ArrayList; import java.util.LinkedList; import org.simantics.db.exception.DatabaseException; +import org.simantics.db.impl.DebugPolicy; import org.simantics.db.impl.graph.ReadGraphImpl; import org.simantics.db.procedure.AsyncProcedure; import org.simantics.db.procedure.Procedure; @@ -47,6 +48,15 @@ final public class ExternalReadEntry extends CacheEntryBase request = null; super.discard(); } + + @Override + public void setPending() { + if(result != NO_RESULT) { + //new Exception("result = " + result).printStackTrace(); + } + statusOrException = PENDING; + result = REQUIRES_COMPUTATION; + } public ExternalReadEntry(ExternalRead request) { assert request != null; @@ -89,6 +99,25 @@ final public class ExternalReadEntry extends CacheEntryBase } + @Override + public void except(Throwable t) { + if(DebugPolicy.QUERY_STATE) System.out.println("[QUERY STATE]: excepted " + this); + if(statusOrException != DISCARDED) { + statusOrException = EXCEPTED; + result = t; + } else { + result = t; + } + assert(isExcepted()); + } + + @Override + public void setResult(Object result) { + super.setResult(result); + assert(!(result instanceof Throwable)); + assert(!isExcepted()); + } + @Override final public Query getQuery() { @@ -102,6 +131,7 @@ final public class ExternalReadEntry extends CacheEntryBase // Update if(!items.isEmpty()) { + setReady(); setResult(items.removeFirst()); } // Reschedule