Modified: 
commons/proper/jexl/branches/2.0/src/java/org/apache/commons/jexl/util/introspection/UberspectImpl.java
URL: 
http://svn.apache.org/viewvc/commons/proper/jexl/branches/2.0/src/java/org/apache/commons/jexl/util/introspection/UberspectImpl.java?rev=794976&r1=794975&r2=794976&view=diff
==============================================================================
--- 
commons/proper/jexl/branches/2.0/src/java/org/apache/commons/jexl/util/introspection/UberspectImpl.java
 (original)
+++ 
commons/proper/jexl/branches/2.0/src/java/org/apache/commons/jexl/util/introspection/UberspectImpl.java
 Fri Jul 17 06:15:35 2009
@@ -52,7 +52,7 @@
     /*
      * static signature for method(object,object)
      */
-    static final Class[] OBJECT_OBJECT = { Object.class, Object.class };
+    static final Class<?>[] OBJECT_OBJECT = { Object.class, Object.class };
     /**
      * Our runtime logger.
      */
@@ -87,35 +87,35 @@
     /**
      * {...@inheritdoc}
      */
-    public Iterator getIterator(Object obj, Info i) {
+    public Iterator<?> getIterator(Object obj, Info i) {
         if (obj.getClass().isArray()) {
             return new ArrayIterator(obj);
-        } else if (obj instanceof Collection) {
-            return ((Collection) obj).iterator();
-        } else if (obj instanceof Map) {
-            return ((Map) obj).values().iterator();
-        } else if (obj instanceof Iterator) {
+        } else if (obj instanceof Collection<?>) {
+            return ((Collection<?>) obj).iterator();
+        } else if (obj instanceof Map<?,?>) {
+            return ((Map<?,?>) obj).values().iterator();
+        } else if (obj instanceof Iterator<?>) {
                 rlog.warn("Warning! The iterative " + " is an Iterator in the 
#foreach() loop at [" + i.getLine() + ","
                     + i.getColumn() + "]" + " in template " + 
i.getTemplateName() + ". Because it's not resetable,"
                     + " if used in more than once, this may lead to" + " 
unexpected results.");
 
-            return ((Iterator) obj);
-        } else if (obj instanceof Enumeration) {
+            return ((Iterator<?>) obj);
+        } else if (obj instanceof Enumeration<?>) {
                 rlog.warn("Warning! The iterative " + " is an Enumeration in 
the #foreach() loop at [" + i.getLine() + ","
                     + i.getColumn() + "]" + " in template " + 
i.getTemplateName() + ". Because it's not resetable,"
                     + " if used in more than once, this may lead to" + " 
unexpected results.");
 
-            return new EnumerationIterator((Enumeration) obj);
+            return new EnumerationIterator((Enumeration<?>) obj);
         } else {
             // look for an iterator() method to support the JDK5 Iterable
             // interface or any user tools/DTOs that want to work in
             // foreach without implementing the Collection interface
-            Class type = obj.getClass();
+            Class<?> type = obj.getClass();
             try {
-                Method iter = type.getMethod("iterator", (Class[]) null);
-                Class returns = iter.getReturnType();
+                Method iter = type.getMethod("iterator", (Class<?>[]) null);
+                Class<?> returns = iter.getReturnType();
                 if (Iterator.class.isAssignableFrom(returns)) {
-                    return (Iterator) iter.invoke(obj, (Object[])null);
+                    return (Iterator<?>) iter.invoke(obj, (Object[])null);
                 } else {
                     rlog.error("iterator() method of reference in #foreach 
loop at "
                             + i + " does not return a true Iterator.");
@@ -158,8 +158,8 @@
                 // before invoking the method
                 return new VelMethodImpl(m, true);
             }
-        } else if (obj instanceof Class) {
-            m = introspector.getMethod((Class) obj, methodName, args);
+        } else if (obj instanceof Class<?>) {
+            m = introspector.getMethod((Class<?>) obj, methodName, args);
         }
 
         return (m == null) ? null : new VelMethodImpl(m);
@@ -171,7 +171,7 @@
     public VelPropertyGet getPropertyGet(Object obj, String identifier, Info 
i) {
         AbstractExecutor executor;
 
-        Class claz = obj.getClass();
+        Class<?> claz = obj.getClass();
 
         /*
          * first try for a getFoo() type of property (also getfoo() )
@@ -208,7 +208,7 @@
      * {...@inheritdoc}
      */
     public VelPropertySet getPropertySet(Object obj, String identifier, Object 
arg, Info i) {
-        Class claz = obj.getClass();
+        Class<?> claz = obj.getClass();
 
         VelMethod vm = null;
         try {
@@ -296,9 +296,9 @@
          */
         public Object invoke(Object o, Object[] params) throws Exception {
             if (isVarArg()) {
-                Class[] formal = method.getParameterTypes();
+                Class<?>[] formal = method.getParameterTypes();
                 int index = formal.length - 1;
-                Class type = formal[index].getComponentType();
+                Class<?> type = formal[index].getComponentType();
                 if (params.length >= index) {
                     params = handleVarArg(type, index, params);
                 }
@@ -326,11 +326,11 @@
          */
         public boolean isVarArg() {
             if (isVarArg == null) {
-                Class[] formal = method.getParameterTypes();
+                Class<?>[] formal = method.getParameterTypes();
                 if (formal == null || formal.length == 0) {
                     this.isVarArg = Boolean.FALSE;
                 } else {
-                    Class last = formal[formal.length - 1];
+                    Class<?> last = formal[formal.length - 1];
                     // if the last arg is an array, then
                     // we consider this a varargs method
                     this.isVarArg = Boolean.valueOf(last.isArray());
@@ -349,7 +349,7 @@
          * @return The actual parameters adjusted for the varargs in order
          * to fit the method declaration.
          */
-        private Object[] handleVarArg(Class type, int index, Object[] actual) {
+        private Object[] handleVarArg(Class<?> type, int index, Object[] 
actual) {
             // if no values are being passed into the vararg
             if (actual.length == index) {
                 // create an empty array of the expected type
@@ -404,7 +404,7 @@
         /**
          * {...@inheritdoc}
          */
-        public Class getReturnType() {
+        public Class<?> getReturnType() {
             return method.getReturnType();
         }
     } // CSON: VisibilityModifier
@@ -515,4 +515,4 @@
         }
 
     }
-}
+}
\ No newline at end of file

Modified: 
commons/proper/jexl/branches/2.0/src/java/org/apache/commons/jexl/util/introspection/VelMethod.java
URL: 
http://svn.apache.org/viewvc/commons/proper/jexl/branches/2.0/src/java/org/apache/commons/jexl/util/introspection/VelMethod.java?rev=794976&r1=794975&r2=794976&view=diff
==============================================================================
--- 
commons/proper/jexl/branches/2.0/src/java/org/apache/commons/jexl/util/introspection/VelMethod.java
 (original)
+++ 
commons/proper/jexl/branches/2.0/src/java/org/apache/commons/jexl/util/introspection/VelMethod.java
 Fri Jul 17 06:15:35 2009
@@ -57,5 +57,5 @@
      * returns the return type of the method invoked.
      * @return return type
      */
-    Class getReturnType();
-}
+    Class<?> getReturnType();
+}
\ No newline at end of file

Modified: 
commons/proper/jexl/branches/2.0/src/test/org/apache/commons/jexl/ArithmeticTest.java
URL: 
http://svn.apache.org/viewvc/commons/proper/jexl/branches/2.0/src/test/org/apache/commons/jexl/ArithmeticTest.java?rev=794976&r1=794975&r2=794976&view=diff
==============================================================================
--- 
commons/proper/jexl/branches/2.0/src/test/org/apache/commons/jexl/ArithmeticTest.java
 (original)
+++ 
commons/proper/jexl/branches/2.0/src/test/org/apache/commons/jexl/ArithmeticTest.java
 Fri Jul 17 06:15:35 2009
@@ -125,7 +125,7 @@
         Map vars = context.getVars();
         vars.put("aByte", new Byte((byte) 1));
         vars.put("aShort", new Short((short) 2));
-        vars.put("anInteger", new Integer(3));
+        vars.put("aInteger", new Integer(3));
         vars.put("aLong", new Long(4));
         vars.put("aFloat", new Float(5.5));
         vars.put("aDouble", new Double(6.6));
@@ -151,9 +151,10 @@
         final int PERMS = tnames.length * tnames.length;
 
         JexlEngine jexl = new JexlEngine();
+        jexl.setSilent(false);
         // for non-silent, silent...
         for (int s = 0; s < 2; ++s) {
-            jexl.setSilent(s != 0);
+            jexl.setLenient(s == 0);
             int zthrow = 0;
             int zeval = 0;
             // for vars of all types...
@@ -178,13 +179,13 @@
                     }
                 }
             }
-            if (!jexl.isSilent())
-                assertTrue("All expressions should have thrown " + zthrow,
+            if (!jexl.isLenient())
+                assertTrue("All expressions should have thrown " + zthrow + 
"/" + PERMS,
                         zthrow == PERMS);
             else
-                assertTrue("All expressions should have zeroed" + zeval,
+                assertTrue("All expressions should have zeroed " + zeval + "/" 
+ PERMS,
                         zeval == PERMS);
         }
     }
 
-}
+}
\ No newline at end of file

Modified: 
commons/proper/jexl/branches/2.0/src/test/org/apache/commons/jexl/ForEachTest.java
URL: 
http://svn.apache.org/viewvc/commons/proper/jexl/branches/2.0/src/test/org/apache/commons/jexl/ForEachTest.java?rev=794976&r1=794975&r2=794976&view=diff
==============================================================================
--- 
commons/proper/jexl/branches/2.0/src/test/org/apache/commons/jexl/ForEachTest.java
 (original)
+++ 
commons/proper/jexl/branches/2.0/src/test/org/apache/commons/jexl/ForEachTest.java
 Fri Jul 17 06:15:35 2009
@@ -122,4 +122,8 @@
         Object o = e.evaluate(jc);
         assertEquals("Result is not last evaluated expression", "brie", o);
     }
-}
+
+    public static void main(String[] args) throws Exception {
+        new ForEachTest("").testForEachWithEmptyStatement();
+    }
+}
\ No newline at end of file

Modified: 
commons/proper/jexl/branches/2.0/src/test/org/apache/commons/jexl/IssuesTest.java
URL: 
http://svn.apache.org/viewvc/commons/proper/jexl/branches/2.0/src/test/org/apache/commons/jexl/IssuesTest.java?rev=794976&r1=794975&r2=794976&view=diff
==============================================================================
--- 
commons/proper/jexl/branches/2.0/src/test/org/apache/commons/jexl/IssuesTest.java
 (original)
+++ 
commons/proper/jexl/branches/2.0/src/test/org/apache/commons/jexl/IssuesTest.java
 Fri Jul 17 06:15:35 2009
@@ -24,17 +24,18 @@
  */
 public class IssuesTest  extends TestCase {
 
-    // JEXL-52: can be implemented by deriving Interpreter.{g,s}etAttribute
-    // JEXL-50: can be implemented through a namespace:function or through 
JexlArithmetic derivation
-
+    public void setUp() throws Exception {
+        // ensure jul logging is only error to avoid warning in silent mode
+        
java.util.logging.Logger.getLogger(JexlEngine.class.getName()).setLevel(java.util.logging.Level.SEVERE);
+    }
+    
     // JEXL-49: blocks not parsed (fixed)
     public void test49() throws Exception {
         JexlContext ctxt = JexlHelper.createContext();
-        Map vars = ctxt.getVars();
-
         String stmt = "{a = 'b'; c = 'd';}";
         Script expr = ScriptFactory.createScript(stmt);
         Object value = expr.execute(ctxt);
+        Map vars = ctxt.getVars();
         assertTrue("JEXL-49 is not fixed", vars.get("a").equals("b") && 
vars.get("c").equals("d"));
     }
 
@@ -42,11 +43,9 @@
     // JEXL-48: bad assignment detection
      public static class Another {
         private Boolean foo = true;
-
         public Boolean foo() {
             return foo;
         }
-
         public int goo() {
             return 100;
         }
@@ -54,11 +53,9 @@
 
      public static class Foo {
         private Another inner;
-
         Foo() {
             inner = new Another();
         }
-
         public Another getInner() {
             return inner;
         }
@@ -82,8 +79,8 @@
         }
     }
 
-    // JEXL-47: C style comments (single & multi line) (fixed)
-    // JEXL-44: comments dont allow double quotes (fixed)
+    // JEXL-47: C style comments (single & multi line) (fixed in Parser.jjt)
+    // JEXL-44: comments dont allow double quotes (fixed in Parser.jjt)
     public void test47() throws Exception {
         JexlEngine jexl = new JexlEngine();
         // ensure errors will throw
@@ -103,10 +100,8 @@
         assertFalse("should be false", (Boolean) value);
     }
 
-    // JEXL-46: regexp syntax; should we really add more syntactic elements?
-    // JEXL-45: unhandled division by zero (fixed see ArithmeticTest)
-
-    // JEXL-42: NullPointerException evaluating an expression (fixed)
+    // JEXL-42: NullPointerException evaluating an expression
+    // fixed in JexlArithmetic by allowing add to deal with string, null
     public void test42() throws Exception {
         JexlEngine jexl = new JexlEngine();
         UnifiedJEXL uel = new UnifiedJEXL(jexl);
@@ -120,8 +115,75 @@
         assertTrue("should be ok", "ok".equals(value));
     }
 
+    // JEXL-40: failed to discover all methods (non public class implements 
public method)
+    // fixed in ClassMap by taking newer version of populateCache from Velocity
+    public static abstract class Base {
+      public abstract boolean foo();
+    }
+
+    class Derived extends Base {
+      public boolean foo() {
+          return true;
+      }
+    }
+
+    public void test40() throws Exception {
+        JexlEngine jexl = new JexlEngine();
+        // ensure errors will throw
+        jexl.setSilent(false);
+        JexlContext ctxt = JexlHelper.createContext();
+        ctxt.getVars().put("derived", new Derived() );
+
+        Expression expr = jexl.createExpression( "derived.foo()" );
+        Object value = expr.evaluate(ctxt);
+        assertTrue("should be true", (Boolean) value);
+    }
+
+    // JEXL-52: can be implemented by deriving Interpreter.{g,s}etAttribute; 
wontfix
+    // JEXL-50: can be implemented through a namespace:function or through 
JexlArithmetic derivation - wontfix
+
+    // JEXL-46: regexp syntax; should we really add more syntactic elements? - 
later/vote?
+    // JEXL-45: unhandled division by zero; already fixed in trunk
+
+    // JEXL-35: final API requirements; fixed in trunk ?
+    // JEXL-32: BigDecimal values are treated as Long values which results in 
loss of precision; no longer affects 2.0 // Dion
+    // JEXL-21: operator overloading / hooks on operator processing (wontfix, 
derive JexlArithmetic)
+    // JEXL-20: checkstyle
+    // JEXL-3: static method resolution; fixed in trunk
+    // JEXL-3: change to JexlContext (setVar, getVar) - later, watch out for 
JEXL-10, differentiate null versus undefined?
+
+    // JEXL-10: Make possible checking for unresolved variables
+    // JEXL-11: Don't make null convertible into anything
+    public void test11() throws Exception {
+        JexlEngine jexl = new JexlEngine();
+        // ensure errors will throw
+        jexl.setSilent(false);
+        jexl.setLenient(false);
+        JexlContext ctxt = JexlHelper.createContext();
+        ctxt.getVars().put("a", null );
+
+        String[] exprs = {
+            "10 + null",
+            "a - 10",
+            "b * 10",
+            "a % b",
+            "1000 / a"
+        };
+        for(int e = 0; e < exprs.length; ++e) {
+            try {
+                Expression expr = jexl.createExpression( exprs[e]);
+                Object value = expr.evaluate(ctxt);
+                fail("Should have failed due to null argument");
+            }
+            catch(JexlException xjexl) {
+                // expected
+                String msg = xjexl.toString();
+                String xmsg = msg;
+            }
+        }
+    }
     public static void main(String[] args) throws Exception {
-        new IssuesTest().test42();
+        new IssuesTest().test11();
     }
 
-}
+}
\ No newline at end of file

Modified: 
commons/proper/jexl/branches/2.0/src/test/org/apache/commons/jexl/JexlTest.java
URL: 
http://svn.apache.org/viewvc/commons/proper/jexl/branches/2.0/src/test/org/apache/commons/jexl/JexlTest.java?rev=794976&r1=794975&r2=794976&view=diff
==============================================================================
--- 
commons/proper/jexl/branches/2.0/src/test/org/apache/commons/jexl/JexlTest.java 
(original)
+++ 
commons/proper/jexl/branches/2.0/src/test/org/apache/commons/jexl/JexlTest.java 
Fri Jul 17 06:15:35 2009
@@ -551,7 +551,7 @@
 
         assertExpression(jc, "foo.substring(2,4)", "cd");
         assertExpression(jc, "foo.charAt(2)", new Character('c'));
-            assertExpression(jc, "foo.charAt(-2)", null);
+        assertExpression(jc, "foo.charAt(-2)", null);
 
     }
 
@@ -749,4 +749,4 @@
         jt.testEmpty();
     }
 
-}
+}
\ No newline at end of file

Modified: 
commons/proper/jexl/branches/2.0/src/test/org/apache/commons/jexl/UnifiedJEXLTest.java
URL: 
http://svn.apache.org/viewvc/commons/proper/jexl/branches/2.0/src/test/org/apache/commons/jexl/UnifiedJEXLTest.java?rev=794976&r1=794975&r2=794976&view=diff
==============================================================================
--- 
commons/proper/jexl/branches/2.0/src/test/org/apache/commons/jexl/UnifiedJEXLTest.java
 (original)
+++ 
commons/proper/jexl/branches/2.0/src/test/org/apache/commons/jexl/UnifiedJEXLTest.java
 Fri Jul 17 06:15:35 2009
@@ -23,10 +23,17 @@
 public class UnifiedJEXLTest extends TestCase {
     static JexlEngine JEXL = new JexlEngine();
     static {
+        JEXL.setLenient(false);
         JEXL.setSilent(false);
+        JEXL.setCache(128);
     }
     static UnifiedJEXL EL = new UnifiedJEXL(JEXL);
     
+    public void setUp() throws Exception {
+        // ensure jul logging is only error
+        
java.util.logging.Logger.getLogger(JexlEngine.class.getName()).setLevel(java.util.logging.Level.SEVERE);
+    }
+    
     public static class Froboz {
         int value;
         public Froboz(int v) {
@@ -115,14 +122,14 @@
 
     public void testImmediate() throws Exception {
         UnifiedJEXL.Expression expr = EL.parse("${'Hello ' + 'World!'}");
-        JexlContext jc = JexlHelper.createContext();
+        JexlContext jc = null;
         Object o = expr.evaluate(jc);
         assertEquals("Hello World!", o);
     }
 
     public void testDeferred() throws Exception {
         UnifiedJEXL.Expression expr = EL.parse("#{'world'}");
-        JexlContext jc = JexlHelper.createContext();
+        JexlContext jc = null;
         Object o = expr.evaluate(jc);
         assertEquals("world", o);
     }
@@ -146,6 +153,6 @@
  
     public static void main(String[] args) throws Exception {
         //new UnifiedELTest("debug").testClassHash();
-        new UnifiedJEXLTest("debug").testCharAtBug();
+        new UnifiedJEXLTest("debug").testAssign();
     }
-}
+}
\ No newline at end of file


Reply via email to