You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2010/01/06 19:51:24 UTC

svn commit: r896620 - /tomcat/trunk/test/org/apache/el/TestELEvaluation.java

Author: markt
Date: Wed Jan  6 18:51:24 2010
New Revision: 896620

URL: http://svn.apache.org/viewvc?rev=896620&view=rev
Log:
Add a test case for bug 48112 (note this passes - need to check when used in a JSP)

Modified:
    tomcat/trunk/test/org/apache/el/TestELEvaluation.java

Modified: tomcat/trunk/test/org/apache/el/TestELEvaluation.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/el/TestELEvaluation.java?rev=896620&r1=896619&r2=896620&view=diff
==============================================================================
--- tomcat/trunk/test/org/apache/el/TestELEvaluation.java (original)
+++ tomcat/trunk/test/org/apache/el/TestELEvaluation.java Wed Jan  6 18:51:24 2010
@@ -18,9 +18,11 @@
 package org.apache.el;
 
 import java.io.File;
+import java.lang.reflect.Method;
 import java.util.Date;
 
 import javax.el.ValueExpression;
+import javax.el.FunctionMapper;
 
 import org.apache.el.ExpressionFactoryImpl;
 import org.apache.el.lang.ELSupport;
@@ -90,6 +92,11 @@
         assertEquals("\"\\", evaluateExpression("${\"\\\"\\\\\"}"));
     }
 
+    public void testParserFunction() {
+        // bug 48112
+        assertEquals("{world}", evaluateExpression("${fn:trim('{world}')}"));
+    }
+
     private void compareBoth(String msg, int expected, Object o1, Object o2){
         int i1 = ELSupport.compare(o1, o2);
         int i2 = ELSupport.compare(o2, o1);
@@ -116,9 +123,33 @@
 
     private String evaluateExpression(String expression) {
         ELContextImpl ctx = new ELContextImpl();
+        ctx.setFunctionMapper(new FMapper());
         ExpressionFactoryImpl exprFactory = new ExpressionFactoryImpl();
         ValueExpression ve = exprFactory.createValueExpression(ctx, expression,
                 String.class);
         return (String) ve.getValue(ctx);
     }
+    
+    public static class FMapper extends FunctionMapper {
+
+        @Override
+        public Method resolveFunction(String prefix, String localName) {
+            if ("trim".equals(localName)) {
+                Method m;
+                try {
+                    m = this.getClass().getMethod("trim", String.class);
+                    return m;
+                } catch (SecurityException e) {
+                    // Ignore
+                } catch (NoSuchMethodException e) {
+                    // Ignore
+                } 
+            }
+            return null;
+        }
+        
+        public static String trim(String input) {
+            return input.trim();
+        }
+    }
 }



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