X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;ds=inline;f=bundles%2Forg.simantics.db.layer0%2Fsrc%2Forg%2Fsimantics%2Fdb%2Flayer0%2Fgenericrelation%2FExternalRequest.java;h=d7fa8b9356ac9b5db2a13a1de3e3dc688620e8b8;hb=1e957fc9da518f3bef8a2c19cad72772087e1b6a;hp=77520aa6e66ce2ed324ec91b8868955698a4759a;hpb=969bd23cab98a79ca9101af33334000879fb60c5;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.db.layer0/src/org/simantics/db/layer0/genericrelation/ExternalRequest.java b/bundles/org.simantics.db.layer0/src/org/simantics/db/layer0/genericrelation/ExternalRequest.java index 77520aa6e..d7fa8b935 100644 --- a/bundles/org.simantics.db.layer0/src/org/simantics/db/layer0/genericrelation/ExternalRequest.java +++ b/bundles/org.simantics.db.layer0/src/org/simantics/db/layer0/genericrelation/ExternalRequest.java @@ -1,45 +1,47 @@ -package org.simantics.db.layer0.genericrelation; - -import org.simantics.db.ReadGraph; -import org.simantics.db.Resource; -import org.simantics.db.Session; -import org.simantics.db.common.request.ParametrizedPrimitiveRead; -import org.simantics.db.layer0.adapter.GenericRelationIndex; -import org.simantics.db.procedure.Listener; -import org.simantics.utils.datastructures.Pair; - -class ExternalRequest extends ParametrizedPrimitiveRead,Long> implements Runnable { - - private static long value = 0; - private Session session; - private Listener procedure; - - public ExternalRequest(GenericRelationIndex index, Resource model) { - super(Pair.make(index, model)); - } - - @Override - public void register(ReadGraph graph, Listener procedure) { - synchronized(getClass()) { - procedure.execute(value++); - } - if(procedure.isDisposed()) return; - assert(this.procedure == null); - this.session = graph.getSession(); - this.procedure = procedure; - parameter.first.addListener(graph, parameter.second, this); - } - - @Override - public void unregistered() { - parameter.first.removeListener(session, parameter.second, this); - } - - @Override - public void run() { - synchronized(getClass()) { - procedure.execute(value++); - } - } - +package org.simantics.db.layer0.genericrelation; + +import org.simantics.db.ReadGraph; +import org.simantics.db.Resource; +import org.simantics.db.Session; +import org.simantics.db.common.request.ParametrizedPrimitiveRead; +import org.simantics.db.layer0.adapter.GenericRelationIndex; +import org.simantics.db.procedure.Listener; +import org.simantics.utils.datastructures.Pair; + +class ExternalRequest extends ParametrizedPrimitiveRead,Long> implements Runnable { + + private static long value = 0; + private Session session; + private Listener procedure; + + public ExternalRequest(GenericRelationIndex index, Resource model) { + super(Pair.make(index, model)); + } + + @Override + public void register(ReadGraph graph, Listener procedure) { + synchronized(getClass()) { + procedure.execute(value++); + } + if(procedure.isDisposed()) return; + assert(this.procedure == null); + this.procedure = procedure; + this.session = graph.getSession(); + parameter.first.addListener(graph, parameter.second, this); + } + + @Override + public void unregistered() { + if(session == null) return; +// System.err.println("asd"); + parameter.first.removeListener(session, parameter.second, this); + } + + @Override + public void run() { + synchronized(getClass()) { + procedure.execute(value++); + } + } + } \ No newline at end of file