You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by bo...@apache.org on 2011/02/02 22:56:53 UTC

svn commit: r1066647 - in /myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component: AbstractUIMediator.java AbstractUISheet.java AbstractUITabGroup.java AbstractUITreeNode.java

Author: bommel
Date: Wed Feb  2 21:56:53 2011
New Revision: 1066647

URL: http://svn.apache.org/viewvc?rev=1066647&view=rev
Log:
(TOBAGO-970) Changes in broadcast method should be performed after all listener are called

Modified:
    myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUIMediator.java
    myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUISheet.java
    myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUITabGroup.java
    myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUITreeNode.java

Modified: myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUIMediator.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUIMediator.java?rev=1066647&r1=1066646&r2=1066647&view=diff
==============================================================================
--- myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUIMediator.java (original)
+++ myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUIMediator.java Wed Feb  2 21:56:53 2011
@@ -25,6 +25,7 @@ import javax.faces.context.FacesContext;
 import javax.faces.event.AbortProcessingException;
 import javax.faces.event.FacesEvent;
 import java.io.IOException;
+import java.util.Map;
 
 public abstract class AbstractUIMediator extends AbstractUIPanelBase implements LayoutComponent {
 
@@ -50,10 +51,13 @@ public abstract class AbstractUIMediator
 
   @Override
   public void broadcast(FacesEvent event) throws AbortProcessingException {
-    FacesContext facesContext = FacesContext.getCurrentInstance();
-    facesContext.getExternalContext().getRequestMap().put(var, this);
-    super.broadcast(event);
-    facesContext.getExternalContext().getRequestMap().remove(var);
+    Map requestMap = FacesContext.getCurrentInstance().getExternalContext().getRequestMap();
+    requestMap.put(var, this);
+    try {
+      super.broadcast(event);
+    } finally {
+      requestMap.remove(var);
+    }
   }
 
   @Override

Modified: myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUISheet.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUISheet.java?rev=1066647&r1=1066646&r2=1066647&view=diff
==============================================================================
--- myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUISheet.java (original)
+++ myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUISheet.java Wed Feb  2 21:56:53 2011
@@ -334,16 +334,17 @@ public abstract class AbstractUISheet ex
       FacesUtils.invokeMethodBinding(getFacesContext(), getStateChangeListener(), facesEvent);
     } else if (facesEvent instanceof PageActionEvent) {
       if (facesEvent.getComponent() == this) {
-        performPaging((PageActionEvent) facesEvent);
         FacesUtils.invokeMethodBinding(
             getFacesContext(), getStateChangeListener(), new SheetStateChangeEvent(this));
+        performPaging((PageActionEvent) facesEvent);
       }
     } else if (facesEvent instanceof SortActionEvent) {
-      getSheetState(getFacesContext()).updateSortState((SortActionEvent) facesEvent);
       MethodBinding methodBinding = getSortActionListener();
       if (methodBinding!= null) {
         FacesUtils.invokeMethodBinding(getFacesContext(), methodBinding, facesEvent);
+        getSheetState(getFacesContext()).updateSortState((SortActionEvent) facesEvent);
       } else {
+        getSheetState(getFacesContext()).updateSortState((SortActionEvent) facesEvent);
         new Sorter().perform((SortActionEvent) facesEvent);
       }
     }

Modified: myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUITabGroup.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUITabGroup.java?rev=1066647&r1=1066646&r2=1066647&view=diff
==============================================================================
--- myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUITabGroup.java (original)
+++ myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUITabGroup.java Wed Feb  2 21:56:53 2011
@@ -196,13 +196,6 @@ public abstract class AbstractUITabGroup
   public void broadcast(FacesEvent facesEvent) throws AbortProcessingException {
     super.broadcast(facesEvent);
     if (facesEvent instanceof TabChangeEvent && facesEvent.getComponent() == this) {
-      Integer index = ((TabChangeEvent) facesEvent).getNewTabIndex();
-      if (FacesUtils.hasValueBindingOrValueExpression(this, Attributes.SELECTED_INDEX)) {
-        FacesUtils.setValueOfBindingOrExpression(getFacesContext(), index, this, Attributes.SELECTED_INDEX);
-      } else {
-        setSelectedIndex(index);
-      }
-
       FacesUtils.invokeMethodBinding(getFacesContext(), getTabChangeListener(), facesEvent);
 
       FacesUtils.invokeMethodBinding(getFacesContext(), getActionListener(), facesEvent);
@@ -211,6 +204,12 @@ public abstract class AbstractUITabGroup
       if (defaultActionListener != null) {
         defaultActionListener.processAction((ActionEvent) facesEvent);
       }
+      Integer index = ((TabChangeEvent) facesEvent).getNewTabIndex();
+      if (FacesUtils.hasValueBindingOrValueExpression(this, Attributes.SELECTED_INDEX)) {
+        FacesUtils.setValueOfBindingOrExpression(getFacesContext(), index, this, Attributes.SELECTED_INDEX);
+      } else {
+        setSelectedIndex(index);
+      }
     }
   }
 

Modified: myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUITreeNode.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUITreeNode.java?rev=1066647&r1=1066646&r2=1066647&view=diff
==============================================================================
--- myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUITreeNode.java (original)
+++ myfaces/tobago/trunk/tobago-core/src/main/java/org/apache/myfaces/tobago/internal/component/AbstractUITreeNode.java Wed Feb  2 21:56:53 2011
@@ -198,7 +198,7 @@ public abstract class AbstractUITreeNode
   public void broadcast(FacesEvent event) throws AbortProcessingException {
     super.broadcast(event);
     if (event instanceof TreeExpansionEvent) {
-
+      FacesUtils.invokeMethodBinding(getFacesContext(), getTreeExpansionListener(), event);
       boolean expanded = ((TreeExpansionEvent) event).isNewExpanded();
 
       if (FacesUtils.hasValueBindingOrValueExpression(this, Attributes.EXPANDED)) {
@@ -206,8 +206,6 @@ public abstract class AbstractUITreeNode
       } else {
         setExpanded(expanded);
       }
-
-      FacesUtils.invokeMethodBinding(getFacesContext(), getTreeExpansionListener(), event);
     }
   }