Example #1
0
 static object GetJavaSessionLock(HttpSession javaSession)
 {
     lock (SessionLock) {
         object sessionLock = javaSession.getAttribute(SessionLock);
         if (sessionLock == null)
         {
             sessionLock = String.Copy(SessionLock);
             javaSession.setAttribute(SessionLock, sessionLock);
         }
         return(sessionLock);
     }
 }
Example #2
0
        internal void SetSessionCookiesForPortal(HttpCookieCollection cookies)
        {
            if (cookies == null || cookies.Count == 0)
            {
                return;
            }

            if (!(context.WorkerRequest is IHttpExtendedWorkerRequest))
            {
                return;
            }
            IHttpExtendedWorkerRequest exWorker      = (IHttpExtendedWorkerRequest)context.WorkerRequest;
            bool        inPortletMode                = !context.IsServletRequest;
            bool        shouldStoreCookiesCollection = false;
            HttpSession javaSession = exWorker.GetSession(false);

            if (javaSession == null && inPortletMode)
            {
                javaSession = exWorker.GetSession(true);
            }

            if (javaSession == null)
            {
                return;
            }

            object sessionLock = GetJavaSessionLock(javaSession);

            lock (sessionLock) {
                Hashtable sessionCookies = (Hashtable)javaSession.getAttribute(SessionCookies);
                if (sessionCookies == null)
                {
                    if (inPortletMode)
                    {
                        sessionCookies = new Hashtable();
                        shouldStoreCookiesCollection = true;
                    }
                    else
                    {
                        return;
                    }
                }

                ArrayList sessionStoredCookies = null;
                for (int i = 0; i < cookies.Count; i++)
                {
                    HttpCookie cookie = cookies[i];
                    if (sessionCookies [cookie.Name] != null || inPortletMode)
                    {
                        sessionCookies [cookie.Name] = cookie;
                        if (sessionStoredCookies == null)
                        {
                            sessionStoredCookies = new ArrayList();
                        }
                        sessionStoredCookies.Add(cookie.Name);
                    }
                }

                if (sessionStoredCookies != null)
                {
                    foreach (object key in sessionStoredCookies)
                    {
                        cookies.Remove((string)key);
                    }
                }

                if (shouldStoreCookiesCollection)
                {
                    javaSession.setAttribute(SessionCookies, sessionCookies);
                }
            }
        }