incubator-freemarker git commit: FREEMARKER-55: move to ArgumentArrayLayout#getPredefinedNamedArgumentsEndIndex()
Repository: incubator-freemarker Updated Branches: refs/heads/3 7887a9208 -> 9bb3da48c FREEMARKER-55: move to ArgumentArrayLayout#getPredefinedNamedArgumentsEndIndex() Project: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/commit/9bb3da48 Tree: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/tree/9bb3da48 Diff: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/diff/9bb3da48 Branch: refs/heads/3 Commit: 9bb3da48c6779b38ddfd4a01e9f1942485511a7e Parents: 7887a92 Author: Woonsan KoAuthored: Fri Jan 5 23:33:59 2018 -0500 Committer: Woonsan Ko Committed: Fri Jan 5 23:33:59 2018 -0500 -- .../freemarker/core/model/ArgumentArrayLayout.java| 8 .../apache/freemarker/core/util/CallableUtils.java| 14 -- .../AbstractHtmlElementTemplateDirectiveModel.java| 4 ++-- ...bstractHtmlInputElementTemplateDirectiveModel.java | 4 ++-- .../spring/model/form/FormTemplateDirectiveModel.java | 4 ++-- .../model/form/InputTemplateDirectiveModel.java | 4 ++-- 6 files changed, 16 insertions(+), 22 deletions(-) -- http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/9bb3da48/freemarker-core/src/main/java/org/apache/freemarker/core/model/ArgumentArrayLayout.java -- diff --git a/freemarker-core/src/main/java/org/apache/freemarker/core/model/ArgumentArrayLayout.java b/freemarker-core/src/main/java/org/apache/freemarker/core/model/ArgumentArrayLayout.java index e3d3497..c64e1a0 100644 --- a/freemarker-core/src/main/java/org/apache/freemarker/core/model/ArgumentArrayLayout.java +++ b/freemarker-core/src/main/java/org/apache/freemarker/core/model/ArgumentArrayLayout.java @@ -207,6 +207,14 @@ public final class ArgumentArrayLayout { } /** + * Return the exclusive end index of the predefined named arguments. + * @return the exclusive end index of the predefined named arguments + */ +public int getPredefinedNamedArgumentsEndIndex() { +return predefinedPositionalArgumentCount + predefinedNamedArgumentsMap.size(); +} + +/** * Returns the index of the varargs argument into which positional arguments that aren't predefined are collected, * or -1 if there's no such varargs argument. The value of the positional varargs argument is a {@link * TemplateSequenceModel} that collects all positional arguments whose index would be greater than or equal to http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/9bb3da48/freemarker-core/src/main/java/org/apache/freemarker/core/util/CallableUtils.java -- diff --git a/freemarker-core/src/main/java/org/apache/freemarker/core/util/CallableUtils.java b/freemarker-core/src/main/java/org/apache/freemarker/core/util/CallableUtils.java index f200171..e0d371f 100644 --- a/freemarker-core/src/main/java/org/apache/freemarker/core/util/CallableUtils.java +++ b/freemarker-core/src/main/java/org/apache/freemarker/core/util/CallableUtils.java @@ -1056,20 +1056,6 @@ public final class CallableUtils { } } -/** - * Returns the argument index of the last predefined named argument item in the {@code argsLayout}. - * - * Note: It is strongly assumed that the predefined named arguments map contains only items with indexes, - * starting from the predefined positional argument count and incrementing by one sequentially. - * - * @param argsLayout arguments layout - * @return the argument index of the last predefined named argument item in the {@code argsLayout} - */ -public static int getLastPredefinedNamedArgumentIndex(ArgumentArrayLayout argsLayout) { -return argsLayout.getPredefinedPositionalArgumentCount() + argsLayout.getPredefinedNamedArgumentsMap().size() -- 1; -} - private static Object[] getMessagePartExpectedNArgumentButHadM(int argCnt, int minCnt, int maxCnt) { ArrayList desc = new ArrayList<>(20); http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/9bb3da48/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/form/AbstractHtmlElementTemplateDirectiveModel.java -- diff --git a/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/form/AbstractHtmlElementTemplateDirectiveModel.java b/freemarker-spring/src/main/java/org/apache/freemarker/spring/model/form/AbstractHtmlElementTemplateDirectiveModel.java index a29ca0f..0633fb8 100644 ---
incubator-freemarker git commit: FREEMARKER-55: no list needed; use array simply in new #of()
Repository: incubator-freemarker Updated Branches: refs/heads/3 def59eb43 -> 7887a9208 FREEMARKER-55: no list needed; use array simply in new #of() Project: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/commit/7887a920 Tree: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/tree/7887a920 Diff: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/diff/7887a920 Branch: refs/heads/3 Commit: 7887a9208f9361b8512fb00fbc7d56841d3e6050 Parents: def59eb Author: Woonsan KoAuthored: Fri Jan 5 23:18:44 2018 -0500 Committer: Woonsan Ko Committed: Fri Jan 5 23:18:44 2018 -0500 -- .../freemarker/core/util/StringToIndexMap.java | 35 1 file changed, 13 insertions(+), 22 deletions(-) -- http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/7887a920/freemarker-core/src/main/java/org/apache/freemarker/core/util/StringToIndexMap.java -- diff --git a/freemarker-core/src/main/java/org/apache/freemarker/core/util/StringToIndexMap.java b/freemarker-core/src/main/java/org/apache/freemarker/core/util/StringToIndexMap.java index a2248b1..4d9a150 100644 --- a/freemarker-core/src/main/java/org/apache/freemarker/core/util/StringToIndexMap.java +++ b/freemarker-core/src/main/java/org/apache/freemarker/core/util/StringToIndexMap.java @@ -19,8 +19,6 @@ package org.apache.freemarker.core.util; -import java.util.ArrayList; -import java.util.Collection; import java.util.Collections; import java.util.HashMap; import java.util.List; @@ -141,12 +139,20 @@ public final class StringToIndexMap { */ public static StringToIndexMap of(StringToIndexMap baseMap, Entry... additionalEntries) { final int additionalEntriesLength = (additionalEntries != null) ? additionalEntries.length : 0; -List newEntries = new ArrayList<>(baseMap.size() + additionalEntriesLength); -baseMap.collectAllEntriesInto(newEntries); -for (int i = 0; i < additionalEntriesLength; i++) { -newEntries.add(additionalEntries[i]); +Entry[] newEntries = new Entry[baseMap.size() + additionalEntriesLength]; +int index = 0; +if (baseMap.buckets != null) { +for (Entry entry : baseMap.buckets) { +while (entry != null) { +newEntries[index++] = entry; +entry = entry.nextInSameBucket; +} +} } -return of(newEntries.toArray(new Entry[newEntries.size()])); +if (additionalEntriesLength > 0) { +System.arraycopy(additionalEntries, 0, newEntries, index, additionalEntriesLength); +} +return of(newEntries); } // This is a very frequent case, so we optimize for it a bit. @@ -354,21 +360,6 @@ public final class StringToIndexMap { return null; } -/** - * Traverse all the entries and collect all into the given {@code targetEntryCollection}. - */ -private void collectAllEntriesInto(Collection targetEntryCollection) { -if (buckets == null) { -return; -} -for (Entry entry : buckets) { -while (entry != null) { -targetEntryCollection.add(entry); -entry = entry.nextInSameBucket; -} -} -} - /* // Code used to see how well the elements are spread among the buckets:
[jira] [Commented] (FREEMARKER-55) FM3 freemarker-spring module, Web MVC support
[ https://issues.apache.org/jira/browse/FREEMARKER-55?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16313718#comment-16313718 ] ASF GitHub Bot commented on FREEMARKER-55: -- Github user asfgit closed the pull request at: https://github.com/apache/incubator-freemarker/pull/42 > FM3 freemarker-spring module, Web MVC support > - > > Key: FREEMARKER-55 > URL: https://issues.apache.org/jira/browse/FREEMARKER-55 > Project: Apache Freemarker > Issue Type: Task >Affects Versions: 3.0.0 >Reporter: Daniel Dekany > > Add Spring "Web MVC framework" functionality to freemarker-spring. > This can be complex task (and the issue possibly has to be subdivided), as it > involves things like: > * Some aspects of the FreeMarker 2 integration (developed by the Spring > developers) are quite confusing ({{FreemarerConfigurer}}, etc.), and we are > looking into if it needs to be like that. > * See if we can support {{@EnableWebMvc}} (note that FreeMarker 2 support is > hard coded into {{ViewResolverRegistry}}, which we can't modify) > * Creating custom directives/methods to expose Spring features like the > Spring JSP Tag Library does (but in a way that firs FreeMarker better) > * Expose JSP custom tag support from the {{freemarker-servlet}} module. > Depends on: FREEMARKER-54 -- This message was sent by Atlassian JIRA (v6.4.14#64029)
[2/4] incubator-freemarker git commit: FREEMARKER-55: remove unused _ArrayUtils
FREEMARKER-55: remove unused _ArrayUtils Project: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/commit/ba39a0bc Tree: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/tree/ba39a0bc Diff: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/diff/ba39a0bc Branch: refs/heads/3 Commit: ba39a0bc5031dc1fe02b422895f0518ce7a5e713 Parents: 0f45c1d Author: Woonsan KoAuthored: Fri Jan 5 13:56:49 2018 -0500 Committer: Woonsan Ko Committed: Fri Jan 5 13:56:49 2018 -0500 -- .../freemarker/core/util/_ArrayUtilsTest.java | 76 - .../freemarker/core/util/_ArrayUtils.java | 109 --- 2 files changed, 185 deletions(-) -- http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/ba39a0bc/freemarker-core-test/src/test/java/org/apache/freemarker/core/util/_ArrayUtilsTest.java -- diff --git a/freemarker-core-test/src/test/java/org/apache/freemarker/core/util/_ArrayUtilsTest.java b/freemarker-core-test/src/test/java/org/apache/freemarker/core/util/_ArrayUtilsTest.java deleted file mode 100644 index b849bca..000 --- a/freemarker-core-test/src/test/java/org/apache/freemarker/core/util/_ArrayUtilsTest.java +++ /dev/null @@ -1,76 +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 org.apache.freemarker.core.util; - -import java.util.Arrays; - -import org.junit.Test; - -import static org.junit.Assert.assertArrayEquals; -import static org.junit.Assert.assertNotSame; -import static org.junit.Assert.assertNull; -import static org.junit.Assert.assertSame; -import static org.junit.Assert.assertTrue; - -public class _ArrayUtilsTest { - -@Test -public void testAddAll() { -Object [] arr = _ArrayUtils.addAll(null); -assertTrue(arr.length == 0); - -arr = _ArrayUtils.addAll(null, null); -assertNull(arr); - -Object[] arr1 = { "a", "b", "c" }; -Object[] arr2 = { "1", "2", "3" }; -Object[] arrAll = { "a", "b", "c", "1", "2", "3" }; - -arr = _ArrayUtils.addAll(arr1, null); -assertNotSame(arr1, arr); -assertArrayEquals(arr1, arr); - -arr = _ArrayUtils.addAll(null, arr2); -assertNotSame(arr2, arr); -assertArrayEquals(arr2, arr); - -arr = _ArrayUtils.addAll(arr1, arr2); -assertArrayEquals(arrAll, arr); -} - -@Test -public void testClone() { -assertArrayEquals(null, _ArrayUtils.clone((Object[]) null)); -Object[] original1 = new Object[0]; -Object[] cloned1 = _ArrayUtils.clone(original1); -assertTrue(Arrays.equals(original1, cloned1)); -assertTrue(original1 != cloned1); - -final StringBuilder builder = new StringBuilder("pick"); -original1 = new Object[]{builder, "a", new String[]{"stick"}}; -cloned1 = _ArrayUtils.clone(original1); -assertTrue(Arrays.equals(original1, cloned1)); -assertTrue(original1 != cloned1); -assertSame(original1[0], cloned1[0]); -assertSame(original1[1], cloned1[1]); -assertSame(original1[2], cloned1[2]); -} - -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/ba39a0bc/freemarker-core/src/main/java/org/apache/freemarker/core/util/_ArrayUtils.java -- diff --git a/freemarker-core/src/main/java/org/apache/freemarker/core/util/_ArrayUtils.java b/freemarker-core/src/main/java/org/apache/freemarker/core/util/_ArrayUtils.java deleted file mode 100644 index a060f99..000 --- a/freemarker-core/src/main/java/org/apache/freemarker/core/util/_ArrayUtils.java +++ /dev/null @@ -1,109 +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
[1/4] incubator-freemarker git commit: FREEMARKER-55: cleanups with new #of(StringToIndexMap, Entry...)
Repository: incubator-freemarker Updated Branches: refs/heads/3 f6cd47ca9 -> def59eb43 FREEMARKER-55: cleanups with new #of(StringToIndexMap, Entry...) Project: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/commit/0f45c1da Tree: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/tree/0f45c1da Diff: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/diff/0f45c1da Branch: refs/heads/3 Commit: 0f45c1da0b372b56d3c3808837a4060778c97834 Parents: f6cd47c Author: Woonsan KoAuthored: Fri Jan 5 13:54:03 2018 -0500 Committer: Woonsan Ko Committed: Fri Jan 5 13:54:03 2018 -0500 -- .../core/util/StringToIndexMapTest.java | 32 ++-- .../freemarker/core/util/StringToIndexMap.java | 55 +--- ...aBoundFormElementTemplateDirectiveModel.java | 6 +-- ...stractHtmlElementTemplateDirectiveModel.java | 44 +++- ...tHtmlInputElementTemplateDirectiveModel.java | 22 +++- .../model/form/FormTemplateDirectiveModel.java | 36 ++--- .../model/form/InputTemplateDirectiveModel.java | 20 +++ 7 files changed, 115 insertions(+), 100 deletions(-) -- http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/0f45c1da/freemarker-core-test/src/test/java/org/apache/freemarker/core/util/StringToIndexMapTest.java -- diff --git a/freemarker-core-test/src/test/java/org/apache/freemarker/core/util/StringToIndexMapTest.java b/freemarker-core-test/src/test/java/org/apache/freemarker/core/util/StringToIndexMapTest.java index 3be5783..5973c45 100644 --- a/freemarker-core-test/src/test/java/org/apache/freemarker/core/util/StringToIndexMapTest.java +++ b/freemarker-core-test/src/test/java/org/apache/freemarker/core/util/StringToIndexMapTest.java @@ -19,14 +19,19 @@ package org.apache.freemarker.core.util; -import static org.hamcrest.Matchers.*; -import static org.junit.Assert.*; - import org.apache.freemarker.core.util.StringToIndexMap.Entry; import org.junit.Test; import com.google.common.collect.ImmutableList; +import static org.hamcrest.Matchers.containsString; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertSame; +import static org.junit.Assert.assertThat; +import static org.junit.Assert.assertTrue; +import static org.junit.Assert.fail; + public class StringToIndexMapTest { @Test @@ -166,4 +171,25 @@ public class StringToIndexMapTest { } } +@Test +public void testEntryInheritance() { +StringToIndexMap base = StringToIndexMap.of("i", 0, "j", 1); +StringToIndexMap derived =StringToIndexMap.of(base, +new StringToIndexMap.Entry("k", 2), +new StringToIndexMap.Entry("l", 3)); + +assertEquals(4, derived.size()); +assertEquals(-1, derived.get("a")); +assertEquals(0, derived.get("i")); +assertEquals(1, derived.get("j")); +assertEquals(2, derived.get("k")); +assertEquals(3, derived.get("l")); +assertEquals(ImmutableList.of("i", "j", "k", "l"), derived.getKeys()); +assertEquals("i", derived.getKeyOfValue(0)); +assertEquals("j", derived.getKeyOfValue(1)); +assertEquals("k", derived.getKeyOfValue(2)); +assertEquals("l", derived.getKeyOfValue(3)); +assertNull(derived.getKeyOfValue(4)); +} + } http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/0f45c1da/freemarker-core/src/main/java/org/apache/freemarker/core/util/StringToIndexMap.java -- diff --git a/freemarker-core/src/main/java/org/apache/freemarker/core/util/StringToIndexMap.java b/freemarker-core/src/main/java/org/apache/freemarker/core/util/StringToIndexMap.java index 280bc1d..79dbabf 100644 --- a/freemarker-core/src/main/java/org/apache/freemarker/core/util/StringToIndexMap.java +++ b/freemarker-core/src/main/java/org/apache/freemarker/core/util/StringToIndexMap.java @@ -19,6 +19,8 @@ package org.apache.freemarker.core.util; +import java.util.ArrayList; +import java.util.Collection; import java.util.Collections; import java.util.HashMap; import java.util.List; @@ -37,10 +39,6 @@ public final class StringToIndexMap { private static final int MAX_VARIATIONS_TRIED = 4; -/** Input Entries from caller. */ -private final Entry[] inputEntries; - -/** Internal entry buckets. */ private final Entry[] buckets; private final int bucketIndexMask; private final int bucketIndexOverlap; @@ -133,9 +131,26 @@ public final class StringToIndexMap { return EMPTY; } +/** + *
[GitHub] incubator-freemarker pull request #42: FREEMARKER-55: cleanups by improving ...
Github user asfgit closed the pull request at: https://github.com/apache/incubator-freemarker/pull/42 ---
[4/4] incubator-freemarker git commit: FREEMARKER-55: cleanups by improving StringToIndexMap and CallableUtils
FREEMARKER-55: cleanups by improving StringToIndexMap and CallableUtils Merge commit 'refs/pull/42/head' of https://github.com/apache/incubator-freemarker into 3 Project: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/commit/def59eb4 Tree: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/tree/def59eb4 Diff: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/diff/def59eb4 Branch: refs/heads/3 Commit: def59eb4378fd6cfc4aca79c140be126935d2d69 Parents: f6cd47c ce78134 Author: Woonsan KoAuthored: Fri Jan 5 14:28:07 2018 -0500 Committer: Woonsan Ko Committed: Fri Jan 5 14:28:07 2018 -0500 -- .../core/util/StringToIndexMapTest.java | 32 +- .../freemarker/core/util/_ArrayUtilsTest.java | 76 - .../freemarker/core/util/CallableUtils.java | 14 +++ .../freemarker/core/util/StringToIndexMap.java | 55 ++ .../freemarker/core/util/_ArrayUtils.java | 109 --- ...aBoundFormElementTemplateDirectiveModel.java | 20 +--- ...stractHtmlElementTemplateDirectiveModel.java | 48 ...tHtmlInputElementTemplateDirectiveModel.java | 26 ++--- .../model/form/FormTemplateDirectiveModel.java | 40 +++ .../model/form/InputTemplateDirectiveModel.java | 24 ++-- 10 files changed, 137 insertions(+), 307 deletions(-) --
[jira] [Commented] (FREEMARKER-55) FM3 freemarker-spring module, Web MVC support
[ https://issues.apache.org/jira/browse/FREEMARKER-55?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16313714#comment-16313714 ] ASF GitHub Bot commented on FREEMARKER-55: -- GitHub user woonsan opened a pull request: https://github.com/apache/incubator-freemarker/pull/42 FREEMARKER-55: cleanups by improving StringToIndexMap and CallableUtils You can merge this pull request into a Git repository by running: $ git pull https://github.com/woonsan/incubator-freemarker feature/FREEMARKER-55-2 Alternatively you can review and apply these changes as the patch at: https://github.com/apache/incubator-freemarker/pull/42.patch To close this pull request, make a commit to your master/trunk branch with (at least) the following in the commit message: This closes #42 commit 0f45c1da0b372b56d3c3808837a4060778c97834 Author: Woonsan KoDate: 2018-01-05T18:54:03Z FREEMARKER-55: cleanups with new #of(StringToIndexMap, Entry...) commit ba39a0bc5031dc1fe02b422895f0518ce7a5e713 Author: Woonsan Ko Date: 2018-01-05T18:56:49Z FREEMARKER-55: remove unused _ArrayUtils commit ce78134ece2ad0df653538ebdd244bd0a5806679 Author: Woonsan Ko Date: 2018-01-05T19:20:40Z FREEMARKER-55: moving #getLastPredefinedNamedArgumentIndex() to CallableUtils > FM3 freemarker-spring module, Web MVC support > - > > Key: FREEMARKER-55 > URL: https://issues.apache.org/jira/browse/FREEMARKER-55 > Project: Apache Freemarker > Issue Type: Task >Affects Versions: 3.0.0 >Reporter: Daniel Dekany > > Add Spring "Web MVC framework" functionality to freemarker-spring. > This can be complex task (and the issue possibly has to be subdivided), as it > involves things like: > * Some aspects of the FreeMarker 2 integration (developed by the Spring > developers) are quite confusing ({{FreemarerConfigurer}}, etc.), and we are > looking into if it needs to be like that. > * See if we can support {{@EnableWebMvc}} (note that FreeMarker 2 support is > hard coded into {{ViewResolverRegistry}}, which we can't modify) > * Creating custom directives/methods to expose Spring features like the > Spring JSP Tag Library does (but in a way that firs FreeMarker better) > * Expose JSP custom tag support from the {{freemarker-servlet}} module. > Depends on: FREEMARKER-54 -- This message was sent by Atlassian JIRA (v6.4.14#64029)
[GitHub] incubator-freemarker pull request #42: FREEMARKER-55: cleanups by improving ...
GitHub user woonsan opened a pull request: https://github.com/apache/incubator-freemarker/pull/42 FREEMARKER-55: cleanups by improving StringToIndexMap and CallableUtils You can merge this pull request into a Git repository by running: $ git pull https://github.com/woonsan/incubator-freemarker feature/FREEMARKER-55-2 Alternatively you can review and apply these changes as the patch at: https://github.com/apache/incubator-freemarker/pull/42.patch To close this pull request, make a commit to your master/trunk branch with (at least) the following in the commit message: This closes #42 commit 0f45c1da0b372b56d3c3808837a4060778c97834 Author: Woonsan KoDate: 2018-01-05T18:54:03Z FREEMARKER-55: cleanups with new #of(StringToIndexMap, Entry...) commit ba39a0bc5031dc1fe02b422895f0518ce7a5e713 Author: Woonsan Ko Date: 2018-01-05T18:56:49Z FREEMARKER-55: remove unused _ArrayUtils commit ce78134ece2ad0df653538ebdd244bd0a5806679 Author: Woonsan Ko Date: 2018-01-05T19:20:40Z FREEMARKER-55: moving #getLastPredefinedNamedArgumentIndex() to CallableUtils ---