X-Git-Url: https://gerrit.simantics.org/r/gitweb?p=simantics%2Fplatform.git;a=blobdiff_plain;f=bundles%2Forg.simantics.acorn%2Fsrc%2Forg%2Fsimantics%2Facorn%2FAcornSessionManagerImpl.java;h=f67a4aa7c6b702843647467f05a650b41a3aa102;hp=1a1e16024d859907172baba4bc73bed478699d6b;hb=d9a9d77c7024260e3e3b3a8558ddc84b2a8b99b3;hpb=0144ba232323a0e4f7ec8fe0681a150faafd7caf diff --git a/bundles/org.simantics.acorn/src/org/simantics/acorn/AcornSessionManagerImpl.java b/bundles/org.simantics.acorn/src/org/simantics/acorn/AcornSessionManagerImpl.java index 1a1e16024..f67a4aa7c 100644 --- a/bundles/org.simantics.acorn/src/org/simantics/acorn/AcornSessionManagerImpl.java +++ b/bundles/org.simantics.acorn/src/org/simantics/acorn/AcornSessionManagerImpl.java @@ -13,6 +13,7 @@ import org.simantics.db.common.utils.Logger; import org.simantics.db.event.SessionEvent; import org.simantics.db.event.SessionListener; import org.simantics.db.exception.DatabaseException; +import org.simantics.db.exception.RuntimeDatabaseException; import org.simantics.db.service.LifecycleSupport; import org.simantics.utils.datastructures.ListenerList; @@ -23,8 +24,8 @@ public class AcornSessionManagerImpl implements SessionManager { private static AcornSessionManagerImpl INSTANCE; - private ConcurrentHashMap sessionMap = new ConcurrentHashMap(); - private ListenerList sessionListeners = new ListenerList(SessionListener.class); + private ConcurrentHashMap sessionMap = new ConcurrentHashMap<>(); + private ListenerList sessionListeners = new ListenerList<>(SessionListener.class); private SessionErrorHandler errorHandler; private Database database; @@ -51,7 +52,7 @@ public class AcornSessionManagerImpl implements SessionManager { database = AcornDatabaseManager.getDatabase(dbFolder); Database.Session dbSession = database.newSession(sessionImpl); sessionImpl.connect(sessionReference, dbSession); - sessionMap.put(sessionImpl, sessionImpl); + sessionMap.put(sessionImpl, dbSession); fireSessionOpened(sessionImpl); ok = true; } catch (Throwable e) { @@ -91,7 +92,7 @@ public class AcornSessionManagerImpl implements SessionManager { @Override public void shutdown(Session s, Throwable cause) { - SessionImplSocket sis = sessionMap.get(s); + SessionImplSocket sis = (SessionImplSocket) s; if (null == sis) return; try { @@ -122,4 +123,10 @@ public class AcornSessionManagerImpl implements SessionManager { return database; } + public GraphClientImpl2 getClient() { + if (sessionMap.values().size() > 1) + throw new RuntimeDatabaseException("Currently only one GraphClientImpl2 per session is supported!"); + org.simantics.db.Database.Session client = sessionMap.values().iterator().next(); + return (GraphClientImpl2) client; + } }