From 034b1839f03921b731f61ab0f9fa07dab7e0c722 Mon Sep 17 00:00:00 2001 From: =?utf8?q?S=C3=A9bastien=20Lesaint?= Date: Wed, 10 Oct 2018 11:59:04 +0200 Subject: [PATCH] SONAR-11297 fix thread safety if SvgFormatter class --- .../java/org/sonar/server/badge/ws/SvgFormatter.java | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/server/sonar-server/src/main/java/org/sonar/server/badge/ws/SvgFormatter.java b/server/sonar-server/src/main/java/org/sonar/server/badge/ws/SvgFormatter.java index dfad1ab0b4e..c84a7ec3816 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/badge/ws/SvgFormatter.java +++ b/server/sonar-server/src/main/java/org/sonar/server/badge/ws/SvgFormatter.java @@ -31,12 +31,9 @@ class SvgFormatter { private static final String ZERO = "0"; - private static final NumberFormat NUMERIC_FORMATTER = DecimalFormat.getInstance(Locale.ENGLISH); private static final String NUMERIC_SUFFIX_LIST = " kmbt"; private static final String NUMERIC_REGEXP = "\\.[0-9]+"; - private static final DecimalFormat PERCENT_FORMATTER = new DecimalFormat("#.#", DecimalFormatSymbols.getInstance(Locale.ENGLISH)); - private static final String DURATION_MINUTES_FORMAT = "%smin"; private static final String DURATION_HOURS_FORMAT = "%sh"; private static final String DURATION_DAYS_FORMAT = "%sd"; @@ -52,16 +49,18 @@ class SvgFormatter { if (value == 0) { return ZERO; } - NUMERIC_FORMATTER.setMaximumFractionDigits(1); + NumberFormat numericFormatter = DecimalFormat.getInstance(Locale.ENGLISH); + numericFormatter.setMaximumFractionDigits(1); int power = (int) StrictMath.log10(value); double valueToFormat = value / (Math.pow(10, Math.floorDiv(power, 3) * 3d)); - String formattedNumber = NUMERIC_FORMATTER.format(valueToFormat); + String formattedNumber = numericFormatter.format(valueToFormat); formattedNumber = formattedNumber + NUMERIC_SUFFIX_LIST.charAt(power / 3); return formattedNumber.length() > 4 ? trim(formattedNumber.replaceAll(NUMERIC_REGEXP, "")) : trim(formattedNumber); } static String formatPercent(double value) { - return PERCENT_FORMATTER.format(value) + "%"; + DecimalFormat percentFormatter = new DecimalFormat("#.#", DecimalFormatSymbols.getInstance(Locale.ENGLISH)); + return percentFormatter.format(value) + "%"; } static String formatDuration(long durationInMinutes) { -- 2.39.5