You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@freemarker.apache.org by dd...@apache.org on 2019/07/20 15:30:50 UTC

[freemarker] branch 2.3-gae updated (926f33e -> 4c41a64)

This is an automated email from the ASF dual-hosted git repository.

ddekany pushed a change to branch 2.3-gae
in repository https://gitbox.apache.org/repos/asf/freemarker.git.


    from 926f33e  (Javadoc improvements, related to LocalContext and fallbackOnNullLoopVariable)
     new 8660d28  Target value never will be a TemplateModelIterator; removed the handling of it from IntermediateStreamOperationLikeBuiltIn.
     new 4c41a64  Fixed target type isSequence logic in IntermediateStreamOperationLikeBuiltIn.

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../java/freemarker/core/BuiltInsForSequences.java |  8 +++---
 src/test/java/freemarker/core/FilterBiTest.java    | 31 ++++++++++++++++++++++
 2 files changed, 34 insertions(+), 5 deletions(-)


[freemarker] 02/02: Fixed target type isSequence logic in IntermediateStreamOperationLikeBuiltIn.

Posted by dd...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ddekany pushed a commit to branch 2.3-gae
in repository https://gitbox.apache.org/repos/asf/freemarker.git

commit 4c41a640c2db77964f8ccbf52e0a8f9bd7ed906a
Author: ddekany <dd...@apache.org>
AuthorDate: Sat Jul 20 17:16:06 2019 +0200

    Fixed target type isSequence logic in IntermediateStreamOperationLikeBuiltIn.
---
 .../java/freemarker/core/BuiltInsForSequences.java |  5 ++--
 src/test/java/freemarker/core/FilterBiTest.java    | 31 ++++++++++++++++++++++
 2 files changed, 34 insertions(+), 2 deletions(-)

diff --git a/src/main/java/freemarker/core/BuiltInsForSequences.java b/src/main/java/freemarker/core/BuiltInsForSequences.java
index d95ad50..b0cc82e 100644
--- a/src/main/java/freemarker/core/BuiltInsForSequences.java
+++ b/src/main/java/freemarker/core/BuiltInsForSequences.java
@@ -1085,8 +1085,9 @@ class BuiltInsForSequences {
                     targetIterator = isLazilyGeneratedResultEnabled()
                             ? new LazyCollectionTemplateModelIterator((TemplateCollectionModel) targetValue)
                             : ((TemplateCollectionModel) targetValue).iterator();
-                    targetIsSequence = targetValue instanceof LazilyGeneratedCollectionModel ?
-                        ((LazilyGeneratedCollectionModel) targetValue).isSequence() : false;
+                    targetIsSequence = targetValue instanceof LazilyGeneratedCollectionModel
+                            ? ((LazilyGeneratedCollectionModel) targetValue).isSequence()
+                            : targetValue instanceof TemplateSequenceModel;
                 } else if (targetValue instanceof TemplateSequenceModel) {
                     targetIterator = new LazySequenceIterator((TemplateSequenceModel) targetValue);
                     targetIsSequence = true;
diff --git a/src/test/java/freemarker/core/FilterBiTest.java b/src/test/java/freemarker/core/FilterBiTest.java
index ee16dff..a2d0649 100644
--- a/src/test/java/freemarker/core/FilterBiTest.java
+++ b/src/test/java/freemarker/core/FilterBiTest.java
@@ -28,7 +28,13 @@ import com.google.common.collect.ImmutableSet;
 
 import freemarker.template.Configuration;
 import freemarker.template.DefaultObjectWrapper;
+import freemarker.template.SimpleScalar;
+import freemarker.template.TemplateCollectionModel;
 import freemarker.template.TemplateException;
+import freemarker.template.TemplateModel;
+import freemarker.template.TemplateModelException;
+import freemarker.template.TemplateModelIterator;
+import freemarker.template.TemplateSequenceModel;
 import freemarker.test.TemplateTest;
 
 public class FilterBiTest extends TemplateTest {
@@ -145,6 +151,13 @@ public class FilterBiTest extends TemplateTest {
     }
 
     @Test
+    public void testSequenceAndCollectionTarget() throws Exception {
+        addToDataModel("xs", new SequenceAndCollection());
+        assertOutput("${xs?filter(x -> x != 'a')?join(', ')}", "b");
+        assertOutput("<#assign xs2 = xs?filter(x -> x != 'a')>${xs2?join(', ')}", "b");
+    }
+
+    @Test
     public void testNonSequenceInput() throws Exception {
         addToDataModel("coll", ImmutableSet.of("a", "b", "c"));
         assertErrorContains("${coll?filter(it -> it != 'a')[0]}", "sequence", "evaluated to a collection");
@@ -164,4 +177,22 @@ public class FilterBiTest extends TemplateTest {
         }
     }
 
+    public class SequenceAndCollection implements TemplateSequenceModel, TemplateCollectionModel {
+        public TemplateModelIterator iterator() throws TemplateModelException {
+            return new SequenceIterator(this);
+        }
+
+        public TemplateModel get(int index) throws TemplateModelException {
+            switch (index) {
+                case 0: return new SimpleScalar("a");
+                case 1: return new SimpleScalar("b");
+                default: return null;
+            }
+        }
+
+        public int size() throws TemplateModelException {
+            return 2;
+        }
+    }
+
 }


[freemarker] 01/02: Target value never will be a TemplateModelIterator; removed the handling of it from IntermediateStreamOperationLikeBuiltIn.

Posted by dd...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ddekany pushed a commit to branch 2.3-gae
in repository https://gitbox.apache.org/repos/asf/freemarker.git

commit 8660d28d8ee243751a287e310f16e9aed39f507c
Author: ddekany <dd...@apache.org>
AuthorDate: Sat Jul 20 17:15:41 2019 +0200

    Target value never will be a TemplateModelIterator; removed the handling of it from IntermediateStreamOperationLikeBuiltIn.
---
 src/main/java/freemarker/core/BuiltInsForSequences.java | 3 ---
 1 file changed, 3 deletions(-)

diff --git a/src/main/java/freemarker/core/BuiltInsForSequences.java b/src/main/java/freemarker/core/BuiltInsForSequences.java
index a232025..d95ad50 100644
--- a/src/main/java/freemarker/core/BuiltInsForSequences.java
+++ b/src/main/java/freemarker/core/BuiltInsForSequences.java
@@ -1090,9 +1090,6 @@ class BuiltInsForSequences {
                 } else if (targetValue instanceof TemplateSequenceModel) {
                     targetIterator = new LazySequenceIterator((TemplateSequenceModel) targetValue);
                     targetIsSequence = true;
-                } else if (targetValue instanceof TemplateModelIterator) {
-                    targetIterator = (TemplateModelIterator) targetValue;
-                    targetIsSequence = false;
                 } else {
                     throw new NonSequenceOrCollectionException(target, targetValue, env);
                 }