package org.orienteer.bpm.camunda; import org.camunda.bpm.engine.impl.db.PersistenceSession; import org.camunda.bpm.engine.impl.interceptor.Session; import org.camunda.bpm.engine.impl.interceptor.SessionFactory; import org.orienteer.core.OrienteerWebApplication; import com.orientechnologies.orient.core.db.ODatabaseRecordThreadLocal; import com.orientechnologies.orient.core.db.document.ODatabaseDocument; import com.orientechnologies.orient.core.db.document.ODatabaseDocumentTx; import ru.ydn.wicket.wicketorientdb.IOrientDbSettings; /** * Factory class for {@link PersistenceSession} */ public class OPersistenceSessionFactory implements SessionFactory{ @Override public Class<?> getSessionType() { return PersistenceSession.class; } @Override public Session openSession() { OrienteerWebApplication app = OrienteerWebApplication.lookupApplication(); IOrientDbSettings settings = app.getOrientDbSettings(); ODatabaseDocumentTx db = settings.getDatabasePoolFactory().get(settings.getDBUrl(), settings.getAdminUserName(), settings.getAdminPassword()).acquire(); // return new OPersistenceSession((ODatabaseDocumentTx) ODatabaseRecordThreadLocal.INSTANCE.get()); return new OPersistenceSession(db); } }