You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by ma...@apache.org on 2006/06/21 06:30:17 UTC
svn commit: r415903 -
/myfaces/core/branches/jsf12/impl/src/main/java/org/apache/myfaces/application/NavigationHandlerImpl.java
Author: matzew
Date: Tue Jun 20 21:30:17 2006
New Revision: 415903
URL: http://svn.apache.org/viewvc?rev=415903&view=rev
Log:
enhanced NavigationHandlerImpl
Modified:
myfaces/core/branches/jsf12/impl/src/main/java/org/apache/myfaces/application/NavigationHandlerImpl.java
Modified: myfaces/core/branches/jsf12/impl/src/main/java/org/apache/myfaces/application/NavigationHandlerImpl.java
URL: http://svn.apache.org/viewvc/myfaces/core/branches/jsf12/impl/src/main/java/org/apache/myfaces/application/NavigationHandlerImpl.java?rev=415903&r1=415902&r2=415903&view=diff
==============================================================================
--- myfaces/core/branches/jsf12/impl/src/main/java/org/apache/myfaces/application/NavigationHandlerImpl.java (original)
+++ myfaces/core/branches/jsf12/impl/src/main/java/org/apache/myfaces/application/NavigationHandlerImpl.java Tue Jun 20 21:30:17 2006
@@ -68,40 +68,7 @@
return;
}
- NavigationCase navigationCase = null;
-
-
- if (navigationCase == null)
- {
- // Wildcard match?
- List keys = getSortedWildcardKeys();
- for (int i = 0, size = keys.size(); i < size; i++)
- {
- String fromViewId = (String)keys.get(i);
- if (fromViewId.length() > 2)
- {
- String prefix = fromViewId.substring(0, fromViewId.length() - 1);
- if (viewId != null && viewId.startsWith(prefix))
- {
- casesList = (List)casesMap.get(fromViewId);
- if (casesList != null)
- {
- navigationCase = calcMatchingNavigationCase(casesList, fromAction, outcome);
- if (navigationCase != null) break;
- }
- }
- }
- else
- {
- casesList = (List)casesMap.get(fromViewId);
- if (casesList != null)
- {
- navigationCase = calcMatchingNavigationCase(casesList, fromAction, outcome);
- if (navigationCase != null) break;
- }
- }
- }
- }
+ NavigationCase navigationCase = getNavigationCase(facesContext, fromAction, outcome);
if (navigationCase != null)
{
@@ -148,6 +115,69 @@
}
}
+ protected NavigationCase getNavigationCase(FacesContext facesContext, String fromAction, String outcome)
+ {
+ String viewId = facesContext.getViewRoot().getViewId();
+ Map casesMap = getNavigationCases(facesContext);
+ NavigationCase navigationCase = null;
+
+ List casesList = (List)casesMap.get(viewId);
+ if (casesList != null)
+ {
+ // Exact match?
+ navigationCase = calcMatchingNavigationCase(casesList, fromAction, outcome);
+ }
+
+ if (navigationCase == null)
+ {
+ // Wildcard match?
+ List keys = getSortedWildcardKeys();
+ for (int i = 0, size = keys.size(); i < size; i++)
+ {
+ String fromViewId = (String)keys.get(i);
+ if (fromViewId.length() > 2)
+ {
+ String prefix = fromViewId.substring(0, fromViewId.length() - 1);
+ if (viewId != null && viewId.startsWith(prefix))
+ {
+ casesList = (List)casesMap.get(fromViewId);
+ if (casesList != null)
+ {
+ navigationCase = calcMatchingNavigationCase(casesList, fromAction, outcome);
+ if (navigationCase != null) break;
+ }
+ }
+ }
+ else
+ {
+ casesList = (List)casesMap.get(fromViewId);
+ if (casesList != null)
+ {
+ navigationCase = calcMatchingNavigationCase(casesList, fromAction, outcome);
+ if (navigationCase != null) break;
+ }
+ }
+ }
+ }
+ return navigationCase;
+ }
+
+ /**
+ * TODO
+ */
+ protected String getViewId(FacesContext context, String fromAction, String outcome)
+ {
+ return null;
+ }
+
+ /**
+ * TODO
+ */
+ protected String beforeNavigation(String viewId)
+ {
+ return null;
+ }
+
private NavigationCase calcMatchingNavigationCase(List casesList, String actionRef, String outcome)
{
for (int i = 0, size = casesList.size(); i < size; i++)
@@ -241,4 +271,4 @@
return -(((String)o1).compareTo((String)o2));
}
}
-}
+}
\ No newline at end of file