Repository: incubator-freemarker
Updated Branches:
  refs/heads/3 34c767555 -> 53c2fbac8


Removed the logTemplateExceptions (log_template_exceptions) setting. FreeMarker 
now behaves as if it was false. When a FreeMarker method throws an exception, 
the caller is responsible for either logging it or letting it bubble up.


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

Branch: refs/heads/3
Commit: 53c2fbac83d3f7c7e8eb68d48da26e16306832da
Parents: 34c7675
Author: ddekany <[email protected]>
Authored: Mon Jun 12 22:49:20 2017 +0200
Committer: ddekany <[email protected]>
Committed: Mon Jun 12 22:49:20 2017 +0200

----------------------------------------------------------------------
 FM3-CHANGE-LOG.txt                              |  3 ++
 .../freemarker/core/ConfigurationTest.java      | 18 ++++---
 .../MutableProcessingConfigurationTest.java     |  8 ---
 .../core/TemplateConfigurationTest.java         |  2 -
 .../model/impl/DefaultObjectWrapperTest.java    |  1 -
 .../apache/freemarker/core/Configuration.java   | 21 --------
 .../org/apache/freemarker/core/Environment.java | 14 ++----
 .../core/MutableProcessingConfiguration.java    | 52 --------------------
 .../core/ProcessingConfiguration.java           | 18 -------
 .../org/apache/freemarker/core/Template.java    | 10 ----
 .../freemarker/core/TemplateConfiguration.java  | 23 ---------
 .../core/TemplateExceptionHandler.java          |  5 +-
 .../manual/examples/GettingStartedExample.java  |  3 --
 .../FreemarkerServletConfigurationBuilder.java  |  6 ---
 .../servlet/jsp/RealServletContainertTest.java  | 11 ++---
 15 files changed, 24 insertions(+), 171 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/53c2fbac/FM3-CHANGE-LOG.txt
----------------------------------------------------------------------
diff --git a/FM3-CHANGE-LOG.txt b/FM3-CHANGE-LOG.txt
index f6e7a66..1970caa 100644
--- a/FM3-CHANGE-LOG.txt
+++ b/FM3-CHANGE-LOG.txt
@@ -267,3 +267,6 @@ the FreeMarer 3 changelog here:
     like applications could break when moved to another server if the 
application
     was unwillingly relying on the default.
   - Changed the default of logTemplateExceptions to false.
+- Removed the logTemplateExceptions (log_template_exceptions) setting. 
FreeMarker now
+  behaves as if it was false. When a FreeMarker method throws an exception, the
+  caller is responsible for either logging it or letting it bubble up.
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/53c2fbac/freemarker-core-test/src/test/java/org/apache/freemarker/core/ConfigurationTest.java
----------------------------------------------------------------------
diff --git 
a/freemarker-core-test/src/test/java/org/apache/freemarker/core/ConfigurationTest.java
 
b/freemarker-core-test/src/test/java/org/apache/freemarker/core/ConfigurationTest.java
index b06035e..395e192 100644
--- 
a/freemarker-core-test/src/test/java/org/apache/freemarker/core/ConfigurationTest.java
+++ 
b/freemarker-core-test/src/test/java/org/apache/freemarker/core/ConfigurationTest.java
@@ -95,21 +95,23 @@ public class ConfigurationTest {
 
     @Test
     public void testUnsetAndIsSet() throws Exception {
+        // TODO This should automatically test all setting via reflection...
+
         Configuration.ExtendableBuilder<?> cfgB = new Builder(VERSION_3_0_0);
         
-        assertFalse(cfgB.isLogTemplateExceptionsSet());
-        assertFalse(cfgB.getLogTemplateExceptions());
+        assertFalse(cfgB.isAutoEscapingPolicySet());
+        assertEquals(AutoEscapingPolicy.ENABLE_IF_DEFAULT, 
cfgB.getAutoEscapingPolicy());
         //
-        cfgB.setLogTemplateExceptions(true);
+        cfgB.setAutoEscapingPolicy(AutoEscapingPolicy.DISABLE);
         {
-            assertTrue(cfgB.isLogTemplateExceptionsSet());
-            assertTrue(cfgB.getLogTemplateExceptions());
+            assertTrue(cfgB.isAutoEscapingPolicySet());
+            assertEquals(AutoEscapingPolicy.DISABLE, 
cfgB.getAutoEscapingPolicy());
         }
         //
         for (int i = 0; i < 2; i++) {
-            cfgB.unsetLogTemplateExceptions();
-            assertFalse(cfgB.isLogTemplateExceptionsSet());
-            assertFalse(cfgB.getLogTemplateExceptions());
+            cfgB.unsetAutoEscapingPolicy();
+            assertFalse(cfgB.isAutoEscapingPolicySet());
+            assertEquals(AutoEscapingPolicy.ENABLE_IF_DEFAULT, 
cfgB.getAutoEscapingPolicy());
         }
 
         DefaultObjectWrapper dow = new 
DefaultObjectWrapper.Builder(VERSION_3_0_0).build();

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/53c2fbac/freemarker-core-test/src/test/java/org/apache/freemarker/core/MutableProcessingConfigurationTest.java
----------------------------------------------------------------------
diff --git 
a/freemarker-core-test/src/test/java/org/apache/freemarker/core/MutableProcessingConfigurationTest.java
 
b/freemarker-core-test/src/test/java/org/apache/freemarker/core/MutableProcessingConfigurationTest.java
index 001f0bc..718bc76 100644
--- 
a/freemarker-core-test/src/test/java/org/apache/freemarker/core/MutableProcessingConfigurationTest.java
+++ 
b/freemarker-core-test/src/test/java/org/apache/freemarker/core/MutableProcessingConfigurationTest.java
@@ -376,14 +376,6 @@ public class MutableProcessingConfigurationTest {
     }
 
     @Test
-    public void testSetLogTemplateExceptionsViaSetSettingAPI() throws 
ConfigurationException {
-        Configuration.Builder cfg = new 
Configuration.Builder(Configuration.VERSION_3_0_0);
-        assertFalse(cfg.getLogTemplateExceptions());
-        
cfg.setSetting(MutableProcessingConfiguration.LOG_TEMPLATE_EXCEPTIONS_KEY, 
"true");
-        assertTrue(cfg.getLogTemplateExceptions());
-    }
-
-    @Test
     public void testApiBuiltinEnabled() throws Exception {
         try {
             new Template(

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/53c2fbac/freemarker-core-test/src/test/java/org/apache/freemarker/core/TemplateConfigurationTest.java
----------------------------------------------------------------------
diff --git 
a/freemarker-core-test/src/test/java/org/apache/freemarker/core/TemplateConfigurationTest.java
 
b/freemarker-core-test/src/test/java/org/apache/freemarker/core/TemplateConfigurationTest.java
index 5cf5811..47002d8 100644
--- 
a/freemarker-core-test/src/test/java/org/apache/freemarker/core/TemplateConfigurationTest.java
+++ 
b/freemarker-core-test/src/test/java/org/apache/freemarker/core/TemplateConfigurationTest.java
@@ -160,7 +160,6 @@ public class TemplateConfigurationTest {
         SETTING_ASSIGNMENTS.put("dateFormat", "yyyy-#DDD");
         SETTING_ASSIGNMENTS.put("dateTimeFormat", "yyyy-#DDD-@HH:mm");
         SETTING_ASSIGNMENTS.put("locale", NON_DEFAULT_LOCALE);
-        SETTING_ASSIGNMENTS.put("logTemplateExceptions", true);
         SETTING_ASSIGNMENTS.put("newBuiltinClassResolver", 
TemplateClassResolver.ALLOWS_NOTHING_RESOLVER);
         SETTING_ASSIGNMENTS.put("numberFormat", "0.0000");
         SETTING_ASSIGNMENTS.put("objectWrapper",
@@ -602,7 +601,6 @@ public class TemplateConfigurationTest {
 
         {
             TemplateConfiguration.Builder tcb = new 
TemplateConfiguration.Builder();
-            tcb.setLogTemplateExceptions(false);
             tcb.setTabSize(3);
             TemplateConfiguration tc = tcb.build();
             assertOutputWithoutAndWithTC(tc,

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/53c2fbac/freemarker-core-test/src/test/java/org/apache/freemarker/core/model/impl/DefaultObjectWrapperTest.java
----------------------------------------------------------------------
diff --git 
a/freemarker-core-test/src/test/java/org/apache/freemarker/core/model/impl/DefaultObjectWrapperTest.java
 
b/freemarker-core-test/src/test/java/org/apache/freemarker/core/model/impl/DefaultObjectWrapperTest.java
index 0a1e16c..41acce3 100644
--- 
a/freemarker-core-test/src/test/java/org/apache/freemarker/core/model/impl/DefaultObjectWrapperTest.java
+++ 
b/freemarker-core-test/src/test/java/org/apache/freemarker/core/model/impl/DefaultObjectWrapperTest.java
@@ -753,7 +753,6 @@ public class DefaultObjectWrapperTest {
     private String processTemplate(ObjectWrapper objectWrapper, Object value, 
String ftl)
             throws TemplateException, IOException {
         Configuration cfg = new TestConfigurationBuilder()
-                .logTemplateExceptions(false)
                 .objectWrapper(objectWrapper)
                 .build();
         StringWriter out = new StringWriter();

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/53c2fbac/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 7009bfa..d00d0d7 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
@@ -270,7 +270,6 @@ public final class Configuration implements 
TopLevelConfiguration, CustomStateSc
     private final TemplateClassResolver newBuiltinClassResolver;
     private final Boolean showErrorTips;
     private final Boolean apiBuiltinEnabled;
-    private final Boolean logTemplateExceptions;
     private final Map<String, TemplateDateFormatFactory> customDateFormats;
     private final Map<String, TemplateNumberFormatFactory> customNumberFormats;
     private final Map<String, String> autoImports;
@@ -435,7 +434,6 @@ public final class Configuration implements 
TopLevelConfiguration, CustomStateSc
         newBuiltinClassResolver = builder.getNewBuiltinClassResolver();
         showErrorTips = builder.getShowErrorTips();
         apiBuiltinEnabled = builder.getAPIBuiltinEnabled();
-        logTemplateExceptions = builder.getLogTemplateExceptions();
         customDateFormats = _CollectionUtil.mergeImmutableMaps(
                 builder.getImpliedCustomDateFormats(), 
builder.getCustomDateFormats(), false);
         customNumberFormats = _CollectionUtil.mergeImmutableMaps(
@@ -1157,20 +1155,6 @@ public final class Configuration implements 
TopLevelConfiguration, CustomStateSc
     }
 
     @Override
-    public boolean getLogTemplateExceptions() {
-        return logTemplateExceptions;
-    }
-
-    /**
-     * Always {@code true} in {@link Configuration}-s; even if this setting 
wasn't set in the builder, it gets a default
-     * value in the {@link Configuration}.
-     */
-    @Override
-    public boolean isLogTemplateExceptionsSet() {
-        return true;
-    }
-
-    @Override
     public boolean getLazyImports() {
         return lazyImports;
     }
@@ -2785,11 +2769,6 @@ public final class Configuration implements 
TopLevelConfiguration, CustomStateSc
         }
 
         @Override
-        protected boolean getDefaultLogTemplateExceptions() {
-            return false;
-        }
-
-        @Override
         protected boolean getDefaultLazyImports() {
             return false;
         }

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/53c2fbac/freemarker-core/src/main/java/org/apache/freemarker/core/Environment.java
----------------------------------------------------------------------
diff --git 
a/freemarker-core/src/main/java/org/apache/freemarker/core/Environment.java 
b/freemarker-core/src/main/java/org/apache/freemarker/core/Environment.java
index 8b14714..f0cc5a1 100644
--- a/freemarker-core/src/main/java/org/apache/freemarker/core/Environment.java
+++ b/freemarker-core/src/main/java/org/apache/freemarker/core/Environment.java
@@ -888,14 +888,13 @@ public final class Environment extends 
MutableProcessingConfiguration<Environmen
         }
         lastThrowable = templateException;
 
-        // Log the exception, if logTemplateExceptions isn't false. However, 
even if it's false, if we are inside
-        // an #attempt block, it has to be logged, as it certainly won't 
bubble up to the caller of FreeMarker.
-        if (LOG.isErrorEnabled() && (isInAttemptBlock() || 
getLogTemplateExceptions())) {
+        // Log the exception if we are inside an #attempt block; it has to be 
logged, as it certainly won't bubble up
+        // to the caller of FreeMarker.
+        if (LOG.isErrorEnabled() && isInAttemptBlock()) {
             LOG.error("Error executing FreeMarker template", 
templateException);
         }
 
-        // Stop exception is not passed to the handler, but
-        // explicitly rethrown.
+        // Stop exception is not passed to the handler, but explicitly 
rethrown.
         if (templateException instanceof StopException) {
             throw templateException;
         }
@@ -1060,11 +1059,6 @@ public final class Environment extends 
MutableProcessingConfiguration<Environmen
     }
 
     @Override
-    protected boolean getDefaultLogTemplateExceptions() {
-        return getMainTemplate().getLogTemplateExceptions();
-    }
-
-    @Override
     protected boolean getDefaultLazyImports() {
         return getMainTemplate().getLazyImports();
     }

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/53c2fbac/freemarker-core/src/main/java/org/apache/freemarker/core/MutableProcessingConfiguration.java
----------------------------------------------------------------------
diff --git 
a/freemarker-core/src/main/java/org/apache/freemarker/core/MutableProcessingConfiguration.java
 
b/freemarker-core/src/main/java/org/apache/freemarker/core/MutableProcessingConfiguration.java
index 5a68436..2b80ecc 100644
--- 
a/freemarker-core/src/main/java/org/apache/freemarker/core/MutableProcessingConfiguration.java
+++ 
b/freemarker-core/src/main/java/org/apache/freemarker/core/MutableProcessingConfiguration.java
@@ -209,13 +209,6 @@ public abstract class MutableProcessingConfiguration<SelfT 
extends MutableProces
     public static final String API_BUILTIN_ENABLED_KEY = 
API_BUILTIN_ENABLED_KEY_SNAKE_CASE;
     
     /** Legacy, snake case ({@code like_this}) variation of the setting name. 
*/
-    public static final String LOG_TEMPLATE_EXCEPTIONS_KEY_SNAKE_CASE = 
"log_template_exceptions";
-    /** Modern, camel case ({@code likeThis}) variation of the setting name. */
-    public static final String LOG_TEMPLATE_EXCEPTIONS_KEY_CAMEL_CASE = 
"logTemplateExceptions";
-    /** Alias to the {@code ..._SNAKE_CASE} variation due to backward 
compatibility constraints. */
-    public static final String LOG_TEMPLATE_EXCEPTIONS_KEY = 
LOG_TEMPLATE_EXCEPTIONS_KEY_SNAKE_CASE;
-
-    /** Legacy, snake case ({@code like_this}) variation of the setting name. 
*/
     public static final String LAZY_IMPORTS_KEY_SNAKE_CASE = "lazy_imports";
     /** Modern, camel case ({@code likeThis}) variation of the setting name. */
     public static final String LAZY_IMPORTS_KEY_CAMEL_CASE = "lazyImports";
@@ -258,7 +251,6 @@ public abstract class MutableProcessingConfiguration<SelfT 
extends MutableProces
         LAZY_AUTO_IMPORTS_KEY_SNAKE_CASE,
         LAZY_IMPORTS_KEY_SNAKE_CASE,
         LOCALE_KEY_SNAKE_CASE,
-        LOG_TEMPLATE_EXCEPTIONS_KEY_SNAKE_CASE,
         NEW_BUILTIN_CLASS_RESOLVER_KEY_SNAKE_CASE,
         NUMBER_FORMAT_KEY_SNAKE_CASE,
         OUTPUT_ENCODING_KEY_SNAKE_CASE,
@@ -285,7 +277,6 @@ public abstract class MutableProcessingConfiguration<SelfT 
extends MutableProces
         LAZY_AUTO_IMPORTS_KEY_CAMEL_CASE,
         LAZY_IMPORTS_KEY_CAMEL_CASE,
         LOCALE_KEY_CAMEL_CASE,
-        LOG_TEMPLATE_EXCEPTIONS_KEY_CAMEL_CASE,
         NEW_BUILTIN_CLASS_RESOLVER_KEY_CAMEL_CASE,
         NUMBER_FORMAT_KEY_CAMEL_CASE,
         OUTPUT_ENCODING_KEY_CAMEL_CASE,
@@ -316,7 +307,6 @@ public abstract class MutableProcessingConfiguration<SelfT 
extends MutableProces
     private TemplateClassResolver newBuiltinClassResolver;
     private Boolean showErrorTips;
     private Boolean apiBuiltinEnabled;
-    private Boolean logTemplateExceptions;
     private Map<String, TemplateDateFormatFactory> customDateFormats;
     private Map<String, TemplateNumberFormatFactory> customNumberFormats;
     private Map<String, String> autoImports;
@@ -1172,45 +1162,6 @@ public abstract class 
MutableProcessingConfiguration<SelfT extends MutableProces
     }
 
     @Override
-    public boolean getLogTemplateExceptions() {
-         return isLogTemplateExceptionsSet() ? logTemplateExceptions : 
getDefaultLogTemplateExceptions();
-    }
-
-    /**
-     * Returns the value the getter method returns when the setting is not set 
(possibly by inheriting the setting value
-     * from another {@link ProcessingConfiguration}), or throws {@link 
CoreSettingValueNotSetException}.
-     */
-    protected abstract boolean getDefaultLogTemplateExceptions();
-
-    @Override
-    public boolean isLogTemplateExceptionsSet() {
-        return logTemplateExceptions != null;
-    }
-
-    /**
-     * Setter pair of {@link #getLogTemplateExceptions()}
-     */
-    public void setLogTemplateExceptions(boolean value) {
-        logTemplateExceptions = value;
-    }
-
-    /**
-     * Fluent API equivalent of {@link #setLogTemplateExceptions(boolean)}
-     */
-    public SelfT logTemplateExceptions(boolean value) {
-        setLogTemplateExceptions(value);
-        return self();
-    }
-
-    /**
-     * Resets the setting value as if it was never set (but it doesn't affect 
the value inherited from another
-     * {@link ProcessingConfiguration}).
-     */
-    public void unsetLogTemplateExceptions() {
-        logTemplateExceptions = null;
-    }
-
-    @Override
     public boolean getLazyImports() {
          return isLazyImportsSet() ? lazyImports : getDefaultLazyImports();
     }
@@ -1934,9 +1885,6 @@ public abstract class 
MutableProcessingConfiguration<SelfT extends MutableProces
                             "Not predefined class resolved name, nor follows 
class resolver definition syntax, nor "
                             + "looks like class name");
                 }
-            } else if (LOG_TEMPLATE_EXCEPTIONS_KEY_SNAKE_CASE.equals(name)
-                    || LOG_TEMPLATE_EXCEPTIONS_KEY_CAMEL_CASE.equals(name)) {
-                setLogTemplateExceptions(_StringUtil.getYesNo(value));
             } else if (LAZY_AUTO_IMPORTS_KEY_SNAKE_CASE.equals(name) || 
LAZY_AUTO_IMPORTS_KEY_CAMEL_CASE.equals(name)) {
                 setLazyAutoImports(value.equals(NULL_VALUE) ? null : 
Boolean.valueOf(_StringUtil.getYesNo(value)));
             } else if (LAZY_IMPORTS_KEY_SNAKE_CASE.equals(name) || 
LAZY_IMPORTS_KEY_CAMEL_CASE.equals(name)) {

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/53c2fbac/freemarker-core/src/main/java/org/apache/freemarker/core/ProcessingConfiguration.java
----------------------------------------------------------------------
diff --git 
a/freemarker-core/src/main/java/org/apache/freemarker/core/ProcessingConfiguration.java
 
b/freemarker-core/src/main/java/org/apache/freemarker/core/ProcessingConfiguration.java
index 7186f00..085a627 100644
--- 
a/freemarker-core/src/main/java/org/apache/freemarker/core/ProcessingConfiguration.java
+++ 
b/freemarker-core/src/main/java/org/apache/freemarker/core/ProcessingConfiguration.java
@@ -533,24 +533,6 @@ public interface ProcessingConfiguration {
     boolean isShowErrorTipsSet();
 
     /**
-     * Specifies if {@link TemplateException}-s thrown by template processing 
are logged by FreeMarker or not. The
-     * default is {@code true} for backward compatibility, but that results in 
logging the exception twice in properly
-     * written applications, because there the {@link TemplateException} 
thrown by the public FreeMarker API is also
-     * logged by the caller (even if only as the cause exception of a higher 
level exception). Hence, in modern
-     * applications it should be set to {@code false}. Note that this setting 
has no effect on the logging of exceptions
-     * caught by {@code #attempt}; those are always logged, no mater what 
(because those exceptions won't bubble up
-     * until the API caller).
-     */
-    boolean getLogTemplateExceptions();
-
-    /**
-     * Tells if this setting is set directly in this object. If not, then 
depending on the implementing class, reading
-     * the setting mights returns a default value, or returns the value of the 
setting from a parent object, or throws
-     * an {@link CoreSettingValueNotSetException}.
-     */
-    boolean isLogTemplateExceptionsSet();
-
-    /**
      * Specifies if {@code <#import ...>} (and {@link 
Environment#importLib(String, String)}) should delay the loading
      * and processing of the imported templates until the content of the 
imported namespace is actually accessed. This
      * makes the overhead of <em>unused</em> imports negligible. A drawback is 
that importing a missing or otherwise

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/53c2fbac/freemarker-core/src/main/java/org/apache/freemarker/core/Template.java
----------------------------------------------------------------------
diff --git 
a/freemarker-core/src/main/java/org/apache/freemarker/core/Template.java 
b/freemarker-core/src/main/java/org/apache/freemarker/core/Template.java
index 02680fa..f134675 100644
--- a/freemarker-core/src/main/java/org/apache/freemarker/core/Template.java
+++ b/freemarker-core/src/main/java/org/apache/freemarker/core/Template.java
@@ -1007,16 +1007,6 @@ public class Template implements 
ProcessingConfiguration, CustomStateScope {
     }
 
     @Override
-    public boolean getLogTemplateExceptions() {
-        return tCfg != null && tCfg.isLogTemplateExceptionsSet() ? 
tCfg.getLogTemplateExceptions() : cfg.getLogTemplateExceptions();
-    }
-
-    @Override
-    public boolean isLogTemplateExceptionsSet() {
-        return tCfg != null && tCfg.isLogTemplateExceptionsSet();
-    }
-
-    @Override
     public boolean getLazyImports() {
         return tCfg != null && tCfg.isLazyImportsSet() ? tCfg.getLazyImports() 
: cfg.getLazyImports();
     }

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/53c2fbac/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 e7ca08a..60fa9ed 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
@@ -71,7 +71,6 @@ public final class TemplateConfiguration implements 
ParsingAndProcessingConfigur
     private final TemplateClassResolver newBuiltinClassResolver;
     private final Boolean showErrorTips;
     private final Boolean apiBuiltinEnabled;
-    private final Boolean logTemplateExceptions;
     private final Map<String, TemplateDateFormatFactory> customDateFormats;
     private final Map<String, TemplateNumberFormatFactory> customNumberFormats;
     private final Map<String, String> autoImports;
@@ -111,7 +110,6 @@ public final class TemplateConfiguration implements 
ParsingAndProcessingConfigur
         newBuiltinClassResolver = builder.isNewBuiltinClassResolverSet() ? 
builder.getNewBuiltinClassResolver() : null;
         showErrorTips = builder.isShowErrorTipsSet() ? 
builder.getShowErrorTips() : null;
         apiBuiltinEnabled = builder.isAPIBuiltinEnabledSet() ? 
builder.getAPIBuiltinEnabled() : null;
-        logTemplateExceptions = builder.isLogTemplateExceptionsSet() ? 
builder.getLogTemplateExceptions() : null;
         customDateFormats = builder.isCustomDateFormatsSet() ? 
builder.getCustomDateFormats() : null;
         customNumberFormats = builder.isCustomNumberFormatsSet() ? 
builder.getCustomNumberFormats() : null;
         autoImports = builder.isAutoImportsSet() ? builder.getAutoImports() : 
null;
@@ -509,19 +507,6 @@ public final class TemplateConfiguration implements 
ParsingAndProcessingConfigur
     }
 
     @Override
-    public boolean getLogTemplateExceptions() {
-        if (!isLogTemplateExceptionsSet()) {
-            throw new CoreSettingValueNotSetException("logTemplateExceptions");
-        }
-        return logTemplateExceptions;
-    }
-
-    @Override
-    public boolean isLogTemplateExceptionsSet() {
-        return logTemplateExceptions != null;
-    }
-
-    @Override
     public boolean getLazyImports() {
         if (!isLazyImportsSet()) {
             throw new CoreSettingValueNotSetException("lazyImports");
@@ -726,11 +711,6 @@ public final class TemplateConfiguration implements 
ParsingAndProcessingConfigur
         }
 
         @Override
-        protected boolean getDefaultLogTemplateExceptions() {
-            throw new CoreSettingValueNotSetException("logTemplateExceptions");
-        }
-
-        @Override
         protected boolean getDefaultLazyImports() {
             throw new CoreSettingValueNotSetException("lazyImports");
         }
@@ -809,9 +789,6 @@ public final class TemplateConfiguration implements 
ParsingAndProcessingConfigur
             if (tc.isLocaleSet()) {
                 setLocale(tc.getLocale());
             }
-            if (tc.isLogTemplateExceptionsSet()) {
-                setLogTemplateExceptions(tc.getLogTemplateExceptions());
-            }
             if (tc.isNamingConventionSet()) {
                 setNamingConvention(tc.getNamingConvention());
             }

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/53c2fbac/freemarker-core/src/main/java/org/apache/freemarker/core/TemplateExceptionHandler.java
----------------------------------------------------------------------
diff --git 
a/freemarker-core/src/main/java/org/apache/freemarker/core/TemplateExceptionHandler.java
 
b/freemarker-core/src/main/java/org/apache/freemarker/core/TemplateExceptionHandler.java
index 8270740..aea6c0b 100644
--- 
a/freemarker-core/src/main/java/org/apache/freemarker/core/TemplateExceptionHandler.java
+++ 
b/freemarker-core/src/main/java/org/apache/freemarker/core/TemplateExceptionHandler.java
@@ -40,9 +40,8 @@ public interface TemplateExceptionHandler {
      * 
      * <p>Note that {@link StopException}-s (raised by {@code #stop}) won't be 
captured.
      * 
-     * <p>Note that you shouldn't log the exception in this method unless you 
suppress it. If there's a concern that the
-     * exception might won't be logged after it bubbles up from {@link 
Template#process(Object, Writer)}, simply
-     * ensure that {@link Configuration#getLogTemplateExceptions()} is {@code 
true}. 
+     * <p>Note that you shouldn't log the exception in this method unless you 
suppress the exception. After
+     * all, eventually the exception is catched somewhere and is (hopefully) 
logged.
      * 
      * @param te The exception that occurred; don't forget to re-throw it 
unless you want to suppress it
      * @param env The runtime environment of the template

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/53c2fbac/freemarker-manual/src/test/java/org/apache/freemarker/manual/examples/GettingStartedExample.java
----------------------------------------------------------------------
diff --git 
a/freemarker-manual/src/test/java/org/apache/freemarker/manual/examples/GettingStartedExample.java
 
b/freemarker-manual/src/test/java/org/apache/freemarker/manual/examples/GettingStartedExample.java
index 7a0a906..a2809a4 100644
--- 
a/freemarker-manual/src/test/java/org/apache/freemarker/manual/examples/GettingStartedExample.java
+++ 
b/freemarker-manual/src/test/java/org/apache/freemarker/manual/examples/GettingStartedExample.java
@@ -20,7 +20,6 @@ package org.apache.freemarker.manual.examples;
 
 import java.io.OutputStreamWriter;
 import java.io.Writer;
-import java.nio.charset.StandardCharsets;
 import java.util.HashMap;
 import java.util.Map;
 
@@ -40,9 +39,7 @@ public class GettingStartedExample {
         /* Create the configuration singleton (using builder pattern) */
         Configuration cfg = new 
Configuration.Builder(Configuration.VERSION_3_0_0)
                 .templateLoader(new 
ClassTemplateLoader(GettingStartedExample.class, ""))
-                .sourceEncoding(StandardCharsets.UTF_8)
                 
.templateExceptionHandler(TemplateExceptionHandler.RETHROW_HANDLER)
-                .logTemplateExceptions(false)
                 .build();
 
         /* 
------------------------------------------------------------------------ */    

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/53c2fbac/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/FreemarkerServletConfigurationBuilder.java
----------------------------------------------------------------------
diff --git 
a/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/FreemarkerServletConfigurationBuilder.java
 
b/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/FreemarkerServletConfigurationBuilder.java
index c3eee4d..ecc1dff 100644
--- 
a/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/FreemarkerServletConfigurationBuilder.java
+++ 
b/freemarker-servlet/src/main/java/org/apache/freemarker/servlet/FreemarkerServletConfigurationBuilder.java
@@ -49,12 +49,6 @@ public class FreemarkerServletConfigurationBuilder<SelfT 
extends FreemarkerServl
         return TemplateExceptionHandler.HTML_DEBUG_HANDLER;
     }
 
-    // TODO [FM3] Remove when this will be the ExtendableBuilder default too.
-    @Override
-    protected boolean getDefaultLogTemplateExceptions() {
-        return false;
-    }
-
     @Override
     public void setTemplateLoader(TemplateLoader templateLoader) {
         super.setTemplateLoader(templateLoader);

http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/53c2fbac/freemarker-servlet/src/test/java/org/apache/freemarker/servlet/jsp/RealServletContainertTest.java
----------------------------------------------------------------------
diff --git 
a/freemarker-servlet/src/test/java/org/apache/freemarker/servlet/jsp/RealServletContainertTest.java
 
b/freemarker-servlet/src/test/java/org/apache/freemarker/servlet/jsp/RealServletContainertTest.java
index 32412a9..d881fe8 100644
--- 
a/freemarker-servlet/src/test/java/org/apache/freemarker/servlet/jsp/RealServletContainertTest.java
+++ 
b/freemarker-servlet/src/test/java/org/apache/freemarker/servlet/jsp/RealServletContainertTest.java
@@ -385,9 +385,7 @@ public class RealServletContainertTest extends 
WebAppTestCase {
             assertEquals(Configuration.VERSION_3_0_0, 
cfg.getIncompatibleImprovements());
             
             assertSame(cfg.getTemplateExceptionHandler(), 
TemplateExceptionHandler.HTML_DEBUG_HANDLER);
-            
-            assertFalse(cfg.getLogTemplateExceptions());
-            
+
             {
                 ObjectWrapper ow = cfg.getObjectWrapper();
                 assertTrue(ow instanceof DefaultObjectWrapper);
@@ -410,14 +408,15 @@ public class RealServletContainertTest extends 
WebAppTestCase {
         protected Configuration.ExtendableBuilder createConfigurationBuilder() 
{
             return new FreemarkerServletConfigurationBuilder(
                     AssertCustomizedDefaultsFreemarkerServlet.this, 
Configuration.VERSION_3_0_0) {
+
                 @Override
                 protected TemplateExceptionHandler 
getDefaultTemplateExceptionHandler() {
                     return TemplateExceptionHandler.RETHROW_HANDLER;
                 }
 
                 @Override
-                protected boolean getDefaultLogTemplateExceptions() {
-                    return true;
+                protected String getDefaultBooleanFormat() {
+                    return "Y,N";
                 }
 
                 @Override
@@ -440,7 +439,7 @@ public class RealServletContainertTest extends 
WebAppTestCase {
             
             assertSame(cfg.getTemplateExceptionHandler(), 
TemplateExceptionHandler.RETHROW_HANDLER);
             
-            assertTrue(cfg.getLogTemplateExceptions());
+            assertEquals("Y,N", cfg.getBooleanFormat());
             
             {
                 ObjectWrapper ow = cfg.getObjectWrapper();

Reply via email to