Repository: incubator-freemarker Updated Branches: refs/heads/2.3 b25782910 -> dd60aef18
(Some internal code cleanup) Project: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/commit/b185b980 Tree: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/tree/b185b980 Diff: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/diff/b185b980 Branch: refs/heads/2.3 Commit: b185b98001b10281f6c0d1e8df759cdd265714ef Parents: a4a406a Author: ddekany <ddek...@apache.org> Authored: Wed Aug 30 21:40:23 2017 +0200 Committer: ddekany <ddek...@apache.org> Committed: Wed Aug 30 21:40:23 2017 +0200 ---------------------------------------------------------------------- src/main/java/freemarker/core/Macro.java | 3 +- .../java/freemarker/ext/dom/NodeListModel.java | 5 +- .../template/DefaultIterableAdapter.java | 2 +- .../freemarker/template/DefaultListAdapter.java | 2 +- .../DefaultNonListCollectionAdapter.java | 2 +- .../DefaultUnassignableIteratorAdapter.java | 52 -------------------- .../IteratorToTemplateModelIteratorAdapter.java | 50 +++++++++++++++++++ 7 files changed, 58 insertions(+), 58 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/b185b980/src/main/java/freemarker/core/Macro.java ---------------------------------------------------------------------- diff --git a/src/main/java/freemarker/core/Macro.java b/src/main/java/freemarker/core/Macro.java index ef657ac..fdce23b 100644 --- a/src/main/java/freemarker/core/Macro.java +++ b/src/main/java/freemarker/core/Macro.java @@ -29,6 +29,7 @@ import freemarker.template.TemplateException; import freemarker.template.TemplateModel; import freemarker.template.TemplateModelException; import freemarker.template.TemplateModelIterator; +import freemarker.template.TemplateScalarModel; /** * An element representing a macro declaration. @@ -263,7 +264,7 @@ public final class Macro extends TemplateElement implements TemplateModel { public Collection getLocalVariableNames() throws TemplateModelException { HashSet result = new HashSet(); for (TemplateModelIterator it = localVars.keys().iterator(); it.hasNext(); ) { - result.add(it.next().toString()); + result.add(((TemplateScalarModel) it.next()).getAsString()); } return result; } http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/b185b980/src/main/java/freemarker/ext/dom/NodeListModel.java ---------------------------------------------------------------------- diff --git a/src/main/java/freemarker/ext/dom/NodeListModel.java b/src/main/java/freemarker/ext/dom/NodeListModel.java index a6a7534..46644d9 100644 --- a/src/main/java/freemarker/ext/dom/NodeListModel.java +++ b/src/main/java/freemarker/ext/dom/NodeListModel.java @@ -216,11 +216,12 @@ class NodeListModel extends SimpleSequence implements TemplateHashModel, _Unexpe } private Object[] newTypeErrorExplanation(String type) { + int size = size(); return new Object[] { "This XML query result can't be used as ", type, " because for that it had to contain exactly " - + "1 XML node, but it contains ", Integer.valueOf(size()), " nodes. " + + "1 XML node, but it contains ", Integer.valueOf(size), " nodes. " + "That is, the constructing XML query has found ", - isEmpty() + size == 0 ? "no matches." : "multiple matches." }; http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/b185b980/src/main/java/freemarker/template/DefaultIterableAdapter.java ---------------------------------------------------------------------- diff --git a/src/main/java/freemarker/template/DefaultIterableAdapter.java b/src/main/java/freemarker/template/DefaultIterableAdapter.java index 14aa6d1..824e2d7 100644 --- a/src/main/java/freemarker/template/DefaultIterableAdapter.java +++ b/src/main/java/freemarker/template/DefaultIterableAdapter.java @@ -68,7 +68,7 @@ public class DefaultIterableAdapter extends WrappingTemplateModel implements Tem } public TemplateModelIterator iterator() throws TemplateModelException { - return new DefaultUnassignableIteratorAdapter(iterable.iterator(), getObjectWrapper()); + return new IteratorToTemplateModelIteratorAdapter(iterable.iterator(), getObjectWrapper()); } public Object getWrappedObject() { http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/b185b980/src/main/java/freemarker/template/DefaultListAdapter.java ---------------------------------------------------------------------- diff --git a/src/main/java/freemarker/template/DefaultListAdapter.java b/src/main/java/freemarker/template/DefaultListAdapter.java index 62e7f18..3585ed8 100644 --- a/src/main/java/freemarker/template/DefaultListAdapter.java +++ b/src/main/java/freemarker/template/DefaultListAdapter.java @@ -96,7 +96,7 @@ public class DefaultListAdapter extends WrappingTemplateModel implements Templat } public TemplateModelIterator iterator() throws TemplateModelException { - return new DefaultUnassignableIteratorAdapter(list.iterator(), getObjectWrapper()); + return new IteratorToTemplateModelIteratorAdapter(list.iterator(), getObjectWrapper()); } } http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/b185b980/src/main/java/freemarker/template/DefaultNonListCollectionAdapter.java ---------------------------------------------------------------------- diff --git a/src/main/java/freemarker/template/DefaultNonListCollectionAdapter.java b/src/main/java/freemarker/template/DefaultNonListCollectionAdapter.java index 2ee9ca2..ab87cc6 100644 --- a/src/main/java/freemarker/template/DefaultNonListCollectionAdapter.java +++ b/src/main/java/freemarker/template/DefaultNonListCollectionAdapter.java @@ -70,7 +70,7 @@ public class DefaultNonListCollectionAdapter extends WrappingTemplateModel imple } public TemplateModelIterator iterator() throws TemplateModelException { - return new DefaultUnassignableIteratorAdapter(collection.iterator(), getObjectWrapper()); + return new IteratorToTemplateModelIteratorAdapter(collection.iterator(), getObjectWrapper()); } public int size() { http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/b185b980/src/main/java/freemarker/template/DefaultUnassignableIteratorAdapter.java ---------------------------------------------------------------------- diff --git a/src/main/java/freemarker/template/DefaultUnassignableIteratorAdapter.java b/src/main/java/freemarker/template/DefaultUnassignableIteratorAdapter.java deleted file mode 100644 index 80c4bc5..0000000 --- a/src/main/java/freemarker/template/DefaultUnassignableIteratorAdapter.java +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package freemarker.template; - -import java.util.Iterator; -import java.util.NoSuchElementException; - -/** - * As opposed to {@link DefaultIteratorAdapter}, this simpler {@link Iterator} adapter is used in situations where the - * {@link TemplateModelIterator} won't be assigned to FreeMarker template variables, only used internally by - * {@code #list} or custom Java code. Because of that, it doesn't have to handle the situation where the user tries to - * iterate over the same value twice. - */ -class DefaultUnassignableIteratorAdapter implements TemplateModelIterator { - - private final Iterator<?> it; - private final ObjectWrapper wrapper; - - DefaultUnassignableIteratorAdapter(Iterator<?> it, ObjectWrapper wrapper) { - this.it = it; - this.wrapper = wrapper; - } - - public TemplateModel next() throws TemplateModelException { - try { - return wrapper.wrap(it.next()); - } catch (NoSuchElementException e) { - throw new TemplateModelException("The collection has no more items.", e); - } - } - - public boolean hasNext() throws TemplateModelException { - return it.hasNext(); - } - -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/b185b980/src/main/java/freemarker/template/IteratorToTemplateModelIteratorAdapter.java ---------------------------------------------------------------------- diff --git a/src/main/java/freemarker/template/IteratorToTemplateModelIteratorAdapter.java b/src/main/java/freemarker/template/IteratorToTemplateModelIteratorAdapter.java new file mode 100644 index 0000000..6b49237 --- /dev/null +++ b/src/main/java/freemarker/template/IteratorToTemplateModelIteratorAdapter.java @@ -0,0 +1,50 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package freemarker.template; + +import java.util.Iterator; +import java.util.NoSuchElementException; + +/** + * Unlike {@link DefaultIteratorAdapter}, this doesn't adapt to some {@link TemplateModel}, but to {@link + * TemplateModelIterator}. + */ +class IteratorToTemplateModelIteratorAdapter implements TemplateModelIterator { + + private final Iterator<?> it; + private final ObjectWrapper wrapper; + + IteratorToTemplateModelIteratorAdapter(Iterator<?> it, ObjectWrapper wrapper) { + this.it = it; + this.wrapper = wrapper; + } + + public TemplateModel next() throws TemplateModelException { + try { + return wrapper.wrap(it.next()); + } catch (NoSuchElementException e) { + throw new TemplateModelException("The collection has no more items.", e); + } + } + + public boolean hasNext() throws TemplateModelException { + return it.hasNext(); + } + +} \ No newline at end of file