[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