Repository: incubator-freemarker Updated Branches: refs/heads/3 33320725f -> ed3043856
FREEMARKER-54: Remove ConfigurationFactoryBean#setSettings(...) because ancestor already contains equivalent one. Also, separate spring logger. Project: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/commit/94828521 Tree: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/tree/94828521 Diff: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/diff/94828521 Branch: refs/heads/3 Commit: 94828521fc30f0d51c7728d37b537404c8096bfe Parents: 1988dc0 Author: Woonsan Ko <woon...@apache.org> Authored: Sun Jun 18 22:12:03 2017 -0400 Committer: Woonsan Ko <woon...@apache.org> Committed: Sun Jun 18 22:12:03 2017 -0400 ---------------------------------------------------------------------- .../spring/ConfigurationFactoryBean.java | 19 -------- .../apache/freemarker/spring/_SpringLogs.java | 35 +++++++++++++++ .../SpringResourceTemplateLoader.java | 9 ++-- .../spring/ConfigurationFactoryBeanTest.java | 46 ++++++++++++++------ 4 files changed, 71 insertions(+), 38 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/94828521/freemarker-spring/src/main/java/org/apache/freemarker/spring/ConfigurationFactoryBean.java ---------------------------------------------------------------------- diff --git a/freemarker-spring/src/main/java/org/apache/freemarker/spring/ConfigurationFactoryBean.java b/freemarker-spring/src/main/java/org/apache/freemarker/spring/ConfigurationFactoryBean.java index da275e7..6f78750 100644 --- a/freemarker-spring/src/main/java/org/apache/freemarker/spring/ConfigurationFactoryBean.java +++ b/freemarker-spring/src/main/java/org/apache/freemarker/spring/ConfigurationFactoryBean.java @@ -18,10 +18,6 @@ */ package org.apache.freemarker.spring; -import java.util.Collections; -import java.util.LinkedHashMap; -import java.util.Map; - import org.apache.freemarker.core.Configuration; import org.apache.freemarker.core.Configuration.ExtendableBuilder; import org.springframework.beans.BeansException; @@ -41,8 +37,6 @@ public class ConfigurationFactoryBean extends ExtendableBuilder<ConfigurationFac private AbstractFactoryBean<Configuration> delegate; - private Map<String, String> settings = new LinkedHashMap<>(); - public ConfigurationFactoryBean() { // By default, set the default version constant. // #setIncompatibleImprovements(Version) can be used to change it. @@ -57,25 +51,12 @@ public class ConfigurationFactoryBean extends ExtendableBuilder<ConfigurationFac @Override protected Configuration createInstance() throws Exception { - for (Map.Entry<String, String> entry : settings.entrySet()) { - setSetting(entry.getKey(), entry.getValue()); - } - return build(); } }; } - public Map<String, String> getSettings() { - return Collections.unmodifiableMap(settings); - } - - public void setSettings(Map<String, String> settings) { - this.settings.clear(); - this.settings.putAll(settings); - } - @Override public Configuration getObject() throws Exception { return delegate.getObject(); http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/94828521/freemarker-spring/src/main/java/org/apache/freemarker/spring/_SpringLogs.java ---------------------------------------------------------------------- diff --git a/freemarker-spring/src/main/java/org/apache/freemarker/spring/_SpringLogs.java b/freemarker-spring/src/main/java/org/apache/freemarker/spring/_SpringLogs.java new file mode 100644 index 0000000..87d0a63 --- /dev/null +++ b/freemarker-spring/src/main/java/org/apache/freemarker/spring/_SpringLogs.java @@ -0,0 +1,35 @@ +/* + * 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 org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * For internal use only; don't depend on this, there's no backward compatibility guarantee at all! + * This class is to work around the lack of module system in Java, i.e., so that other FreeMarker packages can + * access things inside this package that users shouldn't. + */ +public final class _SpringLogs { + + public static final Logger CORE = LoggerFactory.getLogger("org.apache.freemarker.spring"); + + public static final Logger TEMPLATE_RESOLVER = LoggerFactory.getLogger("org.apache.freemarker.spring.templateresolver"); + +} http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/94828521/freemarker-spring/src/main/java/org/apache/freemarker/spring/templateresolver/SpringResourceTemplateLoader.java ---------------------------------------------------------------------- diff --git a/freemarker-spring/src/main/java/org/apache/freemarker/spring/templateresolver/SpringResourceTemplateLoader.java b/freemarker-spring/src/main/java/org/apache/freemarker/spring/templateresolver/SpringResourceTemplateLoader.java index a327bab..3f96228 100644 --- a/freemarker-spring/src/main/java/org/apache/freemarker/spring/templateresolver/SpringResourceTemplateLoader.java +++ b/freemarker-spring/src/main/java/org/apache/freemarker/spring/templateresolver/SpringResourceTemplateLoader.java @@ -22,11 +22,11 @@ import java.io.IOException; import java.io.Serializable; import java.util.Objects; -import org.apache.freemarker.core._CoreLogs; 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.apache.freemarker.spring._SpringLogs; import org.slf4j.Logger; import org.springframework.context.ResourceLoaderAware; import org.springframework.core.io.Resource; @@ -37,7 +37,7 @@ import org.springframework.core.io.ResourceLoader; */ public class SpringResourceTemplateLoader implements TemplateLoader, ResourceLoaderAware { - private static final Logger LOG = _CoreLogs.TEMPLATE_RESOLVER; + private static final Logger LOG = _SpringLogs.TEMPLATE_RESOLVER; private ResourceLoader resourceLoader; @@ -74,10 +74,7 @@ public class SpringResourceTemplateLoader implements TemplateLoader, ResourceLoa version = lmd; } } catch (IOException e) { - if (LOG.isDebugEnabled()) { - LOG.debug("The last modified timestamp of the resource at '{}' may not be resolved. {}", name, - e.toString()); - } + LOG.debug("The last modified timestamp of the resource at '{}' may not be resolved.", name, e); } if (ifSourceDiffersFrom != null && ifSourceDiffersFrom.equals(source) http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/94828521/freemarker-spring/src/test/java/org/apache/freemarker/spring/ConfigurationFactoryBeanTest.java ---------------------------------------------------------------------- diff --git a/freemarker-spring/src/test/java/org/apache/freemarker/spring/ConfigurationFactoryBeanTest.java b/freemarker-spring/src/test/java/org/apache/freemarker/spring/ConfigurationFactoryBeanTest.java index 0938f5b..ddfd320 100644 --- a/freemarker-spring/src/test/java/org/apache/freemarker/spring/ConfigurationFactoryBeanTest.java +++ b/freemarker-spring/src/test/java/org/apache/freemarker/spring/ConfigurationFactoryBeanTest.java @@ -24,8 +24,8 @@ import static org.junit.Assert.assertTrue; import java.nio.charset.Charset; import java.util.HashMap; -import java.util.LinkedHashMap; import java.util.Map; +import java.util.Properties; import org.apache.freemarker.core.AutoEscapingPolicy; import org.apache.freemarker.core.Configuration; @@ -65,25 +65,45 @@ public class ConfigurationFactoryBeanTest { @Test public void testConfigurationFactoryBeanSettings() throws Exception { - final Map<String, String> settings = new LinkedHashMap<>(); + final Properties settings = new Properties(); - settings.put(MutableParsingAndProcessingConfiguration.SOURCE_ENCODING_KEY, "UTF-8"); - settings.put(MutableParsingAndProcessingConfiguration.WHITESPACE_STRIPPING_KEY, "true"); - settings.put(MutableParsingAndProcessingConfiguration.AUTO_ESCAPING_POLICY_KEY, "enableIfSupported"); - settings.put(MutableParsingAndProcessingConfiguration.RECOGNIZE_STANDARD_FILE_EXTENSIONS_KEY, "true"); - settings.put(MutableParsingAndProcessingConfiguration.TEMPLATE_LANGUAGE_KEY, "FTL"); - settings.put(MutableParsingAndProcessingConfiguration.TAG_SYNTAX_KEY, "squareBracket"); - settings.put(MutableParsingAndProcessingConfiguration.NAMING_CONVENTION_KEY, "camelCase"); - settings.put(MutableParsingAndProcessingConfiguration.TAB_SIZE_KEY, "4"); + settings.setProperty(MutableParsingAndProcessingConfiguration.SOURCE_ENCODING_KEY, "UTF-8"); + settings.setProperty(MutableParsingAndProcessingConfiguration.WHITESPACE_STRIPPING_KEY, "true"); + settings.setProperty(MutableParsingAndProcessingConfiguration.AUTO_ESCAPING_POLICY_KEY, "enableIfSupported"); + settings.setProperty(MutableParsingAndProcessingConfiguration.RECOGNIZE_STANDARD_FILE_EXTENSIONS_KEY, "true"); + settings.setProperty(MutableParsingAndProcessingConfiguration.TEMPLATE_LANGUAGE_KEY, "FTL"); + settings.setProperty(MutableParsingAndProcessingConfiguration.TAG_SYNTAX_KEY, "squareBracket"); + settings.setProperty(MutableParsingAndProcessingConfiguration.NAMING_CONVENTION_KEY, "camelCase"); + settings.setProperty(MutableParsingAndProcessingConfiguration.TAB_SIZE_KEY, "4"); - settings.put(ExtendableBuilder.OBJECT_WRAPPER_KEY, "restricted"); - settings.put(ExtendableBuilder.TEMPLATE_CACHE_STORAGE_KEY, "strong:20, soft:250"); + settings.setProperty(ExtendableBuilder.OBJECT_WRAPPER_KEY, "restricted"); + settings.setProperty(ExtendableBuilder.TEMPLATE_CACHE_STORAGE_KEY, "strong:20, soft:250"); final Map<String, Object> sharedVars = new HashMap<>(); sharedVars.put("sharedVar1", "sharedVal1"); sharedVars.put("sharedVar2", "sharedVal2"); - // Creating bean definition which is equivalent to <bean/> element in Spring XML configuration. + // Creating bean definition which is equivalent to <bean/> element in Spring XML configuration like the following: + // + // <bean class="org.apache.freemarker.spring.ConfigurationFactoryBean"> + // <property name="incompatibleImprovements" value="3.0.0" /> + // <property name="settings"> + // <props> + // <prop key="source_encoding">UTF-8</prop> + // <prop key="whitespace_stripping">true</prop> + // <!-- SNIP --> + // <prop key="template_cache_storage">strong:20, soft:250</prop> + // </props> + // </property> + // <property name="sharedVariables"> + // <map> + // <entry key="sharedVar1" value="sharedVal1" /> + // <entry key="sharedVar2" value="sharedVal2" /> + // </map> + // </property> + // <property name="templateUpdateDelayMilliseconds" value="60000" /> + // <property name="localizedTemplateLookup" value="false" /> + // </bean> BeanDefinition beanDef = BeanDefinitionBuilder.genericBeanDefinition(ConfigurationFactoryBean.class.getName()) .addPropertyValue("incompatibleImprovements", new Version(3, 0, 0))