[portal-commits] JBoss Portal SVN: r12945 - in tags/JBoss_Portal_2_7_2: core-samples/src/main/org/jboss/portal/core/samples/basic and 1 other directories.

portal-commits at lists.jboss.org portal-commits at lists.jboss.org
Wed Mar 4 13:05:27 EST 2009


Author: chris.laprun at jboss.com
Date: 2009-03-04 13:05:27 -0500 (Wed, 04 Mar 2009)
New Revision: 12945

Modified:
   tags/JBoss_Portal_2_7_2/core-samples/src/main/org/jboss/portal/core/samples/basic/PortletSessionPortlet.java
   tags/JBoss_Portal_2_7_2/core/src/resources/portal-server-war/login.jsp
   tags/JBoss_Portal_2_7_2/server/src/main/org/jboss/portal/server/listener/SessionListener.java
Log:
- Synchronization with trunk:
  + JBPORTAL-2329: Fixed the portlet so that it works in an AJAX context... We need a workaround for the way Form.serialize 
    works in Prototype when a form has multiple submit inputs.
  + JBPORTAL-2227 - browser credential fix and hopefully selenium compatible
  + Fixed potential NPE when session is destroyed.


Modified: tags/JBoss_Portal_2_7_2/core/src/resources/portal-server-war/login.jsp
===================================================================
--- tags/JBoss_Portal_2_7_2/core/src/resources/portal-server-war/login.jsp	2009-03-04 16:39:24 UTC (rev 12944)
+++ tags/JBoss_Portal_2_7_2/core/src/resources/portal-server-war/login.jsp	2009-03-04 18:05:27 UTC (rev 12945)
@@ -39,7 +39,7 @@
 
     <link rel="stylesheet" href="/portal-core/css/login.css" type="text/css"/>
 </head>
-<body onload="JBossPortal.login.setFocusOnLoginForm();JBossPortal.login.displayStatus();JBossPortal.login.validate();">
+<body onload="JBossPortal.login.setFocusOnLoginForm();JBossPortal.login.displayStatus();setTimeout('JBossPortal.login.validate()',10);">
 
 <div class="login-container">
 

Modified: tags/JBoss_Portal_2_7_2/core-samples/src/main/org/jboss/portal/core/samples/basic/PortletSessionPortlet.java
===================================================================
--- tags/JBoss_Portal_2_7_2/core-samples/src/main/org/jboss/portal/core/samples/basic/PortletSessionPortlet.java	2009-03-04 16:39:24 UTC (rev 12944)
+++ tags/JBoss_Portal_2_7_2/core-samples/src/main/org/jboss/portal/core/samples/basic/PortletSessionPortlet.java	2009-03-04 18:05:27 UTC (rev 12945)
@@ -1,6 +1,6 @@
 /******************************************************************************
  * JBoss, a division of Red Hat                                               *
- * Copyright 2006, Red Hat Middleware, LLC, and individual                    *
+ * Copyright 2009, Red Hat Middleware, LLC, and individual                    *
  * contributors as indicated by the @authors tag. See the                     *
  * copyright.txt in the distribution for a full listing of                    *
  * individual contributors.                                                   *
@@ -44,7 +44,8 @@
    {
       String name = req.getParameter("name");
       String value = req.getParameter("value");
-      boolean portletScope = req.getParameter("portlet") != null;
+      String scope = req.getParameter("scope");
+      boolean portletScope = "portlet".equals(scope);
       if (name != null && value != null)
       {
          req.getPortletSession().setAttribute(name, value, portletScope ? PortletSession.PORTLET_SCOPE : PortletSession.APPLICATION_SCOPE);
@@ -85,11 +86,19 @@
       }
 
       //
-      writer.println("<form action=\"" + purl.toString() + "\" method=\"post\">");
+      writer.println("<script type='text/javascript'>\n" +
+         "function processForm(value) {" +
+         "var form = document.getElementById('sessionForm');\n" +
+         "var hidden = document.getElementById('sessionHidden');\n" +
+         "hidden.value = value;\n" +
+         "form.submit();}\n" +
+         "</script>");
+      writer.println("<form id='sessionForm' action=\"" + purl.toString() + "\" method=\"post\">");
       writer.println("<input type=\"text\" name=\"name\"/>");
       writer.println("<input type=\"text\" name=\"value\"/>");
-      writer.println("<input type=\"submit\" name=\"portlet\" value=\"Add to portlet scope\"/>");
-      writer.println("<input type=\"submit\" name=\"application\" value=\"Add to application scope\"/>");
+      writer.println("<input type=\"button\" name=\"portlet\" value=\"Add to portlet scope\" onclick=\"processForm('portlet')\"/>");
+      writer.println("<input type=\"button\" name=\"application\" value=\"Add to application scope\" onclick=\"processForm('application')\"/>");
+      writer.println("<input id='sessionHidden' name='scope' type='hidden'/>");
       writer.println("</form><br/>");
 
       //

Modified: tags/JBoss_Portal_2_7_2/server/src/main/org/jboss/portal/server/listener/SessionListener.java
===================================================================
--- tags/JBoss_Portal_2_7_2/server/src/main/org/jboss/portal/server/listener/SessionListener.java	2009-03-04 16:39:24 UTC (rev 12944)
+++ tags/JBoss_Portal_2_7_2/server/src/main/org/jboss/portal/server/listener/SessionListener.java	2009-03-04 18:05:27 UTC (rev 12945)
@@ -1,6 +1,6 @@
 /******************************************************************************
  * JBoss, a division of Red Hat                                               *
- * Copyright 2008, Red Hat Middleware, LLC, and individual                    *
+ * Copyright 2009, Red Hat Middleware, LLC, and individual                    *
  * contributors as indicated by the @authors tag. See the                     *
  * copyright.txt in the distribution for a full listing of                    *
  * individual contributors.                                                   *
@@ -22,18 +22,10 @@
  ******************************************************************************/
 package org.jboss.portal.server.listener;
 
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.io.PrintWriter;
-import java.io.StringWriter;
-import java.io.UnsupportedEncodingException;
-import java.security.Principal;
-import java.util.Enumeration;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Locale;
-import java.util.Map;
-import java.util.Set;
+import org.jboss.logging.Logger;
+import org.jboss.mx.util.MBeanServerLocator;
+import org.jboss.portal.server.aspects.server.SignOutInterceptor.Invalidation;
+import org.jboss.portal.web.ServletContainer;
 
 import javax.management.MBeanServer;
 import javax.management.ObjectName;
@@ -47,16 +39,22 @@
 import javax.servlet.http.HttpSession;
 import javax.servlet.http.HttpSessionEvent;
 import javax.servlet.http.HttpSessionListener;
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.io.StringWriter;
+import java.io.UnsupportedEncodingException;
+import java.security.Principal;
+import java.util.Enumeration;
+import java.util.HashMap;
+import java.util.Locale;
+import java.util.Map;
+import java.util.Set;
 
-import org.jboss.logging.Logger;
-import org.jboss.mx.util.MBeanServerLocator;
-import org.jboss.portal.server.aspects.server.SignOutInterceptor.Invalidation;
-import org.jboss.portal.web.ServletContainer;
-
 /**
- * This listener listens to the main portal session events.
- * When the portal session timesout, all web applications' sessions referenced
- * by org.jboss.portal.server.aspects.server.SignOutInterceptor are destroyed
+ * This listener listens to the main portal session events. When the portal session timesout, all web applications'
+ * sessions referenced by org.jboss.portal.server.aspects.server.SignOutInterceptor are destroyed
+ *
  * @author <a href="mailto:theute at jboss.org">Thomas Heute</a>
  * @version $Revision$
  */
@@ -67,10 +65,10 @@
 
    /** . */
    private Logger log = Logger.getLogger(SessionListener.class);
-   
+
    /** . */
    private static final String KEY = "org.jboss.portal.session.contexts";
-   
+
    public void sessionCreated(HttpSessionEvent arg0)
    {
       // Nothing to do
@@ -79,50 +77,51 @@
    public void sessionDestroyed(HttpSessionEvent arg0)
    {
       Set<String> contexts = (Set<String>)arg0.getSession().getAttribute(KEY);
-      
-      MBeanServer server = MBeanServerLocator.locateJBoss();
-      ObjectName objectName = null;
-      ServletContainer servletContainer = null;
 
-      try
+      if (contexts != null)
       {
-         objectName = new ObjectName("portal:service=ServletContainerFactory");
-         servletContainer = (ServletContainer)server.getAttribute(objectName, "ServletContainer");
-      }
-      catch (Exception e1)
-      {
-         log.error("Error while destroying portlet webapp sessions");
-      }
-      
-      // Iterate over all the context that have been used
-      for (Iterator<String> i = contexts.iterator(); i.hasNext();)
-      {
-         String dispatchContextName = (String)i.next();
+         MBeanServer server = MBeanServerLocator.locateJBoss();
+         ObjectName objectName = null;
+         ServletContainer servletContainer = null;
 
-         // Get the context
-         ServletContext dispatchContext = arg0.getSession().getServletContext().getContext(dispatchContextName);
-         
-         // The context could be null if the web app has been removed after the web app has been tracked
-         if (dispatchContext != null)
+         try
          {
-            try
+            objectName = new ObjectName("portal:service=ServletContainerFactory");
+            servletContainer = (ServletContainer)server.getAttribute(objectName, "ServletContainer");
+         }
+         catch (Exception e1)
+         {
+            log.error("Error while destroying portlet webapp sessions");
+         }
+
+         // Iterate over all the context that have been used
+         for (String dispatchContextName : contexts)
+         {
+            // Get the context
+            ServletContext dispatchContext = arg0.getSession().getServletContext().getContext(dispatchContextName);
+
+            // The context could be null if the web app has been removed after the web app has been tracked
+            if (dispatchContext != null)
             {
-               // Execute the command that invalidates the session
-               servletContainer.include(dispatchContext, new TestHttpServletRequest(arg0.getSession()), new TestHttpServletResponse(), invalidator, null);
+               try
+               {
+                  // Execute the command that invalidates the session
+                  servletContainer.include(dispatchContext, new TestHttpServletRequest(arg0.getSession()), new TestHttpServletResponse(), invalidator, null);
+               }
+               catch (Exception e)
+               {
+                  log.error("An error occured when trying to invalidate the sessions");
+               }
             }
-            catch (Exception e)
-            {
-               log.error("An error occured when trying to invalidate the sessions");
-            }
          }
       }
    }
-   
+
    // request
    private static class TestHttpServletRequest implements HttpServletRequest
    {
       private Map attributes;
-      
+
       private HttpSession session;
 
       public TestHttpServletRequest(HttpSession session)




More information about the portal-commits mailing list