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;
private static AcornSessionManagerImpl INSTANCE;
- private ConcurrentHashMap<SessionImplSocket, SessionImplSocket> sessionMap = new ConcurrentHashMap<SessionImplSocket, SessionImplSocket>();
- private ListenerList<SessionListener> sessionListeners = new ListenerList<SessionListener>(SessionListener.class);
+ private ConcurrentHashMap<SessionImplDb, Database.Session> sessionMap = new ConcurrentHashMap<>();
+ private ListenerList<SessionListener> sessionListeners = new ListenerList<>(SessionListener.class);
private SessionErrorHandler errorHandler;
private Database database;
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) {
@Override
public void shutdown(Session s, Throwable cause) {
- SessionImplSocket sis = sessionMap.get(s);
+ SessionImplSocket sis = (SessionImplSocket) s;
if (null == sis)
return;
try {
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;
+ }
}