Author: chris.laprun(a)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@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)