Moved value formatter related classes from o.a.f.core to core.valueformatter
Project: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/commit/ef968757 Tree: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/tree/ef968757 Diff: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/diff/ef968757 Branch: refs/heads/3 Commit: ef96875779aff9f68617c1c7e833131bb13de8da Parents: 6774e61 Author: ddekany <[email protected]> Authored: Fri Feb 24 18:53:53 2017 +0100 Committer: ddekany <[email protected]> Committed: Fri Feb 24 23:00:17 2017 +0100 ---------------------------------------------------------------------- .../freemarker/core/ASTDirAssignment.java | 2 +- .../apache/freemarker/core/ASTDirInclude.java | 2 +- .../apache/freemarker/core/ASTDirSwitch.java | 4 +- .../freemarker/core/ASTDollarInterpolation.java | 2 +- .../freemarker/core/ASTExpAddOrConcat.java | 16 +- .../apache/freemarker/core/ASTExpBuiltIn.java | 4 +- .../freemarker/core/ASTExpComparison.java | 14 +- .../freemarker/core/ASTExpDynamicKeyName.java | 2 +- .../freemarker/core/ASTExpStringLiteral.java | 4 +- .../apache/freemarker/core/ASTExpression.java | 14 +- ...AliasTargetTemplateValueFormatException.java | 36 -- .../core/AliasTemplateDateFormatFactory.java | 92 ---- .../core/AliasTemplateNumberFormatFactory.java | 91 ---- .../freemarker/core/ArithmeticExpression.java | 2 +- .../BackwardCompatibleTemplateNumberFormat.java | 31 -- .../apache/freemarker/core/BuiltInForDate.java | 2 +- .../core/BuiltInForLegacyEscaping.java | 2 +- .../freemarker/core/BuiltInsForDates.java | 4 +- .../core/BuiltInsForMultipleTypes.java | 26 +- .../freemarker/core/BuiltInsForNumbers.java | 2 +- .../core/BuiltInsForOutputFormatRelated.java | 2 +- .../freemarker/core/BuiltInsForSequences.java | 6 +- .../core/BuiltInsWithParseTimeParameters.java | 4 +- .../apache/freemarker/core/Configurable.java | 3 + .../org/apache/freemarker/core/Environment.java | 44 +- .../org/apache/freemarker/core/EvalUtil.java | 539 ------------------ .../core/ExtendedDecimalFormatParser.java | 525 ------------------ .../core/ISOLikeTemplateDateFormat.java | 264 --------- .../core/ISOLikeTemplateDateFormatFactory.java | 52 -- .../freemarker/core/ISOTemplateDateFormat.java | 87 --- .../core/ISOTemplateDateFormatFactory.java | 43 -- .../core/InvalidFormatParametersException.java | 37 -- .../core/InvalidFormatStringException.java | 37 -- .../freemarker/core/JavaTemplateDateFormat.java | 72 --- .../core/JavaTemplateDateFormatFactory.java | 173 ------ .../core/JavaTemplateNumberFormat.java | 66 --- .../core/JavaTemplateNumberFormatFactory.java | 120 ---- .../org/apache/freemarker/core/MessageUtil.java | 32 +- .../core/ParsingNotSupportedException.java | 37 -- .../freemarker/core/TemplateConfiguration.java | 2 + .../freemarker/core/TemplateDateFormat.java | 109 ---- .../core/TemplateDateFormatFactory.java | 91 ---- .../freemarker/core/TemplateFormatUtil.java | 76 --- .../freemarker/core/TemplateNumberFormat.java | 91 ---- .../core/TemplateNumberFormatFactory.java | 62 --- .../freemarker/core/TemplateValueFormat.java | 33 -- .../core/TemplateValueFormatException.java | 37 -- .../core/TemplateValueFormatFactory.java | 28 - .../core/UndefinedCustomFormatException.java | 34 -- .../core/UnformattableValueException.java | 41 -- ...nDateTypeFormattingUnsupportedException.java | 35 -- ...nownDateTypeParsingUnsupportedException.java | 36 -- .../core/UnparsableValueException.java | 38 -- .../freemarker/core/XSTemplateDateFormat.java | 91 ---- .../core/XSTemplateDateFormatFactory.java | 43 -- .../org/apache/freemarker/core/_EvalUtil.java | 543 +++++++++++++++++++ .../InvalidFormatParametersException.java | 37 ++ .../InvalidFormatStringException.java | 41 ++ .../ParsingNotSupportedException.java | 40 ++ .../core/valueformat/TemplateDateFormat.java | 110 ++++ .../valueformat/TemplateDateFormatFactory.java | 92 ++++ .../core/valueformat/TemplateFormatUtil.java | 77 +++ .../core/valueformat/TemplateNumberFormat.java | 93 ++++ .../TemplateNumberFormatFactory.java | 66 +++ .../core/valueformat/TemplateValueFormat.java | 33 ++ .../TemplateValueFormatException.java | 37 ++ .../valueformat/TemplateValueFormatFactory.java | 28 + .../UndefinedCustomFormatException.java | 34 ++ .../UnformattableValueException.java | 41 ++ ...nDateTypeFormattingUnsupportedException.java | 36 ++ ...nownDateTypeParsingUnsupportedException.java | 37 ++ .../valueformat/UnparsableValueException.java | 41 ++ ...AliasTargetTemplateValueFormatException.java | 38 ++ .../impl/AliasTemplateDateFormatFactory.java | 97 ++++ .../impl/AliasTemplateNumberFormatFactory.java | 96 ++++ .../impl/ExtendedDecimalFormatParser.java | 530 ++++++++++++++++++ .../impl/ISOLikeTemplateDateFormat.java | 270 +++++++++ .../impl/ISOLikeTemplateDateFormatFactory.java | 54 ++ .../valueformat/impl/ISOTemplateDateFormat.java | 90 +++ .../impl/ISOTemplateDateFormatFactory.java | 56 ++ .../impl/JavaTemplateDateFormat.java | 75 +++ .../impl/JavaTemplateDateFormatFactory.java | 187 +++++++ .../impl/JavaTemplateNumberFormat.java | 64 +++ .../impl/JavaTemplateNumberFormatFactory.java | 133 +++++ .../valueformat/impl/XSTemplateDateFormat.java | 94 ++++ .../impl/XSTemplateDateFormatFactory.java | 51 ++ src/manual/en_US/FM3-CHANGE-LOG.txt | 1 + .../freemarker/core/ConfigurationTest.java | 2 + .../apache/freemarker/core/DateFormatTest.java | 4 + .../core/ExtendedDecimalFormatTest.java | 341 ------------ .../freemarker/core/NumberFormatTest.java | 321 ----------- .../core/TemplateConfigurationTest.java | 2 + .../AppMetaTemplateDateFormatFactory.java | 14 +- .../BaseNTemplateNumberFormatFactory.java | 12 +- ...EpochMillisDivTemplateDateFormatFactory.java | 14 +- .../EpochMillisTemplateDateFormatFactory.java | 12 +- .../HTMLISOTemplateDateFormatFactory.java | 16 +- .../userpkg/HexTemplateNumberFormatFactory.java | 10 +- ...AndTZSensitiveTemplateDateFormatFactory.java | 14 +- ...aleSensitiveTemplateNumberFormatFactory.java | 10 +- .../PrintfGTemplateNumberFormatFactory.java | 10 +- .../core/valueformat/NumberFormatTest.java | 325 +++++++++++ .../impl/ExtendedDecimalFormatTest.java | 343 ++++++++++++ .../manualtest/CustomFormatsExample.java | 8 +- .../UnitAwareTemplateNumberFormatFactory.java | 6 +- 105 files changed, 4052 insertions(+), 3976 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/ef968757/src/main/java/org/apache/freemarker/core/ASTDirAssignment.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/freemarker/core/ASTDirAssignment.java b/src/main/java/org/apache/freemarker/core/ASTDirAssignment.java index 734e6eb..f34f0fb 100644 --- a/src/main/java/org/apache/freemarker/core/ASTDirAssignment.java +++ b/src/main/java/org/apache/freemarker/core/ASTDirAssignment.java @@ -154,7 +154,7 @@ final class ASTDirAssignment extends _ASTElement { } else { // Numerical operation Number lhoNumber; if (lhoValue instanceof TemplateNumberModel) { - lhoNumber = EvalUtil.modelToNumber((TemplateNumberModel) lhoValue, null); + lhoNumber = _EvalUtil.modelToNumber((TemplateNumberModel) lhoValue, null); } else if (lhoValue == null) { throw InvalidReferenceException.getInstance(variableName, getOperatorTypeAsString(), env); } else { http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/ef968757/src/main/java/org/apache/freemarker/core/ASTDirInclude.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/freemarker/core/ASTDirInclude.java b/src/main/java/org/apache/freemarker/core/ASTDirInclude.java index 4fec5c1..4f6053d 100644 --- a/src/main/java/org/apache/freemarker/core/ASTDirInclude.java +++ b/src/main/java/org/apache/freemarker/core/ASTDirInclude.java @@ -140,7 +140,7 @@ final class ASTDirInclude extends _ASTElement { TemplateModel tm = parseExp.eval(env); if (tm instanceof TemplateScalarModel) { // Legacy - parse = getYesNo(parseExp, EvalUtil.modelToString((TemplateScalarModel) tm, parseExp, env)); + parse = getYesNo(parseExp, _EvalUtil.modelToString((TemplateScalarModel) tm, parseExp, env)); } else { parse = parseExp.modelToBoolean(tm, env); } http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/ef968757/src/main/java/org/apache/freemarker/core/ASTDirSwitch.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/freemarker/core/ASTDirSwitch.java b/src/main/java/org/apache/freemarker/core/ASTDirSwitch.java index 6d1218e..4fe32c2 100644 --- a/src/main/java/org/apache/freemarker/core/ASTDirSwitch.java +++ b/src/main/java/org/apache/freemarker/core/ASTDirSwitch.java @@ -59,9 +59,9 @@ final class ASTDirSwitch extends _ASTElement { processCase = true; } else if (cas.condition != null) { // Otherwise, if this case isn't the default, test it. - processCase = EvalUtil.compare( + processCase = _EvalUtil.compare( searched, - EvalUtil.CMP_OP_EQUALS, "case==", cas.condition, cas.condition, env); + _EvalUtil.CMP_OP_EQUALS, "case==", cas.condition, cas.condition, env); } if (processCase) { env.visit(cas); http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/ef968757/src/main/java/org/apache/freemarker/core/ASTDollarInterpolation.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/freemarker/core/ASTDollarInterpolation.java b/src/main/java/org/apache/freemarker/core/ASTDollarInterpolation.java index d80c7c0..882b680 100644 --- a/src/main/java/org/apache/freemarker/core/ASTDollarInterpolation.java +++ b/src/main/java/org/apache/freemarker/core/ASTDollarInterpolation.java @@ -95,7 +95,7 @@ final class ASTDollarInterpolation extends ASTInterpolation { @Override protected Object calculateInterpolatedStringOrMarkup(Environment env) throws TemplateException { - return EvalUtil.coerceModelToStringOrMarkup(escapedExpression.eval(env), escapedExpression, null, env); + return _EvalUtil.coerceModelToStringOrMarkup(escapedExpression.eval(env), escapedExpression, null, env); } @Override http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/ef968757/src/main/java/org/apache/freemarker/core/ASTExpAddOrConcat.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/freemarker/core/ASTExpAddOrConcat.java b/src/main/java/org/apache/freemarker/core/ASTExpAddOrConcat.java index 088e2fa..d37fa14 100644 --- a/src/main/java/org/apache/freemarker/core/ASTExpAddOrConcat.java +++ b/src/main/java/org/apache/freemarker/core/ASTExpAddOrConcat.java @@ -68,8 +68,8 @@ final class ASTExpAddOrConcat extends ASTExpression { ASTExpression rightExp, TemplateModel rightModel) throws TemplateException { if (leftModel instanceof TemplateNumberModel && rightModel instanceof TemplateNumberModel) { - Number first = EvalUtil.modelToNumber((TemplateNumberModel) leftModel, leftExp); - Number second = EvalUtil.modelToNumber((TemplateNumberModel) rightModel, rightExp); + Number first = _EvalUtil.modelToNumber((TemplateNumberModel) leftModel, leftExp); + Number second = _EvalUtil.modelToNumber((TemplateNumberModel) rightModel, rightExp); return _evalOnNumbers(env, parent, first, second); } else if (leftModel instanceof TemplateSequenceModel && rightModel instanceof TemplateSequenceModel) { return new ConcatenatedSequence((TemplateSequenceModel) leftModel, (TemplateSequenceModel) rightModel); @@ -80,7 +80,7 @@ final class ASTExpAddOrConcat extends ASTExpression { // We try string addition first. If hash addition is possible, then instead of throwing exception // we return null and do hash addition instead. (We can't simply give hash addition a priority, like // with sequence addition above, as FTL strings are often also FTL hashes.) - Object leftOMOrStr = EvalUtil.coerceModelToStringOrMarkup( + Object leftOMOrStr = _EvalUtil.coerceModelToStringOrMarkup( leftModel, leftExp, /* returnNullOnNonCoercableType = */ hashConcatPossible, null, env); if (leftOMOrStr == null) { @@ -88,7 +88,7 @@ final class ASTExpAddOrConcat extends ASTExpression { } // Same trick with null return as above. - Object rightOMOrStr = EvalUtil.coerceModelToStringOrMarkup( + Object rightOMOrStr = _EvalUtil.coerceModelToStringOrMarkup( rightModel, rightExp, /* returnNullOnNonCoercableType = */ hashConcatPossible, null, env); if (rightOMOrStr == null) { @@ -100,18 +100,18 @@ final class ASTExpAddOrConcat extends ASTExpression { return new SimpleScalar(((String) leftOMOrStr).concat((String) rightOMOrStr)); } else { // rightOMOrStr instanceof TemplateMarkupOutputModel TemplateMarkupOutputModel<?> rightMO = (TemplateMarkupOutputModel<?>) rightOMOrStr; - return EvalUtil.concatMarkupOutputs(parent, + return _EvalUtil.concatMarkupOutputs(parent, rightMO.getOutputFormat().fromPlainTextByEscaping((String) leftOMOrStr), rightMO); } } else { // leftOMOrStr instanceof TemplateMarkupOutputModel TemplateMarkupOutputModel<?> leftMO = (TemplateMarkupOutputModel<?>) leftOMOrStr; if (rightOMOrStr instanceof String) { // markup output - return EvalUtil.concatMarkupOutputs(parent, + return _EvalUtil.concatMarkupOutputs(parent, leftMO, leftMO.getOutputFormat().fromPlainTextByEscaping((String) rightOMOrStr)); } else { // rightOMOrStr instanceof TemplateMarkupOutputModel - return EvalUtil.concatMarkupOutputs(parent, + return _EvalUtil.concatMarkupOutputs(parent, leftMO, (TemplateMarkupOutputModel<?>) rightOMOrStr); } @@ -148,7 +148,7 @@ final class ASTExpAddOrConcat extends ASTExpression { static TemplateModel _evalOnNumbers(Environment env, ASTNode parent, Number first, Number second) throws TemplateException { - ArithmeticEngine ae = EvalUtil.getArithmeticEngine(env, parent); + ArithmeticEngine ae = _EvalUtil.getArithmeticEngine(env, parent); return new SimpleNumber(ae.add(first, second)); } http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/ef968757/src/main/java/org/apache/freemarker/core/ASTExpBuiltIn.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/freemarker/core/ASTExpBuiltIn.java b/src/main/java/org/apache/freemarker/core/ASTExpBuiltIn.java index b67e28f..c42a7b6 100644 --- a/src/main/java/org/apache/freemarker/core/ASTExpBuiltIn.java +++ b/src/main/java/org/apache/freemarker/core/ASTExpBuiltIn.java @@ -422,7 +422,7 @@ abstract class ASTExpBuiltIn extends ASTExpression implements Cloneable { if (!(arg instanceof TemplateScalarModel)) { throw MessageUtil.newMethodArgMustBeStringException("?" + key, argIdx, arg); } else { - return EvalUtil.modelToString((TemplateScalarModel) arg, null, null); + return _EvalUtil.modelToString((TemplateScalarModel) arg, null, null); } } @@ -435,7 +435,7 @@ abstract class ASTExpBuiltIn extends ASTExpression implements Cloneable { if (!(arg instanceof TemplateNumberModel)) { throw MessageUtil.newMethodArgMustBeNumberException("?" + key, argIdx, arg); } else { - return EvalUtil.modelToNumber((TemplateNumberModel) arg, null); + return _EvalUtil.modelToNumber((TemplateNumberModel) arg, null); } } http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/ef968757/src/main/java/org/apache/freemarker/core/ASTExpComparison.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/freemarker/core/ASTExpComparison.java b/src/main/java/org/apache/freemarker/core/ASTExpComparison.java index 793e323..3ae5b87 100644 --- a/src/main/java/org/apache/freemarker/core/ASTExpComparison.java +++ b/src/main/java/org/apache/freemarker/core/ASTExpComparison.java @@ -37,17 +37,17 @@ final class ASTExpComparison extends ASTExpBoolean { opString = opString.intern(); this.opString = opString; if (opString == "==" || opString == "=") { - operation = EvalUtil.CMP_OP_EQUALS; + operation = _EvalUtil.CMP_OP_EQUALS; } else if (opString == "!=") { - operation = EvalUtil.CMP_OP_NOT_EQUALS; + operation = _EvalUtil.CMP_OP_NOT_EQUALS; } else if (opString == "gt" || opString == "\\gt" || opString == ">" || opString == ">") { - operation = EvalUtil.CMP_OP_GREATER_THAN; + operation = _EvalUtil.CMP_OP_GREATER_THAN; } else if (opString == "gte" || opString == "\\gte" || opString == ">=" || opString == ">=") { - operation = EvalUtil.CMP_OP_GREATER_THAN_EQUALS; + operation = _EvalUtil.CMP_OP_GREATER_THAN_EQUALS; } else if (opString == "lt" || opString == "\\lt" || opString == "<" || opString == "<") { - operation = EvalUtil.CMP_OP_LESS_THAN; + operation = _EvalUtil.CMP_OP_LESS_THAN; } else if (opString == "lte" || opString == "\\lte" || opString == "<=" || opString == "<=") { - operation = EvalUtil.CMP_OP_LESS_THAN_EQUALS; + operation = _EvalUtil.CMP_OP_LESS_THAN_EQUALS; } else { throw new BugException("Unknown comparison operator " + opString); } @@ -59,7 +59,7 @@ final class ASTExpComparison extends ASTExpBoolean { */ @Override boolean evalToBoolean(Environment env) throws TemplateException { - return EvalUtil.compare(left, operation, opString, right, this, env); + return _EvalUtil.compare(left, operation, opString, right, this, env); } @Override http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/ef968757/src/main/java/org/apache/freemarker/core/ASTExpDynamicKeyName.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/freemarker/core/ASTExpDynamicKeyName.java b/src/main/java/org/apache/freemarker/core/ASTExpDynamicKeyName.java index 96eec38..dbff718 100644 --- a/src/main/java/org/apache/freemarker/core/ASTExpDynamicKeyName.java +++ b/src/main/java/org/apache/freemarker/core/ASTExpDynamicKeyName.java @@ -56,7 +56,7 @@ final class ASTExpDynamicKeyName extends ASTExpression { return dealWithNumericalKey(targetModel, index, env); } if (keyModel instanceof TemplateScalarModel) { - String key = EvalUtil.modelToString((TemplateScalarModel) keyModel, keyExpression, env); + String key = _EvalUtil.modelToString((TemplateScalarModel) keyModel, keyExpression, env); return dealWithStringKey(targetModel, key, env); } if (keyModel instanceof RangeModel) { http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/ef968757/src/main/java/org/apache/freemarker/core/ASTExpStringLiteral.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/freemarker/core/ASTExpStringLiteral.java b/src/main/java/org/apache/freemarker/core/ASTExpStringLiteral.java index 4871afb..811ff32 100644 --- a/src/main/java/org/apache/freemarker/core/ASTExpStringLiteral.java +++ b/src/main/java/org/apache/freemarker/core/ASTExpStringLiteral.java @@ -104,7 +104,7 @@ final class ASTExpStringLiteral extends ASTExpression implements TemplateScalarM TemplateMarkupOutputModel<?> partMO = calcedPart instanceof String ? markupResult.getOutputFormat().fromPlainTextByEscaping((String) calcedPart) : (TemplateMarkupOutputModel<?>) calcedPart; - markupResult = EvalUtil.concatMarkupOutputs(this, markupResult, partMO); + markupResult = _EvalUtil.concatMarkupOutputs(this, markupResult, partMO); } else { // We are using `plainTextOutput` (or nothing yet) if (calcedPart instanceof String) { String partStr = (String) calcedPart; @@ -118,7 +118,7 @@ final class ASTExpStringLiteral extends ASTExpression implements TemplateScalarM if (plainTextResult != null) { TemplateMarkupOutputModel<?> leftHandMO = moPart.getOutputFormat() .fromPlainTextByEscaping(plainTextResult.toString()); - markupResult = EvalUtil.concatMarkupOutputs(this, leftHandMO, moPart); + markupResult = _EvalUtil.concatMarkupOutputs(this, leftHandMO, moPart); plainTextResult = null; } else { markupResult = moPart; http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/ef968757/src/main/java/org/apache/freemarker/core/ASTExpression.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/freemarker/core/ASTExpression.java b/src/main/java/org/apache/freemarker/core/ASTExpression.java index 629d71c..6635e35 100644 --- a/src/main/java/org/apache/freemarker/core/ASTExpression.java +++ b/src/main/java/org/apache/freemarker/core/ASTExpression.java @@ -72,36 +72,36 @@ abstract class ASTExpression extends ASTNode { } String evalAndCoerceToPlainText(Environment env) throws TemplateException { - return EvalUtil.coerceModelToPlainText(eval(env), this, null, env); + return _EvalUtil.coerceModelToPlainText(eval(env), this, null, env); } /** * @param seqTip Tip to display if the value type is not coercable, but it's sequence or collection. */ String evalAndCoerceToPlainText(Environment env, String seqTip) throws TemplateException { - return EvalUtil.coerceModelToPlainText(eval(env), this, seqTip, env); + return _EvalUtil.coerceModelToPlainText(eval(env), this, seqTip, env); } Object evalAndCoerceToStringOrMarkup(Environment env) throws TemplateException { - return EvalUtil.coerceModelToStringOrMarkup(eval(env), this, null, env); + return _EvalUtil.coerceModelToStringOrMarkup(eval(env), this, null, env); } /** * @param seqTip Tip to display if the value type is not coercable, but it's sequence or collection. */ Object evalAndCoerceToStringOrMarkup(Environment env, String seqTip) throws TemplateException { - return EvalUtil.coerceModelToStringOrMarkup(eval(env), this, seqTip, env); + return _EvalUtil.coerceModelToStringOrMarkup(eval(env), this, seqTip, env); } String evalAndCoerceToStringOrUnsupportedMarkup(Environment env) throws TemplateException { - return EvalUtil.coerceModelToStringOrUnsupportedMarkup(eval(env), this, null, env); + return _EvalUtil.coerceModelToStringOrUnsupportedMarkup(eval(env), this, null, env); } /** * @param seqTip Tip to display if the value type is not coercable, but it's sequence or collection. */ String evalAndCoerceToStringOrUnsupportedMarkup(Environment env, String seqTip) throws TemplateException { - return EvalUtil.coerceModelToStringOrUnsupportedMarkup(eval(env), this, seqTip, env); + return _EvalUtil.coerceModelToStringOrUnsupportedMarkup(eval(env), this, seqTip, env); } Number evalToNumber(Environment env) throws TemplateException { @@ -111,7 +111,7 @@ abstract class ASTExpression extends ASTNode { Number modelToNumber(TemplateModel model, Environment env) throws TemplateException { if (model instanceof TemplateNumberModel) { - return EvalUtil.modelToNumber((TemplateNumberModel) model, this); + return _EvalUtil.modelToNumber((TemplateNumberModel) model, this); } else { throw new NonNumericalException(this, model, env); } http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/ef968757/src/main/java/org/apache/freemarker/core/AliasTargetTemplateValueFormatException.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/freemarker/core/AliasTargetTemplateValueFormatException.java b/src/main/java/org/apache/freemarker/core/AliasTargetTemplateValueFormatException.java deleted file mode 100644 index 705346a..0000000 --- a/src/main/java/org/apache/freemarker/core/AliasTargetTemplateValueFormatException.java +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.freemarker.core; - -/** - * Can't create a template format that the template format refers to (typically thrown by alias template formats). - * - * @since 2.3.24 - */ -class AliasTargetTemplateValueFormatException extends TemplateValueFormatException { - - public AliasTargetTemplateValueFormatException(String message, Throwable cause) { - super(message, cause); - } - - public AliasTargetTemplateValueFormatException(String message) { - super(message); - } - -} http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/ef968757/src/main/java/org/apache/freemarker/core/AliasTemplateDateFormatFactory.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/freemarker/core/AliasTemplateDateFormatFactory.java b/src/main/java/org/apache/freemarker/core/AliasTemplateDateFormatFactory.java deleted file mode 100644 index 5e6333c..0000000 --- a/src/main/java/org/apache/freemarker/core/AliasTemplateDateFormatFactory.java +++ /dev/null @@ -1,92 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.freemarker.core; - -import java.util.Locale; -import java.util.Map; -import java.util.TimeZone; - -import org.apache.freemarker.core.util._LocaleUtil; -import org.apache.freemarker.core.util._StringUtil; - -/** - * Creates an alias to another format, so that the format can be referred to with a simple name in the template, rather - * than as a concrete pattern or other kind of format string. - * - * @since 2.3.24 - */ -public final class AliasTemplateDateFormatFactory extends TemplateDateFormatFactory { - - private final String defaultTargetFormatString; - private final Map<Locale, String> localizedTargetFormatStrings; - - /** - * @param targetFormatString - * The format string this format will be an alias to. - */ - public AliasTemplateDateFormatFactory(String targetFormatString) { - defaultTargetFormatString = targetFormatString; - localizedTargetFormatStrings = null; - } - - /** - * @param defaultTargetFormatString - * The format string this format will be an alias to if there's no locale-specific format string for the - * requested locale in {@code localizedTargetFormatStrings} - * @param localizedTargetFormatStrings - * Maps {@link Locale}-s to format strings. If the desired locale doesn't occur in the map, a less - * specific locale is tried, repeatedly until only the language part remains. For example, if locale is - * {@code new Locale("en", "US", "Linux")}, then these keys will be attempted untol a match is found, in - * this order: {@code new Locale("en", "US", "Linux")}, {@code new Locale("en", "US")}, - * {@code new Locale("en")}. If there's still no matching key, the value of the - * {@code targetFormatString} will be used. - */ - public AliasTemplateDateFormatFactory( - String defaultTargetFormatString, Map<Locale, String> localizedTargetFormatStrings) { - this.defaultTargetFormatString = defaultTargetFormatString; - this.localizedTargetFormatStrings = localizedTargetFormatStrings; - } - - @Override - public TemplateDateFormat get(String params, int dateType, Locale locale, TimeZone timeZone, boolean zonelessInput, - Environment env) throws TemplateValueFormatException { - TemplateFormatUtil.checkHasNoParameters(params); - try { - String targetFormatString; - if (localizedTargetFormatStrings != null) { - Locale lookupLocale = locale; - targetFormatString = localizedTargetFormatStrings.get(lookupLocale); - while (targetFormatString == null - && (lookupLocale = _LocaleUtil.getLessSpecificLocale(lookupLocale)) != null) { - targetFormatString = localizedTargetFormatStrings.get(lookupLocale); - } - } else { - targetFormatString = null; - } - if (targetFormatString == null) { - targetFormatString = defaultTargetFormatString; - } - return env.getTemplateDateFormat(targetFormatString, dateType, locale, timeZone, zonelessInput); - } catch (TemplateValueFormatException e) { - throw new AliasTargetTemplateValueFormatException("Failed to create format based on target format string, " - + _StringUtil.jQuote(params) + ". Reason given: " + e.getMessage(), e); - } - } - -} http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/ef968757/src/main/java/org/apache/freemarker/core/AliasTemplateNumberFormatFactory.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/freemarker/core/AliasTemplateNumberFormatFactory.java b/src/main/java/org/apache/freemarker/core/AliasTemplateNumberFormatFactory.java deleted file mode 100644 index 6b00223..0000000 --- a/src/main/java/org/apache/freemarker/core/AliasTemplateNumberFormatFactory.java +++ /dev/null @@ -1,91 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.freemarker.core; - -import java.util.Locale; -import java.util.Map; - -import org.apache.freemarker.core.util._LocaleUtil; -import org.apache.freemarker.core.util._StringUtil; - -/** - * Creates an alias to another format, so that the format can be referred to with a simple name in the template, rather - * than as a concrete pattern or other kind of format string. - * - * @since 2.3.24 - */ -public final class AliasTemplateNumberFormatFactory extends TemplateNumberFormatFactory { - - private final String defaultTargetFormatString; - private final Map<Locale, String> localizedTargetFormatStrings; - - /** - * @param targetFormatString - * The format string this format will be an alias to - */ - public AliasTemplateNumberFormatFactory(String targetFormatString) { - defaultTargetFormatString = targetFormatString; - localizedTargetFormatStrings = null; - } - - /** - * @param defaultTargetFormatString - * The format string this format will be an alias to if there's no locale-specific format string for the - * requested locale in {@code localizedTargetFormatStrings} - * @param localizedTargetFormatStrings - * Maps {@link Locale}-s to format strings. If the desired locale doesn't occur in the map, a less - * specific locale is tried, repeatedly until only the language part remains. For example, if locale is - * {@code new Locale("en", "US", "Linux")}, then these keys will be attempted untol a match is found, in - * this order: {@code new Locale("en", "US", "Linux")}, {@code new Locale("en", "US")}, - * {@code new Locale("en")}. If there's still no matching key, the value of the - * {@code targetFormatString} will be used. - */ - public AliasTemplateNumberFormatFactory( - String defaultTargetFormatString, Map<Locale, String> localizedTargetFormatStrings) { - this.defaultTargetFormatString = defaultTargetFormatString; - this.localizedTargetFormatStrings = localizedTargetFormatStrings; - } - - @Override - public TemplateNumberFormat get(String params, Locale locale, Environment env) - throws TemplateValueFormatException { - TemplateFormatUtil.checkHasNoParameters(params); - try { - String targetFormatString; - if (localizedTargetFormatStrings != null) { - Locale lookupLocale = locale; - targetFormatString = localizedTargetFormatStrings.get(lookupLocale); - while (targetFormatString == null - && (lookupLocale = _LocaleUtil.getLessSpecificLocale(lookupLocale)) != null) { - targetFormatString = localizedTargetFormatStrings.get(lookupLocale); - } - } else { - targetFormatString = null; - } - if (targetFormatString == null) { - targetFormatString = defaultTargetFormatString; - } - return env.getTemplateNumberFormat(targetFormatString, locale); - } catch (TemplateValueFormatException e) { - throw new AliasTargetTemplateValueFormatException("Failed to create format based on target format string, " - + _StringUtil.jQuote(params) + ". Reason given: " + e.getMessage(), e); - } - } - -} http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/ef968757/src/main/java/org/apache/freemarker/core/ArithmeticExpression.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/freemarker/core/ArithmeticExpression.java b/src/main/java/org/apache/freemarker/core/ArithmeticExpression.java index 5b7bfe4..d075e45 100644 --- a/src/main/java/org/apache/freemarker/core/ArithmeticExpression.java +++ b/src/main/java/org/apache/freemarker/core/ArithmeticExpression.java @@ -52,7 +52,7 @@ final class ArithmeticExpression extends ASTExpression { static TemplateModel _eval(Environment env, ASTNode parent, Number lhoNumber, int operator, Number rhoNumber) throws TemplateException { - ArithmeticEngine ae = EvalUtil.getArithmeticEngine(env, parent); + ArithmeticEngine ae = _EvalUtil.getArithmeticEngine(env, parent); switch (operator) { case TYPE_SUBSTRACTION : return new SimpleNumber(ae.subtract(lhoNumber, rhoNumber)); http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/ef968757/src/main/java/org/apache/freemarker/core/BackwardCompatibleTemplateNumberFormat.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/freemarker/core/BackwardCompatibleTemplateNumberFormat.java b/src/main/java/org/apache/freemarker/core/BackwardCompatibleTemplateNumberFormat.java deleted file mode 100644 index de5983b..0000000 --- a/src/main/java/org/apache/freemarker/core/BackwardCompatibleTemplateNumberFormat.java +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.freemarker.core; - -/** - * Only exists for emulating pre-2.3.24-IcI {@code ?string} behavior. - * - * @since 2.3.24 - */ -// [FM3] Still needed? -abstract class BackwardCompatibleTemplateNumberFormat extends TemplateNumberFormat { - - abstract String format(Number number) throws UnformattableValueException; - -} http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/ef968757/src/main/java/org/apache/freemarker/core/BuiltInForDate.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/freemarker/core/BuiltInForDate.java b/src/main/java/org/apache/freemarker/core/BuiltInForDate.java index 47bf910..98da920 100644 --- a/src/main/java/org/apache/freemarker/core/BuiltInForDate.java +++ b/src/main/java/org/apache/freemarker/core/BuiltInForDate.java @@ -31,7 +31,7 @@ abstract class BuiltInForDate extends ASTExpBuiltIn { TemplateModel model = target.eval(env); if (model instanceof TemplateDateModel) { TemplateDateModel tdm = (TemplateDateModel) model; - return calculateResult(EvalUtil.modelToDate(tdm, target), tdm.getDateType(), env); + return calculateResult(_EvalUtil.modelToDate(tdm, target), tdm.getDateType(), env); } else { throw newNonDateException(env, model, target); } http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/ef968757/src/main/java/org/apache/freemarker/core/BuiltInForLegacyEscaping.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/freemarker/core/BuiltInForLegacyEscaping.java b/src/main/java/org/apache/freemarker/core/BuiltInForLegacyEscaping.java index 47622a7..5a5ad65 100644 --- a/src/main/java/org/apache/freemarker/core/BuiltInForLegacyEscaping.java +++ b/src/main/java/org/apache/freemarker/core/BuiltInForLegacyEscaping.java @@ -31,7 +31,7 @@ abstract class BuiltInForLegacyEscaping extends BuiltInBannedWhenAutoEscaping { TemplateModel _eval(Environment env) throws TemplateException { TemplateModel tm = target.eval(env); - Object moOrStr = EvalUtil.coerceModelToStringOrMarkup(tm, target, null, env); + Object moOrStr = _EvalUtil.coerceModelToStringOrMarkup(tm, target, null, env); if (moOrStr instanceof String) { return calculateResult((String) moOrStr, env); } else { http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/ef968757/src/main/java/org/apache/freemarker/core/BuiltInsForDates.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/freemarker/core/BuiltInsForDates.java b/src/main/java/org/apache/freemarker/core/BuiltInsForDates.java index 8c2e392..92fe3e1 100644 --- a/src/main/java/org/apache/freemarker/core/BuiltInsForDates.java +++ b/src/main/java/org/apache/freemarker/core/BuiltInsForDates.java @@ -57,7 +57,7 @@ class BuiltInsForDates { if (tdmDateType != TemplateDateModel.UNKNOWN) { return tdm; } - return new SimpleDate(EvalUtil.modelToDate(tdm, target), dateType); + return new SimpleDate(_EvalUtil.modelToDate(tdm, target), dateType); } else { throw BuiltInForDate.newNonDateException(env, model, target); } @@ -100,7 +100,7 @@ class BuiltInsForDates { instanceof TimeZone) { tzArg = (TimeZone) adaptedObj; } else if (tzArgTM instanceof TemplateScalarModel) { - String tzName = EvalUtil.modelToString((TemplateScalarModel) tzArgTM, null, null); + String tzName = _EvalUtil.modelToString((TemplateScalarModel) tzArgTM, null, null); try { tzArg = _DateUtil.getTimeZone(tzName); } catch (UnrecognizedTimeZoneException e) { http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/ef968757/src/main/java/org/apache/freemarker/core/BuiltInsForMultipleTypes.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/freemarker/core/BuiltInsForMultipleTypes.java b/src/main/java/org/apache/freemarker/core/BuiltInsForMultipleTypes.java index 1db96e5..b7bd7f6 100644 --- a/src/main/java/org/apache/freemarker/core/BuiltInsForMultipleTypes.java +++ b/src/main/java/org/apache/freemarker/core/BuiltInsForMultipleTypes.java @@ -45,6 +45,9 @@ import org.apache.freemarker.core.model.impl.SimpleScalar; import org.apache.freemarker.core.model.impl.beans.OverloadedMethodsModel; import org.apache.freemarker.core.model.impl.beans.SimpleMethodModel; import org.apache.freemarker.core.util.BugException; +import org.apache.freemarker.core.valueformat.TemplateDateFormat; +import org.apache.freemarker.core.valueformat.TemplateNumberFormat; +import org.apache.freemarker.core.valueformat.TemplateValueFormatException; /** * A holder for builtins that didn't fit into any other category. @@ -71,7 +74,7 @@ class BuiltInsForMultipleTypes { @Override protected TemplateModel formatNumber(Environment env, TemplateModel model) throws TemplateModelException { - Number num = EvalUtil.modelToNumber((TemplateNumberModel) model, target); + Number num = _EvalUtil.modelToNumber((TemplateNumberModel) model, target); if (num instanceof Integer || num instanceof Long) { // Accelerate these fairly common cases return new SimpleScalar(num.toString()); @@ -534,7 +537,7 @@ class BuiltInsForMultipleTypes { defaultFormat = dateType == TemplateDateModel.UNKNOWN ? null // Lazy unknown type error in getAsString() : env.getTemplateDateFormat( - dateType, EvalUtil.modelToDate(dateModel, target).getClass(), target, true); + dateType, _EvalUtil.modelToDate(dateModel, target).getClass(), target, true); } @Override @@ -571,7 +574,7 @@ class BuiltInsForMultipleTypes { } } try { - cachedValue = EvalUtil.assertFormatResultNotNull(defaultFormat.formatToPlainText(dateModel)); + cachedValue = _EvalUtil.assertFormatResultNotNull(defaultFormat.formatToPlainText(dateModel)); } catch (TemplateValueFormatException e) { try { throw MessageUtil.newCantFormatDateException(defaultFormat, target, e, true); @@ -606,7 +609,7 @@ class BuiltInsForMultipleTypes { // As we format lazily, we need a snapshot of the format inputs: this.numberModel = numberModel; - number = EvalUtil.modelToNumber(numberModel, target); // for BackwardCompatibleTemplateNumberFormat-s + number = _EvalUtil.modelToNumber(numberModel, target); // for BackwardCompatibleTemplateNumberFormat-s try { defaultFormat = env.getTemplateNumberFormat(stringBI.this, true); } catch (TemplateException e) { @@ -633,11 +636,7 @@ class BuiltInsForMultipleTypes { String result; try { - if (format instanceof BackwardCompatibleTemplateNumberFormat) { - result = env.formatNumberToPlainText(number, (BackwardCompatibleTemplateNumberFormat) format, target); - } else { - result = env.formatNumberToPlainText(numberModel, format, target, true); - } + result = env.formatNumberToPlainText(numberModel, format, target, true); } catch (TemplateException e) { // `e` should always be a TemplateModelException here, but to be sure: throw _CoreAPI.ensureIsTemplateModelException("Failed to format number", e); @@ -650,12 +649,7 @@ class BuiltInsForMultipleTypes { public String getAsString() throws TemplateModelException { if (cachedValue == null) { try { - if (defaultFormat instanceof BackwardCompatibleTemplateNumberFormat) { - cachedValue = env.formatNumberToPlainText( - number, (BackwardCompatibleTemplateNumberFormat) defaultFormat, target); - } else { - cachedValue = env.formatNumberToPlainText(numberModel, defaultFormat, target, true); - } + cachedValue = env.formatNumberToPlainText(numberModel, defaultFormat, target, true); } catch (TemplateException e) { // `e` should always be a TemplateModelException here, but to be sure: throw _CoreAPI.ensureIsTemplateModelException("Failed to format number", e); @@ -675,7 +669,7 @@ class BuiltInsForMultipleTypes { TemplateModel model = target.eval(env); if (model instanceof TemplateNumberModel) { TemplateNumberModel numberModel = (TemplateNumberModel) model; - Number num = EvalUtil.modelToNumber(numberModel, target); + Number num = _EvalUtil.modelToNumber(numberModel, target); return new NumberFormatter(numberModel, env); } else if (model instanceof TemplateDateModel) { TemplateDateModel dm = (TemplateDateModel) model; http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/ef968757/src/main/java/org/apache/freemarker/core/BuiltInsForNumbers.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/freemarker/core/BuiltInsForNumbers.java b/src/main/java/org/apache/freemarker/core/BuiltInsForNumbers.java index 2275d86..6b66ca4 100644 --- a/src/main/java/org/apache/freemarker/core/BuiltInsForNumbers.java +++ b/src/main/java/org/apache/freemarker/core/BuiltInsForNumbers.java @@ -222,7 +222,7 @@ class BuiltInsForNumbers { TemplateModel model = target.eval(env); if (!(model instanceof TemplateNumberModel) && model instanceof TemplateDateModel) { - Date date = EvalUtil.modelToDate((TemplateDateModel) model, target); + Date date = _EvalUtil.modelToDate((TemplateDateModel) model, target); return new SimpleNumber(date.getTime()); } else { Number num = target.modelToNumber(model, env); http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/ef968757/src/main/java/org/apache/freemarker/core/BuiltInsForOutputFormatRelated.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/freemarker/core/BuiltInsForOutputFormatRelated.java b/src/main/java/org/apache/freemarker/core/BuiltInsForOutputFormatRelated.java index adff22f..6f67969 100644 --- a/src/main/java/org/apache/freemarker/core/BuiltInsForOutputFormatRelated.java +++ b/src/main/java/org/apache/freemarker/core/BuiltInsForOutputFormatRelated.java @@ -49,7 +49,7 @@ class BuiltInsForOutputFormatRelated { @Override protected TemplateModel calculateResult(Environment env) throws TemplateException { TemplateModel lhoTM = target.eval(env); - Object lhoMOOrStr = EvalUtil.coerceModelToStringOrMarkup(lhoTM, target, null, env); + Object lhoMOOrStr = _EvalUtil.coerceModelToStringOrMarkup(lhoTM, target, null, env); MarkupOutputFormat contextOF = outputFormat; if (lhoMOOrStr instanceof String) { // TemplateMarkupOutputModel return calculateResult((String) lhoMOOrStr, contextOF, env); http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/ef968757/src/main/java/org/apache/freemarker/core/BuiltInsForSequences.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/freemarker/core/BuiltInsForSequences.java b/src/main/java/org/apache/freemarker/core/BuiltInsForSequences.java index 54479e7..793eb1e 100644 --- a/src/main/java/org/apache/freemarker/core/BuiltInsForSequences.java +++ b/src/main/java/org/apache/freemarker/core/BuiltInsForSequences.java @@ -215,7 +215,7 @@ class BuiltInsForSequences { hadItem = true; } try { - sb.append(EvalUtil.coerceModelToStringOrUnsupportedMarkup(item, null, null, env)); + sb.append(_EvalUtil.coerceModelToStringOrUnsupportedMarkup(item, null, null, env)); } catch (TemplateException e) { throw new _TemplateModelException(e, "\"?", key, "\" failed at index ", Integer.valueOf(idx), " with this error:\n\n", @@ -856,9 +856,9 @@ class BuiltInsForSequences { Environment env) throws TemplateModelException { try { - return EvalUtil.compare( + return _EvalUtil.compare( seqItem, null, - EvalUtil.CMP_OP_EQUALS, null, + _EvalUtil.CMP_OP_EQUALS, null, searchedItem, null, null, false, true, true, true, // The last one is true to emulate an old bug for BC http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/ef968757/src/main/java/org/apache/freemarker/core/BuiltInsWithParseTimeParameters.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/freemarker/core/BuiltInsWithParseTimeParameters.java b/src/main/java/org/apache/freemarker/core/BuiltInsWithParseTimeParameters.java index 1fc03a9..5d9ddad 100644 --- a/src/main/java/org/apache/freemarker/core/BuiltInsWithParseTimeParameters.java +++ b/src/main/java/org/apache/freemarker/core/BuiltInsWithParseTimeParameters.java @@ -132,9 +132,9 @@ final class BuiltInsWithParseTimeParameters { for (int i = 0; i + 1 < paramCnt; i += 2) { ASTExpression caseExp = (ASTExpression) parameters.get(i); TemplateModel caseValue = caseExp.evalToNonMissing(env); - if (EvalUtil.compare( + if (_EvalUtil.compare( targetValue, target, - EvalUtil.CMP_OP_EQUALS, "==", + _EvalUtil.CMP_OP_EQUALS, "==", caseValue, caseExp, this, true, false, false, false, http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/ef968757/src/main/java/org/apache/freemarker/core/Configurable.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/freemarker/core/Configurable.java b/src/main/java/org/apache/freemarker/core/Configurable.java index b4fc5bf..52fa6d2 100644 --- a/src/main/java/org/apache/freemarker/core/Configurable.java +++ b/src/main/java/org/apache/freemarker/core/Configurable.java @@ -69,6 +69,9 @@ import org.apache.freemarker.core.util.GenericParseException; import org.apache.freemarker.core.util._NullArgumentException; import org.apache.freemarker.core.util._SortedArraySet; import org.apache.freemarker.core.util._StringUtil; +import org.apache.freemarker.core.valueformat.TemplateDateFormatFactory; +import org.apache.freemarker.core.valueformat.TemplateNumberFormat; +import org.apache.freemarker.core.valueformat.TemplateNumberFormatFactory; /** * This is a common superclass of {@link org.apache.freemarker.core.Configuration}, http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/ef968757/src/main/java/org/apache/freemarker/core/Environment.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/freemarker/core/Environment.java b/src/main/java/org/apache/freemarker/core/Environment.java index ef1602e..300b765 100644 --- a/src/main/java/org/apache/freemarker/core/Environment.java +++ b/src/main/java/org/apache/freemarker/core/Environment.java @@ -69,6 +69,11 @@ import org.apache.freemarker.core.util._DateUtil; import org.apache.freemarker.core.util._DateUtil.DateToISO8601CalendarFactory; import org.apache.freemarker.core.util._NullWriter; import org.apache.freemarker.core.util._StringUtil; +import org.apache.freemarker.core.valueformat.*; +import org.apache.freemarker.core.valueformat.impl.ISOTemplateDateFormatFactory; +import org.apache.freemarker.core.valueformat.impl.JavaTemplateDateFormatFactory; +import org.apache.freemarker.core.valueformat.impl.JavaTemplateNumberFormatFactory; +import org.apache.freemarker.core.valueformat.impl.XSTemplateDateFormatFactory; import org.slf4j.Logger; import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; @@ -958,7 +963,7 @@ public final class Environment extends Configurable { */ public boolean applyEqualsOperator(TemplateModel leftValue, TemplateModel rightValue) throws TemplateException { - return EvalUtil.compare(leftValue, EvalUtil.CMP_OP_EQUALS, rightValue, this); + return _EvalUtil.compare(leftValue, _EvalUtil.CMP_OP_EQUALS, rightValue, this); } /** @@ -970,7 +975,7 @@ public final class Environment extends Configurable { */ public boolean applyEqualsOperatorLenient(TemplateModel leftValue, TemplateModel rightValue) throws TemplateException { - return EvalUtil.compareLenient(leftValue, EvalUtil.CMP_OP_EQUALS, rightValue, this); + return _EvalUtil.compareLenient(leftValue, _EvalUtil.CMP_OP_EQUALS, rightValue, this); } /** @@ -980,7 +985,7 @@ public final class Environment extends Configurable { */ public boolean applyLessThanOperator(TemplateModel leftValue, TemplateModel rightValue) throws TemplateException { - return EvalUtil.compare(leftValue, EvalUtil.CMP_OP_LESS_THAN, rightValue, this); + return _EvalUtil.compare(leftValue, _EvalUtil.CMP_OP_LESS_THAN, rightValue, this); } /** @@ -990,7 +995,7 @@ public final class Environment extends Configurable { */ public boolean applyLessThanOrEqualsOperator(TemplateModel leftValue, TemplateModel rightValue) throws TemplateException { - return EvalUtil.compare(leftValue, EvalUtil.CMP_OP_LESS_THAN_EQUALS, rightValue, this); + return _EvalUtil.compare(leftValue, _EvalUtil.CMP_OP_LESS_THAN_EQUALS, rightValue, this); } /** @@ -1000,7 +1005,7 @@ public final class Environment extends Configurable { */ public boolean applyGreaterThanOperator(TemplateModel leftValue, TemplateModel rightValue) throws TemplateException { - return EvalUtil.compare(leftValue, EvalUtil.CMP_OP_GREATER_THAN, rightValue, this); + return _EvalUtil.compare(leftValue, _EvalUtil.CMP_OP_GREATER_THAN, rightValue, this); } /** @@ -1010,7 +1015,7 @@ public final class Environment extends Configurable { */ public boolean applyWithGreaterThanOrEqualsOperator(TemplateModel leftValue, TemplateModel rightValue) throws TemplateException { - return EvalUtil.compare(leftValue, EvalUtil.CMP_OP_GREATER_THAN_EQUALS, rightValue, this); + return _EvalUtil.compare(leftValue, _EvalUtil.CMP_OP_GREATER_THAN_EQUALS, rightValue, this); } public void setOut(Writer out) { @@ -1049,30 +1054,13 @@ public final class Environment extends Configurable { boolean useTempModelExc) throws TemplateException { try { - return EvalUtil.assertFormatResultNotNull(format.formatToPlainText(number)); + return _EvalUtil.assertFormatResultNotNull(format.formatToPlainText(number)); } catch (TemplateValueFormatException e) { throw MessageUtil.newCantFormatNumberException(format, exp, e, useTempModelExc); } } /** - * Format number with the number format specified as the parameter, with the current locale. - * - * @param exp - * The blamed expression if an error occurs; it's only needed for better error messages - */ - String formatNumberToPlainText(Number number, BackwardCompatibleTemplateNumberFormat format, ASTExpression exp) - throws TemplateModelException, _MiscTemplateException { - try { - return format.format(number); - } catch (UnformattableValueException e) { - throw new _MiscTemplateException(exp, e, this, - "Failed to format number with ", new _DelayedJQuote(format.getDescription()), ": ", - e.getMessage()); - } - } - - /** * Returns the current number format ({@link #getNumberFormat()}) as {@link TemplateNumberFormat}. * * <p> @@ -1323,7 +1311,7 @@ public final class Environment extends Configurable { TemplateDateFormat format = getTemplateDateFormat(tdm, tdmSourceExpr, useTempModelExc); try { - return EvalUtil.assertFormatResultNotNull(format.formatToPlainText(tdm)); + return _EvalUtil.assertFormatResultNotNull(format.formatToPlainText(tdm)); } catch (TemplateValueFormatException e) { throw MessageUtil.newCantFormatDateException(format, tdmSourceExpr, e, useTempModelExc); } @@ -1338,7 +1326,7 @@ public final class Environment extends Configurable { String formatDateToPlainText(TemplateDateModel tdm, String formatString, ASTExpression blamedDateSourceExp, ASTExpression blamedFormatterExp, boolean useTempModelExc) throws TemplateException { - Date date = EvalUtil.modelToDate(tdm, blamedDateSourceExp); + Date date = _EvalUtil.modelToDate(tdm, blamedDateSourceExp); TemplateDateFormat format = getTemplateDateFormat( formatString, tdm.getDateType(), date.getClass(), @@ -1346,7 +1334,7 @@ public final class Environment extends Configurable { useTempModelExc); try { - return EvalUtil.assertFormatResultNotNull(format.formatToPlainText(tdm)); + return _EvalUtil.assertFormatResultNotNull(format.formatToPlainText(tdm)); } catch (TemplateValueFormatException e) { throw MessageUtil.newCantFormatDateException(format, blamedDateSourceExp, e, useTempModelExc); } @@ -1518,7 +1506,7 @@ public final class Environment extends Configurable { TemplateDateFormat getTemplateDateFormat(TemplateDateModel tdm, ASTExpression tdmSourceExpr, boolean useTempModelExc) throws TemplateException { - Date date = EvalUtil.modelToDate(tdm, tdmSourceExpr); + Date date = _EvalUtil.modelToDate(tdm, tdmSourceExpr); return getTemplateDateFormat( tdm.getDateType(), date.getClass(), tdmSourceExpr,
