Author: craigmcc
Date: Mon Nov 14 17:53:40 2005
New Revision: 344288

URL: http://svn.apache.org/viewcvs?rev=344288&view=rev
Log:
[37477] Prefix directory names starting with a digit

Prefix the returned value for paths whose initial character after the
leading slash is a digit, in addition to prefixing reserved words.  This
avoids cases where the returned value is evaluated as a variable name,
because variable names cannot start with a digit.

Modified:
    
struts/shale/trunk/core-library/src/java/org/apache/shale/view/impl/DefaultViewControllerMapper.java
    
struts/shale/trunk/core-library/src/test/org/apache/shale/view/impl/DefaultViewControllerMapperTestCase.java

Modified: 
struts/shale/trunk/core-library/src/java/org/apache/shale/view/impl/DefaultViewControllerMapper.java
URL: 
http://svn.apache.org/viewcvs/struts/shale/trunk/core-library/src/java/org/apache/shale/view/impl/DefaultViewControllerMapper.java?rev=344288&r1=344287&r2=344288&view=diff
==============================================================================
--- 
struts/shale/trunk/core-library/src/java/org/apache/shale/view/impl/DefaultViewControllerMapper.java
 (original)
+++ 
struts/shale/trunk/core-library/src/java/org/apache/shale/view/impl/DefaultViewControllerMapper.java
 Mon Nov 14 17:53:40 2005
@@ -32,6 +32,11 @@
  * <li>If the resulting name matches one of the reserved names recognized
  *     by the default <code>VariableResolver</code>, prefix it with an
  *     underscore character ("_"), to avoid problems loading managed 
beans.</li>
+ * <li>If the resulting name starts with a digit character, prefix it with
+ *     an underscore character("_"), to avoid problems evaluating value
+ *     binding expressions using it (because this would be treated as a
+ *     variable name starting with a digit, and that is not allowed by the
+ *     syntax of expression evaluation).</li>
  * </ul>
  *
  * <p>Examples of correct managed bean names for typical JSF view identifiers,
@@ -97,6 +102,8 @@
         }
         viewId = viewId.replace('/', '$');
         if (reserved.contains(viewId)) {
+            return "_" + viewId;
+        } else if ((viewId.length() > 0) && 
Character.isDigit(viewId.charAt(0))) {
             return "_" + viewId;
         } else {
             return viewId;

Modified: 
struts/shale/trunk/core-library/src/test/org/apache/shale/view/impl/DefaultViewControllerMapperTestCase.java
URL: 
http://svn.apache.org/viewcvs/struts/shale/trunk/core-library/src/test/org/apache/shale/view/impl/DefaultViewControllerMapperTestCase.java?rev=344288&r1=344287&r2=344288&view=diff
==============================================================================
--- 
struts/shale/trunk/core-library/src/test/org/apache/shale/view/impl/DefaultViewControllerMapperTestCase.java
 (original)
+++ 
struts/shale/trunk/core-library/src/test/org/apache/shale/view/impl/DefaultViewControllerMapperTestCase.java
 Mon Nov 14 17:53:40 2005
@@ -92,6 +92,20 @@
     }
 
 
+    // Test numeric prefix in logical name
+    public void testNumeric() {
+
+        // Positive ... should be prefixed
+        assertEquals("_1$a", dvcm.mapViewId("/1/a.jsp"));
+        assertEquals("_1$1$a", dvcm.mapViewId("/1/1/a.jsp"));
+
+        // Negative ... should not be prefixed
+        assertEquals("a$1$b", dvcm.mapViewId("/a/1/b.jsp"));
+
+    }
+
+
+
     // Test a pristine instance
     public void testPristine() {
 



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to