From 2035a9a1b7bfde74a52905652e20baa4c5dff4a5 Mon Sep 17 00:00:00 2001 From: markt Date: Sun, 11 Jul 2010 16:37:32 +0000 Subject: [PATCH] Make the fix for bug 49555 more robust git-svn-id: https://svn.apache.org/repos/asf/tomcat/trunk@963106 13f79535-47bb-0310-9956-ffa450edef68 --- java/org/apache/jasper/compiler/ELFunctionMapper.java | 10 ++++++++-- test/org/apache/el/TestELInJsp.java | 2 +- test/org/apache/el/TesterFunctions.java | 2 +- test/webapp-3.0/WEB-INF/bugs.tld | 2 +- 4 files changed, 11 insertions(+), 5 deletions(-) diff --git a/java/org/apache/jasper/compiler/ELFunctionMapper.java b/java/org/apache/jasper/compiler/ELFunctionMapper.java index 53d931e73..235b402de 100644 --- a/java/org/apache/jasper/compiler/ELFunctionMapper.java +++ b/java/org/apache/jasper/compiler/ELFunctionMapper.java @@ -294,8 +294,14 @@ public class ELFunctionMapper { * @param className Binary class name * @return Canonical equivalent */ - private String getCanonicalName(String className) { - return className.replace('$', '.'); + private String getCanonicalName(String className) throws JasperException { + Class clazz; + try { + clazz = Class.forName(className); + } catch (ClassNotFoundException e) { + throw new JasperException(e); + } + return clazz.getCanonicalName(); } } } diff --git a/test/org/apache/el/TestELInJsp.java b/test/org/apache/el/TestELInJsp.java index e3bcf32a5..fe1ac774d 100644 --- a/test/org/apache/el/TestELInJsp.java +++ b/test/org/apache/el/TestELInJsp.java @@ -322,7 +322,7 @@ public class TestELInJsp extends TomcatBaseTest { "/test/bug49555.jsp"); String result = res.toString(); - assertEcho(result, "00-" + TesterFunctions.Inner.RETVAL); + assertEcho(result, "00-" + TesterFunctions.Inner$Class.RETVAL); } public void testELMisc() throws Exception { diff --git a/test/org/apache/el/TesterFunctions.java b/test/org/apache/el/TesterFunctions.java index 5e0a9ede3..4e7c45e9e 100644 --- a/test/org/apache/el/TesterFunctions.java +++ b/test/org/apache/el/TesterFunctions.java @@ -22,7 +22,7 @@ public class TesterFunctions { return input.trim(); } - public static class Inner { + public static class Inner$Class { public static final String RETVAL = "Return from bug49555"; public static String bug49555() { diff --git a/test/webapp-3.0/WEB-INF/bugs.tld b/test/webapp-3.0/WEB-INF/bugs.tld index 2b8c685ad..0369c24e8 100644 --- a/test/webapp-3.0/WEB-INF/bugs.tld +++ b/test/webapp-3.0/WEB-INF/bugs.tld @@ -69,7 +69,7 @@ bug49555 - org.apache.el.TesterFunctions$Inner + org.apache.el.TesterFunctions$Inner$Class java.lang.String bug49555() \ No newline at end of file -- 2.11.0