This is an automated email from the ASF dual-hosted git repository.
ddekany pushed a commit to branch FREEMARKER-35
in repository https://gitbox.apache.org/repos/asf/freemarker.git
The following commit(s) were added to refs/heads/FREEMARKER-35 by this push:
new 744a5470 FREEMARKER-35: Some code cleanup
744a5470 is described below
commit 744a5470d743a25616dc1da9087c6c62842a924f
Author: ddekany <[email protected]>
AuthorDate: Fri Jan 6 19:15:35 2023 +0100
FREEMARKER-35: Some code cleanup
---
.../core/AliasTemplateDateFormatFactory.java | 4 +-
src/main/java/freemarker/core/Configurable.java | 23 ++++-----
src/main/java/freemarker/core/Environment.java | 4 +-
src/main/java/freemarker/core/EvalUtil.java | 2 +-
.../ISOLikeTemplateTemporalTemporalFormat.java | 2 -
.../java/freemarker/core/_JavaTimeBugUtils.java | 2 +-
src/main/java/freemarker/core/_MessageUtil.java | 13 ++---
src/main/java/freemarker/core/_TemporalUtils.java | 58 ++++++++++------------
8 files changed, 51 insertions(+), 57 deletions(-)
diff --git a/src/main/java/freemarker/core/AliasTemplateDateFormatFactory.java
b/src/main/java/freemarker/core/AliasTemplateDateFormatFactory.java
index 4bb788ff..04724045 100644
--- a/src/main/java/freemarker/core/AliasTemplateDateFormatFactory.java
+++ b/src/main/java/freemarker/core/AliasTemplateDateFormatFactory.java
@@ -27,11 +27,11 @@ import freemarker.template.utility.StringUtil;
/**
* Creates an alias to another format that's given with a {@link String}, so
that the format can be referred with a
- * simple name in the template, rather than with a concrete pattern or other
kind of format string. Internally, this
+ * simple name in the template, rather than with a concrete pattern, or other
kind of format string. Internally, this
* will call {@link Environment#getTemplateDateFormat(String, int, Locale,
TimeZone, boolean)} to resolve the other
* format.
*
- * @see Configuration#customDateFormats
+ * @see Configuration#setCustomDateFormats(Map)
*
* @since 2.3.24
*/
diff --git a/src/main/java/freemarker/core/Configurable.java
b/src/main/java/freemarker/core/Configurable.java
index 59402304..9952f9ab 100644
--- a/src/main/java/freemarker/core/Configurable.java
+++ b/src/main/java/freemarker/core/Configurable.java
@@ -1307,10 +1307,10 @@ public class Configurable {
* them with {@code _}, like {@code "short_medium"}. ({@code
"medium"} means
* {@code "medium_medium"} for date-time values.)
* The value you set here is possibly automatically adjusted for
specific temporal types, in two scenarios:
- * Secanrio 1. is when formatting {@link LocalDateTime} or {@link
LocalTime} would fail because the format
- * contains a time zone field (for most locales "long" anb "full"
are like that). To handle this, FreeMarker
+ * Scenario 1 is when formatting {@link LocalDateTime}, or {@link
LocalTime} would fail because the format
+ * contains a time zone field (for most locales "long" and "full"
are like that). To handle this, FreeMarker
* will decrease the verbosity if the time part (like "full" is
replaced with "long", "long" is replaced with
- * "medium", etc.), until successful formatting will be possible.
Scenarion 2 is when formatting
+ * "medium", etc.), until successful formatting will be possible.
Scenario 2 is when formatting
* {@link OffsetTime} values, and the current time zone has DST, in
which case FreeMarker will increase the
* verbosity until the offset is displayed (see at {@link
#setTimeFormat} why).
*
@@ -1323,15 +1323,15 @@ public class Configurable {
*
* </ul>
*
- * <p>Defaults to {@code ""}, which is equivalent to {@code
"medium_medium"}.
+ * <p>Defaults to {@code ""}, which is equivalent to {@code "medium"}.
*
* <p>If temporal support is enabled (see {@link
Configuration#setIncompatibleImprovements(Version)} at 2.3.33, and
* {@link DefaultObjectWrapperBuilder#setTemporalSupport(boolean)}) this
is also used for these {@link Temporal}
* classes: {@link Instant}, {@link LocalDateTime}, {@link
OffsetDateTime}, {@link ZonedDateTime}.
* For non-{@code Local} {@link Temporal}-s FreeMarker will detect if the
format doesn't show the offset or zone (as
* is typically the case for the {@code "medium"} format), and then before
formatting it will convert the value to
- * the time zone specified in the {@link #setTimeZone(TimeZone) timeZone}
setting of FreeMarker, or when parsing
- * a string it will assume that it uses that time zone.
+ * the time zone specified in the {@link #setTimeZone(TimeZone) timeZone}
setting of FreeMarker. Also, when parsing
+ * a string that contains no offset or zone, it will assume that it uses
that time zone.
*/
public void setDateTimeFormat(String dateTimeFormat) {
NullArgumentException.check("dateTimeFormat", dateTimeFormat);
@@ -1362,9 +1362,8 @@ public class Configurable {
* <p>Defaults to {@code "iso"}, which will simply show the year like
{@code "2021"} (without the quotation marks).
*
* @param yearFormat
- * See the similar parameter of {@link #setDateTimeFormat(String)},
- * {@code iso}/{@code xs} only the year is shown.
- * Java (as of version 8) doesn't support "styles" (like "short",
"medium", etc.) for this.
+ * See the similar parameter of {@link #setDateTimeFormat(String)},
except for {@code iso}/{@code xs} only the
+ * year is shown, and "styles" (like "short", "medium", etc.) aren't
supported.
*
* @since 2.3.33
*/
@@ -1396,9 +1395,9 @@ public class Configurable {
* <p>Defaults to {@code "iso"}, which will show the value like {@code
"2021-12"} (without the quotation marks).
*
* @param yearMonthFormat
- * See the similar parameter of {@link #setDateTimeFormat(String)};
- * {@code iso}/{@code xs} will look like {@code 2021-12}.
- * Java (as of version 8) doesn't support "styles" (like "short",
"medium", etc.) for this.
+ * See the similar parameter of {@link #setDateTimeFormat(String)},
+ * except {@code iso}/{@code xs} will look like {@code 2021-12}, and
"styles" (like "short", "medium", etc.)
+ * aren't supported.
*
* @since 2.3.33
*/
diff --git a/src/main/java/freemarker/core/Environment.java
b/src/main/java/freemarker/core/Environment.java
index 81450357..4fef2c70 100644
--- a/src/main/java/freemarker/core/Environment.java
+++ b/src/main/java/freemarker/core/Environment.java
@@ -2686,7 +2686,7 @@ public final class Environment extends Configurable {
/**
* Returns the current format for the given temporal class.
*
- * @since 2.3.31
+ * @since 2.3.33
*/
public TemplateTemporalFormat getTemplateTemporalFormat(Class<? extends
Temporal> temporalClass)
throws TemplateValueFormatException {
@@ -3173,7 +3173,7 @@ public final class Environment extends Configurable {
* should only by used with
* {@link DateUtil#dateToISO8601String(Date, boolean, boolean, boolean,
int, TimeZone,
* DateToISO8601CalendarFactory)} and
- * {@link DateUtil#dateToXSString(Date, boolean, boolean, boolean, int,
TimeZone, DateToISO8601CalendarFactory)} .
+ * {@link DateUtil#dateToXSString(Date, boolean, boolean, boolean, int,
TimeZone, DateToISO8601CalendarFactory)}.
*/
DateToISO8601CalendarFactory getISOBuiltInCalendarFactory() {
if (isoBuiltInCalendarFactory == null) {
diff --git a/src/main/java/freemarker/core/EvalUtil.java
b/src/main/java/freemarker/core/EvalUtil.java
index 08b0382f..3a313650 100644
--- a/src/main/java/freemarker/core/EvalUtil.java
+++ b/src/main/java/freemarker/core/EvalUtil.java
@@ -96,7 +96,7 @@ class EvalUtil {
static Temporal modelToTemporal(TemplateTemporalModel model, Expression
expr)
throws TemplateModelException {
Temporal value = model.getAsTemporal();
- if (value == null) throw newModelHasStoredNullException(Date.class,
model, expr);
+ if (value == null) throw
newModelHasStoredNullException(Temporal.class, model, expr);
return value;
}
diff --git
a/src/main/java/freemarker/core/ISOLikeTemplateTemporalTemporalFormat.java
b/src/main/java/freemarker/core/ISOLikeTemplateTemporalTemporalFormat.java
index 6f1e1d27..036995c7 100644
--- a/src/main/java/freemarker/core/ISOLikeTemplateTemporalTemporalFormat.java
+++ b/src/main/java/freemarker/core/ISOLikeTemplateTemporalTemporalFormat.java
@@ -42,8 +42,6 @@ import freemarker.template.TemplateTemporalModel;
/**
* See {@link ISOTemplateTemporalFormatFactory}, and {@link
XSTemplateTemporalFormatFactory}.
- *
- * @since 2.3.32
*/
final class ISOLikeTemplateTemporalTemporalFormat extends
DateTimeFormatterBasedTemplateTemporalFormat {
private final DateTimeFormatter dateTimeFormatter;
diff --git a/src/main/java/freemarker/core/_JavaTimeBugUtils.java
b/src/main/java/freemarker/core/_JavaTimeBugUtils.java
index 0a746637..9efc05a2 100644
--- a/src/main/java/freemarker/core/_JavaTimeBugUtils.java
+++ b/src/main/java/freemarker/core/_JavaTimeBugUtils.java
@@ -30,7 +30,7 @@ import freemarker.log.Logger;
/**
* Used internally only, might change without notice!
- * To work around with java.time bugs.
+ * To work around java.time bugs.
*/
public final class _JavaTimeBugUtils {
private static final Logger LOG = Logger.getLogger("freemarker.runtime");
diff --git a/src/main/java/freemarker/core/_MessageUtil.java
b/src/main/java/freemarker/core/_MessageUtil.java
index 8b8ac432..843ea27a 100644
--- a/src/main/java/freemarker/core/_MessageUtil.java
+++ b/src/main/java/freemarker/core/_MessageUtil.java
@@ -55,7 +55,7 @@ public class _MessageUtil {
};
static final String FAIL_MISSING_TIME_ZONE_PARSER_POLICY_ERROR_DETAIL
- = "The parsed string doesn't contain time zone, nor offset, and
that target type is non-local, and the "
+ = "The parsed string doesn't contain time zone, nor offset, and
the target type is non-local, and the "
+ "specified policy is to fail in that case (see " +
MissingTimeZoneParserPolicy.class.getName()
+ "." + MissingTimeZoneParserPolicy.FAIL + ").";
@@ -335,7 +335,7 @@ public class _MessageUtil {
TemplateTemporalFormat format, TemplateTemporalModel ttm,
Expression dataSrcExp,
Exception formattingException, boolean useTempModelExc) {
_ErrorDescriptionBuilder desc = new _ErrorDescriptionBuilder(
- "Failed to format temporal value of class ",
safeGetTemporalClass(ttm),
+ "Failed to format temporal value of class ",
safeGetTemporalClassName(ttm),
", value ", new _DelayedJQuote(new
_DelayedToString(safeGetTemporalValue(ttm))),
", with format ", new
_DelayedJQuote(format.getDescription()), ": ",
formattingException instanceof TemplateValueFormatException
@@ -347,10 +347,11 @@ public class _MessageUtil {
: new _MiscTemplateException(formattingException, null, desc);
}
- private static String safeGetTemporalClass(TemplateTemporalModel ttm) {
+ private static String safeGetTemporalClassName(TemplateTemporalModel ttm) {
try {
- return ttm.getAsTemporal().getClass().getName();
- } catch (TemplateModelException e) {
+ Temporal value = ttm.getAsTemporal();
+ return value != null ? value.getClass().getName() : "Null";
+ } catch (Exception e) {
return "[failed to get]";
}
}
@@ -359,7 +360,7 @@ public class _MessageUtil {
try {
Temporal value = ttm.getAsTemporal();
return value != null ? value : "null";
- } catch (TemplateModelException e) {
+ } catch (Exception e) {
return "[failed to get]";
}
}
diff --git a/src/main/java/freemarker/core/_TemporalUtils.java
b/src/main/java/freemarker/core/_TemporalUtils.java
index 7cfdbbd0..cb879fa8 100644
--- a/src/main/java/freemarker/core/_TemporalUtils.java
+++ b/src/main/java/freemarker/core/_TemporalUtils.java
@@ -412,8 +412,7 @@ public final class _TemporalUtils {
chronologyLocale = locale;
}
}
- Chronology chronology = Chronology.ofLocale(chronologyLocale);
- return chronology;
+ return Chronology.ofLocale(chronologyLocale);
}
private static String legacyCalendarTypeToJavaTimeApiCompatibleName(String
legacyType) {
@@ -438,28 +437,28 @@ public final class _TemporalUtils {
public static Class<? extends Temporal>
normalizeSupportedTemporalClass(Class<? extends Temporal> temporalClass) {
if (SUPPORTED_TEMPORAL_CLASSES_ARE_FINAL) {
return temporalClass;
+ }
+
+ if (Instant.class.isAssignableFrom(temporalClass)) {
+ return Instant.class;
+ } else if (LocalDate.class.isAssignableFrom(temporalClass)) {
+ return LocalDate.class;
+ } else if (LocalDateTime.class.isAssignableFrom(temporalClass)) {
+ return LocalDateTime.class;
+ } else if (LocalTime.class.isAssignableFrom(temporalClass)) {
+ return LocalTime.class;
+ } else if (OffsetDateTime.class.isAssignableFrom(temporalClass)) {
+ return OffsetDateTime.class;
+ } else if (OffsetTime.class.isAssignableFrom(temporalClass)) {
+ return OffsetTime.class;
+ } else if (ZonedDateTime.class.isAssignableFrom(temporalClass)) {
+ return ZonedDateTime.class;
+ } else if (YearMonth.class.isAssignableFrom(temporalClass)) {
+ return YearMonth.class;
+ } else if (Year.class.isAssignableFrom(temporalClass)) {
+ return Year.class;
} else {
- if (Instant.class.isAssignableFrom(temporalClass)) {
- return Instant.class;
- } else if (LocalDate.class.isAssignableFrom(temporalClass)) {
- return LocalDate.class;
- } else if (LocalDateTime.class.isAssignableFrom(temporalClass)) {
- return LocalDateTime.class;
- } else if (LocalTime.class.isAssignableFrom(temporalClass)) {
- return LocalTime.class;
- } else if (OffsetDateTime.class.isAssignableFrom(temporalClass)) {
- return OffsetDateTime.class;
- } else if (OffsetTime.class.isAssignableFrom(temporalClass)) {
- return OffsetTime.class;
- } else if (ZonedDateTime.class.isAssignableFrom(temporalClass)) {
- return ZonedDateTime.class;
- } else if (YearMonth.class.isAssignableFrom(temporalClass)) {
- return YearMonth.class;
- } else if (Year.class.isAssignableFrom(temporalClass)) {
- return Year.class;
- } else {
- throw new IllegalArgumentException("Unsupported temporal
class: " + temporalClass.getName());
- }
+ throw new IllegalArgumentException("Unsupported temporal class: "
+ temporalClass.getName());
}
}
@@ -470,18 +469,15 @@ public final class _TemporalUtils {
*/
public static boolean isLocalTemporalClass(Class<? extends Temporal>
temporalClass) {
temporalClass = normalizeSupportedTemporalClass(temporalClass);
- if (temporalClass == Instant.class
- || temporalClass == OffsetDateTime.class
- || temporalClass == ZonedDateTime.class
- || temporalClass == OffsetTime.class) {
- return false;
- }
- return true;
+ return temporalClass != Instant.class
+ && temporalClass != OffsetDateTime.class
+ && temporalClass != ZonedDateTime.class
+ && temporalClass != OffsetTime.class;
}
/**
* Returns the local variation of a non-local class, or {@code null} if no
local pair is known, or the class is not
- * recognized .
+ * recognized.
*
* @throws IllegalArgumentException If the temporal class is not currently
supported by FreeMarker.
*/