[gatein-commits] gatein SVN: r2424 - portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/webui/portal.

do-not-reply at jboss.org do-not-reply at jboss.org
Wed Mar 31 16:41:26 EDT 2010


Author: mwringe
Date: 2010-03-31 16:41:25 -0400 (Wed, 31 Mar 2010)
New Revision: 2424

Modified:
   portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/webui/portal/UIPortalComponentActionListener.java
Log:
GTNPORTAL-905: use a TransitiveApplicationState instead of a ClonedApplicationState when adding new portlets to a page. This prevents an issue when multiple portlets loaded on a page share the same state instead of having individual values.

Modified: portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/webui/portal/UIPortalComponentActionListener.java
===================================================================
--- portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/webui/portal/UIPortalComponentActionListener.java	2010-03-31 19:42:57 UTC (rev 2423)
+++ portal/trunk/webui/portal/src/main/java/org/exoplatform/portal/webui/portal/UIPortalComponentActionListener.java	2010-03-31 20:41:25 UTC (rev 2424)
@@ -25,6 +25,7 @@
 import org.exoplatform.portal.application.PortalRequestContext;
 import org.exoplatform.portal.config.UserACL;
 import org.exoplatform.portal.config.UserPortalConfigService;
+import org.exoplatform.portal.config.model.ApplicationState;
 import org.exoplatform.portal.config.model.ApplicationType;
 import org.exoplatform.portal.config.model.CloneApplicationState;
 import org.exoplatform.portal.config.model.Container;
@@ -376,7 +377,18 @@
                }
                else
                {
-                  CloneApplicationState state = new CloneApplicationState<Object>(app.getStorageId());
+                  ApplicationState state;
+                  // if we have a new portlet added to the page we need for it to have its own state.
+                  // otherwise all new portlets added to a page will have the same state.
+                  if (newComponent)
+                  {
+                     state = new TransientApplicationState<Object>(app.getContentId());
+                  }
+                  // if the portlet is not new, then we should clone it from the original portlet
+                  else
+                  {
+                     state = new CloneApplicationState<Object>(app.getStorageId());
+                  }
                   uiPortlet.setState(new PortletState(state, applicationType));
                }
                uiPortlet.setPortletInPortal(uiTarget instanceof UIPortal);



More information about the gatein-commits mailing list