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