@SuppressWarnings("unchecked")
  protected PortletWindowCache<PortletWindowData> getStatelessPortletWindowDataMap(
      HttpServletRequest request, boolean create) {
    request = portalRequestUtils.getOriginalPortalRequest(request);

    PortletWindowCache<PortletWindowData> windowCache;

    final Object mutex = PortalWebUtils.getRequestAttributeMutex(request);
    synchronized (mutex) {
      windowCache =
          (PortletWindowCache<PortletWindowData>)
              request.getAttribute(PORTLET_WINDOW_DATA_ATTRIBUTE);
      if (windowCache == null) {
        windowCache = new PortletWindowCache<PortletWindowData>();
        request.setAttribute(PORTLET_WINDOW_DATA_ATTRIBUTE, windowCache);
      }
    }

    return windowCache;
  }
  @SuppressWarnings("unchecked")
  protected PortletWindowCache<PortletWindowData> getPortletWindowDataMap(
      HttpServletRequest request, boolean create) {
    request = portalRequestUtils.getOriginalPortalRequest(request);
    final HttpSession session = request.getSession(create);
    if (!create && session == null) {
      return null;
    }

    PortletWindowCache<PortletWindowData> windowCache;

    final Object mutex = WebUtils.getSessionMutex(session);
    synchronized (mutex) {
      windowCache =
          (PortletWindowCache<PortletWindowData>)
              session.getAttribute(PORTLET_WINDOW_DATA_ATTRIBUTE);
      if (windowCache == null) {
        windowCache = new PortletWindowCache<PortletWindowData>();
        session.setAttribute(PORTLET_WINDOW_DATA_ATTRIBUTE, windowCache);
      }
    }

    return windowCache;
  }