Author: sdumitriu
Date: Fri Dec 4 21:49:21 2015
New Revision: 1718042
URL: http://svn.apache.org/viewvc?rev=1718042&view=rev
Log:
VELOCITY-871: #foreach should work over any Iterable class
Done
Modified:
velocity/engine/branches/1.7.x/src/java/org/apache/velocity/util/introspection/UberspectImpl.java
velocity/engine/branches/1.7.x/velocity-engine-core/src/test/java/org/apache/velocity/test/util/introspection/UberspectImplTestCase.java
Modified:
velocity/engine/branches/1.7.x/src/java/org/apache/velocity/util/introspection/UberspectImpl.java
URL:
http://svn.apache.org/viewvc/velocity/engine/branches/1.7.x/src/java/org/apache/velocity/util/introspection/UberspectImpl.java?rev=1718042&r1=1718041&r2=1718042&view=diff
==============================================================================
---
velocity/engine/branches/1.7.x/src/java/org/apache/velocity/util/introspection/UberspectImpl.java
(original)
+++
velocity/engine/branches/1.7.x/src/java/org/apache/velocity/util/introspection/UberspectImpl.java
Fri Dec 4 21:49:21 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.7.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.7.x/velocity-engine-core/src/test/java/org/apache/velocity/test/util/introspection/UberspectImplTestCase.java?rev=1718042&r1=1718041&r2=1718042&view=diff
==============================================================================
---
velocity/engine/branches/1.7.x/velocity-engine-core/src/test/java/org/apache/velocity/test/util/introspection/UberspectImplTestCase.java
(original)
+++
velocity/engine/branches/1.7.x/velocity-engine-core/src/test/java/org/apache/velocity/test/util/introspection/UberspectImplTestCase.java
Fri Dec 4 21:49:21 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();
}
}