You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by he...@apache.org on 2017/10/27 15:11:38 UTC
svn commit: r1813542 - in /commons/proper/jexl/trunk/src:
main/java/org/apache/commons/jexl3/internal/Interpreter.java
test/java/org/apache/commons/jexl3/AntishCallTest.java
Author: henrib
Date: Fri Oct 27 15:11:38 2017
New Revision: 1813542
URL: http://svn.apache.org/viewvc?rev=1813542&view=rev
Log:
JEXL-240:
Reverting to not considering class objects as functor (by default).
Modified:
commons/proper/jexl/trunk/src/main/java/org/apache/commons/jexl3/internal/Interpreter.java
commons/proper/jexl/trunk/src/test/java/org/apache/commons/jexl3/AntishCallTest.java
Modified: commons/proper/jexl/trunk/src/main/java/org/apache/commons/jexl3/internal/Interpreter.java
URL: http://svn.apache.org/viewvc/commons/proper/jexl/trunk/src/main/java/org/apache/commons/jexl3/internal/Interpreter.java?rev=1813542&r1=1813541&r2=1813542&view=diff
==============================================================================
--- commons/proper/jexl/trunk/src/main/java/org/apache/commons/jexl3/internal/Interpreter.java (original)
+++ commons/proper/jexl/trunk/src/main/java/org/apache/commons/jexl3/internal/Interpreter.java Fri Oct 27 15:11:38 2017
@@ -1602,12 +1602,6 @@ public class Interpreter extends Interpr
if (functor instanceof JexlMethod) {
return ((JexlMethod) functor).invoke(target, argv);
}
- if (functor instanceof Class<?>) {
- vm = uberspect.getConstructor(functor, argv);
- if (vm != null) {
- return vm.invoke(functor, argv);
- }
- }
// a generic callable
mname = "call";
vm = uberspect.getMethod(functor, mname, argv);
Modified: commons/proper/jexl/trunk/src/test/java/org/apache/commons/jexl3/AntishCallTest.java
URL: http://svn.apache.org/viewvc/commons/proper/jexl/trunk/src/test/java/org/apache/commons/jexl3/AntishCallTest.java?rev=1813542&r1=1813541&r2=1813542&view=diff
==============================================================================
--- commons/proper/jexl/trunk/src/test/java/org/apache/commons/jexl3/AntishCallTest.java (original)
+++ commons/proper/jexl/trunk/src/test/java/org/apache/commons/jexl3/AntishCallTest.java Fri Oct 27 15:11:38 2017
@@ -36,11 +36,12 @@ public class AntishCallTest extends Jexl
* Wraps a class.
*/
public class ClassReference {
- Class<?> clazz;
+ final Class<?> clazz;
ClassReference(Class<?> c) {
this.clazz = c;
}
}
+
/**
* Considers any call using a class reference as functor as a call to its constructor.
* <p>Note that before 3.2, a class was not considered a functor.
@@ -77,6 +78,10 @@ public class AntishCallTest extends Jexl
public Object call(ClassReference clazz, Object... args) {
return callConstructor(null, clazz, args);
}
+
+ public Object call(Class<?> clazz, Object... args) {
+ return callConstructor(null, clazz, args);
+ }
}
/**
@@ -118,25 +123,17 @@ public class AntishCallTest extends Jexl
public Object call(ClassReference clazz, Object... args) {
return callConstructor(engine, clazz, args);
}
- }
- @Test
- public void testAntishAContextVar() throws Exception {
- JexlEngine jexl = new JexlBuilder().cache(512).strict(true).silent(false).create();
- Map<String,Object> lmap = new TreeMap<String,Object>();
- JexlContext jc = new CallSupportContext(lmap).engine(jexl);
- runTestCall(jexl, jc);
- lmap.put("java.math.BigInteger", new ClassReference(java.math.BigInteger.class));
- runTestCall(jexl, jc);
- lmap.remove("java.math.BigInteger");
- runTestCall(jexl, jc);
+ public Object call(Class<?> clazz, Object... args) {
+ return callConstructor(engine, clazz, args);
+ }
}
@Test
- public void testAntishAContextVar2() throws Exception {
+ public void testAntishContextVar() throws Exception {
JexlEngine jexl = new JexlBuilder().cache(512).strict(true).silent(false).create();
Map<String,Object> lmap = new TreeMap<String,Object>();
- JexlContext jc = new CallSupportContext(lmap);
+ JexlContext jc = new CallSupportContext(lmap).engine(jexl);
runTestCall(jexl, jc);
lmap.put("java.math.BigInteger", new ClassReference(java.math.BigInteger.class));
runTestCall(jexl, jc);
@@ -165,13 +162,13 @@ public class AntishCallTest extends Jexl
void runTestCall(JexlEngine jexl, JexlContext jc) throws Exception {
JexlScript check1 = jexl.createScript("var x = java.math.BigInteger; x('1234')");
- JexlScript check2 = jexl.createScript("java.math.BigInteger('1234')");
+ JexlScript check2 = jexl.createScript("java.math.BigInteger('4321')");
Object o1 = check1.execute(jc);
Assert.assertEquals("Result is not 1234", new java.math.BigInteger("1234"), o1);
Object o2 = check2.execute(jc);
- Assert.assertEquals("Result is not 1234", new java.math.BigInteger("1234"), o2);
+ Assert.assertEquals("Result is not 4321", new java.math.BigInteger("4321"), o2);
}
}
\ No newline at end of file