Author: markt
Date: Tue Oct 21 19:26:01 2014
New Revision: 1633440

URL: http://svn.apache.org/r1633440
Log:
Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=57113
Fix broken package imports in Expression Language when more than one package 
was imported and the desired class was not in the last package imported.

Modified:
    tomcat/trunk/java/javax/el/ImportHandler.java
    tomcat/trunk/test/javax/el/TestImportHandler.java
    tomcat/trunk/webapps/docs/changelog.xml

Modified: tomcat/trunk/java/javax/el/ImportHandler.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/javax/el/ImportHandler.java?rev=1633440&r1=1633439&r2=1633440&view=diff
==============================================================================
--- tomcat/trunk/java/javax/el/ImportHandler.java (original)
+++ tomcat/trunk/java/javax/el/ImportHandler.java Tue Oct 21 19:26:01 2014
@@ -143,7 +143,10 @@ public class ImportHandler {
             // (which correctly triggers an error)
             for (String p : packages) {
                 String className = p + '.' + name;
-                result = findClass(className, true);
+                Class<?> clazz = findClass(className, true);
+                if (clazz != null) {
+                    result = clazz;
+                }
             }
         }
 

Modified: tomcat/trunk/test/javax/el/TestImportHandler.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/test/javax/el/TestImportHandler.java?rev=1633440&r1=1633439&r2=1633440&view=diff
==============================================================================
--- tomcat/trunk/test/javax/el/TestImportHandler.java (original)
+++ tomcat/trunk/test/javax/el/TestImportHandler.java Tue Oct 21 19:26:01 2014
@@ -16,6 +16,8 @@
  */
 package javax.el;
 
+import java.util.ArrayList;
+
 import org.junit.Assert;
 import org.junit.Test;
 
@@ -64,6 +66,23 @@ public class TestImportHandler {
 
 
     /**
+     * Multiple package imports with a single match.
+     * https://issues.apache.org/bugzilla/show_bug.cgi?id=57113
+     */
+    @Test
+    public void testResolveClass04() {
+        ImportHandler handler = new ImportHandler();
+
+        handler.importPackage("java.util");
+        handler.importPackage("java.net");
+
+        Class<?> clazz = handler.resolveClass("ArrayList");
+
+        Assert.assertEquals(ArrayList.class, clazz);
+    }
+
+
+    /**
      * Import a valid class.
      */
     @Test

Modified: tomcat/trunk/webapps/docs/changelog.xml
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/webapps/docs/changelog.xml?rev=1633440&r1=1633439&r2=1633440&view=diff
==============================================================================
--- tomcat/trunk/webapps/docs/changelog.xml (original)
+++ tomcat/trunk/webapps/docs/changelog.xml Tue Oct 21 19:26:01 2014
@@ -191,6 +191,11 @@
         <bug>57099</bug>: Ensure that semi-colons are not permitted in JSP
         import page directives. (markt)
       </fix>
+      <fix>
+        <bug>57113</bug>: Fix broken package imports in Expression Language 
when
+        more than one package was imported and the desired class was not in the
+        last package imported. (markt)
+      </fix>
     </changelog>
   </subsection>
   <subsection name="Cluster">



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

Reply via email to