/* */ }
/* */
/* */ public Object invokeHome(Invocation mi)
/* */ throws Exception
/* */ {
/* 113 */ EntityContainer container = (EntityContainer)getContainer();
/* 114 */ EntityEnterpriseContext ctx = (EntityEnterpriseContext)container.getInstancePool().get();
/* 115 */ ctx.setTxAssociation(GlobalTxEntityMap.NOT_READY);
/* 116 */ InstancePool pool = container.getInstancePool();
/* */
/* 119 */ mi.setEnterpriseContext(ctx);
/* */
/* 122 */ ctx.setTransaction(mi.getTransaction());
/* */
/* 124 */ ctx.setSecurityContext(mi.getSecurityContext());
/* */
/* 126 */ ctx.setPrincipal(mi.getPrincipal());
/* */
/* 128 */ AllowedOperationsAssociation.pushInMethodFlag(IN_EJB_HOME);
/* */
/* 132 */ Object obj = null;
/* 133 */ Exception exception = null;
/* */ try
/* */ {
/* 137 */ obj = getNext().invokeHome(mi);
/* */
/* 140 */ if (ctx.getId() != null)
/* */ {
/* 142 */ BeanLock lock = container.getLockManager().getLock(ctx.getCacheKey());
/* 143 */ lock.sync();
/* */ try
/* */ {
/* 149 */ cache = container.getInstanceCache();
/* 150 */ cache.remove(ctx.getCacheKey());
/* */
/* 154 */ cache.insert(ctx);
/* */ }
/* */ finally
/* */ {
/* 158 */ lock.releaseSync();
/* 159 */ container.getLockManager().removeLockRef(ctx.getCacheKey());
/* */ }
/* */
/* 163 */ InstanceCache cache = obj;
/* */ return cache;
/* */ }
/* */ }
/* */ catch (Exception e)
/* */ {
/* 168 */ exception = e;
/* */ }
/* */ finally
/* */ {
/* 172 */ AllowedOperationsAssociation.popInMethodFlag();
/* */ }
/* */
/* 175 */ ctx.setTransaction(null);
/* */
/* 177 */ mi.setEnterpriseContext(null);
/* */
/* 181 */ if (exception == null)
/* */ {
/* 183 */ container.getInstancePool().free(ctx);
/* 184 */ return obj;
/* */ }
/* */
/* 187 */ if ((exception instanceof RuntimeException))
/* */ {