X-Git-Url: https://gerrit.simantics.org/r/gitweb?p=simantics%2Fplatform.git;a=blobdiff_plain;f=bundles%2Forg.simantics.db.layer0%2Fsrc%2Forg%2Fsimantics%2Fdb%2Flayer0%2FStandardSessionManager.java;h=cdd8e074c404ee4d698878b37eaf7d7478c36eca;hp=b82860de1010b79bcaa9f31e6737f4cc7e490348;hb=82ed7c74dbd83a2a557e781b8674b3262b52da54;hpb=27d76db8786149c91b2e5a97d79c774e8c163eb0 diff --git a/bundles/org.simantics.db.layer0/src/org/simantics/db/layer0/StandardSessionManager.java b/bundles/org.simantics.db.layer0/src/org/simantics/db/layer0/StandardSessionManager.java index b82860de1..cdd8e074c 100644 --- a/bundles/org.simantics.db.layer0/src/org/simantics/db/layer0/StandardSessionManager.java +++ b/bundles/org.simantics.db.layer0/src/org/simantics/db/layer0/StandardSessionManager.java @@ -4,6 +4,7 @@ import java.util.Collection; import java.util.concurrent.ConcurrentHashMap; import org.simantics.db.ReadGraph; +import org.simantics.db.WriteGraph; import org.simantics.db.common.request.ParametrizedPrimitiveRead; import org.simantics.db.exception.DatabaseException; import org.simantics.db.layer0.variable.NodeSupport; @@ -75,7 +76,9 @@ abstract public class StandardSessionManager removedRealm = REALMS.remove(key); + if (removedRealm != null) + removedRealm.close(); } Listener> listener = getOrDisposeListener(key); if(listener != null) { @@ -104,10 +107,14 @@ abstract public class StandardSessionManager createRealm(Engine engine, String id); - public void removeRealm(String id) { + public void removeRealm(WriteGraph graph, String id) throws DatabaseException { modifyRealms(id, null); + // remove listeners from this realm + realmListeners.remove(id); // if node support has been created remove it as well - SUPPORTS.remove(id); + NodeSupport support = SUPPORTS.remove(id); + if (support != null) + support.dispose(); } public Collection getRealms() {