@Override public boolean isActive() { PortletRequestScopedBeanHolder holder = PortletRequestScopedBeanHolder.getBeanHolder(); return (holder != null); }
/** * Removes the bean holder for the current request. Deletes all beans contained therein. * If response is provided, the beans are deserialized and stored. * */ public static void removeBeanHolder() { PortletRequestScopedBeanHolder bh = getBeanHolder(); if (bh != null) { bh.removeAll(); } holders.remove(); if (isTrace) { StringBuilder txt = new StringBuilder(80); txt.append("Removed portlet request bean holder."); txt.append(" ThreadId=").append(Thread.currentThread().getId()); LOG.trace(txt.toString()); } }
@Override public <T> T get(Contextual<T> bean) { PortletRequestScopedBeanHolder holder = PortletRequestScopedBeanHolder.getBeanHolder(); if (holder == null) { throw new ContextNotActiveException("The portlet request context is not active."); } return holder.getBean(bean); }
@Override public <T> T get(Contextual<T> bean, CreationalContext<T> crco) { PortletRequestScopedBeanHolder holder = PortletRequestScopedBeanHolder.getBeanHolder(); if (holder == null) { throw new ContextNotActiveException("The portlet request context is not active."); } // The bean holder will return an existing bean instance or create a new one // if no existing instance is available. T inst = holder.getBean(bean, crco); return inst; }
/** * Called when a new thread begins running in order to set up contextual support */ @Override public void registerContext(boolean isListener) { // if the context is already active, then ignore register / deregister calls. if (complete || (isListener && PortletRequestScopedBeanHolder.getBeanHolder() != null)) { doDeregister = false; } else { doDeregister = true; PortletSessionBeanHolder.register(sessbh); PortletStateScopedBeanHolder.register(statebh); PortletRequestScopedBeanHolder.register(reqbh); PortletArtifactProducer.setPrecursors(resreq, prctx.getResponse(), prctx.getPortletConfig()); } if (isTrace) { StringBuilder txt = new StringBuilder(); txt.append("Registered context."); txt.append(" complete: ").append(complete); txt.append(", isListener: ").append(isListener); txt.append(", doRegister: ").append(doDeregister); LOG.trace(txt.toString()); } }