/* */
/* */ protected void tryToPassivate(EnterpriseContext ctx, boolean passivateAfterCommit)
/* */ {
/* 173 */ Object id = ctx.getId();
/* 174 */ if (id == null) return;
/* 175 */ BeanLock lock = getContainer().getLockManager().getLock(id);
/* 176 */ boolean lockedBean = false;
/* */ try
/* */ {
/* 187 */ if ((lock instanceof BeanLockExt))
/* */ {
/* 189 */ BeanLockExt lock2 = (BeanLockExt)lock;
/* 190 */ lockedBean = lock2.attemptSync();
/* 191 */ if (!lockedBean)
/* */ {
/* 193 */ unableToPassivateDueToCtxLock(ctx, passivateAfterCommit);
/* */ return;
/* */ }
/* */ }
/* */ else {
/* 200 */ lock.sync();
/* 201 */ lockedBean = true;
/* */ }
/* */
/* 204 */ if (canPassivate(ctx))
/* */ {
/* */ try
/* */ {
/* 208 */ remove(id);
/* 209 */ passivate(ctx);
/* 210 */ freeContext(ctx);
/* */ }
/* */ catch (Exception ignored)
/* */ {
/* 214 */ log.warn("failed to passivate, id=" + id, ignored);
/* */ }
/* */
/* */ }
/* */ else
/* */ {
/* 220 */ synchronized (getCacheLock())
/* */ {
/* 222 */ getCache().get(id);
/* */ }
/* */
/* 225 */ unableToPassivateDueToCtxLock(ctx, passivateAfterCommit);
/* */ }
/* */ }
/* */ finally
/* */ {
/* 230 */ if (lockedBean)
/* 231 */ lock.releaseSync();
/* 232 */ getContainer().getLockManager().removeLockRef(id);
/* */ }
/* */ }