You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@velocity.apache.org by sd...@apache.org on 2015/12/04 22:41:48 UTC

svn commit: r1718040 - in /velocity/engine/branches/1.x: src/java/org/apache/velocity/util/introspection/UberspectImpl.java velocity-engine-core/src/test/java/org/apache/velocity/test/util/introspection/UberspectImplTestCase.java

Author: sdumitriu
Date: Fri Dec  4 21:41:48 2015
New Revision: 1718040

URL: http://svn.apache.org/viewvc?rev=1718040&view=rev
Log:
VELOCITY-871: #foreach should work over any Iterable class
Done

Modified:
    velocity/engine/branches/1.x/src/java/org/apache/velocity/util/introspection/UberspectImpl.java
    velocity/engine/branches/1.x/velocity-engine-core/src/test/java/org/apache/velocity/test/util/introspection/UberspectImplTestCase.java

Modified: velocity/engine/branches/1.x/src/java/org/apache/velocity/util/introspection/UberspectImpl.java
URL: http://svn.apache.org/viewvc/velocity/engine/branches/1.x/src/java/org/apache/velocity/util/introspection/UberspectImpl.java?rev=1718040&r1=1718039&r2=1718040&view=diff
==============================================================================
--- velocity/engine/branches/1.x/src/java/org/apache/velocity/util/introspection/UberspectImpl.java (original)
+++ velocity/engine/branches/1.x/src/java/org/apache/velocity/util/introspection/UberspectImpl.java Fri Dec  4 21:41:48 2015
@@ -111,9 +111,9 @@ public class UberspectImpl implements Ub
         {
             return new ArrayIterator(obj);
         }
-        else if (obj instanceof Collection)
+        else if (obj instanceof Iterable)
         {
-            return ((Collection) obj).iterator();
+            return ((Iterable) obj).iterator();
         }
         else if (obj instanceof Map)
         {

Modified: velocity/engine/branches/1.x/velocity-engine-core/src/test/java/org/apache/velocity/test/util/introspection/UberspectImplTestCase.java
URL: http://svn.apache.org/viewvc/velocity/engine/branches/1.x/velocity-engine-core/src/test/java/org/apache/velocity/test/util/introspection/UberspectImplTestCase.java?rev=1718040&r1=1718039&r2=1718040&view=diff
==============================================================================
--- velocity/engine/branches/1.x/velocity-engine-core/src/test/java/org/apache/velocity/test/util/introspection/UberspectImplTestCase.java (original)
+++ velocity/engine/branches/1.x/velocity-engine-core/src/test/java/org/apache/velocity/test/util/introspection/UberspectImplTestCase.java Fri Dec  4 21:41:48 2015
@@ -85,6 +85,16 @@ public class UberspectImplTestCase exten
         Velocity.evaluate(context, writer, "test", "#foreach($i in $publicMethod)$i#end");
         assertEquals(writer.toString(), "123");
     }
+    
+    public void testIterableForeach()
+    {
+        VelocityContext context = new VelocityContext();
+        context.put("iterable", new SomeIterable());
+        StringWriter writer = new StringWriter();
+
+        Velocity.evaluate(context, writer, "test", "#foreach($i in $iterable)$i#end");
+        assertEquals(writer.toString(), "123");
+    }
 
     private class PrivateClass
     {
@@ -106,6 +116,14 @@ public class UberspectImplTestCase exten
     {
         public Iterator iterator()
         {
+            return Arrays.asList("1", "2", "3").iterator();
+        }
+    }
+
+    public class SomeIterable implements Iterable
+    {
+        public Iterator iterator()
+        {
             return Arrays.asList("1", "2", "3").iterator();
         }
     }