protected void lockInternal(OpenJPAStateManager sm, int level, int timeout, Object sdata) { // we can skip any already-locked instance regardless of level because // we treat all locks the same (though super doesn't) if (getLockLevel(sm) == LOCK_NONE) { // only need to lock if not loaded from locking result ConnectionInfo info = (ConnectionInfo) sdata; if (info == null || info.result == null || !info.result.isLocking()) lockRow(sm, timeout); } super.lockInternal(sm, level, timeout, sdata); }
private void commonLock(OpenJPAStateManager sm, int level, int timeout, Object sdata, boolean postLockVersionCheck) { if (level == LOCK_NONE) return; while (sm.getOwner() != null) sm = sm.getOwner(); int oldLevel = getLockLevel(sm); if (!sm.isPersistent() || sm.isNew() || level <= oldLevel) return; try { lockInternal(sm, level, timeout, sdata, postLockVersionCheck); } catch (RuntimeException re) { // revert lock setLockLevel(sm, oldLevel); throw re; } }
private void commonLock(OpenJPAStateManager sm, int level, int timeout, Object sdata, boolean postLockVersionCheck) { if (level == LOCK_NONE) return; while (sm.getOwner() != null) sm = sm.getOwner(); int oldLevel = getLockLevel(sm); if (!sm.isPersistent() || sm.isNew() || level <= oldLevel) return; try { lockInternal(sm, level, timeout, sdata, postLockVersionCheck); } catch (RuntimeException re) { // revert lock setLockLevel(sm, oldLevel); throw re; } }
private void commonLock(OpenJPAStateManager sm, int level, int timeout, Object sdata, boolean postLockVersionCheck) { if (level == LOCK_NONE) return; while (sm.getOwner() != null) sm = sm.getOwner(); int oldLevel = getLockLevel(sm); if (!sm.isPersistent() || sm.isNew() || level <= oldLevel) return; try { lockInternal(sm, level, timeout, sdata, postLockVersionCheck); } catch (RuntimeException re) { // revert lock setLockLevel(sm, oldLevel); throw re; } }
private void commonLock(OpenJPAStateManager sm, int level, int timeout, Object sdata, boolean postLockVersionCheck) { if (level == LOCK_NONE) return; while (sm.getOwner() != null) sm = sm.getOwner(); int oldLevel = getLockLevel(sm); if (!sm.isPersistent() || sm.isNew() || level <= oldLevel) return; try { lockInternal(sm, level, timeout, sdata, postLockVersionCheck); } catch (RuntimeException re) { // revert lock setLockLevel(sm, oldLevel); throw re; } }
/** * Delegates to {@link #lockInternal} after traversing to owning * instance (if embedded) and assuring that the instance is persistent, * is not new, and is not already locked at a higher level. After * locking, calls {@link #setLockLevel} with the given level. */ public void lock(OpenJPAStateManager sm, int level, int timeout, Object sdata) { if (level == LOCK_NONE) return; while (sm.getOwner() != null) sm = sm.getOwner(); int oldLevel = getLockLevel(sm); if (!sm.isPersistent() || sm.isNew() || level <= oldLevel) return; try { lockInternal(sm, level, timeout, sdata); } catch (RuntimeException re) { // revert lock setLockLevel(sm, oldLevel); throw re; } }