Exemplo n.º 1
0
 private Response<LockResult> acquireLock(
     RequestContext context, LockGrabber lockGrabber, Object... entities) {
   Transaction otherTx = suspendOtherAndResumeThis(context, false);
   try {
     LockManager lockManager = graphDb.getLockManager();
     TransactionState state =
         ((AbstractTransactionManager) graphDb.getTxManager()).getTransactionState();
     for (Object entity : entities) {
       lockGrabber.grab(lockManager, state, entity);
     }
     return packResponse(context, new LockResult(LockStatus.OK_LOCKED));
   } catch (DeadlockDetectedException e) {
     return packResponse(context, new LockResult(e.getMessage()));
   } catch (IllegalResourceException e) {
     return packResponse(context, new LockResult(LockStatus.NOT_LOCKED));
   } finally {
     suspendThisAndResumeOther(otherTx, context);
   }
 }