subscribe

2017-07-06 Thread Woonsan Ko
subscribe


[1/2] incubator-freemarker git commit: (Change log update)

2017-07-06 Thread ddekany
Repository: incubator-freemarker
Updated Branches:
  refs/heads/3 fd23c6444 -> 92db58918


(Change log update)


Project: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/repo
Commit: 
http://git-wip-us.apache.org/repos/asf/incubator-freemarker/commit/af3053fa
Tree: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/tree/af3053fa
Diff: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/diff/af3053fa

Branch: refs/heads/3
Commit: af3053faf02337b9ae61e5e7d0cac88d4c3355f8
Parents: fd23c64
Author: ddekany 
Authored: Fri Jul 7 02:14:56 2017 +0200
Committer: ddekany 
Committed: Fri Jul 7 02:14:56 2017 +0200

--
 FM3-CHANGE-LOG.txt  |  2 +-
 .../freemarker/converter/ConversionMarkers.java | 76 
 .../converter/ConversionWarnReceiver.java   | 44 
 .../converter/LoggingWarnReceiver.java  | 44 
 4 files changed, 77 insertions(+), 89 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/af3053fa/FM3-CHANGE-LOG.txt
--
diff --git a/FM3-CHANGE-LOG.txt b/FM3-CHANGE-LOG.txt
index 6bea140..93a8669 100644
--- a/FM3-CHANGE-LOG.txt
+++ b/FM3-CHANGE-LOG.txt
@@ -22,7 +22,7 @@ the FreeMarer 3 changelog here:
 
 - Increased version number to 3.0.0 (nightly aka. SNAPSHOT)
 - Removed legacy extensions: rhyno, jython, xml (not to be confused with dom), 
jdom, ant.
-- Removed JSP 2.0 support (2.1 and Servlet 2.5 is the minimum for now, but 
maybe it will be 2.2 and Servlet 3.0 later).
+- Servlet 3.0 and JSP 2.2 and is the minimum requirement now (if Serlvet/JSP 
features are used at all).
 - Removed freemarker.ext.log, our log abstraction layer from the old times 
when there was no clear winner on this field.
   Added org.slf4j:slf4j-api as required dependency instead.
 - Log categories are now simply the full qualified class name of the logging 
classes. There are no predefined log

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/af3053fa/freemarker-converter/src/main/java/org/apache/freemarker/converter/ConversionMarkers.java
--
diff --git 
a/freemarker-converter/src/main/java/org/apache/freemarker/converter/ConversionMarkers.java
 
b/freemarker-converter/src/main/java/org/apache/freemarker/converter/ConversionMarkers.java
new file mode 100644
index 000..dbfe939
--- /dev/null
+++ 
b/freemarker-converter/src/main/java/org/apache/freemarker/converter/ConversionMarkers.java
@@ -0,0 +1,76 @@
+/*
+ * 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.converter;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Receives source code markings with positions.
+ */
+public class ConversionMarkerReceiver {
+
+private final List sourceFileMarkers = new ArrayList<>();
+private final List destinationFileMarkers = new ArrayList<>();
+
+/**
+ * @param row
+ * 1-based column in the source file
+ * @param col
+ * 1-based row in the source file
+ * @param message
+ * Not {@code null}
+ */
+public void warnInSource(int row, int col, String message);
+
+/**
+ * Similar to {@link #warnInSource(int, int, String)}, but adds a 
tipInOutput instead of a warning message.
+ */
+public void tipInOutput(int row, int col, String message);
+
+public enum Type {
+WARN, TIP
+}
+
+public class Entry {
+private final int row;
+private final int column;
+private final String message;
+
+public Entry(int row, int column, String message) {
+this.row = row;
+this.column = column;
+this.message = message;
+}
+
+public int getRow() {
+return row;
+}
+
+public int getColumn() {
+return column;
+}
+
+public String getMessage() {
+return message;
+}
+}
+
+}

http://git-wip-us.apache.org/repos/

[2/2] incubator-freemarker git commit: Continued FM2 to FM3 converter...

2017-07-06 Thread ddekany
Continued FM2 to FM3 converter...


Project: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/repo
Commit: 
http://git-wip-us.apache.org/repos/asf/incubator-freemarker/commit/92db5891
Tree: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/tree/92db5891
Diff: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/diff/92db5891

Branch: refs/heads/3
Commit: 92db58918b4eafaa184cb4fab87131019b419454
Parents: af3053f
Author: ddekany 
Authored: Fri Jul 7 02:15:22 2017 +0200
Committer: ddekany 
Committed: Fri Jul 7 02:15:22 2017 +0200

--
 .../core/FM2ASTToFM3SourceConverter.java| 306 +++
 .../freemarker/converter/ConversionMarkers.java |  49 ++-
 .../apache/freemarker/converter/Converter.java  |  98 --
 .../freemarker/converter/FM2ToFM3Converter.java |   2 +-
 .../converter/FM2ToFM3ConverterTest.java|  40 +++
 .../converter/GenericConverterTest.java |  51 +++-
 .../converter/test/ConverterTest.java   |  23 ++
 7 files changed, 471 insertions(+), 98 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/92db5891/freemarker-converter/src/main/java/freemarker/core/FM2ASTToFM3SourceConverter.java
--
diff --git 
a/freemarker-converter/src/main/java/freemarker/core/FM2ASTToFM3SourceConverter.java
 
b/freemarker-converter/src/main/java/freemarker/core/FM2ASTToFM3SourceConverter.java
index 4c2d19c..1d6f484 100644
--- 
a/freemarker-converter/src/main/java/freemarker/core/FM2ASTToFM3SourceConverter.java
+++ 
b/freemarker-converter/src/main/java/freemarker/core/FM2ASTToFM3SourceConverter.java
@@ -20,6 +20,7 @@
 package freemarker.core;
 
 import java.util.ArrayList;
+import java.util.Collection;
 import java.util.Collections;
 import java.util.Comparator;
 import java.util.HashMap;
@@ -27,11 +28,17 @@ import java.util.List;
 import java.util.Map;
 import java.util.Set;
 
-import org.apache.freemarker.converter.ConversionWarnReceiver;
+import org.apache.freemarker.converter.ConversionMarkers;
+import org.apache.freemarker.converter.ConversionMarkers.Type;
 import org.apache.freemarker.converter.ConverterException;
 import org.apache.freemarker.converter.ConverterUtils;
 import org.apache.freemarker.core.NamingConvention;
-import org.apache.freemarker.core.util.*;
+import org.apache.freemarker.core.util.FTLUtil;
+import org.apache.freemarker.core.util._ClassUtil;
+import org.apache.freemarker.core.util._NullArgumentException;
+import org.apache.freemarker.core.util._StringUtil;
+
+import com.google.common.collect.ImmutableList;
 
 import freemarker.template.Configuration;
 import freemarker.template.Template;
@@ -69,7 +76,7 @@ public class FM2ASTToFM3SourceConverter {
 
 private final Template template;
 private final String src;
-private final ConversionWarnReceiver warnReceiver;
+private final ConversionMarkers markers;
 
 private final StringBuilder out;
 private List rowStartPositions;
@@ -89,7 +96,7 @@ public class FM2ASTToFM3SourceConverter {
  * {@code false}.
  */
 public static Result convert(
-String templateName, String src, Configuration fm2Cfg, 
ConversionWarnReceiver warnReceiver)
+String templateName, String src, Configuration fm2Cfg, 
ConversionMarkers warnReceiver)
 throws ConverterException {
 return new FM2ASTToFM3SourceConverter(templateName, src, fm2Cfg, 
warnReceiver).convert();
 }
@@ -110,7 +117,7 @@ public class FM2ASTToFM3SourceConverter {
 }
 
 private FM2ASTToFM3SourceConverter(
-String templateName, String src, Configuration fm2Cfg, 
ConversionWarnReceiver warnReceiver)
+String templateName, String src, Configuration fm2Cfg, 
ConversionMarkers warnReceiver)
 throws ConverterException {
 template = createTemplate(templateName, src, fm2Cfg);
 if (template.getParserConfiguration().getWhitespaceStripping()) {
@@ -121,7 +128,7 @@ public class FM2ASTToFM3SourceConverter {
 
 this.src = src;
 
-this.warnReceiver = warnReceiver;
+this.markers = warnReceiver;
 
 this.out = new StringBuilder();
 if (template.getActualTagSyntax() == 
Configuration.SQUARE_BRACKET_TAG_SYNTAX) {
@@ -194,7 +201,7 @@ public class FM2ASTToFM3SourceConverter {
 FM2ASTToFM3SourceConverter customFtlDirSrcConverter = new 
FM2ASTToFM3SourceConverter(
 template.getName(),
 tagBeginChar + "@ftl" + src.substring(pos, tagEnd) + 
(hasSlash ? "" : "/") + tagEndChar,
-template.getConfiguration(), warnReceiver
+template.getConfiguration(), markers
 );
 customFtlDirSrcConverter.printNextCustomDirAsFtlDir = true;
 String fm3Co

[jira] [Commented] (FREEMARKER-55) FM3 freemarker-spring module, Web MVC support

2017-07-06 Thread Daniel Dekany (JIRA)

[ 
https://issues.apache.org/jira/browse/FREEMARKER-55?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16076169#comment-16076169
 ] 

Daniel Dekany commented on FREEMARKER-55:
-

I wanted to fix some JavaDoc build errors, and was "carried away" and changed a 
few other small things along the way... hope it's not a problem; see the commit 
messages for details.

As of exposing things in {{FreemarkerViewResolver}}, originally I was only 
referred to exposing things to the templates. Like, if you have the 
{{Request}}, {{Session}}, and {{Application}} variables in templates. On second 
thought, as we allow calling JSP taglibs, we might as well should expose those. 
I'm not sure yet.

> 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)


incubator-freemarker git commit: (It's important that the input of the list merger methods must be immutable themselves, so I have named this methods back.)

2017-07-06 Thread ddekany
Repository: incubator-freemarker
Updated Branches:
  refs/heads/3 52d114257 -> fd23c6444


(It's important that the input of the list merger methods must be immutable 
themselves, so I have named this methods back.)


Project: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/repo
Commit: 
http://git-wip-us.apache.org/repos/asf/incubator-freemarker/commit/fd23c644
Tree: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/tree/fd23c644
Diff: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/diff/fd23c644

Branch: refs/heads/3
Commit: fd23c6444836a1b4f151ab87a7e656ab7d126249
Parents: 52d1142
Author: ddekany 
Authored: Thu Jul 6 10:33:02 2017 +0200
Committer: ddekany 
Committed: Thu Jul 6 10:33:02 2017 +0200

--
 .../java/org/apache/freemarker/core/Configuration.java  |  2 +-
 .../apache/freemarker/core/TemplateConfiguration.java   |  2 +-
 .../apache/freemarker/core/util/_CollectionUtil.java| 12 ++--
 .../apache/freemarker/servlet/FreemarkerServlet.java|  4 ++--
 4 files changed, 10 insertions(+), 10 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/fd23c644/freemarker-core/src/main/java/org/apache/freemarker/core/Configuration.java
--
diff --git 
a/freemarker-core/src/main/java/org/apache/freemarker/core/Configuration.java 
b/freemarker-core/src/main/java/org/apache/freemarker/core/Configuration.java
index 01ba1b2..9f31556 100644
--- 
a/freemarker-core/src/main/java/org/apache/freemarker/core/Configuration.java
+++ 
b/freemarker-core/src/main/java/org/apache/freemarker/core/Configuration.java
@@ -434,7 +434,7 @@ public final class Configuration implements 
TopLevelConfiguration, CustomStateSc
 builder.getImpliedCustomNumberFormats(), 
builder.getCustomNumberFormats(), false);
 autoImports = _CollectionUtil.mergeImmutableMaps(
 builder.getImpliedAutoImports(), builder.getAutoImports(), 
true);
-autoIncludes = _CollectionUtil.mergeTwoListsToImmutableList(
+autoIncludes = _CollectionUtil.mergeImmutableLists(
 builder.getImpliedAutoIncludes(), builder.getAutoIncludes(), 
true);
 lazyImports = builder.getLazyImports();
 lazyAutoImports = builder.getLazyAutoImports();

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/fd23c644/freemarker-core/src/main/java/org/apache/freemarker/core/TemplateConfiguration.java
--
diff --git 
a/freemarker-core/src/main/java/org/apache/freemarker/core/TemplateConfiguration.java
 
b/freemarker-core/src/main/java/org/apache/freemarker/core/TemplateConfiguration.java
index 019c3f6..17583e5 100644
--- 
a/freemarker-core/src/main/java/org/apache/freemarker/core/TemplateConfiguration.java
+++ 
b/freemarker-core/src/main/java/org/apache/freemarker/core/TemplateConfiguration.java
@@ -876,7 +876,7 @@ public final class TemplateConfiguration implements 
ParsingAndProcessingConfigur
 true);
 }
 if (tc.isAutoIncludesSet()) {
-setAutoIncludes(_CollectionUtil.mergeTwoListsToImmutableList(
+setAutoIncludes(_CollectionUtil.mergeImmutableLists(
 isAutoIncludesSet() ? getAutoIncludes() : null,
 tc.isAutoIncludesSet() ? tc.getAutoIncludes() : null,
 true),

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/fd23c644/freemarker-core/src/main/java/org/apache/freemarker/core/util/_CollectionUtil.java
--
diff --git 
a/freemarker-core/src/main/java/org/apache/freemarker/core/util/_CollectionUtil.java
 
b/freemarker-core/src/main/java/org/apache/freemarker/core/util/_CollectionUtil.java
index 7cafed3..af98987 100644
--- 
a/freemarker-core/src/main/java/org/apache/freemarker/core/util/_CollectionUtil.java
+++ 
b/freemarker-core/src/main/java/org/apache/freemarker/core/util/_CollectionUtil.java
@@ -174,20 +174,20 @@ public class _CollectionUtil {
  * Adds multiple {@link List}-s; assuming the inputs are already 
unmodifiable and unchanging, it returns an
  * unmodifiable and unchanging {@link List} itself.
  */
-public static  List mergeListsToImmutableList(boolean 
skipDuplicatesInList1, List ... lists) {
+public static  List mergeImmutableLists(boolean 
skipDuplicatesInList1, List ... lists) {
 if (lists == null || lists.length == 0) {
 return null;
 }
 
 if (lists.length == 1) {
-return mergeTwoListsToImmutableList(lists[0], null, 
skipDuplicatesInList1);
+return mergeImmutableLists(lists[0], null, skipDuplicatesInList1);
 } else if (lists.length 

[jira] [Commented] (FREEMARKER-55) FM3 freemarker-spring module, Web MVC support

2017-07-06 Thread ASF GitHub Bot (JIRA)

[ 
https://issues.apache.org/jira/browse/FREEMARKER-55?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16076147#comment-16076147
 ] 

ASF GitHub Bot commented on FREEMARKER-55:
--

Github user asfgit closed the pull request at:

https://github.com/apache/incubator-freemarker/pull/26


> 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)


[16/17] incubator-freemarker git commit: FREEMARKER-55: Added getters to TaglibFactory

2017-07-06 Thread ddekany
FREEMARKER-55: Added getters to TaglibFactory


Project: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/repo
Commit: 
http://git-wip-us.apache.org/repos/asf/incubator-freemarker/commit/32a29618
Tree: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/tree/32a29618
Diff: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/diff/32a29618

Branch: refs/heads/3
Commit: 32a29618a3adfc2d4b865a2d07e717dc00c5bf09
Parents: a958149
Author: ddekany 
Authored: Thu Jul 6 10:16:42 2017 +0200
Committer: ddekany 
Committed: Thu Jul 6 10:16:42 2017 +0200

--
 .../freemarker/servlet/jsp/TaglibFactory.java   | 28 
 1 file changed, 28 insertions(+)
--


http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/32a29618/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/TaglibFactory.java
--
diff --git 
a/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/TaglibFactory.java
 
b/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/TaglibFactory.java
index 297fef2..94b151c 100644
--- 
a/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/TaglibFactory.java
+++ 
b/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/TaglibFactory.java
@@ -360,6 +360,34 @@ public class TaglibFactory implements TemplateHashModel {
 return false;
 }
 
+/**
+ * See {@link Builder#getMetaInfTldSources()}
+ */
+public ServletContext getServletContext() {
+return servletContext;
+}
+
+/**
+ * See {@link Builder#getObjectWrapper()}
+ */
+public ObjectWrapper getObjectWrapper() {
+return objectWrapper;
+}
+
+/**
+ * See {@link Builder#getMetaInfTldSources()}
+ */
+public List getMetaInfTldSources() {
+return metaInfTldSources;
+}
+
+/**
+ * See {@link Builder#getClasspathTlds()}
+ */
+public List getClasspathTlds() {
+return classpathTlds;
+}
+
 private TldLocation getExplicitlyMappedTldLocation(final String uri) 
throws SAXException, IOException,
 TaglibGettingException {
 TldLocation tldLocation;



[01/17] incubator-freemarker git commit: FREEMARKER-55: remove unnecessary exposures and package name change.

2017-07-06 Thread ddekany
Repository: incubator-freemarker
Updated Branches:
  refs/heads/3 9b31510bb -> 52d114257


FREEMARKER-55: remove unnecessary exposures and package name change.


Project: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/repo
Commit: 
http://git-wip-us.apache.org/repos/asf/incubator-freemarker/commit/519680ac
Tree: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/tree/519680ac
Diff: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/diff/519680ac

Branch: refs/heads/3
Commit: 519680accbb42aaf48eda1e656008249559d0ae8
Parents: 18e9399
Author: Woonsan Ko 
Authored: Wed Jul 5 13:54:01 2017 -0400
Committer: Woonsan Ko 
Committed: Wed Jul 5 13:54:01 2017 -0400

--
 .../spring/SpringResourceTemplateLoader.java| 168 +++
 .../SpringResourceTemplateLoader.java   | 168 ---
 .../spring/web/view/FreemarkerViewResolver.java |  32 
 .../SpringResourceTemplateLoaderTest.java   |   1 +
 .../spring/web/view/FreemarkerViewTest.java |  24 ++-
 5 files changed, 188 insertions(+), 205 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/519680ac/freemarker-spring/src/main/java/org/apache/freemarker/spring/SpringResourceTemplateLoader.java
--
diff --git 
a/freemarker-spring/src/main/java/org/apache/freemarker/spring/SpringResourceTemplateLoader.java
 
b/freemarker-spring/src/main/java/org/apache/freemarker/spring/SpringResourceTemplateLoader.java
new file mode 100644
index 000..2607e57
--- /dev/null
+++ 
b/freemarker-spring/src/main/java/org/apache/freemarker/spring/SpringResourceTemplateLoader.java
@@ -0,0 +1,168 @@
+/*
+ * 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.spring;
+
+import java.io.IOException;
+import java.io.Serializable;
+import java.util.Objects;
+
+import org.apache.freemarker.core.templateresolver.TemplateLoader;
+import org.apache.freemarker.core.templateresolver.TemplateLoaderSession;
+import org.apache.freemarker.core.templateresolver.TemplateLoadingResult;
+import org.apache.freemarker.core.templateresolver.TemplateLoadingSource;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.context.ResourceLoaderAware;
+import org.springframework.core.io.Resource;
+import org.springframework.core.io.ResourceLoader;
+
+/**
+ * A {@link TemplateLoader} that uses Spring Framework Resources 
which are resolved by locations.
+ */
+public class SpringResourceTemplateLoader implements TemplateLoader, 
ResourceLoaderAware {
+
+private static final Logger LOG = 
LoggerFactory.getLogger(SpringResourceTemplateLoader.class);
+
+/**
+ * Base template resource location.
+ * 
+ * If this property is a non-null string, this is prepended to the 
template name internally when resolving
+ * a resource.
+ * 
+ */
+private String baseLocation;
+
+/**
+ * Spring Framework resource loader.
+ */
+private ResourceLoader resourceLoader;
+
+/**
+ * Base resource location which can be prepended to the template name 
internally when resolving a resource.
+ * @return
+ */
+public String getBaseLocation() {
+return baseLocation;
+}
+
+/**
+ * Set base resource location which can be prepended to the template name 
internally when resolving a resource.
+ * @param baseLocation
+ */
+public void setBaseLocation(String baseLocation) {
+this.baseLocation = baseLocation;
+}
+
+/**
+ * {@inheritDoc}
+ */
+@Override
+public void setResourceLoader(ResourceLoader resourceLoader) {
+this.resourceLoader = resourceLoader;
+}
+
+/**
+ * {@inheritDoc}
+ */
+@Override
+public TemplateLoaderSession createSession() {
+return null;
+}
+
+/**
+ * {@inheritDoc}
+ */
+@Override
+public TemplateLoadingResult load(String name, TemplateLoadingSource 
ifSourceDiffersFrom,
+Serializable ifVersionDiffersFrom, TemplateLoaderSes

[07/17] incubator-freemarker git commit: FREEMARKER-55: code cleanup in TaglibFactory, using generics and some formatting

2017-07-06 Thread ddekany
FREEMARKER-55: code cleanup in TaglibFactory, using generics and some formatting


Project: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/repo
Commit: 
http://git-wip-us.apache.org/repos/asf/incubator-freemarker/commit/196158b0
Tree: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/tree/196158b0
Diff: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/diff/196158b0

Branch: refs/heads/3
Commit: 196158b03c18534466d8a0275052515317475474
Parents: 8621226
Author: Woonsan Ko 
Authored: Wed Jul 5 17:52:05 2017 -0400
Committer: Woonsan Ko 
Committed: Wed Jul 5 17:52:05 2017 -0400

--
 .../freemarker/servlet/jsp/TaglibFactory.java   | 323 +++
 1 file changed, 185 insertions(+), 138 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/196158b0/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/TaglibFactory.java
--
diff --git 
a/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/TaglibFactory.java
 
b/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/TaglibFactory.java
index 0ad9a49..e1df54f 100644
--- 
a/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/TaglibFactory.java
+++ 
b/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/TaglibFactory.java
@@ -43,7 +43,6 @@ import java.util.ArrayList;
 import java.util.Collections;
 import java.util.Enumeration;
 import java.util.HashMap;
-import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
@@ -100,14 +99,14 @@ public class TaglibFactory implements TemplateHashModel {
 /**
  * The default of {@link #getClasspathTlds()}; an empty list.
  */
-public static final List DEFAULT_CLASSPATH_TLDS = Collections.EMPTY_LIST;
-
+public static final List DEFAULT_CLASSPATH_TLDS = 
Collections.emptyList();
+
 /**
  * The default of {@link #getMetaInfTldSources()}; a list that contains
  * {@link WebInfPerLibJarMetaInfTldSource#INSTANCE}, which gives the 
behavior described in the JSP 2.2
  * specification.
  */
-public static final List/**/ 
DEFAULT_META_INF_TLD_SOURCES
+public static final List 
DEFAULT_META_INF_TLD_SOURCES
 = 
Collections.singletonList(WebInfPerLibJarMetaInfTldSource.INSTANCE);
 
 private static final Logger LOG = 
LoggerFactory.getLogger(TaglibFactory.class);
@@ -124,17 +123,17 @@ public class TaglibFactory implements TemplateHashModel {
 private final ServletContext servletContext;
 
 private ObjectWrapper objectWrapper;
-private List/**/ metaInfTldSources = 
DEFAULT_META_INF_TLD_SOURCES;
-private List/**/ classpathTlds = DEFAULT_CLASSPATH_TLDS;
-
+private List metaInfTldSources = 
DEFAULT_META_INF_TLD_SOURCES;
+private List classpathTlds = DEFAULT_CLASSPATH_TLDS;
+
 boolean test_emulateNoUrlToFileConversions = false;
 boolean test_emulateNoJarURLConnections = false;
 boolean test_emulateJarEntryUrlOpenStreamFails = false;
 
 private final Object lock = new Object(); 
-private final Map taglibs = new HashMap();
-private final Map tldLocations = new HashMap();
-private List/**/ failedTldLocations = new ArrayList();
+private final Map taglibs = new HashMap<>();
+private final Map tldLocations = new HashMap<>();
+private List failedTldLocations = new ArrayList<>();
 private int nextTldLocationLookupPhase = 0;
 
 public static MetaInfTldSource parseMetaInfTldLocation(String value) 
throws ParseException {
@@ -176,7 +175,7 @@ public class TaglibFactory implements TemplateHashModel {
 final MetaInfTldSource metaInfTldSource = 
parseMetaInfTldLocation(value);
 
 if (metaInfTldSources == null) {
-metaInfTldSources = new ArrayList();
+metaInfTldSources = new ArrayList<>();
 }
 
 metaInfTldSources.add(metaInfTldSource);
@@ -240,24 +239,28 @@ public class TaglibFactory implements TemplateHashModel {
 boolean failedTldListAlreadyIncluded = false;
 final TldLocation tldLocation;
 final String normalizedTaglibUri;
+
 try {
 if (LOG.isDebugEnabled()) {
 LOG.debug("Locating TLD for taglib URI " + 
_StringUtil.jQuoteNoXSS(taglibUri) + ".");
 }
-
+
 TldLocation explicitlyMappedTldLocation = 
getExplicitlyMappedTldLocation(taglibUri);
+
 if (explicitlyMappedTldLocation != null) {
 tldLocation = explicitlyMappedTldLocation;
 normalizedTaglibUri = taglibUri;
 } else {
 // Taglib URI must be directly the path (no mappin

[13/17] incubator-freemarker git commit: FREEMARKER-55: Merged: polishing and cleanups in TaglibFactory builder

2017-07-06 Thread ddekany
FREEMARKER-55: Merged: polishing and cleanups in TaglibFactory builder

Merge commit 'refs/pull/26/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/bd09327f
Tree: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/tree/bd09327f
Diff: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/diff/bd09327f

Branch: refs/heads/3
Commit: bd09327f9bf1dc326a723553872724048a194d63
Parents: 9b31510 42cfb32
Author: ddekany 
Authored: Thu Jul 6 09:27:03 2017 +0200
Committer: ddekany 
Committed: Thu Jul 6 09:42:51 2017 +0200

--
 .../apache/freemarker/core/Configuration.java   |   2 +-
 .../freemarker/core/TemplateConfiguration.java  |   2 +-
 .../freemarker/core/util/_CollectionUtil.java   |  30 +-
 freemarker-servlet/build.gradle |   9 +-
 .../freemarker/servlet/FreemarkerServlet.java   | 158 +++--
 .../freemarker/servlet/InitParamParser.java |   4 +-
 .../freemarker/servlet/jsp/TaglibFactory.java   | 683 ---
 .../servlet/jsp/TaglibFactoryBuilder.java   | 167 -
 freemarker-spring/build.gradle  |   9 +-
 .../spring/SpringResourceTemplateLoader.java| 168 +
 .../SpringResourceTemplateLoader.java   | 168 -
 .../spring/web/view/FreemarkerViewResolver.java |  36 +-
 .../SpringResourceTemplateLoaderTest.java   |   1 +
 .../spring/web/view/FreemarkerViewTest.java |  23 +-
 14 files changed, 756 insertions(+), 704 deletions(-)
--




[11/17] incubator-freemarker git commit: FREEMARKER-55: code cleanups using generics

2017-07-06 Thread ddekany
FREEMARKER-55: code cleanups using generics


Project: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/repo
Commit: 
http://git-wip-us.apache.org/repos/asf/incubator-freemarker/commit/28102af6
Tree: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/tree/28102af6
Diff: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/diff/28102af6

Branch: refs/heads/3
Commit: 28102af69bca00e3cf29c2dc8a3a6a9d25c56ade
Parents: 14396c8
Author: Woonsan Ko 
Authored: Wed Jul 5 20:49:32 2017 -0400
Committer: Woonsan Ko 
Committed: Wed Jul 5 20:49:32 2017 -0400

--
 .../freemarker/servlet/FreemarkerServlet.java   | 125 ++-
 .../freemarker/servlet/InitParamParser.java |   4 +-
 .../freemarker/servlet/jsp/TaglibFactory.java   |  18 +--
 3 files changed, 73 insertions(+), 74 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/28102af6/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/FreemarkerServlet.java
--
diff --git 
a/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/FreemarkerServlet.java
 
b/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/FreemarkerServlet.java
index bcd4d04..a3f4e75 100644
--- 
a/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/FreemarkerServlet.java
+++ 
b/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/FreemarkerServlet.java
@@ -325,7 +325,7 @@ import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
  */
 // [FM3] Lot of things are marked here with "BC" and deprecated
 public class FreemarkerServlet extends HttpServlet {
-
+
 private static final Logger LOG = 
LoggerFactory.getLogger(FreemarkerServlet.class);
 
 public static final long serialVersionUID = -2440216393145762479L;
@@ -335,7 +335,7 @@ public class FreemarkerServlet extends HttpServlet {
  * has existed long before 2.3.22, but this constant was only added then.)
  */
 public static final String INIT_PARAM_TEMPLATE_PATH = "TemplatePath";
-
+
 /**
  * Init-param name - see the {@link FreemarkerServlet} class documentation 
about the init-params. (This init-param
  * has existed long before 2.3.22, but this constant was only added then.)
@@ -367,7 +367,7 @@ public class FreemarkerServlet extends HttpServlet {
  * Init-param name - see the {@link FreemarkerServlet} class documentation 
about the init-params.
  */
 public static final String INIT_PARAM_BUFFER_SIZE = "BufferSize";
-
+
 /**
  * Init-param name - see the {@link FreemarkerServlet} class documentation 
about the init-params.
  */
@@ -377,12 +377,12 @@ public class FreemarkerServlet extends HttpServlet {
  * Init-param name - see the {@link FreemarkerServlet} class documentation 
about the init-params.
  */
 public static final String INIT_PARAM_EXCEPTION_ON_MISSING_TEMPLATE = 
"ExceptionOnMissingTemplate";
-
+
 /**
  * Init-param name - see the {@link FreemarkerServlet} class documentation 
about the init-params.
  */
 public static final String INIT_PARAM_CLASSPATH_TLDS = "ClasspathTlds";
-
+
 private static final String INIT_PARAM_DEBUG = "Debug";
 
 private static final String DEPR_INITPARAM_TEMPLATE_DELAY = 
"TemplateDelay";
@@ -394,9 +394,9 @@ public class FreemarkerServlet extends HttpServlet {
 private static final String 
DEPR_INITPARAM_TEMPLATE_EXCEPTION_HANDLER_HTML_DEBUG = "htmlDebug";
 private static final String 
DEPR_INITPARAM_TEMPLATE_EXCEPTION_HANDLER_IGNORE = "ignore";
 private static final String DEPR_INITPARAM_DEBUG = "debug";
-
+
 private static final ContentType DEFAULT_CONTENT_TYPE = new 
ContentType("text/html");
-
+
 public static final String INIT_PARAM_VALUE_NEVER = "never";
 public static final String INIT_PARAM_VALUE_ALWAYS = "always";
 public static final String INIT_PARAM_VALUE_WHEN_TEMPLATE_HAS_MIME_TYPE = 
"whenTemplateHasMimeType";
@@ -417,17 +417,17 @@ public class FreemarkerServlet extends HttpServlet {
  * {@value #INIT_PARAM_CLASSPATH_TLDS} init-param. The value syntax is the 
same as of the init-param.
  */
 public static final String SYSTEM_PROPERTY_CLASSPATH_TLDS = 
"org.freemarker.jsp.classpathTlds";
-
+
 /**
  * Used as part of the value of the {@value 
#INIT_PARAM_META_INF_TLD_LOCATIONS} init-param.
  */
 public static final String META_INF_TLD_LOCATION_WEB_INF_PER_LIB_JARS = 
"webInfPerLibJars";
-
+
 /**
  * Used as part of the value of the {@value 
#INIT_PARAM_META_INF_TLD_LOCATIONS} init-param.
  */
 public static final String META_INF_TLD_LOCATION_CLASSPATH = "classpath";
-
+
 /**
  * Used as part of the value of the {@value 
#INIT_PARAM_META_INF_TLD_LOCATIONS} init-param.
  

[02/17] incubator-freemarker git commit: FREEMARKER-55: use servlet api 3.0, jsp-api 2.2, jsp-el 2.2 and spring 4.0.x

2017-07-06 Thread ddekany
FREEMARKER-55: use servlet api 3.0, jsp-api 2.2, jsp-el 2.2 and spring 4.0.x


Project: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/repo
Commit: 
http://git-wip-us.apache.org/repos/asf/incubator-freemarker/commit/3c91ecb6
Tree: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/tree/3c91ecb6
Diff: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/diff/3c91ecb6

Branch: refs/heads/3
Commit: 3c91ecb65ac12973c05421ec6a265020cfccdc5b
Parents: 519680a
Author: Woonsan Ko 
Authored: Wed Jul 5 14:11:18 2017 -0400
Committer: Woonsan Ko 
Committed: Wed Jul 5 14:11:18 2017 -0400

--
 freemarker-servlet/build.gradle | 9 +++--
 freemarker-spring/build.gradle  | 9 ++---
 2 files changed, 13 insertions(+), 5 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/3c91ecb6/freemarker-servlet/build.gradle
--
diff --git a/freemarker-servlet/build.gradle b/freemarker-servlet/build.gradle
index 4e3bd2f..2f28100 100644
--- a/freemarker-servlet/build.gradle
+++ b/freemarker-servlet/build.gradle
@@ -28,8 +28,13 @@ inAggregateJavadoc = true
 dependencies {
 compile project(":freemarker-core")
 
-compileOnly "javax.servlet.jsp:jsp-api:2.1"
-compileOnly "javax.servlet:servlet-api:2.5"
+def geronimoServletSpec3Version = "1.0"
+def geronimoJspSpec22Version = "1.2"
+def geronimoELSpec22Version = "1.0.4"
+
+compileOnly 
"org.apache.geronimo.specs:geronimo-servlet_3.0_spec:${geronimoServletSpec3Version}"
+compileOnly 
"org.apache.geronimo.specs:geronimo-jsp_2.2_spec:${geronimoJspSpec22Version}"
+compileOnly 
"org.apache.geronimo.specs:geronimo-el_2.2_spec:${geronimoELSpec22Version}"
 
 // 
 // For tests

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/3c91ecb6/freemarker-spring/build.gradle
--
diff --git a/freemarker-spring/build.gradle b/freemarker-spring/build.gradle
index dce28d9..328e883 100644
--- a/freemarker-spring/build.gradle
+++ b/freemarker-spring/build.gradle
@@ -30,7 +30,10 @@ dependencies {
 compile project(":freemarker-servlet")
 
 def geronimoServletSpec3Version = "1.0"
-def springVersion = "4.3.9.RELEASE"
+def geronimoJspSpec22Version = "1.2"
+def geronimoELSpec22Version = "1.0.4"
+
+def springVersion = "4.0.9.RELEASE"
 
 compileOnly 
"org.apache.geronimo.specs:geronimo-servlet_3.0_spec:${geronimoServletSpec3Version}"
 
@@ -76,9 +79,9 @@ dependencies {
 exclude group: "commons-logging", module: "commons-logging"
 }
 
-testCompile "javax.servlet.jsp:jsp-api:2.1"
+testCompile 
"org.apache.geronimo.specs:geronimo-jsp_2.2_spec:${geronimoJspSpec22Version}"
+testCompile 
"org.apache.geronimo.specs:geronimo-el_2.2_spec:${geronimoELSpec22Version}"
 testCompile 
"org.apache.taglibs:taglibs-standard-spec:${taglibsStandardVersion}"
-testCompile 
"org.apache.taglibs:taglibs-standard-impl:${taglibsStandardVersion}"
 
 }
 



[14/17] incubator-freemarker git commit: FREEMARKER-55: Fixed JavaDoc build errors

2017-07-06 Thread ddekany
FREEMARKER-55: Fixed JavaDoc build errors


Project: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/repo
Commit: 
http://git-wip-us.apache.org/repos/asf/incubator-freemarker/commit/cc6c469d
Tree: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/tree/cc6c469d
Diff: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/diff/cc6c469d

Branch: refs/heads/3
Commit: cc6c469db4b929921fb4603058a32dd8a29c2e37
Parents: bd09327
Author: ddekany 
Authored: Thu Jul 6 10:07:26 2017 +0200
Committer: ddekany 
Committed: Thu Jul 6 10:09:15 2017 +0200

--
 .../freemarker/servlet/FreemarkerServlet.java   |  6 +++---
 .../freemarker/servlet/jsp/TaglibFactory.java   | 22 
 2 files changed, 12 insertions(+), 16 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/cc6c469d/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/FreemarkerServlet.java
--
diff --git 
a/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/FreemarkerServlet.java
 
b/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/FreemarkerServlet.java
index a3f4e75..bd3ffc9 100644
--- 
a/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/FreemarkerServlet.java
+++ 
b/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/FreemarkerServlet.java
@@ -242,7 +242,7 @@ import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
  * optionally followed by colon and a regular expression, or {@value 
#META_INF_TLD_LOCATION_CLEAR}. For example {@code 
  * classpath:.*myoverride.*\.jar$, webInfPerLibJars, 
classpath:.*taglib.*\.jar$}, or {@code 
  * classpath}. (Whitespace around the commas and 
list items will be ignored.) See
- * {@link TaglibFactory#setMetaInfTldSources(List)} for more information. 
Defaults to a list that contains
+ * {@link TaglibFactory.Builder#setMetaInfTldSources(List)} for more 
information. Defaults to a list that contains
  * {@value #META_INF_TLD_LOCATION_WEB_INF_PER_LIB_JARS} only (can be 
overridden with
  * {@link #createDefaultMetaInfTldSources()}). Note that this can be also 
specified with the
  * {@value #SYSTEM_PROPERTY_META_INF_TLD_SOURCES} system property. If both the 
init-param and the system property
@@ -254,8 +254,8 @@ import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
  * Jetty's {@code 
"org.eclipse.jetty.server.webapp.ContainerIncludeJarPattern"} servlet context 
attribute.
  * 
  * {@value #INIT_PARAM_CLASSPATH_TLDS} (since 2.3.22): 
Comma separated list of paths; see
- * {@link TaglibFactory#setClasspathTlds(List)}. Whitespace around the list 
items will be ignored. Defaults to no paths
- * (can be overidden with {@link #createDefaultClassPathTlds()}). Note that 
this can also be specified with the
+ * {@link TaglibFactory.Builder#setClasspathTlds(List)}. Whitespace around the 
list items will be ignored. Defaults to
+ * no paths (can be overidden with {@link #createDefaultClassPathTlds()}). 
Note that this can also be specified with the
  * {@value #SYSTEM_PROPERTY_CLASSPATH_TLDS} system property. If both the 
init-param and the system property exists, the
  * items listed in system property will be added after those specified by the 
init-param.
  * 

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/cc6c469d/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/TaglibFactory.java
--
diff --git 
a/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/TaglibFactory.java
 
b/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/TaglibFactory.java
index 7a45001..386b34e 100644
--- 
a/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/TaglibFactory.java
+++ 
b/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/TaglibFactory.java
@@ -178,7 +178,7 @@ public class TaglibFactory implements TemplateHashModel {
  * @param values TLD location string value list
  * @return a list of type {@link MetaInfTldSource} by parsing each TLD 
location string item value
  * @throws ParseException if invalid value syntax found
- * @see {@link #parseMetaInfTldLocation(String)}
+ * @see #parseMetaInfTldLocation(String)
  */
 public static List parseMetaInfTldLocations(List 
values) throws ParseException {
 List metaInfTldSources = null;
@@ -206,13 +206,9 @@ public class TaglibFactory implements TemplateHashModel {
 /**
  * Creates a new JSP taglib factory that will be used to load JSP tag 
libraries and functions for the web
  * application represented by the passed in {@link ServletContext}.
- * You should at least call {@link #setObjectWrapper(ObjectWrapper)} 
before start using this object.
- * 
+ *

[15/17] incubator-freemarker git commit: FREEMARKER-55: (Return a specific List type as possible)

2017-07-06 Thread ddekany
FREEMARKER-55: (Return a specific List type as possible)


Project: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/repo
Commit: 
http://git-wip-us.apache.org/repos/asf/incubator-freemarker/commit/a9581498
Tree: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/tree/a9581498
Diff: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/diff/a9581498

Branch: refs/heads/3
Commit: a9581498bdce8d933093669f7b0fc3b46bcf3c6f
Parents: cc6c469
Author: ddekany 
Authored: Thu Jul 6 10:12:00 2017 +0200
Committer: ddekany 
Committed: Thu Jul 6 10:12:00 2017 +0200

--
 .../java/org/apache/freemarker/servlet/jsp/TaglibFactory.java| 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/a9581498/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/TaglibFactory.java
--
diff --git 
a/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/TaglibFactory.java
 
b/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/TaglibFactory.java
index 386b34e..297fef2 100644
--- 
a/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/TaglibFactory.java
+++ 
b/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/TaglibFactory.java
@@ -2049,7 +2049,7 @@ public class TaglibFactory implements TemplateHashModel {
 /**
  * TLD locations to look for when finding available JSP tag libraries.
  */
-private List metaInfTldSources;
+private List metaInfTldSources;
 
 /**
  * TLD classpath locations to look for when finding available JSP tag 
libraries.
@@ -2093,7 +2093,7 @@ public class TaglibFactory implements TemplateHashModel {
  * Get the list of places where to look for {@code META-INF/**}{@code 
/*.tld} files.
  * @return the list of places where to look for {@code 
META-INF/**}{@code /*.tld} files
  */
-public List getMetaInfTldSources() {
+public List getMetaInfTldSources() {
 return (metaInfTldSources != null) ? metaInfTldSources : 
Collections. emptyList();
 }
 



[09/17] incubator-freemarker git commit: FREEMARKER-55: allow building only once.

2017-07-06 Thread ddekany
FREEMARKER-55: allow building only once.


Project: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/repo
Commit: 
http://git-wip-us.apache.org/repos/asf/incubator-freemarker/commit/e12792ea
Tree: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/tree/e12792ea
Diff: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/diff/e12792ea

Branch: refs/heads/3
Commit: e12792ea4e845baf739191ec07b34d60e2653aa9
Parents: 2a8d761
Author: Woonsan Ko 
Authored: Wed Jul 5 18:49:32 2017 -0400
Committer: Woonsan Ko 
Committed: Wed Jul 5 18:49:32 2017 -0400

--
 .../java/org/apache/freemarker/servlet/jsp/TaglibFactory.java  | 6 ++
 1 file changed, 6 insertions(+)
--


http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/e12792ea/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/TaglibFactory.java
--
diff --git 
a/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/TaglibFactory.java
 
b/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/TaglibFactory.java
index 556c632..f4fea3b 100644
--- 
a/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/TaglibFactory.java
+++ 
b/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/TaglibFactory.java
@@ -2039,6 +2039,8 @@ public class TaglibFactory implements TemplateHashModel {
  */
 private List classPathTlds = new ArrayList<>();
 
+private boolean alreadyBuilt;
+
 public Builder() {
 }
 
@@ -2161,7 +2163,11 @@ public class TaglibFactory implements TemplateHashModel {
 }
 
 public TaglibFactory build() throws ConfigurationException {
+if (alreadyBuilt) {
+throw new IllegalStateException("build() can only be executed 
once.");
+}
 TaglibFactory taglibFactory = new TaglibFactory(this);
+alreadyBuilt = true;
 return taglibFactory;
 }
 }



[10/17] incubator-freemarker git commit: FREEMARKER-55: cleaning up TaglibFactory.Builder

2017-07-06 Thread ddekany
FREEMARKER-55: cleaning up TaglibFactory.Builder


Project: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/repo
Commit: 
http://git-wip-us.apache.org/repos/asf/incubator-freemarker/commit/14396c83
Tree: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/tree/14396c83
Diff: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/diff/14396c83

Branch: refs/heads/3
Commit: 14396c83635d2b34612a429312c223afa8836fd4
Parents: e12792e
Author: Woonsan Ko 
Authored: Wed Jul 5 20:19:21 2017 -0400
Committer: Woonsan Ko 
Committed: Wed Jul 5 20:19:21 2017 -0400

--
 .../apache/freemarker/core/Configuration.java   |   2 +-
 .../freemarker/core/TemplateConfiguration.java  |   2 +-
 .../freemarker/core/util/_CollectionUtil.java   |  30 +++-
 .../freemarker/servlet/FreemarkerServlet.java   |  30 ++--
 .../freemarker/servlet/jsp/TaglibFactory.java   | 169 +++
 .../spring/web/view/FreemarkerViewResolver.java |   6 +-
 .../spring/web/view/FreemarkerViewTest.java |   5 +-
 7 files changed, 143 insertions(+), 101 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/14396c83/freemarker-core/src/main/java/org/apache/freemarker/core/Configuration.java
--
diff --git 
a/freemarker-core/src/main/java/org/apache/freemarker/core/Configuration.java 
b/freemarker-core/src/main/java/org/apache/freemarker/core/Configuration.java
index 9f31556..01ba1b2 100644
--- 
a/freemarker-core/src/main/java/org/apache/freemarker/core/Configuration.java
+++ 
b/freemarker-core/src/main/java/org/apache/freemarker/core/Configuration.java
@@ -434,7 +434,7 @@ public final class Configuration implements 
TopLevelConfiguration, CustomStateSc
 builder.getImpliedCustomNumberFormats(), 
builder.getCustomNumberFormats(), false);
 autoImports = _CollectionUtil.mergeImmutableMaps(
 builder.getImpliedAutoImports(), builder.getAutoImports(), 
true);
-autoIncludes = _CollectionUtil.mergeImmutableLists(
+autoIncludes = _CollectionUtil.mergeTwoListsToImmutableList(
 builder.getImpliedAutoIncludes(), builder.getAutoIncludes(), 
true);
 lazyImports = builder.getLazyImports();
 lazyAutoImports = builder.getLazyAutoImports();

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/14396c83/freemarker-core/src/main/java/org/apache/freemarker/core/TemplateConfiguration.java
--
diff --git 
a/freemarker-core/src/main/java/org/apache/freemarker/core/TemplateConfiguration.java
 
b/freemarker-core/src/main/java/org/apache/freemarker/core/TemplateConfiguration.java
index 17583e5..019c3f6 100644
--- 
a/freemarker-core/src/main/java/org/apache/freemarker/core/TemplateConfiguration.java
+++ 
b/freemarker-core/src/main/java/org/apache/freemarker/core/TemplateConfiguration.java
@@ -876,7 +876,7 @@ public final class TemplateConfiguration implements 
ParsingAndProcessingConfigur
 true);
 }
 if (tc.isAutoIncludesSet()) {
-setAutoIncludes(_CollectionUtil.mergeImmutableLists(
+setAutoIncludes(_CollectionUtil.mergeTwoListsToImmutableList(
 isAutoIncludesSet() ? getAutoIncludes() : null,
 tc.isAutoIncludesSet() ? tc.getAutoIncludes() : null,
 true),

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/14396c83/freemarker-core/src/main/java/org/apache/freemarker/core/util/_CollectionUtil.java
--
diff --git 
a/freemarker-core/src/main/java/org/apache/freemarker/core/util/_CollectionUtil.java
 
b/freemarker-core/src/main/java/org/apache/freemarker/core/util/_CollectionUtil.java
index d5a6574..7cafed3 100644
--- 
a/freemarker-core/src/main/java/org/apache/freemarker/core/util/_CollectionUtil.java
+++ 
b/freemarker-core/src/main/java/org/apache/freemarker/core/util/_CollectionUtil.java
@@ -171,20 +171,41 @@ public class _CollectionUtil {
 }
 
 /**
+ * Adds multiple {@link List}-s; assuming the inputs are already 
unmodifiable and unchanging, it returns an
+ * unmodifiable and unchanging {@link List} itself.
+ */
+public static  List mergeListsToImmutableList(boolean 
skipDuplicatesInList1, List ... lists) {
+if (lists == null || lists.length == 0) {
+return null;
+}
+
+if (lists.length == 1) {
+return mergeTwoListsToImmutableList(lists[0], null, 
skipDuplicatesInList1);
+} else if (lists.length == 2) {
+return mergeTwoListsToImmutableList(lists[0], lists[1], 
skipDuplicatesInList1);
+} else {
+List [] reducedLists = new L

[12/17] incubator-freemarker git commit: Merge branch '3' into feature/FREEMARKER-55

2017-07-06 Thread ddekany
Merge branch '3' into feature/FREEMARKER-55


Project: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/repo
Commit: 
http://git-wip-us.apache.org/repos/asf/incubator-freemarker/commit/42cfb326
Tree: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/tree/42cfb326
Diff: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/diff/42cfb326

Branch: refs/heads/3
Commit: 42cfb3261b4f591d822ca91d443f82e12f3e98a5
Parents: 28102af 9b31510
Author: Woonsan Ko 
Authored: Wed Jul 5 20:51:00 2017 -0400
Committer: Woonsan Ko 
Committed: Wed Jul 5 20:51:00 2017 -0400

--
 .../core/FM2ASTToFM3SourceConverter.java| 289 +--
 .../converter/ConversionWarnReceiver.java   |  44 +++
 .../apache/freemarker/converter/Converter.java  |  30 +-
 .../freemarker/converter/FM2ToFM3Converter.java |   5 +-
 .../converter/LoggingWarnReceiver.java  |  44 +++
 .../converter/FM2ToFM3ConverterTest.java|  18 ++
 6 files changed, 332 insertions(+), 98 deletions(-)
--




[06/17] incubator-freemarker git commit: FREEMARKER-55: removing mutable setters in TaglibFactory

2017-07-06 Thread ddekany
FREEMARKER-55: removing mutable setters in TaglibFactory


Project: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/repo
Commit: 
http://git-wip-us.apache.org/repos/asf/incubator-freemarker/commit/86212264
Tree: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/tree/86212264
Diff: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/diff/86212264

Branch: refs/heads/3
Commit: 8621226442bc5bdcdc9b594a688e6f9ce0e80097
Parents: 7807170
Author: Woonsan Ko 
Authored: Wed Jul 5 17:10:32 2017 -0400
Committer: Woonsan Ko 
Committed: Wed Jul 5 17:10:32 2017 -0400

--
 .../freemarker/servlet/jsp/TaglibFactory.java   | 110 ++-
 1 file changed, 36 insertions(+), 74 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/86212264/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/TaglibFactory.java
--
diff --git 
a/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/TaglibFactory.java
 
b/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/TaglibFactory.java
index 2026f8b..0ad9a49 100644
--- 
a/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/TaglibFactory.java
+++ 
b/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/TaglibFactory.java
@@ -344,80 +344,6 @@ public class TaglibFactory implements TemplateHashModel {
 public boolean isEmpty() {
 return false;
 }
-
-/**
- * See {@link #setObjectWrapper(ObjectWrapper)}.
- */
-public ObjectWrapper getObjectWrapper() {
-return objectWrapper;
-}
-
-/**
- * Sets the {@link ObjectWrapper} used when building the JSP tag library 
{@link TemplateHashModel}-s from the TLD-s.
- * Usually, it should be the same {@link ObjectWrapper} that will be used 
inside the templates. {@code null} value
- * is only supported for backward compatibility. For custom EL functions 
to be exposed, it must be non-{@code null}
- * and an {@code intanceof} {@link DefaultObjectWrapper} (like typically, 
a {@link DefaultObjectWrapper}).
- */
-public void setObjectWrapper(ObjectWrapper objectWrapper) {
-checkNotStarted();
-this.objectWrapper = objectWrapper;
-}
-
-/**
- * See {@link #setMetaInfTldSources(List)}.
- */
-public List/**/ getMetaInfTldSources() {
-return metaInfTldSources;
-}
-
-/**
- * Sets the list of places where we will look for {@code 
META-INF/**}{@code /*.tld} files. By default this is a list
- * that only contains {@link WebInfPerLibJarMetaInfTldSource#INSTANCE}. 
This corresponds to the behavior that the
- * JSP specification describes. See the {@link MetaInfTldSource} 
subclasses for the possible values and their
- * meanings.
- * 
- * 
- * This is usually set via the init-params of {@link FreemarkerServlet}.
- * 
- * @param metaInfTldSources
- *The list of {@link MetaInfTldSource} subclass instances. 
Their order matters if multiple TLD-s define
- *a taglib with the same {@code taglib-uri}. In that case, the 
one found by the earlier
- *{@link MetaInfTldSource} wins.
- * 
- * @see #setClasspathTlds(List)
- */
-public void setMetaInfTldSources(List/**/ 
metaInfTldSources) {
-checkNotStarted();
-_NullArgumentException.check("metaInfTldSources", metaInfTldSources);
-this.metaInfTldSources = metaInfTldSources;
-}
-
-/**
- * See {@link #setClasspathTlds(List)}.
- */
-public List/**/ getClasspathTlds() {
-return classpathTlds;
-}
-
-/**
- * Sets the class-loader resource paths of the TLD-s that aren't inside 
the locations covered by
- * {@link #setMetaInfTldSources(List)}, yet you want them to be 
discovered. They will be loaded with the class
- * loader provided by the servlet container.
- * 
- * 
- * This is usually set via the init-params of {@link FreemarkerServlet}.
- * 
- * @param classpathTlds
- *List of {@code String}-s, maybe {@code null}. Each item is a 
resource path, like
- *{@code "/META-INF/my.tld"}. (Relative resource paths will be 
interpreted as root-relative.)
- * 
- * @see #setMetaInfTldSources(List)
- */
-public void setClasspathTlds(List/**/ classpathTlds) {
-checkNotStarted();
-_NullArgumentException.check("classpathTlds", classpathTlds);
-this.classpathTlds = classpathTlds;
-}
 
 private void checkNotStarted() {
 synchronized (lock) {
@@ -2091,6 +2017,12 @@ public class TaglibFactory implements TemplateHashModel {
 return objectWrapper;
 }
 
+/**
+ * Sets the {@link ObjectWrapper} us

[17/17] incubator-freemarker git commit: FREEMARKER-55: Repeating things less in JavaDocs (for easier maintenance)

2017-07-06 Thread ddekany
FREEMARKER-55: Repeating things less in JavaDocs (for easier maintenance)


Project: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/repo
Commit: 
http://git-wip-us.apache.org/repos/asf/incubator-freemarker/commit/52d11425
Tree: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/tree/52d11425
Diff: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/diff/52d11425

Branch: refs/heads/3
Commit: 52d1142570aa2448e1dabb5c898b503f188dcb1e
Parents: 32a2961
Author: ddekany 
Authored: Thu Jul 6 10:18:26 2017 +0200
Committer: ddekany 
Committed: Thu Jul 6 10:18:26 2017 +0200

--
 .../freemarker/servlet/jsp/TaglibFactory.java   | 21 
 1 file changed, 4 insertions(+), 17 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/52d11425/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/TaglibFactory.java
--
diff --git 
a/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/TaglibFactory.java
 
b/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/TaglibFactory.java
index 94b151c..ef5d9df 100644
--- 
a/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/TaglibFactory.java
+++ 
b/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/TaglibFactory.java
@@ -2102,24 +2102,21 @@ public class TaglibFactory implements TemplateHashModel 
{
 }
 
 /**
- * Get ServletContext instance.
- * @return ServletContext instance
+ * Get {@link ServletContext} that the {@link TaglibFactory} will 
belong to.
  */
 public ServletContext getServletContext() {
 return servletContext;
 }
 
 /**
- * Get ObjectWrapper to be used in model building.
- * @return ObjectWrapper to be used in model building
+ * Gets the {@link ObjectWrapper} to be used in model building.
  */
 public ObjectWrapper getObjectWrapper() {
 return objectWrapper;
 }
 
 /**
- * Get the list of places where to look for {@code META-INF/**}{@code 
/*.tld} files.
- * @return the list of places where to look for {@code 
META-INF/**}{@code /*.tld} files
+ * Getter pair of {@link #setClasspathTlds(List)}
  */
 public List getMetaInfTldSources() {
 return (metaInfTldSources != null) ? metaInfTldSources : 
Collections. emptyList();
@@ -2148,10 +2145,6 @@ public class TaglibFactory implements TemplateHashModel {
 
 /**
  * Fluent API equivalent of {@link #setMetaInfTldSources(List)}.
- * @param metaInfTldSources
- *The list of {@link MetaInfTldSource} subclass instances. 
Their order matters if multiple TLD-s define
- *a taglib with the same {@code taglib-uri}. In that case, 
the one found by the earlier
- *{@link MetaInfTldSource} wins.
  * @return this builder
  */
 public Builder metaInfTldSources(List 
metaInfTldSources) {
@@ -2160,10 +2153,7 @@ public class TaglibFactory implements TemplateHashModel {
 }
 
 /**
- * Get the class-loader resource paths of the TLD-s that aren't inside 
the locations covered by
- * {@link #setMetaInfTldSources(List)}, yet you want them to be 
discovered.
- * @return the class-loader resource paths of the TLD-s that aren't 
inside the locations covered by
- * {@link #setMetaInfTldSources(List)}, yet you want them to be 
discovered
+ * Getter pair of {@link #setClasspathTlds(List)}.
  */
 public List getClasspathTlds() {
 return (classpathTlds != null) ? classpathTlds : 
Collections. emptyList();
@@ -2190,9 +2180,6 @@ public class TaglibFactory implements TemplateHashModel {
 
 /**
  * Fluent API equivalent of {@link #setClasspathTlds(List)}.
- * @param classpathTlds
- *List of {@code String}-s, maybe {@code null}. Each item 
is a resource path, like
- *{@code "/META-INF/my.tld"}. (Relative resource paths 
will be interpreted as root-relative.)
  * @return this builder
  */
 public Builder classpathTlds(List classpathTlds) {



[05/17] incubator-freemarker git commit: FREEMARKER-55: TaglibFactory must be created only by builder.

2017-07-06 Thread ddekany
FREEMARKER-55: TaglibFactory must be created only by builder.


Project: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/repo
Commit: 
http://git-wip-us.apache.org/repos/asf/incubator-freemarker/commit/78071707
Tree: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/tree/78071707
Diff: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/diff/78071707

Branch: refs/heads/3
Commit: 78071707b4ed13e1bcec4dc16fb55ffdf62e12e0
Parents: c0bb490
Author: Woonsan Ko 
Authored: Wed Jul 5 16:45:44 2017 -0400
Committer: Woonsan Ko 
Committed: Wed Jul 5 16:45:44 2017 -0400

--
 .../freemarker/servlet/FreemarkerServlet.java   |   4 +-
 .../freemarker/servlet/jsp/TaglibFactory.java   | 118 +--
 2 files changed, 61 insertions(+), 61 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/78071707/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/FreemarkerServlet.java
--
diff --git 
a/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/FreemarkerServlet.java
 
b/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/FreemarkerServlet.java
index aad3d55..da0435d 100644
--- 
a/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/FreemarkerServlet.java
+++ 
b/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/FreemarkerServlet.java
@@ -636,7 +636,7 @@ public class FreemarkerServlet extends HttpServlet {
 } else if 
(name.equals(INIT_PARAM_EXCEPTION_ON_MISSING_TEMPLATE)) {
 exceptionOnMissingTemplate = _StringUtil.getYesNo(value);
 } else if (name.equals(INIT_PARAM_META_INF_TLD_LOCATIONS)) {
-metaInfTldSources = 
TaglibFactory.Builder.parseMetaInfTldLocations(InitParamParser.parseCommaSeparatedList(value));
+metaInfTldSources = 
TaglibFactory.parseMetaInfTldLocations(InitParamParser.parseCommaSeparatedList(value));
 } else if (name.equals(INIT_PARAM_CLASSPATH_TLDS)) {
 List newClasspathTlds = new ArrayList();
 if (classpathTlds != null) {
@@ -1000,7 +1000,7 @@ public class FreemarkerServlet extends HttpServlet {
 try {
 final String prop = 
_SecurityUtil.getSystemProperty(SYSTEM_PROPERTY_META_INF_TLD_SOURCES, null);
 metaInfTldSourcesFromSysProp = (List) ((prop != 
null)
-? 
TaglibFactory.Builder.parseMetaInfTldLocations(InitParamParser.parseCommaSeparatedList(prop))
+? 
TaglibFactory.parseMetaInfTldLocations(InitParamParser.parseCommaSeparatedList(prop))
 : Collections.emptyList());
 } catch (ParseException e) {
 throw new TemplateModelException(

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/78071707/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/TaglibFactory.java
--
diff --git 
a/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/TaglibFactory.java
 
b/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/TaglibFactory.java
index 4679e27..2026f8b 100644
--- 
a/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/TaglibFactory.java
+++ 
b/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/TaglibFactory.java
@@ -137,6 +137,59 @@ public class TaglibFactory implements TemplateHashModel {
 private List/**/ failedTldLocations = new ArrayList();
 private int nextTldLocationLookupPhase = 0;
 
+public static MetaInfTldSource parseMetaInfTldLocation(String value) 
throws ParseException {
+MetaInfTldSource metaInfTldSource;
+
+if 
(value.equals(FreemarkerServlet.META_INF_TLD_LOCATION_WEB_INF_PER_LIB_JARS)) {
+metaInfTldSource = WebInfPerLibJarMetaInfTldSource.INSTANCE;
+} else if 
(value.startsWith(FreemarkerServlet.META_INF_TLD_LOCATION_CLASSPATH)) {
+String itemRightSide = 
value.substring(FreemarkerServlet.META_INF_TLD_LOCATION_CLASSPATH.length())
+.trim();
+
+if (itemRightSide.length() == 0) {
+metaInfTldSource = new 
ClasspathMetaInfTldSource(Pattern.compile(".*", Pattern.DOTALL));
+} else if (itemRightSide.startsWith(":")) {
+final String regexpStr = itemRightSide.substring(1).trim();
+if (regexpStr.length() == 0) {
+throw new ParseException("Empty regular expression after 
\""
++ 
FreemarkerServlet.META_INF_TLD_LOCATION_CLASSPATH + ":\"", -1);
+}
+metaInfTldSource = new 
ClasspathMetaInfTldSource(Pattern.compile(regexpStr));
+} else {
+  

[03/17] incubator-freemarker git commit: FREEMARKER-55: moving builder into TaglibFactory

2017-07-06 Thread ddekany
FREEMARKER-55: moving builder into TaglibFactory


Project: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/repo
Commit: 
http://git-wip-us.apache.org/repos/asf/incubator-freemarker/commit/dcbebe9b
Tree: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/tree/dcbebe9b
Diff: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/diff/dcbebe9b

Branch: refs/heads/3
Commit: dcbebe9b19e85dff067a46c4394e107916fb7845
Parents: 3c91ecb
Author: Woonsan Ko 
Authored: Wed Jul 5 16:30:09 2017 -0400
Committer: Woonsan Ko 
Committed: Wed Jul 5 16:30:09 2017 -0400

--
 .../freemarker/servlet/FreemarkerServlet.java   |   7 +-
 .../freemarker/servlet/jsp/TaglibFactory.java   | 132 +++
 .../servlet/jsp/TaglibFactoryBuilder.java   | 167 ---
 .../spring/web/view/FreemarkerViewResolver.java |   3 +-
 .../spring/web/view/FreemarkerViewTest.java |   3 +-
 5 files changed, 137 insertions(+), 175 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/dcbebe9b/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/FreemarkerServlet.java
--
diff --git 
a/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/FreemarkerServlet.java
 
b/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/FreemarkerServlet.java
index 9b5008f..c56f6d7 100644
--- 
a/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/FreemarkerServlet.java
+++ 
b/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/FreemarkerServlet.java
@@ -65,7 +65,6 @@ import org.apache.freemarker.core.util._SecurityUtil;
 import org.apache.freemarker.core.util._StringUtil;
 import org.apache.freemarker.servlet.jsp.TaglibFactory;
 import org.apache.freemarker.servlet.jsp.TaglibFactory.MetaInfTldSource;
-import org.apache.freemarker.servlet.jsp.TaglibFactoryBuilder;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -637,7 +636,7 @@ public class FreemarkerServlet extends HttpServlet {
 } else if 
(name.equals(INIT_PARAM_EXCEPTION_ON_MISSING_TEMPLATE)) {
 exceptionOnMissingTemplate = _StringUtil.getYesNo(value);
 } else if (name.equals(INIT_PARAM_META_INF_TLD_LOCATIONS)) {
-metaInfTldSources = 
TaglibFactoryBuilder.parseMetaInfTldLocations(InitParamParser.parseCommaSeparatedList(value));
+metaInfTldSources = 
TaglibFactory.Builder.parseMetaInfTldLocations(InitParamParser.parseCommaSeparatedList(value));
 } else if (name.equals(INIT_PARAM_CLASSPATH_TLDS)) {
 List newClasspathTlds = new ArrayList();
 if (classpathTlds != null) {
@@ -1001,7 +1000,7 @@ public class FreemarkerServlet extends HttpServlet {
 try {
 final String prop = 
_SecurityUtil.getSystemProperty(SYSTEM_PROPERTY_META_INF_TLD_SOURCES, null);
 metaInfTldSourcesFromSysProp = (List) ((prop != 
null)
-? 
TaglibFactoryBuilder.parseMetaInfTldLocations(InitParamParser.parseCommaSeparatedList(prop))
+? 
TaglibFactory.Builder.parseMetaInfTldLocations(InitParamParser.parseCommaSeparatedList(prop))
 : Collections.emptyList());
 } catch (ParseException e) {
 throw new TemplateModelException(
@@ -1028,7 +1027,7 @@ public class FreemarkerServlet extends HttpServlet {
 "Failed to parse system property \"" + 
SYSTEM_PROPERTY_CLASSPATH_TLDS + "\"", e);
 }
 
-return new TaglibFactoryBuilder(servletContext, objectWrapper)
+return new TaglibFactory.Builder(servletContext, objectWrapper)
 .addAllMetaInfTldSources(metaInfTldSources)
 .addAllMetaInfTldSources(metaInfTldSourcesFromSysProp)
 .addAllJettyMetaInfTldJarPatterns(jettyTaglibJarPatterns)

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/dcbebe9b/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/TaglibFactory.java
--
diff --git 
a/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/TaglibFactory.java
 
b/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/TaglibFactory.java
index 0fbba1b..9da15e4 100644
--- 
a/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/TaglibFactory.java
+++ 
b/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/TaglibFactory.java
@@ -38,6 +38,7 @@ import java.net.URLConnection;
 import java.net.URLDecoder;
 import java.net.URLEncoder;
 import java.nio.charset.Charset;
+import java.text.ParseException;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.Enumeration;
@@ -61,6 +62,7 @@ im

[04/17] incubator-freemarker git commit: FREEMARKER-55: simplify builder constructor

2017-07-06 Thread ddekany
FREEMARKER-55: simplify builder constructor


Project: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/repo
Commit: 
http://git-wip-us.apache.org/repos/asf/incubator-freemarker/commit/c0bb4903
Tree: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/tree/c0bb4903
Diff: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/diff/c0bb4903

Branch: refs/heads/3
Commit: c0bb4903c6494c873c97d9a0190de68288e4a1bb
Parents: dcbebe9
Author: Woonsan Ko 
Authored: Wed Jul 5 16:37:32 2017 -0400
Committer: Woonsan Ko 
Committed: Wed Jul 5 16:37:32 2017 -0400

--
 .../freemarker/servlet/FreemarkerServlet.java   |  4 +-
 .../freemarker/servlet/jsp/TaglibFactory.java   | 46 ++--
 .../spring/web/view/FreemarkerViewResolver.java |  5 ++-
 .../spring/web/view/FreemarkerViewTest.java |  5 ++-
 4 files changed, 54 insertions(+), 6 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/c0bb4903/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/FreemarkerServlet.java
--
diff --git 
a/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/FreemarkerServlet.java
 
b/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/FreemarkerServlet.java
index c56f6d7..aad3d55 100644
--- 
a/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/FreemarkerServlet.java
+++ 
b/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/FreemarkerServlet.java
@@ -1027,7 +1027,9 @@ public class FreemarkerServlet extends HttpServlet {
 "Failed to parse system property \"" + 
SYSTEM_PROPERTY_CLASSPATH_TLDS + "\"", e);
 }
 
-return new TaglibFactory.Builder(servletContext, objectWrapper)
+return new TaglibFactory.Builder()
+.servletContext(servletContext)
+.objectWrapper(objectWrapper)
 .addAllMetaInfTldSources(metaInfTldSources)
 .addAllMetaInfTldSources(metaInfTldSourcesFromSysProp)
 .addAllJettyMetaInfTldJarPatterns(jettyTaglibJarPatterns)

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/c0bb4903/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/TaglibFactory.java
--
diff --git 
a/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/TaglibFactory.java
 
b/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/TaglibFactory.java
index 9da15e4..4679e27 100644
--- 
a/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/TaglibFactory.java
+++ 
b/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/TaglibFactory.java
@@ -1998,12 +1998,12 @@ public class TaglibFactory implements TemplateHashModel 
{
 /**
  * Servlet context.
  */
-private final ServletContext servletContext;
+private ServletContext servletContext;
 
 /**
  * Object wrapper to be used in model building.
  */
-private final ObjectWrapper objectWrapper;
+private ObjectWrapper objectWrapper;
 
 /**
  * TLD locations to look for when finding available JSP tag libraries.
@@ -2015,11 +2015,51 @@ public class TaglibFactory implements TemplateHashModel 
{
  */
 private List classPathTlds = new ArrayList<>();
 
-public Builder(ServletContext servletContext, ObjectWrapper 
objectWrapper) {
+public Builder() {
+}
+
+public ServletContext getServletContext() {
+return servletContext;
+}
+
+public void setServletContext(ServletContext servletContext) {
 this.servletContext = servletContext;
+}
+
+public Builder servletContext(ServletContext servletContext) {
+setServletContext(servletContext);
+return this;
+}
+
+public ObjectWrapper getObjectWrapper() {
+return objectWrapper;
+}
+
+public void setObjectWrapper(ObjectWrapper objectWrapper) {
 this.objectWrapper = objectWrapper;
 }
 
+public Builder objectWrapper(ObjectWrapper objectWrapper) {
+setObjectWrapper(objectWrapper);
+return this;
+}
+
+public List getMetaInfTldSources() {
+return metaInfTldSources;
+}
+
+public void setMetaInfTldSources(List 
metaInfTldSources) {
+this.metaInfTldSources = metaInfTldSources;
+}
+
+public List getClassPathTlds() {
+return classPathTlds;
+}
+
+public void setClassPathTlds(List classPathTlds) {
+this.classPathTlds = classPathTlds;
+}
+
 public Builder addMetaInfTldSource(MetaInfTldSourc

[08/17] incubator-freemarker git commit: FREEMARKER-55: cleanups (while loop and input streams)

2017-07-06 Thread ddekany
FREEMARKER-55: cleanups (while loop and input streams)


Project: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/repo
Commit: 
http://git-wip-us.apache.org/repos/asf/incubator-freemarker/commit/2a8d7617
Tree: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/tree/2a8d7617
Diff: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/diff/2a8d7617

Branch: refs/heads/3
Commit: 2a8d76179ba783de5d81e24fa2ec1ec7ad001e39
Parents: 196158b
Author: Woonsan Ko 
Authored: Wed Jul 5 18:45:50 2017 -0400
Committer: Woonsan Ko 
Committed: Wed Jul 5 18:45:50 2017 -0400

--
 .../freemarker/servlet/jsp/TaglibFactory.java   | 57 +---
 1 file changed, 26 insertions(+), 31 deletions(-)
--


http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/2a8d7617/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/TaglibFactory.java
--
diff --git 
a/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/TaglibFactory.java
 
b/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/TaglibFactory.java
index e1df54f..556c632 100644
--- 
a/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/TaglibFactory.java
+++ 
b/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/jsp/TaglibFactory.java
@@ -353,13 +353,9 @@ public class TaglibFactory implements TemplateHashModel {
 
 private TldLocation getExplicitlyMappedTldLocation(final String uri) 
throws SAXException, IOException,
 TaglibGettingException {
-while (true) {
-final TldLocation tldLocation = (TldLocation) 
tldLocations.get(uri);
-
-if (tldLocation != null) {
-return tldLocation;
-}
+TldLocation tldLocation;
 
+for (tldLocation = tldLocations.get(uri); tldLocation == null; 
tldLocation = tldLocations.get(uri)) {
 switch (nextTldLocationLookupPhase) {
 case 0:
 // Not in JSP spec.
@@ -385,6 +381,8 @@ public class TaglibFactory implements TemplateHashModel {
 
 nextTldLocationLookupPhase++;
 }
+
+return tldLocation;
 }
 
 private void addTldLocationsFromWebXml() throws SAXException, IOException {
@@ -595,11 +593,8 @@ public class TaglibFactory implements TemplateHashModel {
 ZipInputStream zipIn = new ZipInputStream(in);
 
 try {
-while (true) {
-ZipEntry curEntry = zipIn.getNextEntry();
-if (curEntry == null) break;
-
-String curEntryPath = 
normalizeJarEntryPath(curEntry.getName(), false);
+for (ZipEntry entry = zipIn.getNextEntry(); entry != null; 
entry = zipIn.getNextEntry()) {
+String curEntryPath = 
normalizeJarEntryPath(entry.getName(), false);
 if (curEntryPath.startsWith(metaInfEntryPath) && 
curEntryPath.endsWith(".tld")) {
 addTldLocationFromTld(zipIn,
 new 
ServletContextJarEntryTldLocation(jarResourcePath, curEntryPath)); 
@@ -685,16 +680,16 @@ public class TaglibFactory implements TemplateHashModel {
 }
 
 final InputStream in = new URL(rawJarContentUrlEF).openStream();
+if (in == null) {
+throw new IOException("TLD resource in a jar resource not 
found: " + rawJarContentUrlEF);
+}
 
 try {
 ZipInputStream zipIn = new ZipInputStream(in);
 
 try {
-while (true) {
-ZipEntry curEntry = zipIn.getNextEntry();
-if (curEntry == null) break;
-
-String curEntryPath = 
normalizeJarEntryPath(curEntry.getName(), false);
+for (ZipEntry entry = zipIn.getNextEntry(); entry != null; 
entry = zipIn.getNextEntry()) {
+String curEntryPath = 
normalizeJarEntryPath(entry.getName(), false);
 if (curEntryPath.startsWith(baseEntryPath) && 
curEntryPath.endsWith(".tld")) {
 final String curEntryBaseRelativePath = 
curEntryPath.substring(baseEntryPath.length());
 final URL tldUrl = 
createJarEntryUrl(jarBaseEntryUrl, curEntryBaseRelativePath);
@@ -749,12 +744,15 @@ public class TaglibFactory implements TemplateHashModel {
  * Adds the TLD location mapping from the TLD itself.
  */
 private void addTldLocationFromTld(TldLocation tldLocation) throws 
IOException, SAXException {
-InputStream in = tldLocation.getInputStream();
+InputStream in = null;
 
 try {
+in = tldLocation.getInputStream();
 

[GitHub] incubator-freemarker pull request #26: FREEMARKER-55: polishing and cleanups...

2017-07-06 Thread asfgit
Github user asfgit closed the pull request at:

https://github.com/apache/incubator-freemarker/pull/26


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastruct...@apache.org or file a JIRA ticket
with INFRA.
---