/** * Wait for all rendering jobs in the collection to finish successfully or otherwise. * @param renderingJobs the Collection of rendering job objects to wait for. */ public void waitForRenderingJobs(List<RenderingJob> renderingJobs) { try { for (RenderingJob job : renderingJobs) { PortletContent portletContent = job.getPortletContent(); synchronized (portletContent) { if (!portletContent.isComplete()) { portletContent.wait(); } } } } catch (Exception e) { log.error("Exception during synchronizing all portlet rendering jobs.", e); } }
@Override public void addProperty(String key, Element element) { if (MimeResponse.MARKUP_HEAD_ELEMENT.equals(key)) { HeadElement headElement = null; // Note that element can be null. // According to the SPEC, the property with this key can be removed with null element. if (element != null) { headElement = new HeadElementImpl(element); } // ID attribute of element is used as keyHint for the head element if available. this.portletContent.addHeadElement(headElement, DOMUtils.getIdAttribute(element)); } else { super.addProperty(key, element); } }
if (!content.isComplete()) content.complete();
if (portletContent.isComplete()) return portletContent.getContent(); return portletContent.getContent();
protected void releaseBuffers(ContentFragment f, RequestContext context) { if (f.getFragments() != null) { for (ContentFragment child : (List<ContentFragment>)f.getFragments()) { if (!"hidden".equals(child.getState())) { releaseBuffers(child, context); } } } PortletContent content = f.getPortletContent(); if (content != null && content.getExpiration() == 0) { content.release(); } }
protected void addToCache(RequestContext context, PortletContent content) { CacheElement cachedElement = portletContentCache.createElement(content.getCacheKey(), content); if (content.getExpiration() == -1) { cachedElement.setTimeToIdleSeconds(portletContentCache.getTimeToIdleSeconds()); cachedElement.setTimeToLiveSeconds(portletContentCache.getTimeToLiveSeconds()); } else { cachedElement.setTimeToIdleSeconds(content.getExpiration()); cachedElement.setTimeToLiveSeconds(content.getExpiration()); } portletContentCache.put(cachedElement); context.getPortalURL().getNavigationalState().registerPortletContentCachedForPublicRenderParameters(context, content); }
context.getResponse().setHeader( "JS_PORTLET_TITLE", StringEscapeUtils.escapeHtml( contentFragment.getPortletContent().getTitle() ) ); PortletContent content = contentFragment.getPortletContent(); if (content != null && content.getExpiration() == 0) contentFragment.getPortletContent().release();
PortletMode portletMode = portletContent.getPortletMode(); WindowState windowState = portletContent.getWindowState();
public void notifyContentComplete(RequestContext context, PortletWindow window) { PortletContent content = window.getFragment().getPortletContent(); if (content.getExpiration() != 0) { addToCache(context, content); } }
@SuppressWarnings("unchecked") public static void aggregateHeadElements(List<KeyValue<String, HeadElement>> aggregatedHeadElements, ContentFragment contentFragment) { List<ContentFragment> childContentFragments = (List<ContentFragment>) contentFragment.getFragments(); if (childContentFragments != null && !childContentFragments.isEmpty()) { for (ContentFragment child : childContentFragments) { if (!"hidden".equals(contentFragment.getState())) { aggregateHeadElements(aggregatedHeadElements, child); } } } PortletContent portletContent = contentFragment.getPortletContent(); // portletContent can be null if this method is invoked before the portlet window starts rendering if (portletContent != null) { aggregateHeadElements(aggregatedHeadElements, portletContent.getHeadElements()); } }
@SuppressWarnings("unchecked") public void registerPortletContentCachedForPublicRenderParameters(RequestContext context, PortletContent content) String windowId = content.getCacheKey().getWindowId(); PortletWindowRequestNavigationalState state = requestStates.getPortletWindowNavigationalState(windowId); if (state != null && state.getPublicRenderParametersMap() != null && !state.getPublicRenderParametersMap().isEmpty())
title = f.getPortletContent().getTitle();
fragment.getPortletContent().complete(); if (fragment.getOverriddenContent() == null)
if (!portletContent.isComplete())
public void killJob(WorkerImpl worker, RenderingJob job) { try { if (log.isWarnEnabled()) { PortletWindow window = job.getWindow(); PortletWindowID windowId = (null != window ? window.getId() : null); log.warn("Portlet Rendering job to be interrupted by timeout (" + job.getTimeout() + "ms): " + windowId.getStringId()); } PortletContent content = job.getPortletContent(); synchronized (content) { if (!content.isComplete()) { worker.interrupt(); content.wait(); } } } catch (Exception e) { log.error("Exceptiong during job killing.", e); } } }
if (portletContent.isComplete() || !Fragment.PORTLET.equals(fragment.getType()))
if (!content.isComplete())