You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@freemarker.apache.org by dd...@apache.org on 2017/06/19 09:29:10 UTC

[1/6] incubator-freemarker git commit: FREEMARKER-54: Remove ConfigurationFactoryBean#setSettings(...) because ancestor already contains equivalent one. Also, separate spring logger.

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 <wo...@apache.org>
Authored: Sun Jun 18 22:12:03 2017 -0400
Committer: Woonsan Ko <wo...@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))


[4/6] incubator-freemarker git commit: FREEMARKER-54: Adding autoImports property example in unit test

Posted by dd...@apache.org.
FREEMARKER-54: Adding autoImports property example in unit test


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

Branch: refs/heads/3
Commit: 2c5a4fda1bd0abed5d62c5b27ec5d26cc452b071
Parents: 87da456
Author: Woonsan Ko <wo...@apache.org>
Authored: Mon Jun 19 00:25:14 2017 -0400
Committer: Woonsan Ko <wo...@apache.org>
Committed: Mon Jun 19 00:25:14 2017 -0400

----------------------------------------------------------------------
 .../spring/ConfigurationFactoryBeanTest.java       | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/2c5a4fda/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 cccc9be..010664b 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
@@ -37,6 +37,7 @@ import org.apache.freemarker.core.Template;
 import org.apache.freemarker.core.TemplateLanguage;
 import org.apache.freemarker.core.Version;
 import org.apache.freemarker.core.model.impl.RestrictedObjectWrapper;
+import org.apache.freemarker.core.outputformat.impl.PlainTextOutputFormat;
 import org.apache.freemarker.core.templateresolver.CacheStorage;
 import org.apache.freemarker.core.templateresolver.impl.MruCacheStorage;
 import org.apache.freemarker.core.templateresolver.impl.StringTemplateLoader;
@@ -70,6 +71,7 @@ public class ConfigurationFactoryBeanTest {
         final Properties settings = new Properties();
 
         settings.setProperty(MutableParsingAndProcessingConfiguration.SOURCE_ENCODING_KEY, "UTF-8");
+        settings.setProperty(MutableParsingAndProcessingConfiguration.OUTPUT_FORMAT_KEY, "PlainTextOutputFormat()");
         settings.setProperty(MutableParsingAndProcessingConfiguration.WHITESPACE_STRIPPING_KEY, "true");
         settings.setProperty(MutableParsingAndProcessingConfiguration.AUTO_ESCAPING_POLICY_KEY, "enableIfSupported");
         settings.setProperty(MutableParsingAndProcessingConfiguration.RECOGNIZE_STANDARD_FILE_EXTENSIONS_KEY, "true");
@@ -85,6 +87,10 @@ public class ConfigurationFactoryBeanTest {
         sharedVars.put("sharedVar1", "sharedVal1");
         sharedVars.put("sharedVar2", "sharedVal2");
 
+        final Map<String, String> autoImports = new HashMap<>();
+        autoImports.put("mylib1", "/libs/mylib1.ftl");
+        autoImports.put("mylib2", "/libs/mylib2.ftl");
+
         final StringTemplateLoader templateLoader = new StringTemplateLoader();
         templateLoader.putTemplate("fooTemplate", "foo");
 
@@ -106,6 +112,12 @@ public class ConfigurationFactoryBeanTest {
         //       <entry key="sharedVar2" value="sharedVal2" />
         //     </map>
         //   </property>
+        //   <property name="autoImports">
+        //     <map>
+        //       <entry key="mylib1" value="/libs/mylib1.ftl" />
+        //       <entry key="mylib2" value="/libs/mylib2.ftl" />
+        //     </map>
+        //   </property>
         //   <property name="templateUpdateDelayMilliseconds" value="60000" />
         //   <property name="localizedTemplateLookup" value="false" />
         //   <property name="templateLoader">
@@ -119,6 +131,7 @@ public class ConfigurationFactoryBeanTest {
                 .addPropertyValue("incompatibleImprovements", "3.0.0")
                 .addPropertyValue("settings", settings)
                 .addPropertyValue("sharedVariables", sharedVars)
+                .addPropertyValue("autoImports", autoImports)
                 .addPropertyValue("templateUpdateDelayMilliseconds", 60000)
                 .addPropertyValue("localizedTemplateLookup", "false")
                 .addPropertyValue("templateLoader", templateLoader)
@@ -135,6 +148,7 @@ public class ConfigurationFactoryBeanTest {
 
         assertEquals(new Version(3, 0, 0), config.getIncompatibleImprovements());
         assertEquals(Charset.forName("UTF-8"), config.getSourceEncoding());
+        assertEquals(PlainTextOutputFormat.INSTANCE.getName(), config.getOutputFormat().getName());
         assertTrue(config.isWhitespaceStrippingSet());
         assertEquals(AutoEscapingPolicy.ENABLE_IF_SUPPORTED, config.getAutoEscapingPolicy());
         assertTrue(config.isRecognizeStandardFileExtensionsSet());
@@ -154,6 +168,9 @@ public class ConfigurationFactoryBeanTest {
         assertEquals("sharedVal1", config.getSharedVariables().get("sharedVar1"));
         assertEquals("sharedVal2", config.getSharedVariables().get("sharedVar2"));
 
+        assertEquals("/libs/mylib1.ftl", config.getAutoImports().get("mylib1"));
+        assertEquals("/libs/mylib2.ftl", config.getAutoImports().get("mylib2"));
+
         final Template fooTemplate = config.getTemplate("fooTemplate");
         assertEquals("foo", fooTemplate.toString());
     }


[5/6] incubator-freemarker git commit: FREEMARKER-54: Adding baseLocation property in SpringResourceTemplateLoader for convenience.

Posted by dd...@apache.org.
FREEMARKER-54: Adding baseLocation property in SpringResourceTemplateLoader for convenience.


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

Branch: refs/heads/3
Commit: 85c43214e743eca5b82123ebfb1e2ac4dec1c073
Parents: 2c5a4fd
Author: Woonsan Ko <wo...@apache.org>
Authored: Mon Jun 19 00:52:25 2017 -0400
Committer: Woonsan Ko <wo...@apache.org>
Committed: Mon Jun 19 00:52:25 2017 -0400

----------------------------------------------------------------------
 .../SpringResourceTemplateLoader.java           | 52 +++++++++++++++++++-
 .../SpringResourceTemplateLoaderTest.java       |  5 +-
 2 files changed, 53 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/85c43214/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 3f96228..3230841 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
@@ -39,18 +39,55 @@ public class SpringResourceTemplateLoader implements TemplateLoader, ResourceLoa
 
     private static final Logger LOG = _SpringLogs.TEMPLATE_RESOLVER;
 
+    /**
+     * Base template resource location.
+     * <P>
+     * If this property is a non-null string, this is prepended to the template name internally when resolving
+     * a resource.
+     * </P>
+     */
+    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, TemplateLoaderSession session) throws IOException {
@@ -58,7 +95,15 @@ public class SpringResourceTemplateLoader implements TemplateLoader, ResourceLoa
             throw new IllegalStateException("Spring Framework ResourceLoader was not set.");
         }
 
-        Resource resource = resourceLoader.getResource(name);
+        String resourceLocation;
+
+        if (baseLocation == null) {
+            resourceLocation = name;
+        } else {
+            resourceLocation = baseLocation + "/" + name;
+        }
+
+        Resource resource = resourceLoader.getResource(resourceLocation);
 
         if (!resource.exists()) {
             return TemplateLoadingResult.NOT_FOUND;
@@ -74,7 +119,7 @@ public class SpringResourceTemplateLoader implements TemplateLoader, ResourceLoa
                 version = lmd;
             }
         } catch (IOException e) {
-            LOG.debug("The last modified timestamp of the resource at '{}' may not be resolved.", name, e);
+            LOG.debug("The last modified timestamp of the resource at '{}' may not be resolved.", resourceLocation, e);
         }
 
         if (ifSourceDiffersFrom != null && ifSourceDiffersFrom.equals(source)
@@ -85,6 +130,9 @@ public class SpringResourceTemplateLoader implements TemplateLoader, ResourceLoa
         return new TemplateLoadingResult(source, version, resource.getInputStream(), null);
     }
 
+    /**
+     * {@inheritDoc}
+     */
     @Override
     public void resetState() {
         // Does nothing

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/85c43214/freemarker-spring/src/test/java/org/apache/freemarker/spring/templateresolver/SpringResourceTemplateLoaderTest.java
----------------------------------------------------------------------
diff --git a/freemarker-spring/src/test/java/org/apache/freemarker/spring/templateresolver/SpringResourceTemplateLoaderTest.java b/freemarker-spring/src/test/java/org/apache/freemarker/spring/templateresolver/SpringResourceTemplateLoaderTest.java
index 23f604e..bcf014a 100644
--- a/freemarker-spring/src/test/java/org/apache/freemarker/spring/templateresolver/SpringResourceTemplateLoaderTest.java
+++ b/freemarker-spring/src/test/java/org/apache/freemarker/spring/templateresolver/SpringResourceTemplateLoaderTest.java
@@ -46,6 +46,7 @@ public class SpringResourceTemplateLoaderTest {
     public void setUp() throws IOException {
         appContext = new GenericApplicationContext();
         templateLoader = new SpringResourceTemplateLoader();
+        templateLoader.setBaseLocation(TEMPLATE_BASE_PATH);
         templateLoader.setResourceLoader(appContext);
         cfg = new TestConfigurationBuilder().templateLoader(templateLoader).build();
     }
@@ -62,7 +63,7 @@ public class SpringResourceTemplateLoaderTest {
     @Test
     public void testSuccessful() throws Exception {
         for (int i = 0; i < 2; i++) {
-            assertEquals("foo", cfg.getTemplate(TEMPLATE_BASE_PATH + "sub1/sub2/t.ftl").toString());
+            assertEquals("foo", cfg.getTemplate("sub1/sub2/t.ftl").toString());
         }
     }
 
@@ -70,7 +71,7 @@ public class SpringResourceTemplateLoaderTest {
     public void testNotFound() throws Exception {
         for (int i = 0; i < 2; i++) {
             try {
-                cfg.getTemplate(TEMPLATE_BASE_PATH + "sub1X/sub2/t.ftl");
+                cfg.getTemplate("sub1X/sub2/t.ftl");
                 fail();
             } catch (TemplateNotFoundException e) {
                 assertThat(e.getMessage(), containsString("sub1X"));


[6/6] incubator-freemarker git commit: Remove unnecessary #setSettings(); Logging correction; VersionEditor for conversion between string and Version

Posted by dd...@apache.org.
Remove unnecessary #setSettings(); Logging correction; VersionEditor for conversion between string and Version

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

Branch: refs/heads/3
Commit: ed304385653c612de88f9980586fdc2769f13a2e
Parents: 3332072 85c4321
Author: ddekany <dd...@apache.org>
Authored: Mon Jun 19 11:27:57 2017 +0200
Committer: ddekany <dd...@apache.org>
Committed: Mon Jun 19 11:28:40 2017 +0200

----------------------------------------------------------------------
 .../freemarker/core/VersionEditorTest.java      | 119 +++++++++++++++++++
 .../apache/freemarker/core/VersionEditor.java   |  53 +++++++++
 .../spring/ConfigurationFactoryBean.java        |  19 ---
 .../apache/freemarker/spring/_SpringLogs.java   |  35 ++++++
 .../SpringResourceTemplateLoader.java           |  59 +++++++--
 .../spring/ConfigurationFactoryBeanTest.java    |  79 +++++++++---
 .../freemarker/spring/VersionPropertyTest.java  |  76 ++++++++++++
 .../SpringResourceTemplateLoaderTest.java       |   5 +-
 8 files changed, 403 insertions(+), 42 deletions(-)
----------------------------------------------------------------------



[3/6] incubator-freemarker git commit: FREEMARKER-54: Adding templateLoader prop example in unit test.

Posted by dd...@apache.org.
FREEMARKER-54: Adding templateLoader prop example in unit test.


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

Branch: refs/heads/3
Commit: 87da456664f98cbb3ea2ac2ef1bc30de7504119a
Parents: cb43725
Author: Woonsan Ko <wo...@apache.org>
Authored: Mon Jun 19 00:08:05 2017 -0400
Committer: Woonsan Ko <wo...@apache.org>
Committed: Mon Jun 19 00:08:05 2017 -0400

----------------------------------------------------------------------
 .../spring/ConfigurationFactoryBeanTest.java          | 14 ++++++++++++++
 1 file changed, 14 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/87da4566/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 a77e944..cccc9be 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
@@ -33,11 +33,13 @@ import org.apache.freemarker.core.Configuration.ExtendableBuilder;
 import org.apache.freemarker.core.MutableParsingAndProcessingConfiguration;
 import org.apache.freemarker.core.NamingConvention;
 import org.apache.freemarker.core.TagSyntax;
+import org.apache.freemarker.core.Template;
 import org.apache.freemarker.core.TemplateLanguage;
 import org.apache.freemarker.core.Version;
 import org.apache.freemarker.core.model.impl.RestrictedObjectWrapper;
 import org.apache.freemarker.core.templateresolver.CacheStorage;
 import org.apache.freemarker.core.templateresolver.impl.MruCacheStorage;
+import org.apache.freemarker.core.templateresolver.impl.StringTemplateLoader;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
@@ -83,6 +85,9 @@ public class ConfigurationFactoryBeanTest {
         sharedVars.put("sharedVar1", "sharedVal1");
         sharedVars.put("sharedVar2", "sharedVal2");
 
+        final StringTemplateLoader templateLoader = new StringTemplateLoader();
+        templateLoader.putTemplate("fooTemplate", "foo");
+
         // Creating bean definition which is equivalent to <bean/> element in Spring XML configuration like the following:
         //
         // <bean class="org.apache.freemarker.spring.ConfigurationFactoryBean">
@@ -103,7 +108,12 @@ public class ConfigurationFactoryBeanTest {
         //   </property>
         //   <property name="templateUpdateDelayMilliseconds" value="60000" />
         //   <property name="localizedTemplateLookup" value="false" />
+        //   <property name="templateLoader">
+        //     <bean class="org.apache.freemarker.core.templateresolver.impl.StringTemplateLoader">
+        //     </bean>
+        //   </property>
         // </bean>
+        //
         BeanDefinition beanDef =
                 BeanDefinitionBuilder.genericBeanDefinition(ConfigurationFactoryBean.class.getName())
                 .addPropertyValue("incompatibleImprovements", "3.0.0")
@@ -111,6 +121,7 @@ public class ConfigurationFactoryBeanTest {
                 .addPropertyValue("sharedVariables", sharedVars)
                 .addPropertyValue("templateUpdateDelayMilliseconds", 60000)
                 .addPropertyValue("localizedTemplateLookup", "false")
+                .addPropertyValue("templateLoader", templateLoader)
                 .getBeanDefinition();
 
         appContext.registerBeanDefinition("freemarkerConfig", beanDef);
@@ -142,6 +153,9 @@ public class ConfigurationFactoryBeanTest {
 
         assertEquals("sharedVal1", config.getSharedVariables().get("sharedVar1"));
         assertEquals("sharedVal2", config.getSharedVariables().get("sharedVar2"));
+
+        final Template fooTemplate = config.getTemplate("fooTemplate");
+        assertEquals("foo", fooTemplate.toString());
     }
 
 }


[2/6] incubator-freemarker git commit: FREEMARKER-54: Support Version convertion editor between string and Version object for spring community

Posted by dd...@apache.org.
FREEMARKER-54: Support Version convertion editor between string and Version object for spring community


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

Branch: refs/heads/3
Commit: cb43725a79e851c11d4552d3a5ab0b6d70d43e9d
Parents: 9482852
Author: Woonsan Ko <wo...@apache.org>
Authored: Sun Jun 18 23:13:56 2017 -0400
Committer: Woonsan Ko <wo...@apache.org>
Committed: Sun Jun 18 23:13:56 2017 -0400

----------------------------------------------------------------------
 .../freemarker/core/VersionEditorTest.java      | 119 +++++++++++++++++++
 .../apache/freemarker/core/VersionEditor.java   |  53 +++++++++
 .../spring/ConfigurationFactoryBeanTest.java    |   2 +-
 .../freemarker/spring/VersionPropertyTest.java  |  76 ++++++++++++
 4 files changed, 249 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/cb43725a/freemarker-core-test/src/test/java/org/apache/freemarker/core/VersionEditorTest.java
----------------------------------------------------------------------
diff --git a/freemarker-core-test/src/test/java/org/apache/freemarker/core/VersionEditorTest.java b/freemarker-core-test/src/test/java/org/apache/freemarker/core/VersionEditorTest.java
new file mode 100644
index 0000000..60c4746
--- /dev/null
+++ b/freemarker-core-test/src/test/java/org/apache/freemarker/core/VersionEditorTest.java
@@ -0,0 +1,119 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.freemarker.core;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.fail;
+
+import org.junit.Test;
+
+public class VersionEditorTest {
+
+    @Test
+    public void testFromString() {
+        VersionEditor editor = new VersionEditor();
+        editor.setAsText("1.2.3-beta2");
+        Version v = (Version) editor.getValue();
+        assertEquals("1.2.3-beta2", v.toString());
+        assertEquals("1.2.3-beta2", editor.getAsText());
+    }
+
+    @Test
+    public void testFromString2() {
+        VersionEditor editor = new VersionEditor();
+        editor.setAsText("01.002.0003-20130524");
+        Version v = (Version) editor.getValue();
+        assertEquals("01.002.0003-20130524", v.toString());
+        assertEquals("01.002.0003-20130524", editor.getAsText());
+
+        editor.setAsText("01.002.0003.4");
+        v = (Version) editor.getValue();
+        assertEquals("01.002.0003.4", v.toString());
+        assertEquals("01.002.0003.4", editor.getAsText());
+
+        editor.setAsText("1.2.3.FC");
+        v = (Version) editor.getValue();
+        assertEquals("1.2.3.FC", v.toString());
+        assertEquals("1.2.3.FC", editor.getAsText());
+
+        editor.setAsText("1.2.3mod");
+        v = (Version) editor.getValue();
+        assertEquals("1.2.3mod", v.toString());
+        assertEquals("1.2.3mod", editor.getAsText());
+
+    }
+
+    @Test
+    public void testFromStringIncubating() {
+        VersionEditor editor = new VersionEditor();
+        editor.setAsText("2.3.24-rc01-incubating");
+        Version v = (Version) editor.getValue();
+        assertEquals("2.3.24-rc01-incubating", v.toString());
+        assertEquals("2.3.24-rc01-incubating", editor.getAsText());
+    }
+
+    @Test
+    public void testMalformed() {
+        VersionEditor editor = new VersionEditor();
+
+        try {
+            editor.setAsText("1.2.");
+            fail();
+        } catch (IllegalArgumentException e) {
+            // expected
+        }
+
+        try {
+            editor.setAsText("1.2.3.");
+            fail();
+        } catch (IllegalArgumentException e) {
+            // expected
+        }
+
+        try {
+            editor.setAsText("1..3");
+            fail();
+        } catch (IllegalArgumentException e) {
+            // expected
+        }
+
+        try {
+            editor.setAsText(".2");
+            fail();
+        } catch (IllegalArgumentException e) {
+            // expected
+        }
+
+        try {
+            editor.setAsText("a");
+            fail();
+        } catch (IllegalArgumentException e) {
+            // expected
+        }
+
+        try {
+            editor.setAsText("-a");
+            fail();
+        } catch (IllegalArgumentException e) {
+            // expected
+        }
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/cb43725a/freemarker-core/src/main/java/org/apache/freemarker/core/VersionEditor.java
----------------------------------------------------------------------
diff --git a/freemarker-core/src/main/java/org/apache/freemarker/core/VersionEditor.java b/freemarker-core/src/main/java/org/apache/freemarker/core/VersionEditor.java
new file mode 100644
index 0000000..7b17ae9
--- /dev/null
+++ b/freemarker-core/src/main/java/org/apache/freemarker/core/VersionEditor.java
@@ -0,0 +1,53 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.freemarker.core;
+
+import java.beans.PropertyEditor;
+import java.beans.PropertyEditorSupport;
+
+/**
+ * {@link PropertyEditor} for {@link Version}, to directly populate a <code>Version</code> property
+ * instead of using a String property as bridge.
+ */
+public class VersionEditor extends PropertyEditorSupport {
+
+    /**
+     * Create a new VersionEditor.
+     */
+    public VersionEditor() {
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void setAsText(String versionString) throws IllegalArgumentException {
+        setValue(new Version(versionString));
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public String getAsText() {
+        Version version = (Version) getValue();
+        return (version != null ? version.toString() : null);
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/cb43725a/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 ddfd320..a77e944 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
@@ -106,7 +106,7 @@ public class ConfigurationFactoryBeanTest {
         // </bean>
         BeanDefinition beanDef =
                 BeanDefinitionBuilder.genericBeanDefinition(ConfigurationFactoryBean.class.getName())
-                .addPropertyValue("incompatibleImprovements", new Version(3, 0, 0))
+                .addPropertyValue("incompatibleImprovements", "3.0.0")
                 .addPropertyValue("settings", settings)
                 .addPropertyValue("sharedVariables", sharedVars)
                 .addPropertyValue("templateUpdateDelayMilliseconds", 60000)

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/cb43725a/freemarker-spring/src/test/java/org/apache/freemarker/spring/VersionPropertyTest.java
----------------------------------------------------------------------
diff --git a/freemarker-spring/src/test/java/org/apache/freemarker/spring/VersionPropertyTest.java b/freemarker-spring/src/test/java/org/apache/freemarker/spring/VersionPropertyTest.java
new file mode 100644
index 0000000..ff69a75
--- /dev/null
+++ b/freemarker-spring/src/test/java/org/apache/freemarker/spring/VersionPropertyTest.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.spring;
+
+import static org.junit.Assert.assertEquals;
+
+import org.apache.freemarker.core.Version;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.springframework.beans.factory.config.BeanDefinition;
+import org.springframework.beans.factory.support.BeanDefinitionBuilder;
+import org.springframework.context.support.GenericApplicationContext;
+
+public class VersionPropertyTest {
+
+    private GenericApplicationContext appContext;
+
+    @Before
+    public void setUp() throws Exception {
+        appContext = new GenericApplicationContext();
+    }
+
+    @After
+    public void tearDown() throws Exception {
+        if (appContext.isActive()) {
+            appContext.stop();
+            appContext.destroy();
+            appContext.close();
+        }
+    }
+
+    @Test
+    public void testVersionPropertySettingByString() throws Exception {
+        BeanDefinition beanDef =
+                BeanDefinitionBuilder.genericBeanDefinition(VersionHolder.class.getName())
+                .addPropertyValue("version", "3.1.4-beta1592")
+                .getBeanDefinition();
+
+        appContext.registerBeanDefinition("versionHolder", beanDef);
+        appContext.refresh();
+        appContext.start();
+
+        VersionHolder versionHolder = appContext.getBean("versionHolder", VersionHolder.class);
+        assertEquals(new Version("3.1.4-beta1592"), versionHolder.getVersion());
+    }
+
+    public static class VersionHolder {
+
+        private Version version;
+
+        public Version getVersion() {
+            return version;
+        }
+
+        public void setVersion(Version version) {
+            this.version = version;
+        }
+    }
+}