Renamed `?datetime` and `?datetimeIfUnknown` and the `datetimeFormat` setting to `?dateTime` and `?dateTimeIfUnknown` and `dateTimeFormat`. (In general, it's `dateTime`, not `datetime` everywhere. This is consistent with the configuration get/setter names, and with the Java 8 API). Also renamed TemplateDateModel.DATETIME to DATE_TIME.
Project: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/commit/2af16e4f Tree: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/tree/2af16e4f Diff: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/diff/2af16e4f Branch: refs/heads/3 Commit: 2af16e4f2837ba15da22a8dbe766ffbefbb3a8eb Parents: 7e171b7 Author: ddekany <ddek...@apache.org> Authored: Mon Jul 17 00:04:06 2017 +0200 Committer: ddekany <ddek...@apache.org> Committed: Mon Jul 17 00:04:06 2017 +0200 ---------------------------------------------------------------------- FM3-CHANGE-LOG.txt | 14 +++-- .../core/FM2ASTToFM3SourceConverter.java | 3 + .../freemarker/core/CoercionToTextualTest.java | 2 +- .../apache/freemarker/core/DateFormatTest.java | 48 +++++++------- .../core/ParsingErrorMessagesTest.java | 6 ++ .../apache/freemarker/core/SQLTimeZoneTest.java | 66 ++++++++++---------- .../DefaultObjectWrapperSingletonsTest.java | 4 +- .../templatesuite/CoreTemplateTestSuite.java | 2 +- .../templatesuite/models/AllTemplateModels.java | 2 +- .../templates/date-type-builtins.ftl | 2 +- .../templates/dateformat-iso-bi.ftl | 10 +-- .../templates/dateformat-iso-like.ftl | 10 +-- .../templatesuite/templates/dateformat-java.ftl | 2 +- .../templatesuite/templates/dateparsing.ftl | 42 ++++++------- .../templates/sequence-builtins.ftl | 2 +- .../core/templatesuite/templates/setting.ftl | 4 +- .../apache/freemarker/core/ASTDirSetting.java | 8 ++- .../apache/freemarker/core/ASTExpBuiltIn.java | 18 ++++-- .../freemarker/core/ASTExpBuiltInVariable.java | 2 +- .../core/BuiltInsForMultipleTypes.java | 6 +- .../org/apache/freemarker/core/Environment.java | 16 ++--- .../org/apache/freemarker/core/MessageUtil.java | 4 +- .../core/ProcessingConfiguration.java | 2 +- .../core/model/TemplateDateModel.java | 6 +- .../freemarker/core/model/impl/SimpleDate.java | 6 +- .../apache/freemarker/core/util/FTLUtil.java | 2 +- .../core/valueformat/TemplateDateFormat.java | 8 +-- .../valueformat/TemplateDateFormatFactory.java | 2 +- .../impl/ISOLikeTemplateDateFormat.java | 4 +- .../impl/JavaTemplateDateFormatFactory.java | 2 +- .../org/apache/freemarker/dom/NodeModel.java | 4 +- .../examples/TemplateConfigurationExamples.java | 2 +- .../examples/CustomFormatsExample-alias1.ftlh | 2 +- .../servlet/jsp/webapps/basic/attributes.ftl | 2 +- 34 files changed, 171 insertions(+), 144 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/2af16e4f/FM3-CHANGE-LOG.txt ---------------------------------------------------------------------- diff --git a/FM3-CHANGE-LOG.txt b/FM3-CHANGE-LOG.txt index 9004675..3d32e15 100644 --- a/FM3-CHANGE-LOG.txt +++ b/FM3-CHANGE-LOG.txt @@ -27,6 +27,10 @@ https://cwiki.apache.org/confluence/display/FREEMARKER/FreeMarker+3 Template language changes ========================= +Note that the template converter tool (freemarker-converter) can automatically apply many of these changes on FM2 +templates. But changes that aren't purely syntactical (but behavioral) often can't be treated with 100% safety or at +all, in which ase it's always noted for that change. + Major changes / features ------------------------ @@ -44,26 +48,25 @@ Smaller changes Node: Changes already mentioned above aren't repeated here! -- Renamed `?datetime` and `?datetimeIfUnknown` and the `datetimeFormat` setting to - `?dateTime` and `?dateTimeIfUnknown` and `dateTimeFormat`. - Removed support for all old glitches that you could turn on/off with incompatibleImprovements in FM2 + (These are generally not covered by the converter tool.) - Removed some long deprecated template language directives: - <#call ...> (deprecated by <@... />) - <#comment>...</#comment> (deprecated by <#-- ... -->) - <#transform ...>...</#transform> (deprecated by <@...>...</@...>) - <#foreach x in xs>...</#foreach> (deprecated by <#list xs as x>...</#list>) -- #include has no "encoding" parameter anymore (see reasons in the API changes) - Removed long deprecated `#{}` interpolations. They are treated as plain static text now. (The template converter tool translates these to `${}` interpolations. For example `#{x}` is simply translated to `${b}`, while `#{x; m1M3}` is translated to `${x?string('0.0##')}`). +- #include has no "encoding" parameter anymore (as now only the Configuration is responsible ofr deciding the encoding) - You can't close #attempt/#recover with `</#recover>` anymore, only with `<#attempt>`. This was the standard form in FM2 as well, and is consistent with how #if/#else works. (The template converter tool does this conversion.) - Inside a #switch, #case can't be after #default anymore (this is actually a bug in FM2) (The template converter can't fix this automatically, but reports it as an error.) - #else and #elseIf tags must be ended without "/", for example, <#else/> is illegal now, <#else> is legal. - (The template converter tool does this conversion.) -- .template_name now means the same as .current_template_name (it doesn't emulate 2.3 glitches anymore) +- Renamed `?datetime` and `?datetimeIfUnknown` and the `datetimeFormat` setting to + `?dateTime` and `?dateTimeIfUnknown` and `dateTimeFormat`. (In general, it's `dateTime`, not `datetime` everywhere.) Java API changes @@ -289,6 +292,7 @@ Core / Models and Object wrapping - Removed DefaultObjectWrapper.methodsShadowItems setting, in effect defaulting it to true. This has decided if the generic get method (`get(String)`) had priority over methods of similar name. The generic get method is only recognized from its name and parameter type, so it's a quite consfusing feature, and might will be removed alltogether. +- Renamed TemplateDateModel.DATETIME to DATE_TIME (to be consistent with "dateTime" used elsewhere). Core / Template loading and caching ................................... http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/2af16e4f/freemarker-converter/src/main/java/freemarker/core/FM2ASTToFM3SourceConverter.java ---------------------------------------------------------------------- diff --git a/freemarker-converter/src/main/java/freemarker/core/FM2ASTToFM3SourceConverter.java b/freemarker-converter/src/main/java/freemarker/core/FM2ASTToFM3SourceConverter.java index c60c31f..db61f98 100644 --- a/freemarker-converter/src/main/java/freemarker/core/FM2ASTToFM3SourceConverter.java +++ b/freemarker-converter/src/main/java/freemarker/core/FM2ASTToFM3SourceConverter.java @@ -1884,6 +1884,9 @@ public class FM2ASTToFM3SourceConverter { .put("iso_ms_nz", "isoMsNZ") .put("iso_m_nz", "isoMNZ") .put("iso_h_nz", "isoHNZ") + .put("datetime", "dateTime") + .put("datetime_if_unknown", "dateTimeIfUnknown") + .put("datetimeIfUnknown", "dateTimeIfUnknown") .build(); private void printParameterSeparatorSource(Expression lho, Expression rho) { http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/2af16e4f/freemarker-core-test/src/test/java/org/apache/freemarker/core/CoercionToTextualTest.java ---------------------------------------------------------------------- diff --git a/freemarker-core-test/src/test/java/org/apache/freemarker/core/CoercionToTextualTest.java b/freemarker-core-test/src/test/java/org/apache/freemarker/core/CoercionToTextualTest.java index 1e945fe..1a98373 100644 --- a/freemarker-core-test/src/test/java/org/apache/freemarker/core/CoercionToTextualTest.java +++ b/freemarker-core-test/src/test/java/org/apache/freemarker/core/CoercionToTextualTest.java @@ -40,7 +40,7 @@ public class CoercionToTextualTest extends TemplateTest { /** 2015-09-06T12:00:00Z */ private static long T = 1441540800000L; - private static TemplateDateModel TM = new SimpleDate(new Date(T), TemplateDateModel.DATETIME); + private static TemplateDateModel TM = new SimpleDate(new Date(T), TemplateDateModel.DATE_TIME); @Test public void testBasicStringBuiltins() throws IOException, TemplateException { http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/2af16e4f/freemarker-core-test/src/test/java/org/apache/freemarker/core/DateFormatTest.java ---------------------------------------------------------------------- diff --git a/freemarker-core-test/src/test/java/org/apache/freemarker/core/DateFormatTest.java b/freemarker-core-test/src/test/java/org/apache/freemarker/core/DateFormatTest.java index 9cd835b..b0ca6ad 100644 --- a/freemarker-core-test/src/test/java/org/apache/freemarker/core/DateFormatTest.java +++ b/freemarker-core-test/src/test/java/org/apache/freemarker/core/DateFormatTest.java @@ -53,7 +53,7 @@ public class DateFormatTest extends TemplateTest { /** 2015-09-06T12:00:00Z */ private static long T = 1441540800000L; - private static TemplateDateModel TM = new SimpleDate(new Date(T), TemplateDateModel.DATETIME); + private static TemplateDateModel TM = new SimpleDate(new Date(T), TemplateDateModel.DATE_TIME); private TestConfigurationBuilder createConfigurationBuilder() { return new TestConfigurationBuilder() @@ -82,13 +82,13 @@ public class DateFormatTest extends TemplateTest { setConfigurationWithDateTimeFormat("@epoch"); assertOutput( - "<#assign d = d?datetime>" + "<#assign d = d?dateTime>" + "${d} ${d?string} <#setting locale='de_DE'>${d}", "123456789 123456789 123456789"); setConfigurationWithDateTimeFormat("@htmlIso"); assertOutput( - "<#assign d = d?datetime>" + "<#assign d = d?dateTime>" + "${d} ${d?string} <#setting locale='de_DE'>${d}", "1970-01-02<span class='T'>T</span>10:17:36Z " + "1970-01-02T10:17:36Z " @@ -110,7 +110,7 @@ public class DateFormatTest extends TemplateTest { setConfigurationWithDateTimeFormat("@loc"); assertOutput( - "<#assign d = d?datetime>" + "<#assign d = d?dateTime>" + "${d} ${d?string} " + "<#setting locale='de_DE'>" + "${d} ${d?string} " @@ -126,18 +126,18 @@ public class DateFormatTest extends TemplateTest { addToDataModel("d", new Date(123456789)); setConfigurationWithDateTimeFormat("iso"); assertOutput( - "${d?string.@loc} ${d?string.@loc} ${d?datetime?isoLocal} " + "${d?string.@loc} ${d?string.@loc} ${d?dateTime?isoLocal} " + "<#setting timeZone='GMT+02:00'>" - + "${d?string.@loc} ${d?string.@loc} ${d?datetime?isoLocal} " + + "${d?string.@loc} ${d?string.@loc} ${d?dateTime?isoLocal} " + "<#setting timeZone='GMT+01:00'>" - + "${d?string.@loc} ${d?string.@loc} ${d?datetime?isoLocal}", + + "${d?string.@loc} ${d?string.@loc} ${d?dateTime?isoLocal}", "123456789@en_US:GMT+01:00 123456789@en_US:GMT+01:00 1970-01-02T11:17:36+01:00 " + "123456789@en_US:GMT+02:00 123456789@en_US:GMT+02:00 1970-01-02T12:17:36+02:00 " + "123456789@en_US:GMT+01:00 123456789@en_US:GMT+01:00 1970-01-02T11:17:36+01:00"); setConfigurationWithDateTimeFormat("@loc"); assertOutput( - "<#assign d = d?datetime>" + "<#assign d = d?dateTime>" + "${d} ${d?string} " + "<#setting timeZone='GMT+02:00'>" + "${d} ${d?string} " @@ -163,14 +163,14 @@ public class DateFormatTest extends TemplateTest { .timeFormat("[wrong t]") .build()); assertErrorContains("${.now?date}", "\"dateFormat\"", "[wrong d]"); - assertErrorContains("${.now?datetime}", "\"dateTimeFormat\"", "[wrong dt]"); + assertErrorContains("${.now?dateTime}", "\"dateTimeFormat\"", "[wrong dt]"); assertErrorContains("${.now?time}", "\"timeFormat\"", "[wrong t]"); } @Test public void testCustomParameterized() throws Exception { Configuration cfg = getConfiguration(); - addToDataModel("d", new SimpleDate(new Date(12345678L), TemplateDateModel.DATETIME)); + addToDataModel("d", new SimpleDate(new Date(12345678L), TemplateDateModel.DATE_TIME)); setConfigurationWithDateTimeFormat("@div 1000"); assertOutput("${d}", "12345"); assertOutput("${d?string}", "12345"); @@ -225,7 +225,7 @@ public class DateFormatTest extends TemplateTest { @Test public void testIcIAndEscaping() throws Exception { - addToDataModel("d", new SimpleDate(new Date(12345678L), TemplateDateModel.DATETIME)); + addToDataModel("d", new SimpleDate(new Date(12345678L), TemplateDateModel.DATE_TIME)); setConfigurationWithDateTimeFormat("@epoch"); assertOutput("${d}", "12345678"); @@ -261,7 +261,7 @@ public class DateFormatTest extends TemplateTest { // Test that values are coming from the cache if possible for (Class dateClass : new Class[] { Date.class, Timestamp.class, java.sql.Date.class, Time.class } ) { for (int dateType - : new int[] { TemplateDateModel.DATE, TemplateDateModel.TIME, TemplateDateModel.DATETIME }) { + : new int[] { TemplateDateModel.DATE, TemplateDateModel.TIME, TemplateDateModel.DATE_TIME }) { String formatString = dateType == TemplateDateModel.DATE ? cfg.getDateFormat() : (dateType == TemplateDateModel.TIME ? cfg.getTimeFormat() @@ -280,9 +280,9 @@ public class DateFormatTest extends TemplateTest { String dateTimeFormatStr2 = dateTimeFormatStr + "'!'"; assertEquals("2015.09.06. 13:00", - env.getTemplateDateFormat(TemplateDateModel.DATETIME, Date.class).formatToPlainText(TM)); + env.getTemplateDateFormat(TemplateDateModel.DATE_TIME, Date.class).formatToPlainText(TM)); assertEquals("2015.09.06. 13:00!", - env.getTemplateDateFormat(dateTimeFormatStr2, TemplateDateModel.DATETIME, Date.class).formatToPlainText(TM)); + env.getTemplateDateFormat(dateTimeFormatStr2, TemplateDateModel.DATE_TIME, Date.class).formatToPlainText(TM)); assertEquals("2015.09.06. (+0100)", env.getTemplateDateFormat(TemplateDateModel.DATE, Date.class).formatToPlainText(TM)); @@ -295,9 +295,9 @@ public class DateFormatTest extends TemplateTest { env.getTemplateDateFormat(timeFormatStr2, TemplateDateModel.TIME, Date.class).formatToPlainText(TM)); assertEquals("2015.09.06. 13:00", - env.getTemplateDateFormat(TemplateDateModel.DATETIME, Timestamp.class).formatToPlainText(TM)); + env.getTemplateDateFormat(TemplateDateModel.DATE_TIME, Timestamp.class).formatToPlainText(TM)); assertEquals("2015.09.06. 13:00!", - env.getTemplateDateFormat(dateTimeFormatStr2, TemplateDateModel.DATETIME, Timestamp.class).formatToPlainText(TM)); + env.getTemplateDateFormat(dateTimeFormatStr2, TemplateDateModel.DATE_TIME, Timestamp.class).formatToPlainText(TM)); assertEquals("2015.09.06. (+0000)", env.getTemplateDateFormat(TemplateDateModel.DATE, java.sql.Date.class).formatToPlainText(TM)); @@ -313,23 +313,23 @@ public class DateFormatTest extends TemplateTest { String dateTimeFormatStrLoc = dateTimeFormatStr + " EEEE"; // Gets into cache: TemplateDateFormat format1 - = env.getTemplateDateFormat(dateTimeFormatStrLoc, TemplateDateModel.DATETIME, Date.class); + = env.getTemplateDateFormat(dateTimeFormatStrLoc, TemplateDateModel.DATE_TIME, Date.class); assertEquals("2015.09.06. 13:00 Sunday", format1.formatToPlainText(TM)); // Different locale (not cached): assertEquals("2015.09.06. 13:00 Sonntag", - env.getTemplateDateFormat(dateTimeFormatStrLoc, TemplateDateModel.DATETIME, Date.class, + env.getTemplateDateFormat(dateTimeFormatStrLoc, TemplateDateModel.DATE_TIME, Date.class, Locale.GERMANY).formatToPlainText(TM)); // Different locale and zone (not cached): assertEquals("2015.09.06. 14:00 Sonntag", - env.getTemplateDateFormat(dateTimeFormatStrLoc, TemplateDateModel.DATETIME, Date.class, + env.getTemplateDateFormat(dateTimeFormatStrLoc, TemplateDateModel.DATE_TIME, Date.class, Locale.GERMANY, TimeZone.getTimeZone("GMT+02"), TimeZone.getTimeZone("GMT+03")).formatToPlainText(TM)); // Different locale and zone (not cached): assertEquals("2015.09.06. 15:00 Sonntag", - env.getTemplateDateFormat(dateTimeFormatStrLoc, TemplateDateModel.DATETIME, java.sql.Date.class, + env.getTemplateDateFormat(dateTimeFormatStrLoc, TemplateDateModel.DATE_TIME, java.sql.Date.class, Locale.GERMANY, TimeZone.getTimeZone("GMT+02"), TimeZone.getTimeZone("GMT+03")).formatToPlainText(TM)); // Check for corrupted cache: TemplateDateFormat format2 - = env.getTemplateDateFormat(dateTimeFormatStrLoc, TemplateDateModel.DATETIME, Date.class); + = env.getTemplateDateFormat(dateTimeFormatStrLoc, TemplateDateModel.DATE_TIME, Date.class); assertEquals("2015.09.06. 13:00 Sunday", format2.formatToPlainText(TM)); assertSame(format1, format2); } @@ -407,7 +407,7 @@ public class DateFormatTest extends TemplateTest { "${t?time?string.xs_u} ${t?time()?string.xs_u}", "12:00:00Z 12:00:00Z"); assertOutput( - "${t?datetime?string.xs_u} ${t?datetime()?string.xs_u}", + "${t?dateTime?string.xs_u} ${t?dateTime()?string.xs_u}", "2015-09-06T12:00:00Z 2015-09-06T12:00:00Z"); } @@ -429,7 +429,7 @@ public class DateFormatTest extends TemplateTest { "${t?time} ${t?time()}", T + " " + T + "/foo"); assertOutput( - "${t?datetime} ${t?datetime()}", + "${t?dateTime} ${t?dateTime()}", T + " " + T + "/foo"); } @@ -456,7 +456,7 @@ public class DateFormatTest extends TemplateTest { @Override public int getDateType() { - return DATETIME; + return DATE_TIME; } } http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/2af16e4f/freemarker-core-test/src/test/java/org/apache/freemarker/core/ParsingErrorMessagesTest.java ---------------------------------------------------------------------- diff --git a/freemarker-core-test/src/test/java/org/apache/freemarker/core/ParsingErrorMessagesTest.java b/freemarker-core-test/src/test/java/org/apache/freemarker/core/ParsingErrorMessagesTest.java index 3e77769..6b77d97 100644 --- a/freemarker-core-test/src/test/java/org/apache/freemarker/core/ParsingErrorMessagesTest.java +++ b/freemarker-core-test/src/test/java/org/apache/freemarker/core/ParsingErrorMessagesTest.java @@ -81,6 +81,9 @@ public class ParsingErrorMessagesTest { assertErrorContains("${x?iso_utc_nz}", "camel case", "The correct name is: isoUtcNZ"); assertErrorContains("${x?no_such_name}", "camel case", "\\!The correct name is:", "alphabetical list"); assertErrorContains("${x?nosuchname}", "\\!camel case", "\\!The correct name is:", "alphabetical list"); + assertErrorContains("${x?datetime}", "The correct name is: dateTime"); + assertErrorContains("${x?datetimeIfUnknown}", "The correct name is: dateTimeIfUnknown"); + assertErrorContains("${x?datetime_if_unknown}", "The correct name is: dateTimeIfUnknown"); } @Test @@ -91,6 +94,9 @@ public class ParsingErrorMessagesTest { "setting names are:"); assertErrorContains("<#setting nosuchname=1>", "\\!The correct name is:", "\\!camel case", "setting names are:"); + + assertErrorContains("<#setting datetime_format='HHmm'>", "The correct name is: dateTimeFormat"); + assertErrorContains("<#setting datetimeFormat='HHmm'>", "The correct name is: dateTimeFormat"); } @Test http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/2af16e4f/freemarker-core-test/src/test/java/org/apache/freemarker/core/SQLTimeZoneTest.java ---------------------------------------------------------------------- diff --git a/freemarker-core-test/src/test/java/org/apache/freemarker/core/SQLTimeZoneTest.java b/freemarker-core-test/src/test/java/org/apache/freemarker/core/SQLTimeZoneTest.java index 5dbc2bb..3939a15 100644 --- a/freemarker-core-test/src/test/java/org/apache/freemarker/core/SQLTimeZoneTest.java +++ b/freemarker-core-test/src/test/java/org/apache/freemarker/core/SQLTimeZoneTest.java @@ -87,21 +87,21 @@ public class SQLTimeZoneTest extends TemplateTest { } private static final String FTL = - "${sqlDate} ${sqlTime} ${sqlTimestamp} ${javaDate?datetime}\n" + "${sqlDate} ${sqlTime} ${sqlTimestamp} ${javaDate?dateTime}\n" + "${sqlDate?string.iso_fz} ${sqlTime?string.iso_fz} " - + "${sqlTimestamp?string.iso_fz} ${javaDate?datetime?string.iso_fz}\n" + + "${sqlTimestamp?string.iso_fz} ${javaDate?dateTime?string.iso_fz}\n" + "${sqlDate?string.xs_fz} ${sqlTime?string.xs_fz} " - + "${sqlTimestamp?string.xs_fz} ${javaDate?datetime?string.xs_fz}\n" + + "${sqlTimestamp?string.xs_fz} ${javaDate?dateTime?string.xs_fz}\n" + "${sqlDate?string.xs} ${sqlTime?string.xs} " - + "${sqlTimestamp?string.xs} ${javaDate?datetime?string.xs}\n" + + "${sqlTimestamp?string.xs} ${javaDate?dateTime?string.xs}\n" + "<#setting timeZone='GMT'>\n" - + "${sqlDate} ${sqlTime} ${sqlTimestamp} ${javaDate?datetime}\n" + + "${sqlDate} ${sqlTime} ${sqlTimestamp} ${javaDate?dateTime}\n" + "${sqlDate?string.iso_fz} ${sqlTime?string.iso_fz} " - + "${sqlTimestamp?string.iso_fz} ${javaDate?datetime?string.iso_fz}\n" + + "${sqlTimestamp?string.iso_fz} ${javaDate?dateTime?string.iso_fz}\n" + "${sqlDate?string.xs_fz} ${sqlTime?string.xs_fz} " - + "${sqlTimestamp?string.xs_fz} ${javaDate?datetime?string.xs_fz}\n" + + "${sqlTimestamp?string.xs_fz} ${javaDate?dateTime?string.xs_fz}\n" + "${sqlDate?string.xs} ${sqlTime?string.xs} " - + "${sqlTimestamp?string.xs} ${javaDate?datetime?string.xs}\n"; + + "${sqlTimestamp?string.xs} ${javaDate?dateTime?string.xs}\n"; private static final String OUTPUT_BEFORE_SETTING_GMT_CFG_GMT2 = "2014-07-12 12:30:05 2014-07-12T12:30:05 2014-07-12T12:30:05\n" @@ -213,53 +213,53 @@ public class SQLTimeZoneTest extends TemplateTest { public void testCacheFlushings() throws Exception { setConfiguration(testCacheFlushing_createBuilder().build()); assertOutput( - "${sqlDate}, ${sqlTime}, ${sqlTimestamp}, ${javaDate?datetime}, ${javaDate?date}, ${javaDate?time}\n" + "${sqlDate}, ${sqlTime}, ${sqlTimestamp}, ${javaDate?dateTime}, ${javaDate?date}, ${javaDate?time}\n" + "<#setting locale='de'>\n" - + "${sqlDate}, ${sqlTime}, ${sqlTimestamp}, ${javaDate?datetime}, ${javaDate?date}, ${javaDate?time}\n", + + "${sqlDate}, ${sqlTime}, ${sqlTimestamp}, ${javaDate?dateTime}, ${javaDate?date}, ${javaDate?time}\n", "2014-07-11 Fri, 10:30:05 Thu, 2014-07-12T10:30:05 Sat, 2014-07-12T10:30:05 Sat, 2014-07-12 Sat, 10:30:05 Sat\n" + "2014-07-11 Fr, 10:30:05 Do, 2014-07-12T10:30:05 Sa, 2014-07-12T10:30:05 Sa, 2014-07-12 Sa, 10:30:05 Sa\n"); assertOutput( - "${sqlDate}, ${sqlTime}, ${sqlTimestamp}, ${javaDate?datetime}, ${javaDate?date}, ${javaDate?time}\n" + "${sqlDate}, ${sqlTime}, ${sqlTimestamp}, ${javaDate?dateTime}, ${javaDate?date}, ${javaDate?time}\n" + "<#setting dateFormat='yyyy-MM-dd'>\n" - + "${sqlDate}, ${sqlTime}, ${sqlTimestamp}, ${javaDate?datetime}, ${javaDate?date}, ${javaDate?time}\n", + + "${sqlDate}, ${sqlTime}, ${sqlTimestamp}, ${javaDate?dateTime}, ${javaDate?date}, ${javaDate?time}\n", "2014-07-11 Fri, 10:30:05 Thu, 2014-07-12T10:30:05 Sat, 2014-07-12T10:30:05 Sat, 2014-07-12 Sat, 10:30:05 Sat\n" + "2014-07-11, 10:30:05 Thu, 2014-07-12T10:30:05 Sat, 2014-07-12T10:30:05 Sat, 2014-07-12, 10:30:05 Sat\n"); assertOutput( - "${sqlDate}, ${sqlTime}, ${sqlTimestamp}, ${javaDate?datetime}, ${javaDate?date}, ${javaDate?time}\n" + "${sqlDate}, ${sqlTime}, ${sqlTimestamp}, ${javaDate?dateTime}, ${javaDate?date}, ${javaDate?time}\n" + "<#setting timeFormat='HH:mm:ss'>\n" - + "${sqlDate}, ${sqlTime}, ${sqlTimestamp}, ${javaDate?datetime}, ${javaDate?date}, ${javaDate?time}\n", + + "${sqlDate}, ${sqlTime}, ${sqlTimestamp}, ${javaDate?dateTime}, ${javaDate?date}, ${javaDate?time}\n", "2014-07-11 Fri, 10:30:05 Thu, 2014-07-12T10:30:05 Sat, 2014-07-12T10:30:05 Sat, 2014-07-12 Sat, 10:30:05 Sat\n" + "2014-07-11 Fri, 10:30:05, 2014-07-12T10:30:05 Sat, 2014-07-12T10:30:05 Sat, 2014-07-12 Sat, 10:30:05\n"); assertOutput( - "${sqlDate}, ${sqlTime}, ${sqlTimestamp}, ${javaDate?datetime}, ${javaDate?date}, ${javaDate?time}\n" + "${sqlDate}, ${sqlTime}, ${sqlTimestamp}, ${javaDate?dateTime}, ${javaDate?date}, ${javaDate?time}\n" + "<#setting dateTimeFormat='yyyy-MM-dd\\'T\\'HH:mm:ss'>\n" - + "${sqlDate}, ${sqlTime}, ${sqlTimestamp}, ${javaDate?datetime}, ${javaDate?date}, ${javaDate?time}\n", + + "${sqlDate}, ${sqlTime}, ${sqlTimestamp}, ${javaDate?dateTime}, ${javaDate?date}, ${javaDate?time}\n", "2014-07-11 Fri, 10:30:05 Thu, 2014-07-12T10:30:05 Sat, 2014-07-12T10:30:05 Sat, 2014-07-12 Sat, 10:30:05 Sat\n" + "2014-07-11 Fri, 10:30:05 Thu, 2014-07-12T10:30:05, 2014-07-12T10:30:05, 2014-07-12 Sat, 10:30:05 Sat\n"); setConfiguration(testCacheFlushing_createBuilder().sqlDateAndTimeTimeZone(GMT_P02).build()); assertOutput( - "${sqlDate}, ${sqlTime}, ${sqlTimestamp}, ${javaDate?datetime}, ${javaDate?date}, ${javaDate?time}\n" + "${sqlDate}, ${sqlTime}, ${sqlTimestamp}, ${javaDate?dateTime}, ${javaDate?date}, ${javaDate?time}\n" + "<#setting locale='de'>\n" - + "${sqlDate}, ${sqlTime}, ${sqlTimestamp}, ${javaDate?datetime}, ${javaDate?date}, ${javaDate?time}\n", + + "${sqlDate}, ${sqlTime}, ${sqlTimestamp}, ${javaDate?dateTime}, ${javaDate?date}, ${javaDate?time}\n", "2014-07-12 Sat, 12:30:05 Thu, 2014-07-12T10:30:05 Sat, 2014-07-12T10:30:05 Sat, 2014-07-12 Sat, 10:30:05 Sat\n" + "2014-07-12 Sa, 12:30:05 Do, 2014-07-12T10:30:05 Sa, 2014-07-12T10:30:05 Sa, 2014-07-12 Sa, 10:30:05 Sa\n"); assertOutput( - "${sqlDate}, ${sqlTime}, ${sqlTimestamp}, ${javaDate?datetime}, ${javaDate?date}, ${javaDate?time}\n" + "${sqlDate}, ${sqlTime}, ${sqlTimestamp}, ${javaDate?dateTime}, ${javaDate?date}, ${javaDate?time}\n" + "<#setting dateFormat='yyyy-MM-dd'>\n" - + "${sqlDate}, ${sqlTime}, ${sqlTimestamp}, ${javaDate?datetime}, ${javaDate?date}, ${javaDate?time}\n", + + "${sqlDate}, ${sqlTime}, ${sqlTimestamp}, ${javaDate?dateTime}, ${javaDate?date}, ${javaDate?time}\n", "2014-07-12 Sat, 12:30:05 Thu, 2014-07-12T10:30:05 Sat, 2014-07-12T10:30:05 Sat, 2014-07-12 Sat, 10:30:05 Sat\n" + "2014-07-12, 12:30:05 Thu, 2014-07-12T10:30:05 Sat, 2014-07-12T10:30:05 Sat, 2014-07-12, 10:30:05 Sat\n"); assertOutput( - "${sqlDate}, ${sqlTime}, ${sqlTimestamp}, ${javaDate?datetime}, ${javaDate?date}, ${javaDate?time}\n" + "${sqlDate}, ${sqlTime}, ${sqlTimestamp}, ${javaDate?dateTime}, ${javaDate?date}, ${javaDate?time}\n" + "<#setting timeFormat='HH:mm:ss'>\n" - + "${sqlDate}, ${sqlTime}, ${sqlTimestamp}, ${javaDate?datetime}, ${javaDate?date}, ${javaDate?time}\n", + + "${sqlDate}, ${sqlTime}, ${sqlTimestamp}, ${javaDate?dateTime}, ${javaDate?date}, ${javaDate?time}\n", "2014-07-12 Sat, 12:30:05 Thu, 2014-07-12T10:30:05 Sat, 2014-07-12T10:30:05 Sat, 2014-07-12 Sat, 10:30:05 Sat\n" + "2014-07-12 Sat, 12:30:05, 2014-07-12T10:30:05 Sat, 2014-07-12T10:30:05 Sat, 2014-07-12 Sat, 10:30:05\n"); assertOutput( - "${sqlDate}, ${sqlTime}, ${sqlTimestamp}, ${javaDate?datetime}, ${javaDate?date}, ${javaDate?time}\n" + "${sqlDate}, ${sqlTime}, ${sqlTimestamp}, ${javaDate?dateTime}, ${javaDate?date}, ${javaDate?time}\n" + "<#setting dateTimeFormat='yyyy-MM-dd\\'T\\'HH:mm:ss'>\n" - + "${sqlDate}, ${sqlTime}, ${sqlTimestamp}, ${javaDate?datetime}, ${javaDate?date}, ${javaDate?time}\n", + + "${sqlDate}, ${sqlTime}, ${sqlTimestamp}, ${javaDate?dateTime}, ${javaDate?date}, ${javaDate?time}\n", "2014-07-12 Sat, 12:30:05 Thu, 2014-07-12T10:30:05 Sat, 2014-07-12T10:30:05 Sat, 2014-07-12 Sat, 10:30:05 Sat\n" + "2014-07-12 Sat, 12:30:05 Thu, 2014-07-12T10:30:05, 2014-07-12T10:30:05, 2014-07-12 Sat, 10:30:05 Sat\n"); } @@ -302,23 +302,23 @@ public class SQLTimeZoneTest extends TemplateTest { .build()); assertOutput( - "${sqlDate}, ${sqlTime}, ${sqlTimestamp}, ${javaDate?datetime}\n" + "${sqlDate}, ${sqlTime}, ${sqlTimestamp}, ${javaDate?dateTime}\n" + "<#setting sqlDateAndTimeTimeZone='GMT+02'>\n" - + "${sqlDate}, ${sqlTime}, ${sqlTimestamp}, ${javaDate?datetime}\n" + + "${sqlDate}, ${sqlTime}, ${sqlTimestamp}, ${javaDate?dateTime}\n" + "<#setting sqlDateAndTimeTimeZone='null'>\n" - + "${sqlDate}, ${sqlTime}, ${sqlTimestamp}, ${javaDate?datetime}\n" + + "${sqlDate}, ${sqlTime}, ${sqlTimestamp}, ${javaDate?dateTime}\n" + "<#setting timeZone='GMT+03'>\n" - + "${sqlDate}, ${sqlTime}, ${sqlTimestamp}, ${javaDate?datetime}\n" + + "${sqlDate}, ${sqlTime}, ${sqlTimestamp}, ${javaDate?dateTime}\n" + "<#setting sqlDateAndTimeTimeZone='GMT+02'>\n" - + "${sqlDate}, ${sqlTime}, ${sqlTimestamp}, ${javaDate?datetime}\n" + + "${sqlDate}, ${sqlTime}, ${sqlTimestamp}, ${javaDate?dateTime}\n" + "<#setting sqlDateAndTimeTimeZone='GMT-11'>\n" - + "${sqlDate}, ${sqlTime}, ${sqlTimestamp}, ${javaDate?datetime}\n" + + "${sqlDate}, ${sqlTime}, ${sqlTimestamp}, ${javaDate?dateTime}\n" + "<#setting dateFormat='xs fz'>\n" - + "${sqlDate}, ${sqlTime}, ${sqlTimestamp}, ${javaDate?datetime}\n" + + "${sqlDate}, ${sqlTime}, ${sqlTimestamp}, ${javaDate?dateTime}\n" + "<#setting timeFormat='xs fz'>\n" - + "${sqlDate}, ${sqlTime}, ${sqlTimestamp}, ${javaDate?datetime}\n" + + "${sqlDate}, ${sqlTime}, ${sqlTimestamp}, ${javaDate?dateTime}\n" + "<#setting dateTimeFormat='iso m'>\n" - + "${sqlDate}, ${sqlTime}, ${sqlTimestamp}, ${javaDate?datetime}\n", + + "${sqlDate}, ${sqlTime}, ${sqlTimestamp}, ${javaDate?dateTime}\n", "2014-07-11, 10:30:05, 2014-07-12T10:30:05, 2014-07-12T10:30:05\n" + "2014-07-12, 12:30:05, 2014-07-12T10:30:05, 2014-07-12T10:30:05\n" + "2014-07-11, 10:30:05, 2014-07-12T10:30:05, 2014-07-12T10:30:05\n" http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/2af16e4f/freemarker-core-test/src/test/java/org/apache/freemarker/core/model/impl/DefaultObjectWrapperSingletonsTest.java ---------------------------------------------------------------------- diff --git a/freemarker-core-test/src/test/java/org/apache/freemarker/core/model/impl/DefaultObjectWrapperSingletonsTest.java b/freemarker-core-test/src/test/java/org/apache/freemarker/core/model/impl/DefaultObjectWrapperSingletonsTest.java index ae21f2d..be2c6a2 100644 --- a/freemarker-core-test/src/test/java/org/apache/freemarker/core/model/impl/DefaultObjectWrapperSingletonsTest.java +++ b/freemarker-core-test/src/test/java/org/apache/freemarker/core/model/impl/DefaultObjectWrapperSingletonsTest.java @@ -200,12 +200,12 @@ public class DefaultObjectWrapperSingletonsTest extends TestCase { { DefaultObjectWrapper ow = new DefaultObjectWrapper.Builder(Configuration.VERSION_3_0_0) .strict(true) - .defaultDateType(TemplateDateModel.DATETIME) + .defaultDateType(TemplateDateModel.DATE_TIME) .outerIdentity(new RestrictedObjectWrapper.Builder(Configuration.VERSION_3_0_0).build()) .build(); assertEquals(5, getDefaultObjectWrapperInstanceCacheSize()); assertTrue(ow.isStrict()); - assertEquals(TemplateDateModel.DATETIME, ow.getDefaultDateType()); + assertEquals(TemplateDateModel.DATE_TIME, ow.getDefaultDateType()); assertSame(RestrictedObjectWrapper.class, ow.getOuterIdentity().getClass()); hardReferences.add(ow); http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/2af16e4f/freemarker-core-test/src/test/java/org/apache/freemarker/core/templatesuite/CoreTemplateTestSuite.java ---------------------------------------------------------------------- diff --git a/freemarker-core-test/src/test/java/org/apache/freemarker/core/templatesuite/CoreTemplateTestSuite.java b/freemarker-core-test/src/test/java/org/apache/freemarker/core/templatesuite/CoreTemplateTestSuite.java index 2adef86..0b21c75 100644 --- a/freemarker-core-test/src/test/java/org/apache/freemarker/core/templatesuite/CoreTemplateTestSuite.java +++ b/freemarker-core-test/src/test/java/org/apache/freemarker/core/templatesuite/CoreTemplateTestSuite.java @@ -102,7 +102,7 @@ public class CoreTemplateTestSuite extends TemplateTestSuite { } else if (simpleTestName.startsWith("dateformat")) { GregorianCalendar cal = new GregorianCalendar(2002, 10, 15, 14, 54, 13); cal.setTimeZone(TimeZone.getTimeZone("GMT")); - dataModel.put("date", new SimpleDate(cal.getTime(), TemplateDateModel.DATETIME)); + dataModel.put("date", new SimpleDate(cal.getTime(), TemplateDateModel.DATE_TIME)); dataModel.put("unknownDate", new SimpleDate(cal.getTime(), TemplateDateModel.UNKNOWN)); dataModel.put("javaGMT02", TimeZone.getTimeZone("GMT+02")); dataModel.put("javaUTC", TimeZone.getTimeZone("UTC")); http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/2af16e4f/freemarker-core-test/src/test/java/org/apache/freemarker/core/templatesuite/models/AllTemplateModels.java ---------------------------------------------------------------------- diff --git a/freemarker-core-test/src/test/java/org/apache/freemarker/core/templatesuite/models/AllTemplateModels.java b/freemarker-core-test/src/test/java/org/apache/freemarker/core/templatesuite/models/AllTemplateModels.java index d656a6b..efde933 100644 --- a/freemarker-core-test/src/test/java/org/apache/freemarker/core/templatesuite/models/AllTemplateModels.java +++ b/freemarker-core-test/src/test/java/org/apache/freemarker/core/templatesuite/models/AllTemplateModels.java @@ -111,7 +111,7 @@ public class AllTemplateModels implements @Override public int getDateType() { - return TemplateDateModel.DATETIME; + return TemplateDateModel.DATE_TIME; } @Override http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/2af16e4f/freemarker-core-test/src/test/resources/org/apache/freemarker/core/templatesuite/templates/date-type-builtins.ftl ---------------------------------------------------------------------- diff --git a/freemarker-core-test/src/test/resources/org/apache/freemarker/core/templatesuite/templates/date-type-builtins.ftl b/freemarker-core-test/src/test/resources/org/apache/freemarker/core/templatesuite/templates/date-type-builtins.ftl index d65571e..2cadc42 100644 --- a/freemarker-core-test/src/test/resources/org/apache/freemarker/core/templatesuite/templates/date-type-builtins.ftl +++ b/freemarker-core-test/src/test/resources/org/apache/freemarker/core/templatesuite/templates/date-type-builtins.ftl @@ -39,7 +39,7 @@ <@assert test=dateTime?isDatetime /> <@assertFails message="isn't known if">${unknown?string.xs}</@> -<@assertEquals expected="2003-04-05T06:07:08Z" actual=unknown?datetimeIfUnknown?string.xs /> +<@assertEquals expected="2003-04-05T06:07:08Z" actual=unknown?dateTimeIfUnknown?string.xs /> <@assertEquals expected="2003-04-05Z" actual=unknown?dateIfUnknown?string.xs /> <@assertEquals expected="06:07:08Z" actual=unknown?timeIfUnknown?string.xs /> <@assertEquals expected="2003-04-05T06:07:08Z" actual=dateTime?dateIfUnknown?string.xs /> http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/2af16e4f/freemarker-core-test/src/test/resources/org/apache/freemarker/core/templatesuite/templates/dateformat-iso-bi.ftl ---------------------------------------------------------------------- diff --git a/freemarker-core-test/src/test/resources/org/apache/freemarker/core/templatesuite/templates/dateformat-iso-bi.ftl b/freemarker-core-test/src/test/resources/org/apache/freemarker/core/templatesuite/templates/dateformat-iso-bi.ftl index 5d60f71..8ece40d 100644 --- a/freemarker-core-test/src/test/resources/org/apache/freemarker/core/templatesuite/templates/dateformat-iso-bi.ftl +++ b/freemarker-core-test/src/test/resources/org/apache/freemarker/core/templatesuite/templates/dateformat-iso-bi.ftl @@ -16,7 +16,7 @@ specific language governing permissions and limitations under the License. --> -<#assign d = "2010-05-15 22:38:05:23 +0200"?datetime("yyyy-MM-dd HH:mm:ss:S Z")> +<#assign d = "2010-05-15 22:38:05:23 +0200"?dateTime("yyyy-MM-dd HH:mm:ss:S Z")> <#setting timeZone="GMT+02"> <@assertEquals actual=d?isoUtc expected="2010-05-15T20:38:05Z" /> <@assertEquals actual=d?isoUtcMs expected="2010-05-15T20:38:05.023Z" /> @@ -69,7 +69,7 @@ <@assertEquals actual=d?time?isoLocalMNZ expected="22:38" /> <@assertEquals actual=d?time?isoLocalHNZ expected="22" /> -<#assign dStrange = "600-01-01 23:59:59:123 +0000"?datetime("yyyy-MM-dd HH:mm:ss:S Z")> +<#assign dStrange = "600-01-01 23:59:59:123 +0000"?dateTime("yyyy-MM-dd HH:mm:ss:S Z")> <@assertEquals actual=dStrange?isoUtcMs expected="0600-01-03T23:59:59.123Z" /> <#-- java.sql treatment --> @@ -149,12 +149,12 @@ <@assertEquals actual=d?isoUtc expected="2010-05-14" /> <#setting timeZone="GMT+02:30"> -<#assign d = "2010-05-15"?datetime("yyyy-MM-dd")> +<#assign d = "2010-05-15"?dateTime("yyyy-MM-dd")> <@assertEquals actual=d?isoLocal expected="2010-05-15T00:00:00+02:30" /> <#setting timeZone="America/New_York"> -<@assertEquals actual="2010-05-09 20:00 +0000"?datetime("yyyy-MM-dd HH:mm Z")?isoLocal expected="2010-05-09T16:00:00-04:00" /> -<@assertEquals actual="2010-01-01 20:00 +0000"?datetime("yyyy-MM-dd HH:mm Z")?isoLocal expected="2010-01-01T15:00:00-05:00" /> +<@assertEquals actual="2010-05-09 20:00 +0000"?dateTime("yyyy-MM-dd HH:mm Z")?isoLocal expected="2010-05-09T16:00:00-04:00" /> +<@assertEquals actual="2010-01-01 20:00 +0000"?dateTime("yyyy-MM-dd HH:mm Z")?isoLocal expected="2010-01-01T15:00:00-05:00" /> <@assertFails>${d?iso("no such zone")}</@> http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/2af16e4f/freemarker-core-test/src/test/resources/org/apache/freemarker/core/templatesuite/templates/dateformat-iso-like.ftl ---------------------------------------------------------------------- diff --git a/freemarker-core-test/src/test/resources/org/apache/freemarker/core/templatesuite/templates/dateformat-iso-like.ftl b/freemarker-core-test/src/test/resources/org/apache/freemarker/core/templatesuite/templates/dateformat-iso-like.ftl index e4dd980..5691f82 100644 --- a/freemarker-core-test/src/test/resources/org/apache/freemarker/core/templatesuite/templates/dateformat-iso-like.ftl +++ b/freemarker-core-test/src/test/resources/org/apache/freemarker/core/templatesuite/templates/dateformat-iso-like.ftl @@ -16,7 +16,7 @@ specific language governing permissions and limitations under the License. --> -<#assign d = "2010-05-15 22:38:05:23 +0200"?datetime("yyyy-MM-dd HH:mm:ss:S Z")> +<#assign d = "2010-05-15 22:38:05:23 +0200"?dateTime("yyyy-MM-dd HH:mm:ss:S Z")> <#setting timeZone="GMT+02"> <@assertEquals actual=d?string.xs expected="2010-05-15T22:38:05.023+02:00" /> <@assertEquals actual=d?string.iso expected="2010-05-15T22:38:05.023+02:00" /> @@ -92,7 +92,7 @@ <@assertEquals actual=d?string.iso expected="2010-05-14" /> <#setting timeZone="GMT+02:30"> -<#assign d = "2010-05-15"?datetime("yyyy-MM-dd")> +<#assign d = "2010-05-15"?dateTime("yyyy-MM-dd")> <@assertEquals actual=d?string.xs expected="2010-05-15T00:00:00+02:30" /> <@assertEquals actual=d?string.iso expected="2010-05-15T00:00:00+02:30" /> @@ -103,7 +103,7 @@ <@assertEquals actual=d?string.xs expected="-1-05-13-05:00" /> <@assertEquals actual=d?string.iso expected="0000-05-13" /> -<#assign dt = "2010-05-15T01:02:03"?datetime.xs> +<#assign dt = "2010-05-15T01:02:03"?dateTime.xs> <#setting dateTimeFormat="xs"> <@assertEquals actual=dt?string expected="2010-05-15T01:02:03-05:00" /> <#setting dateTimeFormat="xs u"> @@ -146,8 +146,8 @@ <#setting timeFormat="iso nz ms"> <@assertEquals actual=t?string expected="01:02:03.000" /> -<@assertFails message="Use ?date, ?time, or ?datetime">${unknownDate?string.xs}</@> -<@assertFails message="Use ?date, ?time, or ?datetime">${unknownDate?string.iso}</@> +<@assertFails message="Use ?date, ?time, or ?dateTime">${unknownDate?string.xs}</@> +<@assertFails message="Use ?date, ?time, or ?dateTime">${unknownDate?string.iso}</@> <@assertFails message="format string">${.now?string.xs_fz_nz}</@> <@assertFails message="format string">${.now?string.xs_u_fu}</@> <@assertFails message="format string">${.now?string.xs_s_ms}</@> http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/2af16e4f/freemarker-core-test/src/test/resources/org/apache/freemarker/core/templatesuite/templates/dateformat-java.ftl ---------------------------------------------------------------------- diff --git a/freemarker-core-test/src/test/resources/org/apache/freemarker/core/templatesuite/templates/dateformat-java.ftl b/freemarker-core-test/src/test/resources/org/apache/freemarker/core/templatesuite/templates/dateformat-java.ftl index 219f0a4..955be00 100644 --- a/freemarker-core-test/src/test/resources/org/apache/freemarker/core/templatesuite/templates/dateformat-java.ftl +++ b/freemarker-core-test/src/test/resources/org/apache/freemarker/core/templatesuite/templates/dateformat-java.ftl @@ -20,7 +20,7 @@ <#setting timeZone="GMT"> <#setting dateTimeFormat=""> ${date} -${unknownDate?datetime} +${unknownDate?dateTime} ${date?string} ${date?string[""]} ${date?string.short} http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/2af16e4f/freemarker-core-test/src/test/resources/org/apache/freemarker/core/templatesuite/templates/dateparsing.ftl ---------------------------------------------------------------------- diff --git a/freemarker-core-test/src/test/resources/org/apache/freemarker/core/templatesuite/templates/dateparsing.ftl b/freemarker-core-test/src/test/resources/org/apache/freemarker/core/templatesuite/templates/dateparsing.ftl index 63716cb..401371e 100644 --- a/freemarker-core-test/src/test/resources/org/apache/freemarker/core/templatesuite/templates/dateparsing.ftl +++ b/freemarker-core-test/src/test/resources/org/apache/freemarker/core/templatesuite/templates/dateparsing.ftl @@ -22,32 +22,32 @@ <#setting dateFormat="G yyyy-MM-dd Z"> <#setting timeFormat="HH:mm:ss.S Z"> -<@assertEquals expected="AD 1998-10-30 15:30:44.512 +0000" actual='AD 1998-10-30 19:30:44.512 +0400'?datetime?string /> +<@assertEquals expected="AD 1998-10-30 15:30:44.512 +0000" actual='AD 1998-10-30 19:30:44.512 +0400'?dateTime?string /> <@assertEquals expected="AD 1998-10-29 +0000" actual='AD 1998-10-30 +0400'?date?string /> <@assertEquals expected="15:30:44.512 +0000" actual='19:30:44.512 +0400'?time?string /> <@assertEquals expected="AD 1998-10-30 15:30:44.512 +0000" - actual='10/30/1998 19:30:44:512 GMT+04:00'?datetime("MM/dd/yyyy HH:mm:ss:S z")?string /> + actual='10/30/1998 19:30:44:512 GMT+04:00'?dateTime("MM/dd/yyyy HH:mm:ss:S z")?string /> <@assertEquals expected="AD 1998-10-29 +0000" actual='10/30/1998 GMT+04:00'?date("MM/dd/yyyy z")?string /> <@assertEquals expected="15:30:44.512 +0000" actual='19:30:44:512 GMT+04:00'?time("HH:mm:ss:S z")?string /> -<@assertEquals expected="AD 1998-10-30 15:30:44.512 +0000" actual='1998-10-30T19:30:44.512+04:00'?datetime.xs?string /> +<@assertEquals expected="AD 1998-10-30 15:30:44.512 +0000" actual='1998-10-30T19:30:44.512+04:00'?dateTime.xs?string /> <@assertEquals expected="AD 1998-10-29 +0000" actual='1998-10-30+04:00'?date.xs?string /> <@assertEquals expected="15:30:44.512 +0000" actual='19:30:44.512+04:00'?time.xs?string /> -<#assign gmtStr='1998-10-30T19:30:44.512'?datetime.xs?string /> +<#assign gmtStr='1998-10-30T19:30:44.512'?dateTime.xs?string /> <#setting timeZone="GMT+01:00"> -<#assign gmt01Str='1998-10-30T19:30:44.512'?datetime.xs?string /> +<#assign gmt01Str='1998-10-30T19:30:44.512'?dateTime.xs?string /> <#setting timeZone="default"> -<#assign defStr='1998-10-30T19:30:44.512'?datetime.xs?string /> +<#assign defStr='1998-10-30T19:30:44.512'?dateTime.xs?string /> <@assert test = gmtStr != gmt01Str /> <@assert test = defStr != gmtStr || defStr != gmt01Str /> <#assign refDate = "AD 1998-10-30 +0000"?date> <#assign refTime = "15:30:44.512 +0000"?time> -<#assign refDateTime = "AD 1998-10-30 15:30:44.512 +0000"?datetime> +<#assign refDateTime = "AD 1998-10-30 15:30:44.512 +0000"?dateTime> <#setting timeZone="UTC"> <#list ['xs', 'xs_nz', 'xs_fz', 'xs s', 'xs ms'] as format> <#setting dateFormat=format> @@ -55,7 +55,7 @@ <#setting dateTimeFormat=format> <@assertEquals expected=refDate actual="1998-10-30Z"?date /> <@assertEquals expected=refTime actual="15:30:44.512Z"?time /> - <@assertEquals expected=refDateTime actual="1998-10-30T15:30:44.512Z"?datetime /> + <@assertEquals expected=refDateTime actual="1998-10-30T15:30:44.512Z"?dateTime /> </#list> <#list ['iso', 'iso_nz', 'iso_fz', 'iso m'] as format> <#setting dateFormat=format> @@ -65,20 +65,20 @@ <@assertEquals expected=refDate actual="19981030"?date /> <@assertEquals expected=refTime actual="15:30:44,512Z"?time /> <@assertEquals expected=refTime actual="153044,512Z"?time /> - <@assertEquals expected=refDateTime actual="1998-10-30T15:30:44,512Z"?datetime /> - <@assertEquals expected=refDateTime actual="19981030T153044,512Z"?datetime /> + <@assertEquals expected=refDateTime actual="1998-10-30T15:30:44,512Z"?dateTime /> + <@assertEquals expected=refDateTime actual="19981030T153044,512Z"?dateTime /> </#list> <#setting timeZone="GMT+01:00"> -<#assign refDateTime='1998-10-30T19:30:44.512'?datetime.xs /> -<@assertEquals expected=refDateTime actual="1998-10-30T19:30:44.512"?datetime.xs /> -<@assertEquals expected=refDateTime actual="1998-10-30T19:30:44.512"?datetime.iso /> -<@assertEquals expected=refDateTime actual="1998-10-30T18:30:44.512"?datetime.xs_u /> -<@assertEquals expected=refDateTime actual="1998-10-30T18:30:44.512"?datetime.iso_u /> +<#assign refDateTime='1998-10-30T19:30:44.512'?dateTime.xs /> +<@assertEquals expected=refDateTime actual="1998-10-30T19:30:44.512"?dateTime.xs /> +<@assertEquals expected=refDateTime actual="1998-10-30T19:30:44.512"?dateTime.iso /> +<@assertEquals expected=refDateTime actual="1998-10-30T18:30:44.512"?dateTime.xs_u /> +<@assertEquals expected=refDateTime actual="1998-10-30T18:30:44.512"?dateTime.iso_u /> <#setting timeZone="UTC"> -<@assertEquals expected=refDateTime actual="1998-10-30T18:30:44.512"?datetime.xs /> -<@assertEquals expected=refDateTime actual="1998-10-30T18:30:44.512"?datetime.iso /> -<@assertEquals expected=refDateTime actual="1998-10-30T19:30:44.512+01:00"?datetime.xs /> -<@assertEquals expected=refDateTime actual="1998-10-30T19:30:44.512+01:00"?datetime.xs_u /> -<@assertEquals expected=refDateTime actual="1998-10-30T19:30:44.512+01"?datetime.iso /> -<@assertEquals expected=refDateTime actual="1998-10-30T19:30:44.512+01"?datetime.iso_u /> \ No newline at end of file +<@assertEquals expected=refDateTime actual="1998-10-30T18:30:44.512"?dateTime.xs /> +<@assertEquals expected=refDateTime actual="1998-10-30T18:30:44.512"?dateTime.iso /> +<@assertEquals expected=refDateTime actual="1998-10-30T19:30:44.512+01:00"?dateTime.xs /> +<@assertEquals expected=refDateTime actual="1998-10-30T19:30:44.512+01:00"?dateTime.xs_u /> +<@assertEquals expected=refDateTime actual="1998-10-30T19:30:44.512+01"?dateTime.iso /> +<@assertEquals expected=refDateTime actual="1998-10-30T19:30:44.512+01"?dateTime.iso_u /> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/2af16e4f/freemarker-core-test/src/test/resources/org/apache/freemarker/core/templatesuite/templates/sequence-builtins.ftl ---------------------------------------------------------------------- diff --git a/freemarker-core-test/src/test/resources/org/apache/freemarker/core/templatesuite/templates/sequence-builtins.ftl b/freemarker-core-test/src/test/resources/org/apache/freemarker/core/templatesuite/templates/sequence-builtins.ftl index dc1dbbb..ffda546 100644 --- a/freemarker-core-test/src/test/resources/org/apache/freemarker/core/templatesuite/templates/sequence-builtins.ftl +++ b/freemarker-core-test/src/test/resources/org/apache/freemarker/core/templatesuite/templates/sequence-builtins.ftl @@ -301,7 +301,7 @@ Sequence built-ins failing on date-type mismatch <@assertEquals actual=x?seqIndexOf('foo') expected=1 /> <@assertEquals actual=x?seqIndexOf('1992-02-21'?date('yyyy-MM-dd')) expected=0 /> <@assertFails message="dates of different types"> - 0 = ${x?seqIndexOf('1992-02-21 00:00:00'?datetime('yyyy-MM-dd HH:mm:ss'))} + 0 = ${x?seqIndexOf('1992-02-21 00:00:00'?dateTime('yyyy-MM-dd HH:mm:ss'))} </@> Chunk http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/2af16e4f/freemarker-core-test/src/test/resources/org/apache/freemarker/core/templatesuite/templates/setting.ftl ---------------------------------------------------------------------- diff --git a/freemarker-core-test/src/test/resources/org/apache/freemarker/core/templatesuite/templates/setting.ftl b/freemarker-core-test/src/test/resources/org/apache/freemarker/core/templatesuite/templates/setting.ftl index de60a84..0febdef 100644 --- a/freemarker-core-test/src/test/resources/org/apache/freemarker/core/templatesuite/templates/setting.ftl +++ b/freemarker-core-test/src/test/resources/org/apache/freemarker/core/templatesuite/templates/setting.ftl @@ -37,9 +37,9 @@ <@assertEquals expected='dtf' actual=.now?string /> <#setting timeZone='GMT+00'> -<#assign t1='2000'?datetime('yyyy')> +<#assign t1='2000'?dateTime('yyyy')> <#setting timeZone='GMT+01'> -<#assign t2='2000'?datetime('yyyy')> +<#assign t2='2000'?dateTime('yyyy')> <@assertEquals expected=1000*60*60 actual=t1?long-t2?long /> <#setting sqlDateAndTimeTimeZone='GMT+01'> http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/2af16e4f/freemarker-core/src/main/java/org/apache/freemarker/core/ASTDirSetting.java ---------------------------------------------------------------------- diff --git a/freemarker-core/src/main/java/org/apache/freemarker/core/ASTDirSetting.java b/freemarker-core/src/main/java/org/apache/freemarker/core/ASTDirSetting.java index 134f6fe..576b05a 100644 --- a/freemarker-core/src/main/java/org/apache/freemarker/core/ASTDirSetting.java +++ b/freemarker-core/src/main/java/org/apache/freemarker/core/ASTDirSetting.java @@ -67,8 +67,14 @@ final class ASTDirSetting extends ASTDirective { sb.append(MessageUtil.FM3_SNAKE_CASE); correctedKey = _StringUtil.snakeCaseToCamelCase(key); if (!SETTING_NAMES.contains(correctedKey)) { - correctedKey = null; + if (key.equals("datetime_format")) { + correctedKey = "dateTimeFormat"; + } else { + correctedKey = null; + } } + } else if (key.equals("datetimeFormat")) { + correctedKey = "dateTimeFormat"; } else { correctedKey = null; } http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/2af16e4f/freemarker-core/src/main/java/org/apache/freemarker/core/ASTExpBuiltIn.java ---------------------------------------------------------------------- diff --git a/freemarker-core/src/main/java/org/apache/freemarker/core/ASTExpBuiltIn.java b/freemarker-core/src/main/java/org/apache/freemarker/core/ASTExpBuiltIn.java index a6b2b77..58b0127 100644 --- a/freemarker-core/src/main/java/org/apache/freemarker/core/ASTExpBuiltIn.java +++ b/freemarker-core/src/main/java/org/apache/freemarker/core/ASTExpBuiltIn.java @@ -97,8 +97,8 @@ abstract class ASTExpBuiltIn extends ASTExpression implements Cloneable { putBI("contains", new BuiltInsForStringsBasic.containsBI()); putBI("date", new BuiltInsForMultipleTypes.dateBI(TemplateDateModel.DATE)); putBI("dateIfUnknown", new BuiltInsForDates.dateType_if_unknownBI(TemplateDateModel.DATE)); - putBI("datetime", new BuiltInsForMultipleTypes.dateBI(TemplateDateModel.DATETIME)); - putBI("datetimeIfUnknown", new BuiltInsForDates.dateType_if_unknownBI(TemplateDateModel.DATETIME)); + putBI("dateTime", new BuiltInsForMultipleTypes.dateBI(TemplateDateModel.DATE_TIME)); + putBI("dateTimeIfUnknown", new BuiltInsForDates.dateType_if_unknownBI(TemplateDateModel.DATE_TIME)); putBI("default", new BuiltInsForExistenceHandling.defaultBI()); putBI("double", new doubleBI()); putBI("endsWith", new BuiltInsForStringsBasic.ends_withBI()); @@ -133,7 +133,7 @@ abstract class ASTExpBuiltIn extends ASTExpression implements Cloneable { putBI("isFirst", new BuiltInsForLoopVariables.is_firstBI()); putBI("isLast", new BuiltInsForLoopVariables.is_lastBI()); putBI("isUnknownDateLike", new BuiltInsForMultipleTypes.is_dateOfTypeBI(TemplateDateModel.UNKNOWN)); - putBI("isDatetime", new BuiltInsForMultipleTypes.is_dateOfTypeBI(TemplateDateModel.DATETIME)); + putBI("isDatetime", new BuiltInsForMultipleTypes.is_dateOfTypeBI(TemplateDateModel.DATE_TIME)); putBI("isDirective", new BuiltInsForMultipleTypes.is_directiveBI()); putBI("isEnumerable", new BuiltInsForMultipleTypes.is_enumerableBI()); putBI("isHashEx", new BuiltInsForMultipleTypes.is_hash_exBI()); @@ -240,7 +240,7 @@ abstract class ASTExpBuiltIn extends ASTExpression implements Cloneable { putBI("number", new BuiltInsForStringsMisc.numberBI()); putBI("numberToDate", new number_to_dateBI(TemplateDateModel.DATE)); putBI("numberToTime", new number_to_dateBI(TemplateDateModel.TIME)); - putBI("numberToDatetime", new number_to_dateBI(TemplateDateModel.DATETIME)); + putBI("numberToDatetime", new number_to_dateBI(TemplateDateModel.DATE_TIME)); putBI("parent", new parentBI()); putBI("previousSibling", new previousSiblingBI()); putBI("nextSibling", new nextSiblingBI()); @@ -315,12 +315,20 @@ abstract class ASTExpBuiltIn extends ASTExpression implements Cloneable { correctedKey = correctedKey.substring(0, correctedKey.length() - 2) + correctedKey.substring(correctedKey.length() - 2).toUpperCase(); if (!BUILT_INS_BY_NAME.containsKey(correctedKey)) { - correctedKey = null; + if (key.equals("datetime_if_unknown")) { + correctedKey = "dateTimeIfUnknown"; + } else { + correctedKey = null; + } } } else { correctedKey = null; } } + } else if (key.equals("datetime")) { + correctedKey = "dateTime"; + } else if (key.equals("datetimeIfUnknown")) { + correctedKey = "dateTimeIfUnknown"; } else { correctedKey = null; } http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/2af16e4f/freemarker-core/src/main/java/org/apache/freemarker/core/ASTExpBuiltInVariable.java ---------------------------------------------------------------------- diff --git a/freemarker-core/src/main/java/org/apache/freemarker/core/ASTExpBuiltInVariable.java b/freemarker-core/src/main/java/org/apache/freemarker/core/ASTExpBuiltInVariable.java index f2b2537..f9439de 100644 --- a/freemarker-core/src/main/java/org/apache/freemarker/core/ASTExpBuiltInVariable.java +++ b/freemarker-core/src/main/java/org/apache/freemarker/core/ASTExpBuiltInVariable.java @@ -192,7 +192,7 @@ final class ASTExpBuiltInVariable extends ASTExpression { return new SimpleScalar(env.getCurrentRecoveredErrorMessage()); } if (name == NOW) { - return new SimpleDate(new Date(), TemplateDateModel.DATETIME); + return new SimpleDate(new Date(), TemplateDateModel.DATE_TIME); } if (name == VERSION) { return new SimpleScalar(Configuration.getVersion().toString()); http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/2af16e4f/freemarker-core/src/main/java/org/apache/freemarker/core/BuiltInsForMultipleTypes.java ---------------------------------------------------------------------- diff --git a/freemarker-core/src/main/java/org/apache/freemarker/core/BuiltInsForMultipleTypes.java b/freemarker-core/src/main/java/org/apache/freemarker/core/BuiltInsForMultipleTypes.java index ab3df64..4566beb 100644 --- a/freemarker-core/src/main/java/org/apache/freemarker/core/BuiltInsForMultipleTypes.java +++ b/freemarker-core/src/main/java/org/apache/freemarker/core/BuiltInsForMultipleTypes.java @@ -210,8 +210,8 @@ class BuiltInsForMultipleTypes { if (dateType == dtype) { return model; } - // unknown and datetime can be coerced into any date type - if (dtype == TemplateDateModel.UNKNOWN || dtype == TemplateDateModel.DATETIME) { + // unknown and dateTime can be coerced into any date type + if (dtype == TemplateDateModel.UNKNOWN || dtype == TemplateDateModel.DATE_TIME) { return new SimpleDate(dmodel.getAsDate(), dateType); } throw new _MiscTemplateException(this, @@ -576,7 +576,7 @@ class BuiltInsForMultipleTypes { throw MessageUtil.newCantFormatDateException(defaultFormat, target, e, true); } catch (TemplateException e2) { // `e` should always be a TemplateModelException here, but to be sure: - throw _CoreAPI.ensureIsTemplateModelException("Failed to format date/time/datetime", e2); + throw _CoreAPI.ensureIsTemplateModelException("Failed to format date/time/dateTime", e2); } } } http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/2af16e4f/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 e0f6118..93bac28 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 @@ -1526,7 +1526,7 @@ public final class Environment extends MutableProcessingConfiguration<Environmen if (!dateTimeFormat.equals(prevDateTimeFormat)) { if (cachedTempDateFormatArray != null) { for (int i = 0; i < CACHED_TDFS_LENGTH; i += CACHED_TDFS_ZONELESS_INPUT_OFFS) { - cachedTempDateFormatArray[i + TemplateDateModel.DATETIME] = null; + cachedTempDateFormatArray[i + TemplateDateModel.DATE_TIME] = null; } } } @@ -1602,7 +1602,7 @@ public final class Environment extends MutableProcessingConfiguration<Environmen } /** - * Gets a {@link TemplateDateFormat} using the date/time/datetime format settings and the current locale and time + * Gets a {@link TemplateDateFormat} using the date/time/dateTime format settings and the current locale and time * zone. (The current locale is the locale returned by {@link #getLocale()}. The current time zone is * {@link #getTimeZone()} or {@link #getSQLDateAndTimeTimeZone()}). * @@ -1626,7 +1626,7 @@ public final class Environment extends MutableProcessingConfiguration<Environmen * * <p> * Note on performance: The result will be cached in the {@link Environment} instance. However, at least in 2.3.24 - * the cached entries that depend on the current locale or the current time zone or the current date/time/datetime + * the cached entries that depend on the current locale or the current time zone or the current date/time/dateTime * format of the {@link Environment} will be lost when those settings are changed. * * @param formatString @@ -1788,7 +1788,7 @@ public final class Environment extends MutableProcessingConfiguration<Environmen settingName = MutableProcessingConfiguration.DATE_FORMAT_KEY; settingValue = getDateFormat(); break; - case TemplateDateModel.DATETIME: + case TemplateDateModel.DATE_TIME: settingName = MutableProcessingConfiguration.DATE_TIME_FORMAT_KEY; settingValue = getDateTimeFormat(); break; @@ -1799,7 +1799,7 @@ public final class Environment extends MutableProcessingConfiguration<Environmen _ErrorDescriptionBuilder desc = new _ErrorDescriptionBuilder( "The value of the \"", settingName, - "\" FreeMarker configuration setting is a malformed date/time/datetime format string: ", + "\" FreeMarker configuration setting is a malformed date/time/dateTime format string: ", new _DelayedJQuote(settingValue), ". Reason given: ", e.getMessage()); throw useTempModelExc ? new _TemplateModelException(e, desc) : new _MiscTemplateException(e, desc); @@ -1821,7 +1821,7 @@ public final class Environment extends MutableProcessingConfiguration<Environmen throw MessageUtil.newCantFormatUnknownTypeDateException(blamedDateSourceExp, e); } catch (TemplateValueFormatException e) { _ErrorDescriptionBuilder desc = new _ErrorDescriptionBuilder( - "Can't invoke date/time/datetime format based on format string ", + "Can't invoke date/time/dateTime format based on format string ", new _DelayedJQuote(formatString), ". Reason given: ", e.getMessage()) .blame(blamedFormatterExp); @@ -1830,7 +1830,7 @@ public final class Environment extends MutableProcessingConfiguration<Environmen } /** - * Used to get the {@link TemplateDateFormat} according the date/time/datetime format settings, for the current + * Used to get the {@link TemplateDateFormat} according the date/time/dateTime format settings, for the current * locale and time zone. See {@link #getTemplateDateFormat(String, int, Locale, TimeZone, boolean)} for the meaning * of some of the parameters. */ @@ -1855,7 +1855,7 @@ public final class Environment extends MutableProcessingConfiguration<Environmen case TemplateDateModel.DATE: formatString = getDateFormat(); break; - case TemplateDateModel.DATETIME: + case TemplateDateModel.DATE_TIME: formatString = getDateTimeFormat(); break; default: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/2af16e4f/freemarker-core/src/main/java/org/apache/freemarker/core/MessageUtil.java ---------------------------------------------------------------------- diff --git a/freemarker-core/src/main/java/org/apache/freemarker/core/MessageUtil.java b/freemarker-core/src/main/java/org/apache/freemarker/core/MessageUtil.java index 8a90159..8820f08 100644 --- a/freemarker-core/src/main/java/org/apache/freemarker/core/MessageUtil.java +++ b/freemarker-core/src/main/java/org/apache/freemarker/core/MessageUtil.java @@ -39,7 +39,7 @@ class MessageUtil { + "known if it's a date (no time part), time or date-time value."; static final String UNKNOWN_DATE_TYPE_ERROR_TIP = - "Use ?date, ?time, or ?datetime to tell FreeMarker the exact type."; + "Use ?date, ?time, or ?dateTime to tell FreeMarker the exact type."; static final Object[] UNKNOWN_DATE_TO_STRING_TIPS = { UNKNOWN_DATE_TYPE_ERROR_TIP, @@ -291,7 +291,7 @@ class MessageUtil { static TemplateException newCantFormatDateException(TemplateDateFormat format, ASTExpression dataSrcExp, TemplateValueFormatException e, boolean useTempModelExc) { _ErrorDescriptionBuilder desc = new _ErrorDescriptionBuilder( - "Failed to format date/time/datetime with format ", new _DelayedJQuote(format.getDescription()), ": ", + "Failed to format date/time/dateTime with format ", new _DelayedJQuote(format.getDescription()), ": ", e.getMessage()) .blame(dataSrcExp); return useTempModelExc http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/2af16e4f/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 43cdf72..7e1a164 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 @@ -269,7 +269,7 @@ public interface ProcessingConfiguration { /** * The format used to convert {@link java.util.Date}-s that are date-time (timestamp) values to string-s, - * also the format that {@code someString?datetime} will use to parse strings. + * also the format that {@code someString?dateTime} will use to parse strings. * * <p>The possible setting values are (the quotation marks aren't part of the value itself): * http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/2af16e4f/freemarker-core/src/main/java/org/apache/freemarker/core/model/TemplateDateModel.java ---------------------------------------------------------------------- diff --git a/freemarker-core/src/main/java/org/apache/freemarker/core/model/TemplateDateModel.java b/freemarker-core/src/main/java/org/apache/freemarker/core/model/TemplateDateModel.java index ab85e97..024dc8e 100644 --- a/freemarker-core/src/main/java/org/apache/freemarker/core/model/TemplateDateModel.java +++ b/freemarker-core/src/main/java/org/apache/freemarker/core/model/TemplateDateModel.java @@ -53,12 +53,12 @@ public interface TemplateDateModel extends TemplateModel { /** * The date model represents a date-time value (also known as timestamp). */ - int DATETIME = 3; + int DATE_TIME = 3; List TYPE_NAMES = Collections.unmodifiableList( Arrays.asList( - "UNKNOWN", "TIME", "DATE", "DATETIME")); + "UNKNOWN", "TIME", "DATE", "DATE_TIME")); /** * Returns the date value. The return value must not be {@code null}. */ @@ -66,7 +66,7 @@ public interface TemplateDateModel extends TemplateModel { /** * Returns the type of the date. It can be any of {@link #TIME}, - * {@link #DATE}, or {@link #DATETIME}. + * {@link #DATE}, or {@link #DATE_TIME}. */ int getDateType(); http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/2af16e4f/freemarker-core/src/main/java/org/apache/freemarker/core/model/impl/SimpleDate.java ---------------------------------------------------------------------- diff --git a/freemarker-core/src/main/java/org/apache/freemarker/core/model/impl/SimpleDate.java b/freemarker-core/src/main/java/org/apache/freemarker/core/model/impl/SimpleDate.java index cf6e753..08a6d94 100644 --- a/freemarker-core/src/main/java/org/apache/freemarker/core/model/impl/SimpleDate.java +++ b/freemarker-core/src/main/java/org/apache/freemarker/core/model/impl/SimpleDate.java @@ -50,10 +50,10 @@ public class SimpleDate implements TemplateDateModel, Serializable { /** * Creates a new date model wrapping the specified time object and - * having DATETIME type. + * having DATE_TIME type. */ - public SimpleDate(java.sql.Timestamp datetime) { - this(datetime, DATETIME); + public SimpleDate(java.sql.Timestamp dateTime) { + this(dateTime, DATE_TIME); } /** http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/2af16e4f/freemarker-core/src/main/java/org/apache/freemarker/core/util/FTLUtil.java ---------------------------------------------------------------------- diff --git a/freemarker-core/src/main/java/org/apache/freemarker/core/util/FTLUtil.java b/freemarker-core/src/main/java/org/apache/freemarker/core/util/FTLUtil.java index 84d1c19..0752f1b 100644 --- a/freemarker-core/src/main/java/org/apache/freemarker/core/util/FTLUtil.java +++ b/freemarker-core/src/main/java/org/apache/freemarker/core/util/FTLUtil.java @@ -803,7 +803,7 @@ public final class FTLUtil { } if (TemplateDateModel.class.isAssignableFrom(cl)) { - appendTypeName(sb, typeNamesAppended, "date_or_time_or_datetime"); + appendTypeName(sb, typeNamesAppended, "date_or_time_or_dateTime"); } if (TemplateBooleanModel.class.isAssignableFrom(cl)) { http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/2af16e4f/freemarker-core/src/main/java/org/apache/freemarker/core/valueformat/TemplateDateFormat.java ---------------------------------------------------------------------- diff --git a/freemarker-core/src/main/java/org/apache/freemarker/core/valueformat/TemplateDateFormat.java b/freemarker-core/src/main/java/org/apache/freemarker/core/valueformat/TemplateDateFormat.java index f5f8650..8e890f9 100644 --- a/freemarker-core/src/main/java/org/apache/freemarker/core/valueformat/TemplateDateFormat.java +++ b/freemarker-core/src/main/java/org/apache/freemarker/core/valueformat/TemplateDateFormat.java @@ -71,7 +71,7 @@ public abstract class TemplateDateFormat extends TemplateValueFormat { } /** - * Parsers a string to date/time/datetime, according to this format. Some format implementations may throw + * Parsers a string to date/time/dateTime, according to this format. Some format implementations may throw * {@link ParsingNotSupportedException} here. * * @param s @@ -79,8 +79,8 @@ public abstract class TemplateDateFormat extends TemplateValueFormat { * @param dateType * The expected date type of the result. Not all {@link TemplateDateFormat}-s will care about this; * though those who return a {@link TemplateDateModel} instead of {@link Date} often will. When strings - * are parsed via {@code ?date}, {@code ?time}, or {@code ?datetime}, then this parameter is - * {@link TemplateDateModel#DATE}, {@link TemplateDateModel#TIME}, or {@link TemplateDateModel#DATETIME}, + * are parsed via {@code ?date}, {@code ?time}, or {@code ?dateTime}, then this parameter is + * {@link TemplateDateModel#DATE}, {@link TemplateDateModel#TIME}, or {@link TemplateDateModel#DATE_TIME}, * respectively. This parameter rarely if ever {@link TemplateDateModel#UNKNOWN}, but the implementation * that cares about this parameter should be prepared for that. If nothing else, it should throw * {@link UnknownDateTypeParsingUnsupportedException} then. @@ -89,7 +89,7 @@ public abstract class TemplateDateFormat extends TemplateValueFormat { * {@link Date}. {@link TemplateDateModel} is used if you have to attach some application-specific * meta-information thats also extracted during {@link #formatToPlainText(TemplateDateModel)} (so if you format * something and then parse it, you get back an equivalent result). It can't be {@code null}. Known issue - * (at least in FTL 2): {@code ?date}/{@code ?time}/{@code ?datetime}, when not invoked as a method, can't + * (at least in FTL 2): {@code ?date}/{@code ?time}/{@code ?dateTime}, when not invoked as a method, can't * return the {@link TemplateDateModel}, only the {@link Date} from inside it, hence the additional * application-specific meta-info will be lost. */ http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/2af16e4f/freemarker-core/src/main/java/org/apache/freemarker/core/valueformat/TemplateDateFormatFactory.java ---------------------------------------------------------------------- diff --git a/freemarker-core/src/main/java/org/apache/freemarker/core/valueformat/TemplateDateFormatFactory.java b/freemarker-core/src/main/java/org/apache/freemarker/core/valueformat/TemplateDateFormatFactory.java index c1bf79c..1e1da09 100644 --- a/freemarker-core/src/main/java/org/apache/freemarker/core/valueformat/TemplateDateFormatFactory.java +++ b/freemarker-core/src/main/java/org/apache/freemarker/core/valueformat/TemplateDateFormatFactory.java @@ -53,7 +53,7 @@ public abstract class TemplateDateFormatFactory extends TemplateValueFormatFacto * {@code "1, 2"} (and {@code "@fooBar"} selects the factory). The format of this string is up to the * {@link TemplateDateFormatFactory} implementation. Not {@code null}, often an empty string. * @param dateType - * {@link TemplateDateModel#DATE}, {@link TemplateDateModel#TIME}, {@link TemplateDateModel#DATETIME} or + * {@link TemplateDateModel#DATE}, {@link TemplateDateModel#TIME}, {@link TemplateDateModel#DATE_TIME} or * {@link TemplateDateModel#UNKNOWN}. Supporting {@link TemplateDateModel#UNKNOWN} is not necessary, in * which case the method should throw an {@link UnknownDateTypeFormattingUnsupportedException} exception. * @param locale http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/2af16e4f/freemarker-core/src/main/java/org/apache/freemarker/core/valueformat/impl/ISOLikeTemplateDateFormat.java ---------------------------------------------------------------------- diff --git a/freemarker-core/src/main/java/org/apache/freemarker/core/valueformat/impl/ISOLikeTemplateDateFormat.java b/freemarker-core/src/main/java/org/apache/freemarker/core/valueformat/impl/ISOLikeTemplateDateFormat.java index 8790d00..b76e7a3 100644 --- a/freemarker-core/src/main/java/org/apache/freemarker/core/valueformat/impl/ISOLikeTemplateDateFormat.java +++ b/freemarker-core/src/main/java/org/apache/freemarker/core/valueformat/impl/ISOLikeTemplateDateFormat.java @@ -216,7 +216,7 @@ abstract class ISOLikeTemplateDateFormat extends TemplateDateFormat { return parseDate(s, tz, calToDateConverter); } else if (dateType == TemplateDateModel.TIME) { return parseTime(s, tz, calToDateConverter); - } else if (dateType == TemplateDateModel.DATETIME) { + } else if (dateType == TemplateDateModel.DATE_TIME) { return parseDateTime(s, tz, calToDateConverter); } else { throw new BugException("Unexpected date type: " + dateType); @@ -246,7 +246,7 @@ abstract class ISOLikeTemplateDateFormat extends TemplateDateFormat { switch (dateType) { case TemplateDateModel.DATE: return getDateDescription(); case TemplateDateModel.TIME: return getTimeDescription(); - case TemplateDateModel.DATETIME: return getDateTimeDescription(); + case TemplateDateModel.DATE_TIME: return getDateTimeDescription(); default: return "<error: wrong format dateType>"; } } http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/2af16e4f/freemarker-core/src/main/java/org/apache/freemarker/core/valueformat/impl/JavaTemplateDateFormatFactory.java ---------------------------------------------------------------------- diff --git a/freemarker-core/src/main/java/org/apache/freemarker/core/valueformat/impl/JavaTemplateDateFormatFactory.java b/freemarker-core/src/main/java/org/apache/freemarker/core/valueformat/impl/JavaTemplateDateFormatFactory.java index 9c94e82..ad84ba1 100644 --- a/freemarker-core/src/main/java/org/apache/freemarker/core/valueformat/impl/JavaTemplateDateFormatFactory.java +++ b/freemarker-core/src/main/java/org/apache/freemarker/core/valueformat/impl/JavaTemplateDateFormatFactory.java @@ -95,7 +95,7 @@ public class JavaTemplateDateFormatFactory extends TemplateDateFormatFactory { jFormat = DateFormat.getDateInstance(tok1Style, cacheKey.locale); break; } - case TemplateDateModel.DATETIME: { + case TemplateDateModel.DATE_TIME: { int tok2Style = tok.hasMoreTokens() ? parseDateStyleToken(tok.nextToken()) : tok1Style; if (tok2Style != -1) { jFormat = DateFormat.getDateTimeInstance(tok1Style, tok2Style, cacheKey.locale); http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/2af16e4f/freemarker-dom/src/main/java/org/apache/freemarker/dom/NodeModel.java ---------------------------------------------------------------------- diff --git a/freemarker-dom/src/main/java/org/apache/freemarker/dom/NodeModel.java b/freemarker-dom/src/main/java/org/apache/freemarker/dom/NodeModel.java index 37a5c7d..2a2dd04 100644 --- a/freemarker-dom/src/main/java/org/apache/freemarker/dom/NodeModel.java +++ b/freemarker-dom/src/main/java/org/apache/freemarker/dom/NodeModel.java @@ -601,8 +601,8 @@ abstract public class NodeModel implements TemplateNodeModelEx, TemplateHashMode || TemplateBooleanModel.class.isAssignableFrom(expectedClass)) { return new Object[]{ "XML node values are always strings (text), that is, they can't be used as number, " - + "date/time/datetime or boolean without explicit conversion (such as " - + "someNode?number, someNode?datetime.xs, someNode?date.xs, someNode?time.xs, " + + "date/time/dateTime or boolean without explicit conversion (such as " + + "someNode?number, someNode?dateTime.xs, someNode?date.xs, someNode?time.xs, " + "someNode?boolean).", }; } http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/2af16e4f/freemarker-manual/src/test/java/org/apache/freemarker/manual/examples/TemplateConfigurationExamples.java ---------------------------------------------------------------------- diff --git a/freemarker-manual/src/test/java/org/apache/freemarker/manual/examples/TemplateConfigurationExamples.java b/freemarker-manual/src/test/java/org/apache/freemarker/manual/examples/TemplateConfigurationExamples.java index 3ea518d..078e4db 100644 --- a/freemarker-manual/src/test/java/org/apache/freemarker/manual/examples/TemplateConfigurationExamples.java +++ b/freemarker-manual/src/test/java/org/apache/freemarker/manual/examples/TemplateConfigurationExamples.java @@ -170,7 +170,7 @@ public class TemplateConfigurationExamples extends TemplateTest { } setConfiguration(cfgB.build()); - addTemplate("t.stats.html", "${ts?datetime} ${ts?date} ${ts?time}"); + addTemplate("t.stats.html", "${ts?dateTime} ${ts?date} ${ts?time}"); addTemplate("t.html", ""); addTemplate("t.htm", ""); addTemplate("t.xml", ""); http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/2af16e4f/freemarker-manual/src/test/resources/org/apache/freemarker/manual/examples/CustomFormatsExample-alias1.ftlh ---------------------------------------------------------------------- diff --git a/freemarker-manual/src/test/resources/org/apache/freemarker/manual/examples/CustomFormatsExample-alias1.ftlh b/freemarker-manual/src/test/resources/org/apache/freemarker/manual/examples/CustomFormatsExample-alias1.ftlh index fe9690c..c851df7 100644 --- a/freemarker-manual/src/test/resources/org/apache/freemarker/manual/examples/CustomFormatsExample-alias1.ftlh +++ b/freemarker-manual/src/test/resources/org/apache/freemarker/manual/examples/CustomFormatsExample-alias1.ftlh @@ -19,4 +19,4 @@ ${p?string.@price} ${w?string.@weight} ${fd?string.@fileDate} -${let?datetime?string.@logEventTime} +${let?dateTime?string.@logEventTime} http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/2af16e4f/freemarker-servlet/src/test/resources/org/apache/freemarker/servlet/jsp/webapps/basic/attributes.ftl ---------------------------------------------------------------------- diff --git a/freemarker-servlet/src/test/resources/org/apache/freemarker/servlet/jsp/webapps/basic/attributes.ftl b/freemarker-servlet/src/test/resources/org/apache/freemarker/servlet/jsp/webapps/basic/attributes.ftl index 8d2f8af..89e06ca 100644 --- a/freemarker-servlet/src/test/resources/org/apache/freemarker/servlet/jsp/webapps/basic/attributes.ftl +++ b/freemarker-servlet/src/test/resources/org/apache/freemarker/servlet/jsp/webapps/basic/attributes.ftl @@ -66,7 +66,7 @@ String: <@t.attributeInfo name='a' /> Number: <@t.attributeInfo name='a' /> <#global a = true> Boolean: <@t.attributeInfo name='a' /> -<#global a = '2014-12-20T18:19+02:00'?datetime.iso> +<#global a = '2014-12-20T18:19+02:00'?dateTime.iso> Date-time: <@t.attributeInfo name='a' /> <#global a = [1, 2, 3]> Sequence: <@t.attributeInfo name='a' />