Return-Path: X-Original-To: apmail-freemarker-notifications-archive@minotaur.apache.org Delivered-To: apmail-freemarker-notifications-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 08D2918F19 for ; Wed, 16 Sep 2015 17:33:23 +0000 (UTC) Received: (qmail 37263 invoked by uid 500); 16 Sep 2015 17:33:22 -0000 Delivered-To: apmail-freemarker-notifications-archive@freemarker.apache.org Received: (qmail 37247 invoked by uid 500); 16 Sep 2015 17:33:22 -0000 Mailing-List: contact notifications-help@freemarker.incubator.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@freemarker.incubator.apache.org Delivered-To: mailing list notifications@freemarker.incubator.apache.org Received: (qmail 37238 invoked by uid 99); 16 Sep 2015 17:33:22 -0000 Received: from Unknown (HELO spamd1-us-west.apache.org) (209.188.14.142) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 16 Sep 2015 17:33:22 +0000 Received: from localhost (localhost [127.0.0.1]) by spamd1-us-west.apache.org (ASF Mail Server at spamd1-us-west.apache.org) with ESMTP id 761D1F33B3 for ; Wed, 16 Sep 2015 17:33:22 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at spamd1-us-west.apache.org X-Spam-Flag: NO X-Spam-Score: 1.77 X-Spam-Level: * X-Spam-Status: No, score=1.77 tagged_above=-999 required=6.31 tests=[KAM_ASCII_DIVIDERS=0.8, KAM_LAZY_DOMAIN_SECURITY=1, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, T_RP_MATCHES_RCVD=-0.01] autolearn=disabled Received: from mx1-eu-west.apache.org ([10.40.0.8]) by localhost (spamd1-us-west.apache.org [10.40.0.7]) (amavisd-new, port 10024) with ESMTP id PRpp5CrrFSQy for ; Wed, 16 Sep 2015 17:33:21 +0000 (UTC) Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by mx1-eu-west.apache.org (ASF Mail Server at mx1-eu-west.apache.org) with SMTP id 06C05205B7 for ; Wed, 16 Sep 2015 17:33:20 +0000 (UTC) Received: (qmail 37216 invoked by uid 99); 16 Sep 2015 17:33:20 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 16 Sep 2015 17:33:20 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id DE636DFD86; Wed, 16 Sep 2015 17:33:19 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: ddekany@apache.org To: notifications@freemarker.incubator.apache.org Message-Id: <8457878d4f2940388a677146d23ecac7@git.apache.org> X-Mailer: ASF-Git Admin Mailer Subject: incubator-freemarker git commit: Proper template error message when DecimalFormat.format throws ArithmeticException. Date: Wed, 16 Sep 2015 17:33:19 +0000 (UTC) Repository: incubator-freemarker Updated Branches: refs/heads/2.3-gae 25f3b824b -> 89ec237f4 Proper template error message when DecimalFormat.format throws ArithmeticException. Project: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/commit/89ec237f Tree: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/tree/89ec237f Diff: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/diff/89ec237f Branch: refs/heads/2.3-gae Commit: 89ec237f42a28ba0f0b31a100b09e3c7c586fda0 Parents: 25f3b82 Author: ddekany Authored: Wed Sep 16 19:32:25 2015 +0200 Committer: ddekany Committed: Wed Sep 16 19:32:25 2015 +0200 ---------------------------------------------------------------------- .../java/freemarker/core/JavaTemplateNumberFormat.java | 7 ++++++- .../java/freemarker/core/ExtendedDecimalFormatTest.java | 11 ++++++++--- 2 files changed, 14 insertions(+), 4 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/89ec237f/src/main/java/freemarker/core/JavaTemplateNumberFormat.java ---------------------------------------------------------------------- diff --git a/src/main/java/freemarker/core/JavaTemplateNumberFormat.java b/src/main/java/freemarker/core/JavaTemplateNumberFormat.java index 3c1763c..b34414b 100644 --- a/src/main/java/freemarker/core/JavaTemplateNumberFormat.java +++ b/src/main/java/freemarker/core/JavaTemplateNumberFormat.java @@ -52,7 +52,12 @@ final class JavaTemplateNumberFormat extends BackwardCompatibleTemplateNumberFor @Override String format(Number number) throws UnformattableNumberException { - return javaNumberFormat.format(number); + try { + return javaNumberFormat.format(number); + } catch (ArithmeticException e) { + throw new UnformattableNumberException( + "This format can't format the " + number + " number. Reason: " + e.getMessage(), e); + } } public NumberFormat getJavaNumberFormat() { http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/89ec237f/src/test/java/freemarker/core/ExtendedDecimalFormatTest.java ---------------------------------------------------------------------- diff --git a/src/test/java/freemarker/core/ExtendedDecimalFormatTest.java b/src/test/java/freemarker/core/ExtendedDecimalFormatTest.java index 0c5c9f2..d53fc84 100644 --- a/src/test/java/freemarker/core/ExtendedDecimalFormatTest.java +++ b/src/test/java/freemarker/core/ExtendedDecimalFormatTest.java @@ -278,9 +278,14 @@ public class ExtendedDecimalFormatTest extends TemplateTest { + "<#setting locale='de_DE'>${1000.15}; " + "<#setting numberFormat='0.0;;rnd=d'>${1000.15}", "1_000.2; 10 00.2; 1_000,2; 1000,1"); - assertErrorContains("${1?string('#E')}", "\"#E\"", "format string", "exponential"); - assertErrorContains("<#setting numberFormat='#E'>${1}", "\"#E\"", "format string", "exponential"); - assertErrorContains("<#setting numberFormat=';;foo=bar'>${1}", "\"foo\"", "supported"); + assertErrorContains("${1?string('#E')}", + TemplateException.class, "\"#E\"", "format string", "exponential"); + assertErrorContains("<#setting numberFormat='#E'>${1}", + TemplateException.class, "\"#E\"", "format string", "exponential"); + assertErrorContains("<#setting numberFormat=';;foo=bar'>${1}", + TemplateException.class, "\"foo\"", "supported"); + assertErrorContains("<#setting numberFormat='0;;rnd=un'>${1.5}", + TemplateException.class, "can't format", "1.5", "UNNECESSARY"); } private void assertFormatted(String formatString, Object... numberAndExpectedOutput) throws ParseException {