subscribe
subscribe
[1/2] incubator-freemarker git commit: (Change log update)
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...
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
[ 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.)
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
[ 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
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.
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
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
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
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
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
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)
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.
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
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
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
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)
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.
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
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
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)
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...
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. ---