protected HttpServletRequest getOwnerLayoutRequestWrapper( HttpServletRequest request, Portlet portlet) throws Exception { if (!PropsValues.PORTLET_EVENT_DISTRIBUTION_LAYOUT_SET) { return request; } ThemeDisplay themeDisplay = (ThemeDisplay) request.getAttribute(WebKeys.THEME_DISPLAY); Layout currentLayout = themeDisplay.getLayout(); Layout requestLayout = (Layout) request.getAttribute(WebKeys.LAYOUT); List<LayoutTypePortlet> layoutTypePortlets = PortletContainerUtil.getLayoutTypePortlets(requestLayout); Layout ownerLayout = null; LayoutTypePortlet ownerLayoutTypePortlet = null; for (LayoutTypePortlet layoutTypePortlet : layoutTypePortlets) { if (layoutTypePortlet.hasPortletId(portlet.getPortletId())) { ownerLayoutTypePortlet = layoutTypePortlet; ownerLayout = layoutTypePortlet.getLayout(); break; } } if ((ownerLayout != null) && !currentLayout.equals(ownerLayout)) { ThemeDisplay themeDisplayClone = (ThemeDisplay) themeDisplay.clone(); themeDisplayClone.setLayout(ownerLayout); themeDisplayClone.setLayoutTypePortlet(ownerLayoutTypePortlet); TempAttributesServletRequest tempAttributesServletRequest = new TempAttributesServletRequest(request); tempAttributesServletRequest.setTempAttribute(WebKeys.THEME_DISPLAY, themeDisplayClone); tempAttributesServletRequest.setTempAttribute(WebKeys.LAYOUT, ownerLayout); return tempAttributesServletRequest; } return request; }