[portal-commits] JBoss Portal SVN: r11784 - branches/JBoss_Portal_Branch_2_7/core-admin/src/main/org/jboss/portal/core/admin/ui/coordination.
portal-commits at lists.jboss.org
portal-commits at lists.jboss.org
Tue Sep 2 10:12:51 EDT 2008
Author: chris.laprun at jboss.com
Date: 2008-09-02 10:12:51 -0400 (Tue, 02 Sep 2008)
New Revision: 11784
Modified:
branches/JBoss_Portal_Branch_2_7/core-admin/src/main/org/jboss/portal/core/admin/ui/coordination/AliasBindingManagerBean.java
branches/JBoss_Portal_Branch_2_7/core-admin/src/main/org/jboss/portal/core/admin/ui/coordination/CoordinationManagerBean.java
branches/JBoss_Portal_Branch_2_7/core-admin/src/main/org/jboss/portal/core/admin/ui/coordination/EventWiringManagerBean.java
branches/JBoss_Portal_Branch_2_7/core-admin/src/main/org/jboss/portal/core/admin/ui/coordination/ParameterBindingManagerBean.java
Log:
- Reset the managers when a new page is requested so that we don't see artifacts from other pages.
Finer grained conversations would solve this issue...
- Tagging for JBPORTAL-2148
Modified: branches/JBoss_Portal_Branch_2_7/core-admin/src/main/org/jboss/portal/core/admin/ui/coordination/AliasBindingManagerBean.java
===================================================================
--- branches/JBoss_Portal_Branch_2_7/core-admin/src/main/org/jboss/portal/core/admin/ui/coordination/AliasBindingManagerBean.java 2008-09-02 10:36:05 UTC (rev 11783)
+++ branches/JBoss_Portal_Branch_2_7/core-admin/src/main/org/jboss/portal/core/admin/ui/coordination/AliasBindingManagerBean.java 2008-09-02 14:12:51 UTC (rev 11784)
@@ -54,6 +54,15 @@
private String aliasName;
private String originalQName;
+ public AliasBindingManagerBean()
+ {
+ }
+
+ public AliasBindingManagerBean(CoordinationManagerBean managerBean)
+ {
+ super(managerBean);
+ }
+
public String getAliasName()
{
return aliasName;
Modified: branches/JBoss_Portal_Branch_2_7/core-admin/src/main/org/jboss/portal/core/admin/ui/coordination/CoordinationManagerBean.java
===================================================================
--- branches/JBoss_Portal_Branch_2_7/core-admin/src/main/org/jboss/portal/core/admin/ui/coordination/CoordinationManagerBean.java 2008-09-02 10:36:05 UTC (rev 11783)
+++ branches/JBoss_Portal_Branch_2_7/core-admin/src/main/org/jboss/portal/core/admin/ui/coordination/CoordinationManagerBean.java 2008-09-02 14:12:51 UTC (rev 11784)
@@ -22,6 +22,7 @@
package org.jboss.portal.core.admin.ui.coordination;
+import org.jboss.portal.common.util.ParameterValidation;
import org.jboss.portal.core.admin.ui.PortalObjectManagerBean;
import org.jboss.portal.core.controller.coordination.CoordinationConfigurator;
import org.jboss.portal.core.controller.coordination.IllegalCoordinationException;
@@ -41,6 +42,7 @@
import javax.faces.event.ActionEvent;
import java.util.Collection;
import java.util.Locale;
+import java.util.Map;
import java.util.ResourceBundle;
/**
@@ -100,6 +102,7 @@
return aliasManagerHolder.get();
}};
abstract String localizationKey();
+
abstract CoordinationBean bean();
}
@@ -107,6 +110,15 @@
{
protected CoordinationManagerBean managerBean;
+ protected CoordinationBean()
+ {
+ }
+
+ protected CoordinationBean(CoordinationManagerBean managerBean)
+ {
+ this.managerBean = managerBean;
+ }
+
public CoordinationManagerBean getManagerBean()
{
return managerBean;
@@ -288,6 +300,12 @@
{
// make sure we use the proper selected page
selectedObjectId = pomb.getSelectedPortalObjectId();
+
+ // reset the different managers as they are in session scope but need to be re-initialized each time a new
+ // page is reloaded
+ aliasManager = replaceInSession("aliasManager", new AliasBindingManagerBean(this));
+ eventManager = replaceInSession("eventManager", new EventWiringManagerBean(this));
+ parameterManager = replaceInSession("parameterManager", new ParameterBindingManagerBean(this));
// Extract metadata only on window children and only if needed
if (isExplicitEventsUsed() || isExplicitParametersUsed())
@@ -332,11 +350,73 @@
// JSF helper methods
/**
- * Retrieves the value of the parameter which name is given.
+ * Purges a session bean from the session so that it will be recreated by JSF when needed.
+ * todo: JSF COMMON
*
- * @param name
+ * @param beanName name of the bean to be purged, must match an entry in <code>faces-config.xml</code>
+ * @param otherNames additional names of beans to be purged
+ */
+ void purgeFromSession(String beanName, String... otherNames)
+ {
+ Map<String, Object> sessionMap = getFacesSessionMap();
+ sessionMap.remove(beanName);
+ if (otherNames != null)
+ {
+ for (String name : otherNames)
+ {
+ sessionMap.remove(name);
+ }
+ }
+ }
+
+ /**
+ * Retrieves the JSF session map.
+ * todo: JSF COMMON
+ *
+ * @return the JSF session map
+ */
+ Map<String, Object> getFacesSessionMap()
+ {
+ return FacesContext.getCurrentInstance().getExternalContext().getSessionMap();
+ }
+
+ /**
+ *
+ * @param beanName
+ * @param newBean
+ * @param <T>
* @return
*/
+ <T> T replaceInSession(String beanName, T newBean)
+ {
+ ParameterValidation.throwIllegalArgExceptionIfNullOrEmpty(beanName, "bean Name", "replaceInSession");
+ Map<String, Object> sessionMap = getFacesSessionMap();
+
+ // if we passed null, use the remove semantics
+ if(newBean == null)
+ {
+ sessionMap.remove(beanName);
+ return null;
+ }
+
+ Object current = sessionMap.get(beanName);
+ // check that the new bean is compatible with the previously assigned
+ if (current != null && !newBean.getClass().isAssignableFrom(current.getClass()))
+ {
+ throw new IllegalArgumentException("Provided bean: " + newBean + " is not compatible with previously assigned '"
+ + beanName + "' bean: " + current);
+ }
+ sessionMap.put(beanName, newBean);
+ return newBean;
+ }
+
+ /**
+ * Retrieves the value of the parameter which name is given from the JSF request.
+ * todo: JSF COMMON
+ *
+ * @param name name of the parameter which value we want to retrieve
+ * @return
+ */
public String getFacesParam(String name)
{
return FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get(name);
@@ -380,7 +460,7 @@
public String deleteSelected(ActionEvent actionEvent)
{
- if(selectedType != null)
+ if (selectedType != null)
{
try
{
@@ -411,7 +491,7 @@
public String renameSelected() throws IllegalCoordinationException
{
- if(selectedType != null)
+ if (selectedType != null)
{
selectedType.bean().rename(selectedName, newName);
editCoordination();
Modified: branches/JBoss_Portal_Branch_2_7/core-admin/src/main/org/jboss/portal/core/admin/ui/coordination/EventWiringManagerBean.java
===================================================================
--- branches/JBoss_Portal_Branch_2_7/core-admin/src/main/org/jboss/portal/core/admin/ui/coordination/EventWiringManagerBean.java 2008-09-02 10:36:05 UTC (rev 11783)
+++ branches/JBoss_Portal_Branch_2_7/core-admin/src/main/org/jboss/portal/core/admin/ui/coordination/EventWiringManagerBean.java 2008-09-02 14:12:51 UTC (rev 11784)
@@ -59,6 +59,15 @@
private List<String> selectedDestinationWindows;
private EventWiringInfoCreator currentWiring;
+ public EventWiringManagerBean()
+ {
+ }
+
+ public EventWiringManagerBean(CoordinationManagerBean managerBean)
+ {
+ super(managerBean);
+ }
+
public void loadInfoFrom(Page page)
{
Collection<EventWiringInfo> wiringInfos = managerBean.getCoordinationService().getEventWirings(page);
Modified: branches/JBoss_Portal_Branch_2_7/core-admin/src/main/org/jboss/portal/core/admin/ui/coordination/ParameterBindingManagerBean.java
===================================================================
--- branches/JBoss_Portal_Branch_2_7/core-admin/src/main/org/jboss/portal/core/admin/ui/coordination/ParameterBindingManagerBean.java 2008-09-02 10:36:05 UTC (rev 11783)
+++ branches/JBoss_Portal_Branch_2_7/core-admin/src/main/org/jboss/portal/core/admin/ui/coordination/ParameterBindingManagerBean.java 2008-09-02 14:12:51 UTC (rev 11784)
@@ -52,6 +52,15 @@
private List<String> selectedParameterWindowPairs;
private String windowBindingName;
+ public ParameterBindingManagerBean()
+ {
+ }
+
+ public ParameterBindingManagerBean(CoordinationManagerBean managerBean)
+ {
+ super(managerBean);
+ }
+
public List<ParameterWindowSelectItem> getAvailableParameterWindowPairs()
{
return availableParameterWindowPairs;
More information about the portal-commits
mailing list