theme = (Theme) requestContext.getSessionAttribute(themeCacheKey);
}
else
{
themeContentCacheKey = cache.createCacheKey(requestContext, page.getId());
CacheElement themeCacheElem = cache.get(themeContentCacheKey);
if (themeCacheElem != null)
{
theme = (Theme) themeCacheElem.getContent();
}
}
}
}
if (theme != null)
{
theme.init(page, decorationFactory, requestContext);
requestContext.setAttribute(PortalReservedParameters.PAGE_THEME_ATTRIBUTE, theme);
boolean solo = isSoloMode(requestContext);
SessionPathResolverCache sessionPathResolver = new SessionPathResolverCache( requestContext.getRequest().getSession() );
initDepthFragmentDecorations(requestContext, theme, page.getRootFragment(),
pageActionAccess, isAjaxRequest,
((DecorationFactoryImpl) decorationFactory).getResourceValidator(),
sessionPathResolver, (theme.isInvalidated() && !solo));
if (theme.isInvalidated() && !solo)
{
if (this.useSessionForThemeCaching)
{
requestContext.setSessionAttribute(themeCacheKey, theme);
}
else
{
CacheElement themeCacheElem = cache.createElement(themeContentCacheKey, theme);
cache.put(themeCacheElem);
}
theme.setInvalidated(false);
}
return;
}
theme = decorationFactory.getTheme(page, requestContext);
requestContext.setAttribute(PortalReservedParameters.PAGE_THEME_ATTRIBUTE, theme);
if ( fragments == null || fragments.size() == 0 )
{
ContentFragment rootFragment = page.getRootFragment();
initDepthFragments(requestContext, theme, rootFragment, pageActionAccess, isAjaxRequest, fragments);
}
else
{
Iterator fragmentsIter = fragments.iterator();
while ( fragmentsIter.hasNext() )
{
ContentFragment fragment = (ContentFragment)fragmentsIter.next();
initFragment(requestContext, theme, fragment, pageActionAccess, isAjaxRequest);
}
}
if (useCache() && !isSoloMode(requestContext))
{
if (themeContentCacheKey == null && themeCacheKey == null)
{
if (this.useSessionForThemeCaching)
{
themeCacheKey = cache.createSessionKey(requestContext);
requestContext.getRequest().getSession().removeAttribute(themeCacheKey);
}
else
{
themeContentCacheKey = cache.createCacheKey(requestContext, page.getId());
cache.remove(themeContentCacheKey);
}
}
else
{
if (this.useSessionForThemeCaching)
{
themeContentCacheKey = cache.createCacheKey(requestContext, page.getId());
requestContext.setSessionAttribute(themeCacheKey, theme);
}
else
{
CacheElement themeCacheElem = cache.createElement(themeContentCacheKey, theme);
cache.put(themeCacheElem);
}
}
}
}