You are viewing a plain text version of this content. The canonical link for it is here.
Posted to adffaces-commits@incubator.apache.org by jw...@apache.org on 2006/09/23 00:24:38 UTC
svn commit: r449132 -
/incubator/adffaces/trunk/trinidad/trinidad-api/src/main/java/org/apache/myfaces/trinidad/model/XMLMenuModel.java
Author: jwaldman
Date: Fri Sep 22 17:24:38 2006
New Revision: 449132
URL: http://svn.apache.org/viewvc?view=rev&rev=449132
Log:
ADFFACES-189 Performance optimization in XMLMenuModel.getFocusRowKey() breaks menu model when called before the RenderResponse Phase of the request lifecycle. Committed patch for Gary Kind.
Modified:
incubator/adffaces/trunk/trinidad/trinidad-api/src/main/java/org/apache/myfaces/trinidad/model/XMLMenuModel.java
Modified: incubator/adffaces/trunk/trinidad/trinidad-api/src/main/java/org/apache/myfaces/trinidad/model/XMLMenuModel.java
URL: http://svn.apache.org/viewvc/incubator/adffaces/trunk/trinidad/trinidad-api/src/main/java/org/apache/myfaces/trinidad/model/XMLMenuModel.java?view=diff&rev=449132&r1=449131&r2=449132
==============================================================================
--- incubator/adffaces/trunk/trinidad/trinidad-api/src/main/java/org/apache/myfaces/trinidad/model/XMLMenuModel.java (original)
+++ incubator/adffaces/trunk/trinidad/trinidad-api/src/main/java/org/apache/myfaces/trinidad/model/XMLMenuModel.java Fri Sep 22 17:24:38 2006
@@ -203,95 +203,81 @@
Object focusPath = null;
String currentViewId = _getCurrentViewId();
FacesContext context = FacesContext.getCurrentInstance();
- boolean beginNewRequest = (_begunRequest == false);
-
- _begunRequest = true;
-
- if (beginNewRequest)
+
+ // Initializations
+ _prevFocusPath = null;
+
+ // How did we get to this page?
+ // 1) Clicked on a menu item with its action attribute set. This does
+ // a POST.
+ // 2) Clicked on a menu item with its destination attribute set. This
+ // does a GET.
+ // 3) Navigation to a viewId within our model but done from outside the
+ // model. Examples, button, text link, etc.
+ //
+
+ // Case 1: POST method. Current Node has already been set and so has the
+ // request method. The doAction() method of the clicked node calls
+ // the setCurrentlyPostedNode() method of this model, which sets both. So
+ // we have nothing to do in this case.
+
+ if (_getRequestMethod() != _METHOD_POST)
{
- // Initializations
- _prevFocusPath = null;
-
- // How did we get to this page?
- // 1) Clicked on a menu item with its action attribute set. This does
- // a POST.
- // 2) Clicked on a menu item with its destination attribute set. This
- // does a GET.
- // 3) Navigation to a viewId within our model but done from outside the
- // model. Examples, button, text link, etc.
- //
-
- // Case 1: POST method. Current Node has already been set and so has the
- // request method. The doAction() method of the clicked node calls
- // the setCurrentlyPostedNode() method of this model, which sets both. So
- // we have nothing to do in this case.
+ // Case 2: GET method. We have hung the selected node's id off the
+ // request's URL, which enables us to get the selected node and also
+ // to know that the request method is GET.
+ Map<String, String> paramMap =
+ context.getExternalContext().getRequestParameterMap();
+ String nodeId = paramMap.get(_NODE_ID_PROPERTY);
- if (_getRequestMethod() != _METHOD_POST)
+ if (nodeId != null)
{
- // Case 2: GET method. We have hung the selected node's id off the
- // request's URL, which enables us to get the selected node and also
- // to know that the request method is GET.
- Map<String, String> paramMap =
- context.getExternalContext().getRequestParameterMap();
- String nodeId = paramMap.get(_NODE_ID_PROPERTY);
-
- if (nodeId != null)
- {
- _setCurrentlySelectedNode(getNode(nodeId));
- _setRequestMethod(_METHOD_GET);
- }
+ _setCurrentlySelectedNode(getNode(nodeId));
+ _setRequestMethod(_METHOD_GET);
}
+ }
+
+ // Case 3: Navigation to a page within the model from an outside
+ // method, e.g. button, link text, etc. In this case we set the
+ // currently selected node to null. This tells us to get the 0th
+ // element of the ArrayList returned from the viewId hashMap. This
+ // should be a focus path match to the node whose "defaultFocusPath"
+ // attribute was set to 'true'.
+ if (_getRequestMethod() == _METHOD_NONE)
+ {
+ _setCurrentlySelectedNode(null);
+ }
+
+ // Get the matching focus path ArrayList for the currentViewId.
+ // This is an ArrayList because our map allows nodes with the same
+ // viewId, that is, different focus paths to the same viewId.
+ ArrayList<Object> fpArrayList =
+ (ArrayList<Object>) _viewIdFocusPathMap.get(currentViewId);
+
+ if (fpArrayList != null)
+ {
+ // Get the currently selected node
+ Object currentNode = _getCurrentlySelectedNode();
- // Case 3: Navigation to a page within the model from an outside
- // method, e.g. button, link text, etc. In this case we set the
- // currently selected node to null. This tells us to get the 0th
- // element of the ArrayList returned from the viewId hashMap. This
- // should be a focus path match to the node whose "defaultFocusPath"
- // attribute was set to 'true'.
- if (_getRequestMethod() == _METHOD_NONE)
+ if (fpArrayList.size() == 1 || currentNode == null)
{
- _setCurrentlySelectedNode(null);
+ // For fpArrayLists with multiple focusPaths,
+ // the 0th entry in the fpArrayList carries the
+ // focusPath of the node with its defaultFocusPath
+ // attribute set to "true", if there is one. If
+ // not, the 0th element is the default.
+ focusPath = fpArrayList.get(0);
}
-
- // Get the matching focus path ArrayList for the currentViewId.
- // This is an ArrayList because our map allows nodes with the same
- // viewId, that is, different focus paths to the same viewId.
- ArrayList<Object> fpArrayList =
- (ArrayList<Object>) _viewIdFocusPathMap.get(currentViewId);
-
- if (fpArrayList != null)
+ else
{
- // Get the currently selected node
- Object currentNode = _getCurrentlySelectedNode();
-
- if (fpArrayList.size() == 1 || currentNode == null)
- {
- // For fpArrayLists with multiple focusPaths,
- // the 0th entry in the fpArrayList carries the
- // focusPath of the node with its defaultFocusPath
- // attribute set to "true", if there is one. If
- // not, the 0th element is the default.
- focusPath = fpArrayList.get(0);
- }
- else
- {
- focusPath = _nodeFocusPathMap.get(currentNode);
- }
+ focusPath = _nodeFocusPathMap.get(currentNode);
}
-
- // Save all pertinent information
- _prevFocusPath = focusPath;
-
- _setRequestMethod(_METHOD_NONE);
- }
- else
- {
- // Not at the beginning of a new Request.
- // Return the previous focus path.
- // This optimization is here because, for each menu
- // item selected, getFocusRowKey gets called multiple times.
- return _prevFocusPath;
}
+
+ // Save all pertinent information
+ _prevFocusPath = focusPath;
+
+ _setRequestMethod(_METHOD_NONE);
return focusPath;
}
@@ -698,7 +684,6 @@
private String _requestMethod = _METHOD_NONE;
private String _mdSource = null;
private boolean _createHiddenNodes = false;
- private boolean _begunRequest = false;
private Map<String, List<Object>> _viewIdFocusPathMap;
private Map<Object, List<Object>> _nodeFocusPathMap;