This is an automated email from the ASF dual-hosted git repository.
ddekany pushed a commit to branch 3
in repository https://gitbox.apache.org/repos/asf/freemarker.git
The following commit(s) were added to refs/heads/3 by this push:
new 789f2b2 Forward ported from 2.3-gae, kind of: Disallowed using the
object returned by Configuration.getVersion() as the incompatibleImprovements
setting value. In 2.3.x it was just logged as error though, so this is quite
different. Also forward ported ConfigurationTest.testVersion() fixes.
789f2b2 is described below
commit 789f2b2fcc327bcce00cad018411a01a2fe1588f
Author: ddekany <[email protected]>
AuthorDate: Sun Feb 16 20:48:42 2020 +0100
Forward ported from 2.3-gae, kind of: Disallowed using the object returned
by Configuration.getVersion() as the incompatibleImprovements setting value. In
2.3.x it was just logged as error though, so this is quite different. Also
forward ported ConfigurationTest.testVersion() fixes.
---
.../java/freemarker/core/FM2ASTToFM3SourceConverter.java | 4 +++-
.../org/apache/freemarker/converter/FM2ToFM3Converter.java | 4 +++-
.../org/freemarker/converter/FM2ToFM3ConverterTest.java | 2 +-
.../java/org/apache/freemarker/core/ConfigurationTest.java | 14 ++++++++++++--
.../apache/freemarker/core/ObjectBuilderSettingsTest.java | 2 +-
.../src/main/java/org/apache/freemarker/core/_CoreAPI.java | 7 +++++++
6 files changed, 27 insertions(+), 6 deletions(-)
diff --git
a/freemarker-converter/src/main/java/freemarker/core/FM2ASTToFM3SourceConverter.java
b/freemarker-converter/src/main/java/freemarker/core/FM2ASTToFM3SourceConverter.java
index 1cb67b9..5d81280 100644
---
a/freemarker-converter/src/main/java/freemarker/core/FM2ASTToFM3SourceConverter.java
+++
b/freemarker-converter/src/main/java/freemarker/core/FM2ASTToFM3SourceConverter.java
@@ -36,6 +36,7 @@ import org.apache.freemarker.converter.ConversionMarkers;
import org.apache.freemarker.converter.ConverterException;
import org.apache.freemarker.converter.UnconvertableLegacyFeatureException;
import org.apache.freemarker.converter._ConverterUtils;
+import org.apache.freemarker.core.Version;
import org.apache.freemarker.core.util.TemplateLanguageUtils;
import org.apache.freemarker.core.util._ClassUtils;
import org.apache.freemarker.core.util._NullArgumentException;
@@ -95,7 +96,8 @@ public class FM2ASTToFM3SourceConverter {
private final char tagBeginChar;
private final char tagEndChar;
private final Set<String> fm3BuiltInNames = new
org.apache.freemarker.core.Configuration
- .Builder(org.apache.freemarker.core.Configuration.getVersion() /*
highest possible by design */)
+ // Uses highest possible by design:
+ .Builder(new
Version(org.apache.freemarker.core.Configuration.getVersion().toString()))
.build().getSupportedBuiltInNames();
private boolean printNextCustomDirAsFtlDir;
diff --git
a/freemarker-converter/src/main/java/org/apache/freemarker/converter/FM2ToFM3Converter.java
b/freemarker-converter/src/main/java/org/apache/freemarker/converter/FM2ToFM3Converter.java
index 55289f6..cec62ba 100644
---
a/freemarker-converter/src/main/java/org/apache/freemarker/converter/FM2ToFM3Converter.java
+++
b/freemarker-converter/src/main/java/org/apache/freemarker/converter/FM2ToFM3Converter.java
@@ -25,6 +25,7 @@ import java.util.Properties;
import java.util.regex.Pattern;
import org.apache.freemarker.converter.ConversionMarkers.Type;
+import org.apache.freemarker.core.Version;
import org.apache.freemarker.core.util._NullArgumentException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -193,7 +194,8 @@ public class FM2ToFM3Converter extends Converter {
if (validateOutput) {
try {
org.apache.freemarker.core.Configuration fm3Config = new
org.apache.freemarker.core.Configuration
-
.Builder(org.apache.freemarker.core.Configuration.getVersion() /* highest
possible by design */)
+ // Uses highest possible version by design:
+ .Builder(new
Version(org.apache.freemarker.core.Configuration.getVersion().toString()))
.outputFormat(converOutputFormat(result.getFM2Template().getOutputFormat()))
.build();
new org.apache.freemarker.core.Template(null,
result.getFM3Content(), fm3Config);
diff --git
a/freemarker-converter/src/test/java/org/freemarker/converter/FM2ToFM3ConverterTest.java
b/freemarker-converter/src/test/java/org/freemarker/converter/FM2ToFM3ConverterTest.java
index 751252a..2cee712 100644
---
a/freemarker-converter/src/test/java/org/freemarker/converter/FM2ToFM3ConverterTest.java
+++
b/freemarker-converter/src/test/java/org/freemarker/converter/FM2ToFM3ConverterTest.java
@@ -582,7 +582,7 @@ public class FM2ToFM3ConverterTest extends ConverterTest {
public void testBuiltInNameConversion()
throws NoSuchMethodException, InvocationTargetException,
IllegalAccessException, IOException,
ConverterException {
- Configuration cfg = new Configuration(Configuration.getVersion());
+ Configuration cfg = new Configuration(new
freemarker.template.Version(Configuration.getVersion().toString()));
StringBuilder sb = new StringBuilder();
sb.append("<#outputformat 'HTML'><#list xs as x>");
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 feca828..8c1791d 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
@@ -226,16 +226,26 @@ public class ConfigurationTest {
assertTrue(v.intValue() >= _CoreAPI.VERSION_INT_3_0_0);
try {
- new Builder(new Version(999, 1, 2));
+ new Builder(new Version(999, 1, 2)).build();
+ fail();
} catch (IllegalArgumentException e) {
assertThat(e.getMessage(), containsString("upgrade"));
}
try {
- new Builder(new Version(2, 3, 0));
+ new Builder(new Version(2, 3, 0)).build();
+ fail();
} catch (IllegalArgumentException e) {
assertThat(e.getMessage(), containsString("3.0.0"));
}
+
+ try {
+ new Builder(Configuration.getVersion()).build();
+ fail();
+ } catch (IllegalArgumentException e) {
+ assertThat(e.getMessage(), containsString("getVersion()"));
+ }
+ new Builder(new Version(Configuration.getVersion().toString()));
}
@Test
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 a168563..8aa56b8 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
@@ -356,7 +356,7 @@ public class ObjectBuilderSettingsTest {
@Test
public void configurationPropertiesTest() throws Exception {
- final Configuration.Builder cfgB = new
Configuration.Builder(Configuration.getVersion());
+ final Configuration.Builder cfgB = new Configuration.Builder(new
Version(Configuration.getVersion().toString()));
{
Properties props = new Properties();
diff --git
a/freemarker-core/src/main/java/org/apache/freemarker/core/_CoreAPI.java
b/freemarker-core/src/main/java/org/apache/freemarker/core/_CoreAPI.java
index 9110a5d..14de157 100644
--- a/freemarker-core/src/main/java/org/apache/freemarker/core/_CoreAPI.java
+++ b/freemarker-core/src/main/java/org/apache/freemarker/core/_CoreAPI.java
@@ -70,6 +70,13 @@ public final class _CoreAPI {
throw new IllegalArgumentException("\"incompatibleImprovements\"
must be at least 3.0.0, but was "
+ incompatibleImprovements);
}
+ if (incompatibleImprovements == Configuration.getVersion()) {
+ throw new IllegalArgumentException("The incompatibleImprovements
setting can't be set to the object " +
+ "returned by Configuration.getVersion(). That would defeat
the purpose of " +
+ "incompatibleImprovements, and make upgrading FreeMarker a
potentially breaking change. Instead, " +
+ "set incompatibleImprovements to the highest concrete
version that's known to be compatible with " +
+ "your application.");
+ }
}
}