Repository: incubator-freemarker Updated Branches: refs/heads/3 05f297590 -> 5799df34e
TemplateClassResolver.UNRESTRICTED_RESOLVER and ALLOWS_NOTHING_RESOLVER was renamed to UNRESTRICTED and ALLOW_NOTHING. Also the String setting name "allows_nothing" and "allowsNothing" were renamed to "allow_nothing" and "allowNothing". Project: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/commit/6fa23374 Tree: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/tree/6fa23374 Diff: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/diff/6fa23374 Branch: refs/heads/3 Commit: 6fa23374a62cb55c9241bf16a8b7a6e99cd6ae71 Parents: 05f2975 Author: ddekany <[email protected]> Authored: Tue Jun 13 14:02:06 2017 +0200 Committer: ddekany <[email protected]> Committed: Tue Jun 13 14:02:06 2017 +0200 ---------------------------------------------------------------------- FM3-CHANGE-LOG.txt | 5 ++++- .../core/ObjectBuilderSettingsTest.java | 4 ++-- .../core/TemplateConfigurationTest.java | 2 +- .../freemarker/core/templatesuite/testcases.xml | 2 +- .../apache/freemarker/core/Configuration.java | 2 +- .../core/MutableProcessingConfiguration.java | 20 +++++++++++++------- .../core/ProcessingConfiguration.java | 4 ++-- .../freemarker/core/TemplateClassResolver.java | 4 ++-- .../core/util/OptInTemplateClassResolver.java | 4 ++-- 9 files changed, 28 insertions(+), 19 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/6fa23374/FM3-CHANGE-LOG.txt ---------------------------------------------------------------------- diff --git a/FM3-CHANGE-LOG.txt b/FM3-CHANGE-LOG.txt index a63f5ef..dbba17c 100644 --- a/FM3-CHANGE-LOG.txt +++ b/FM3-CHANGE-LOG.txt @@ -275,4 +275,7 @@ the FreeMarer 3 changelog here: DefaultTemplateNameFormat24 was renamed to DefaultTemplateNameFormat. - 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 + caller is responsible for either logging it or letting it bubble up. +- TemplateClassResolver.UNRESTRICTED_RESOLVER and ALLOWS_NOTHING_RESOLVER was renamed + to UNRESTRICTED and ALLOW_NOTHING. Also the String setting name "allows_nothing" and + "allowsNothing" were renamed to "allow_nothing" and "allowNothing". \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/6fa23374/freemarker-core-test/src/test/java/org/apache/freemarker/core/ObjectBuilderSettingsTest.java ---------------------------------------------------------------------- diff --git a/freemarker-core-test/src/test/java/org/apache/freemarker/core/ObjectBuilderSettingsTest.java b/freemarker-core-test/src/test/java/org/apache/freemarker/core/ObjectBuilderSettingsTest.java index 2f2d307..a618aa2 100644 --- a/freemarker-core-test/src/test/java/org/apache/freemarker/core/ObjectBuilderSettingsTest.java +++ b/freemarker-core-test/src/test/java/org/apache/freemarker/core/ObjectBuilderSettingsTest.java @@ -395,7 +395,7 @@ public class ObjectBuilderSettingsTest { props.setProperty(Configuration.ExtendableBuilder.TEMPLATE_CACHE_STORAGE_KEY, "soft: 500, strong: 100"); props.setProperty(MutableProcessingConfiguration.NEW_BUILTIN_CLASS_RESOLVER_KEY, - "allows_nothing"); + "allow_nothing"); cfgB.setSettings(props); assertEquals(DefaultObjectWrapper.class, cfgB.getObjectWrapper().getClass()); assertEquals(1, ((DummyArithmeticEngine) cfgB.getArithmeticEngine()).getX()); @@ -403,7 +403,7 @@ public class ObjectBuilderSettingsTest { assertEquals(Configuration.VERSION_3_0_0, ((DefaultObjectWrapper) cfgB.getObjectWrapper()).getIncompatibleImprovements()); assertEquals(500, ((MruCacheStorage) cfgB.getTemplateCacheStorage()).getSoftSizeLimit()); - assertEquals(TemplateClassResolver.ALLOWS_NOTHING_RESOLVER, cfgB.getNewBuiltinClassResolver()); + assertEquals(TemplateClassResolver.ALLOW_NOTHING, cfgB.getNewBuiltinClassResolver()); assertEquals(StandardCharsets.UTF_8, cfgB.getSourceEncoding()); } http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/6fa23374/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 47002d8..de5a44e 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,7 @@ 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("newBuiltinClassResolver", TemplateClassResolver.ALLOWS_NOTHING_RESOLVER); + SETTING_ASSIGNMENTS.put("newBuiltinClassResolver", TemplateClassResolver.ALLOW_NOTHING); SETTING_ASSIGNMENTS.put("numberFormat", "0.0000"); SETTING_ASSIGNMENTS.put("objectWrapper", new RestrictedObjectWrapper.Builder(Configuration.VERSION_3_0_0).build()); http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/6fa23374/freemarker-core-test/src/test/resources/org/apache/freemarker/core/templatesuite/testcases.xml ---------------------------------------------------------------------- diff --git a/freemarker-core-test/src/test/resources/org/apache/freemarker/core/templatesuite/testcases.xml b/freemarker-core-test/src/test/resources/org/apache/freemarker/core/templatesuite/testcases.xml index 159266b..958ff0e 100644 --- a/freemarker-core-test/src/test/resources/org/apache/freemarker/core/templatesuite/testcases.xml +++ b/freemarker-core-test/src/test/resources/org/apache/freemarker/core/templatesuite/testcases.xml @@ -177,7 +177,7 @@ Note that for the incompatible_improvements setting you can specify a list of ve <setting new_builtin_class_resolver="unrestricted"/> </testCase> <testCase name="new-allowsnothing" template="new-defaultresolver.ftl"> - <setting new_builtin_class_resolver="allows_nothing"/> + <setting new_builtin_class_resolver="allow_nothing"/> </testCase> <testCase name="new-optin"> <setting new_builtin_class_resolver=" http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/6fa23374/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 3ae0567..721acb5 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 @@ -2739,7 +2739,7 @@ public final class Configuration implements TopLevelConfiguration, CustomStateSc @Override protected TemplateClassResolver getDefaultNewBuiltinClassResolver() { - return TemplateClassResolver.UNRESTRICTED_RESOLVER; + return TemplateClassResolver.UNRESTRICTED; } @Override http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/6fa23374/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 97f0e2c..3324a78 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 @@ -1490,9 +1490,9 @@ public abstract class MutableProcessingConfiguration<SelfT extends MutableProces * The value must be one of these (ignore the quotation marks): * <ol> * <li><p>{@code "unrestricted"}: - * Use {@link TemplateClassResolver#UNRESTRICTED_RESOLVER} - * <li><p>{@code "allows_nothing"}: - * Use {@link TemplateClassResolver#ALLOWS_NOTHING_RESOLVER} + * Use {@link TemplateClassResolver#UNRESTRICTED} + * <li><p>{@code "allow_nothing"}: + * Use {@link TemplateClassResolver#ALLOW_NOTHING} * <li><p>Something that contains colon will use * {@link OptInTemplateClassResolver} and is expected to * store comma separated values (possibly quoted) segmented @@ -1515,7 +1515,7 @@ public abstract class MutableProcessingConfiguration<SelfT extends MutableProces * {@code lib/foo/bar.ftl}) and template {@code safe.ftl} * (that does not match {@code foo/safe.ftl}, only * exactly {@code safe.ftl}) to instantiate anything - * that {@link TemplateClassResolver#UNRESTRICTED_RESOLVER} allows. + * that {@link TemplateClassResolver#UNRESTRICTED} allows. * <tr> * <td> * {@code allowed_classes: com.example.C1, com.example.C2} @@ -1850,9 +1850,9 @@ public abstract class MutableProcessingConfiguration<SelfT extends MutableProces } else if (NEW_BUILTIN_CLASS_RESOLVER_KEY_SNAKE_CASE.equals(name) || NEW_BUILTIN_CLASS_RESOLVER_KEY_CAMEL_CASE.equals(name)) { if ("unrestricted".equals(value)) { - setNewBuiltinClassResolver(TemplateClassResolver.UNRESTRICTED_RESOLVER); - } else if ("allows_nothing".equals(value) || "allowsNothing".equals(value)) { - setNewBuiltinClassResolver(TemplateClassResolver.ALLOWS_NOTHING_RESOLVER); + setNewBuiltinClassResolver(TemplateClassResolver.UNRESTRICTED); + } else if ("allow_nothing".equals(value) || "allowNothing".equals(value)) { + setNewBuiltinClassResolver(TemplateClassResolver.ALLOW_NOTHING); } else if (value.indexOf(":") != -1) { List<_KeyValuePair<String, List<String>>> segments = parseAsSegmentedList(value); Set allowedClasses = null; @@ -1873,6 +1873,12 @@ public abstract class MutableProcessingConfiguration<SelfT extends MutableProces } setNewBuiltinClassResolver( new OptInTemplateClassResolver(allowedClasses, trustedTemplates)); + } else if ("allows_nothing".equals(value)) { + throw new InvalidSettingValueException( + name, value, "The correct value would be: allow_nothing"); + } else if ("allowsNothing".equals(value)) { + throw new InvalidSettingValueException( + name, value, "The correct value would be: allowNothing"); } else if (value.indexOf('.') != -1) { setNewBuiltinClassResolver((TemplateClassResolver) _ObjectBuilderSettingEvaluator.eval( value, TemplateClassResolver.class, false, http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/6fa23374/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 f600643..030511d 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 @@ -477,8 +477,8 @@ public interface ProcessingConfiguration { * The {@link TemplateClassResolver} that is used when the <code>new</code> built-in is called in a template. That * is, when a template contains the <code>"com.example.SomeClassName"?new</code> expression, this object will be * called to resolve the <code>"com.example.SomeClassName"</code> string to a class. The default value is {@link - * TemplateClassResolver#UNRESTRICTED_RESOLVER}. If you allow users to upload templates, it's important to use a - * custom restrictive {@link TemplateClassResolver} or {@link TemplateClassResolver#ALLOWS_NOTHING_RESOLVER}. + * TemplateClassResolver#UNRESTRICTED}. If you allow users to upload templates, it's important to use a + * custom restrictive {@link TemplateClassResolver} or {@link TemplateClassResolver#ALLOW_NOTHING}. */ TemplateClassResolver getNewBuiltinClassResolver(); http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/6fa23374/freemarker-core/src/main/java/org/apache/freemarker/core/TemplateClassResolver.java ---------------------------------------------------------------------- diff --git a/freemarker-core/src/main/java/org/apache/freemarker/core/TemplateClassResolver.java b/freemarker-core/src/main/java/org/apache/freemarker/core/TemplateClassResolver.java index c6146d5..415c66c 100644 --- a/freemarker-core/src/main/java/org/apache/freemarker/core/TemplateClassResolver.java +++ b/freemarker-core/src/main/java/org/apache/freemarker/core/TemplateClassResolver.java @@ -36,7 +36,7 @@ public interface TemplateClassResolver { /** * Simply calls {@link _ClassUtil#forName(String)}. */ - TemplateClassResolver UNRESTRICTED_RESOLVER = new TemplateClassResolver() { + TemplateClassResolver UNRESTRICTED = new TemplateClassResolver() { @Override public Class resolve(String className, Environment env, Template template) @@ -53,7 +53,7 @@ public interface TemplateClassResolver { /** * Doesn't allow resolving any classes. */ - TemplateClassResolver ALLOWS_NOTHING_RESOLVER = new TemplateClassResolver() { + TemplateClassResolver ALLOW_NOTHING = new TemplateClassResolver() { @Override public Class resolve(String className, Environment env, Template template) http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/6fa23374/freemarker-core/src/main/java/org/apache/freemarker/core/util/OptInTemplateClassResolver.java ---------------------------------------------------------------------- diff --git a/freemarker-core/src/main/java/org/apache/freemarker/core/util/OptInTemplateClassResolver.java b/freemarker-core/src/main/java/org/apache/freemarker/core/util/OptInTemplateClassResolver.java index e1edfcb..faf8e73 100644 --- a/freemarker-core/src/main/java/org/apache/freemarker/core/util/OptInTemplateClassResolver.java +++ b/freemarker-core/src/main/java/org/apache/freemarker/core/util/OptInTemplateClassResolver.java @@ -52,7 +52,7 @@ public class OptInTemplateClassResolver implements TemplateClassResolver { * @param trustedTemplates the {@link List} of {@link String}-s that contains * template names (i.e., template root directory relative paths) * and prefix patterns (like <code>"include/*"</code>) of templates - * for which {@link TemplateClassResolver#UNRESTRICTED_RESOLVER} will be + * for which {@link TemplateClassResolver#UNRESTRICTED} will be * used (which is not as safe as {@link OptInTemplateClassResolver}). * The list items need not start with <code>"/"</code> (if they are, it * will be removed). List items ending with <code>"*"</code> are treated @@ -98,7 +98,7 @@ public class OptInTemplateClassResolver implements TemplateClassResolver { if (templateName != null && (trustedTemplateNames.contains(templateName) || hasMatchingPrefix(templateName))) { - return TemplateClassResolver.UNRESTRICTED_RESOLVER.resolve(className, env, template); + return TemplateClassResolver.UNRESTRICTED.resolve(className, env, template); } else { if (!allowedClasses.contains(className)) { throw new _MiscTemplateException(env,
