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 2013/07/12 15:25:04 UTC
svn commit: r1502552 - in /tomcat/trunk: java/javax/el/ELProcessor.java
test/javax/el/TestELProcessor.java
Author: markt
Date: Fri Jul 12 13:25:04 2013
New Revision: 1502552
URL: http://svn.apache.org/r1502552
Log:
Add some more unit tests for the EL processor and make sure it uses the import information it has to hand to resolve class names.
Modified:
tomcat/trunk/java/javax/el/ELProcessor.java
tomcat/trunk/test/javax/el/TestELProcessor.java
Modified: tomcat/trunk/java/javax/el/ELProcessor.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/javax/el/ELProcessor.java?rev=1502552&r1=1502551&r2=1502552&view=diff
==============================================================================
--- tomcat/trunk/java/javax/el/ELProcessor.java (original)
+++ tomcat/trunk/java/javax/el/ELProcessor.java Fri Jul 12 13:25:04 2013
@@ -74,7 +74,12 @@ public class ELProcessor {
context, "elProcessor.defineFunctionNullParams"));
}
- Class<?> clazz = Class.forName(className);
+ // Check the imports
+ Class<?> clazz = context.getImportHandler().resolveClass(className);
+
+ if (clazz == null) {
+ clazz = Class.forName(className);
+ }
if (!Modifier.isPublic(clazz.getModifiers())) {
throw new ClassNotFoundException(Util.message(context,
Modified: tomcat/trunk/test/javax/el/TestELProcessor.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/test/javax/el/TestELProcessor.java?rev=1502552&r1=1502551&r2=1502552&view=diff
==============================================================================
--- tomcat/trunk/test/javax/el/TestELProcessor.java (original)
+++ tomcat/trunk/test/javax/el/TestELProcessor.java Fri Jul 12 13:25:04 2013
@@ -27,4 +27,37 @@ public class TestELProcessor {
elp.defineBean("bean01", new TesterBean("name01"));
Assert.assertEquals("name01", elp.eval("bean01.name"));
}
+
+
+ @Test(expected=ELException.class)
+ public void testEval01() {
+ ELProcessor elp = new ELProcessor();
+ elp.eval("${1+1}");
+ }
+
+
+ @Test(expected=ELException.class)
+ public void testEval02() {
+ ELProcessor elp = new ELProcessor();
+ elp.eval("#{1+1}");
+ }
+
+
+ @Test
+ public void testDefineFunctionMethod01() throws Exception {
+ ELProcessor elp = new ELProcessor();
+ elp.defineFunction("fn", "toInt",
+ Integer.class.getMethod("valueOf", String.class));
+ Assert.assertEquals(Integer.valueOf(1), elp.eval("fn:toInt(1)"));
+ }
+
+
+ @Test
+ public void testDefineFunctionName01() throws Exception {
+ ELProcessor elp = new ELProcessor();
+ // java.lang should be automatically imported so no need for full class
+ // name
+ elp.defineFunction("fn", "toInt", "Integer", "valueOf");
+ Assert.assertEquals(Integer.valueOf(1), elp.eval("fn:toInt(1)"));
+ }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org
Re: svn commit: r1502552 - in /tomcat/trunk: java/javax/el/ELProcessor.java
test/javax/el/TestELProcessor.java
Posted by Mark Thomas <ma...@apache.org>.
On 13/07/2013 00:49, Konstantin Kolinko wrote:
> 2013/7/12 <ma...@apache.org>:
>> Author: markt
>> Date: Fri Jul 12 13:25:04 2013
>> New Revision: 1502552
>>
>> URL: http://svn.apache.org/r1502552
>> Log:
>> Add some more unit tests for the EL processor and make sure it uses the import information it has to hand to resolve class names.
>>
>> Modified:
>> tomcat/trunk/java/javax/el/ELProcessor.java
>> tomcat/trunk/test/javax/el/TestELProcessor.java
>>
>> Modified: tomcat/trunk/java/javax/el/ELProcessor.java
>> URL: http://svn.apache.org/viewvc/tomcat/trunk/java/javax/el/ELProcessor.java?rev=1502552&r1=1502551&r2=1502552&view=diff
>> ==============================================================================
>> --- tomcat/trunk/java/javax/el/ELProcessor.java (original)
>> +++ tomcat/trunk/java/javax/el/ELProcessor.java Fri Jul 12 13:25:04 2013
>> @@ -74,7 +74,12 @@ public class ELProcessor {
>> context, "elProcessor.defineFunctionNullParams"));
>> }
>>
>> - Class<?> clazz = Class.forName(className);
>> + // Check the imports
>> + Class<?> clazz = context.getImportHandler().resolveClass(className);
>> +
>> + if (clazz == null) {
>> + clazz = Class.forName(className);
>> + }
>
> Is it supposed to be able to load classes that belong to a web application?
It is.
> If so, then you need TCCL here.
Fixed. Thanks.
Mark
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org
Re: svn commit: r1502552 - in /tomcat/trunk: java/javax/el/ELProcessor.java
test/javax/el/TestELProcessor.java
Posted by Konstantin Kolinko <kn...@gmail.com>.
2013/7/12 <ma...@apache.org>:
> Author: markt
> Date: Fri Jul 12 13:25:04 2013
> New Revision: 1502552
>
> URL: http://svn.apache.org/r1502552
> Log:
> Add some more unit tests for the EL processor and make sure it uses the import information it has to hand to resolve class names.
>
> Modified:
> tomcat/trunk/java/javax/el/ELProcessor.java
> tomcat/trunk/test/javax/el/TestELProcessor.java
>
> Modified: tomcat/trunk/java/javax/el/ELProcessor.java
> URL: http://svn.apache.org/viewvc/tomcat/trunk/java/javax/el/ELProcessor.java?rev=1502552&r1=1502551&r2=1502552&view=diff
> ==============================================================================
> --- tomcat/trunk/java/javax/el/ELProcessor.java (original)
> +++ tomcat/trunk/java/javax/el/ELProcessor.java Fri Jul 12 13:25:04 2013
> @@ -74,7 +74,12 @@ public class ELProcessor {
> context, "elProcessor.defineFunctionNullParams"));
> }
>
> - Class<?> clazz = Class.forName(className);
> + // Check the imports
> + Class<?> clazz = context.getImportHandler().resolveClass(className);
> +
> + if (clazz == null) {
> + clazz = Class.forName(className);
> + }
Is it supposed to be able to load classes that belong to a web application?
If so, then you need TCCL here.
Class.forName(className) will only load classes from Common
classloader (where javax.el.ELProcessor is loaded from).
Best regards,
Konstantin Kolinko
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org