Author: markt
Date: Tue Oct 19 13:03:01 2010
New Revision: 1024224

URL: http://svn.apache.org/viewvc?rev=1024224&view=rev
Log:
Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=50105
Use Enum.name() rather than Enum.toString() in composite expressions

Added:
    tomcat/trunk/test/org/apache/el/TesterEnum.java   (with props)
Modified:
    tomcat/trunk/java/org/apache/el/parser/AstCompositeExpression.java
    tomcat/trunk/test/org/apache/el/TestValueExpressionImpl.java
    tomcat/trunk/webapps/docs/changelog.xml

Modified: tomcat/trunk/java/org/apache/el/parser/AstCompositeExpression.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/el/parser/AstCompositeExpression.java?rev=1024224&r1=1024223&r2=1024224&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/el/parser/AstCompositeExpression.java 
(original)
+++ tomcat/trunk/java/org/apache/el/parser/AstCompositeExpression.java Tue Oct 
19 13:03:01 2010
@@ -20,6 +20,7 @@ package org.apache.el.parser;
 
 import javax.el.ELException;
 
+import org.apache.el.lang.ELSupport;
 import org.apache.el.lang.EvaluationContext;
 
 
@@ -48,7 +49,7 @@ public final class AstCompositeExpressio
             for (int i = 0; i < this.children.length; i++) {
                 obj = this.children[i].getValue(ctx);
                 if (obj != null) {
-                    sb.append(obj);
+                    sb.append(ELSupport.coerceToString(obj));
                 }
             }
         }

Modified: tomcat/trunk/test/org/apache/el/TestValueExpressionImpl.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/el/TestValueExpressionImpl.java?rev=1024224&r1=1024223&r2=1024224&view=diff
==============================================================================
--- tomcat/trunk/test/org/apache/el/TestValueExpressionImpl.java (original)
+++ tomcat/trunk/test/org/apache/el/TestValueExpressionImpl.java Tue Oct 19 
13:03:01 2010
@@ -81,4 +81,27 @@ public class TestValueExpressionImpl ext
         assertEquals(beanB, vr.getBase());
         assertEquals("name", vr.getProperty());
     }
+
+
+    public void testBug50105() {
+        ExpressionFactory factory = ExpressionFactory.newInstance();
+        ELContext context = new ELContextImpl();
+        
+        TesterEnum testEnum = TesterEnum.APPLE;
+        
+        ValueExpression var =
+            factory.createValueExpression(testEnum, TesterEnum.class);
+        context.getVariableMapper().setVariable("testEnum", var);
+
+        // When coercing an Enum to a String, name() should always be used.
+        ValueExpression ve1 = factory.createValueExpression(
+                context, "${testEnum}", String.class);
+        String result1 = (String) ve1.getValue(context);
+        assertEquals("APPLE", result1);
+        
+        ValueExpression ve2 = factory.createValueExpression(
+                context, "foo${testEnum}bar", String.class);
+        String result2 = (String) ve2.getValue(context);
+        assertEquals("fooAPPLEbar", result2);
+    }
 }

Added: tomcat/trunk/test/org/apache/el/TesterEnum.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/el/TesterEnum.java?rev=1024224&view=auto
==============================================================================
--- tomcat/trunk/test/org/apache/el/TesterEnum.java (added)
+++ tomcat/trunk/test/org/apache/el/TesterEnum.java Tue Oct 19 13:03:01 2010
@@ -0,0 +1,10 @@
+package org.apache.el;
+
+public enum TesterEnum {
+    APPLE, ORANGE;
+    
+    @Override
+    public String toString() {
+        return "This is a " + this.name();
+    }
+}

Propchange: tomcat/trunk/test/org/apache/el/TesterEnum.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: tomcat/trunk/webapps/docs/changelog.xml
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/webapps/docs/changelog.xml?rev=1024224&r1=1024223&r2=1024224&view=diff
==============================================================================
--- tomcat/trunk/webapps/docs/changelog.xml (original)
+++ tomcat/trunk/webapps/docs/changelog.xml Tue Oct 19 13:03:01 2010
@@ -37,6 +37,13 @@
 <body>
 <!--  Catalina, Coyote, Jasper, Cluster, Web applications, Extras, Other -->
 <section name="Tomcat 7.0.5 (markt)">
+  <subsection name="Jasper">
+    <changelog>
+      <bug>50105</bug>: When processing composite EL expressions use
+      <code>Enum.name()</code> rather than <code>Enum.toString()</code> as
+      required by the EL specification. (markt)
+    </changelog>
+  </subsection>
   <subsection name="Web applications">
     <changelog>
       <fix>



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to