private void activateOnCurrentThread() { db.activateOnCurrentThread(); }
public ODatabaseDocumentTx getDocumentDatabase() { if (db != null) db.activateOnCurrentThread(); return db; }
private void activateOnCurrentThread() { db.activateOnCurrentThread(); }
@Override public List<?> selectList(String statement, Object parameter) { db.activateOnCurrentThread(); IEntityHandler<?> handler = HandlersManager.get().getHandlerSafe(statement); if(handler!=null) { return handler.selectList(statement, parameter, this); } else { LOG.error("Handler 'selectList' for statement '"+statement+"' was not found"); return new ArrayList<Object>(); } }
@Override public void lock(String statement, Object parameter) { db.activateOnCurrentThread(); IEntityHandler<?> handler = HandlersManager.get().getHandlerSafe(statement); if(handler!=null) { handler.lock(statement, parameter, this); } else { LOG.error("Handler 'lock' for statement '"+statement+"' was not found"); } }
/** * {@inheritDoc} * Flushes locally cached to content in memory to remote OrientDB server. */ @Override public void flush() throws GoraException { try (ODatabaseDocumentTx updateTx = connectionPool.acquire()) { updateTx.activateOnCurrentThread(); flushLock.lock(); for (ODocument document : docBatch) { updateTx.save(document); } } catch (Exception e) { throw new GoraException(e); } finally { docBatch.clear(); flushLock.unlock(); } }
@Override public Object selectOne(String statement, Object parameter) { db.activateOnCurrentThread(); IEntityHandler<?> handler = HandlersManager.get().getHandlerSafe(statement); if(handler!=null) { return handler.selectOne(statement, parameter, this); } else { LOG.error("Handler 'selectOne' for statement '"+statement+"' was not found"); return null; } }
@Override public OrientBaseGraph get() { if (transaction.get() == null) { final ODatabaseDocumentInternal documentDb = (ODatabaseDocumentInternal) documentPool.get(); final OrientBaseGraph graph = transactionManager.getActiveTransactionType() == OTransaction.TXTYPE.NOTX ? new OrientGraphNoTx(documentDb) : new OrientGraph(documentDb); transaction.set(graph); } final OrientBaseGraph db = transaction.get(); db.getRawGraph().activateOnCurrentThread(); return db; }
static <E extends Throwable> void acceptWithDatabase(final ODatabaseDocumentTx database, final Acceptor<? super ODatabaseDocumentTx, E> acceptor) throws E{ if (!database.isActiveOnCurrentThread()) database.activateOnCurrentThread(); try { acceptor.accept(database); } finally { ODatabaseRecordThreadLocal.INSTANCE.remove(); } } }
@Override public <T extends DbEntity> T selectById(Class<T> type, String id) { db.activateOnCurrentThread(); return (T) HandlersManager.get().getHandler(type).read(id, this); }
@Override protected void updateBulk(DbBulkOperation operation) { db.activateOnCurrentThread(); IEntityHandler<?> handler = HandlersManager.get().getHandlerSafe(operation.getStatement()); if(handler!=null) { handler.updateBulk(operation, this); } else { LOG.error("Handler 'updateBulk' for statement '"+operation.getStatement()+"' was not found"); } }
@Override protected void deleteBulk(DbBulkOperation operation) { db.activateOnCurrentThread(); IEntityHandler<?> handler = HandlersManager.get().getHandlerSafe(operation.getStatement()); if(handler!=null) { handler.deleteBulk(operation, this); } else { LOG.error("Handler 'deleteBulk' for statement '"+operation.getStatement()+"' was not found"); } }
@SuppressWarnings("unchecked") @Override protected void deleteEntity(DbEntityOperation operation) { db.activateOnCurrentThread(); ((IEntityHandler<DbEntity>) HandlersManager.get().getHandler(operation.getEntityType())) .delete(operation.getEntity(), this); }
@SuppressWarnings("unchecked") @Override protected void insertEntity(DbEntityOperation operation) { db.activateOnCurrentThread(); ((IEntityHandler<DbEntity>) HandlersManager.get().getHandler(operation.getEntityType())) .create(operation.getEntity(), this); }
@SuppressWarnings("unchecked") @Override protected void updateEntity(DbEntityOperation operation) { db.activateOnCurrentThread(); ((IEntityHandler<DbEntity>) HandlersManager.get().getHandler(operation.getEntityType())) .update(operation.getEntity(), this); }
private void replaceStorage(ODatabaseDocumentTx db, final OStorage storage) { db.replaceStorage(storage); if (!db.isClosed()) { try { // reload metadata for active connections if old schema is gone if (db.getMetadata().getSchema().countClasses() == 0) { log.debug("Reloading metadata for {} as storage has changed", db.getName()); db.activateOnCurrentThread(); db.getMetadata().reload(); } } catch (Exception e) { log.warn("Problem reloading metadata for {}", db.getName(), e); } } }
@Override protected boolean nextInner() throws IOException { ODatabaseDocumentTx loadTx = ((OrientDBStore<K, T>) getDataStore()) .getConnectionPool().acquire(); loadTx.activateOnCurrentThread(); try { if (!resultSetIterator.hasNext()) { return false; } ODocument obj = resultSetIterator.next(); key = (K) obj.field("_id"); persistent = ((OrientDBStore<K, T>) getDataStore()) .convertOrientDocToAvroBean(obj, getQuery().getFields()); return persistent != null; } finally { loadTx.close(); } }
/** * {@inheritDoc} * Check whether there exist a schema enforced over OrientDB document class. */ @Override public boolean schemaExists() throws GoraException { try (ODatabaseDocumentTx schemaTx = connectionPool.acquire()) { schemaTx.activateOnCurrentThread(); return schemaTx.getMetadata().getSchema() .existsClass(orientDBMapping.getDocumentClass()); } catch (Exception e) { throw new GoraException(e); } }
/** * {@inheritDoc} * Deletes enforced schema over OrientDB Document class. */ @Override public void deleteSchema() throws GoraException { try (ODatabaseDocumentTx schemaTx = connectionPool.acquire()) { schemaTx.activateOnCurrentThread(); schemaTx.getMetadata().getSchema().dropClass(orientDBMapping.getDocumentClass()); } catch (Exception e) { throw new GoraException(e); } }
OrientKeyValueStorage(final ODatabaseDocumentTx database, final String collectionName, final boolean forceCreate) { if (!database.isActiveOnCurrentThread()) database.activateOnCurrentThread(); this.database = database; indexName = collectionName + "Index"; //init class final OSchema schema = database.getMetadata().getSchema(); final OClass documentClass; if (schema.existsClass(collectionName)) documentClass = schema.getClass(collectionName); else if (forceCreate) { documentClass = schema.createClass(collectionName); PersistentFieldDefinition.defineFields(documentClass); PersistentFieldDefinition.createIndex(documentClass, indexName); } else documentClass = null; this.documentClass = new AtomicReference<>(documentClass); ODatabaseRecordThreadLocal.INSTANCE.remove(); }