You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by da...@apache.org on 2020/01/17 01:11:44 UTC

[isis] 08/36: ISIS-2264: isis.value.format["double"] -> isis.value-types.java-lang.double.format

This is an automated email from the ASF dual-hosted git repository.

danhaywood pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git

commit dd20e1e2d1df91c046728936f19ec4a1b15418f7
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Thu Jan 16 23:16:54 2020 +0100

    ISIS-2264: isis.value.format["double"] -> isis.value-types.java-lang.double.format
---
 .../toc/modules/mignotes/pages/migrating-to-2.0.0.adoc         |  4 ++++
 .../java/org/apache/isis/core/config/IsisConfiguration.java    | 10 +++++++++-
 .../value/doubles/DoubleValueSemanticsProviderAbstract.java    |  8 +++++++-
 3 files changed, 20 insertions(+), 2 deletions(-)

diff --git a/antora/components/toc/modules/mignotes/pages/migrating-to-2.0.0.adoc b/antora/components/toc/modules/mignotes/pages/migrating-to-2.0.0.adoc
index 8680ff9..d140d66 100644
--- a/antora/components/toc/modules/mignotes/pages/migrating-to-2.0.0.adoc
+++ b/antora/components/toc/modules/mignotes/pages/migrating-to-2.0.0.adoc
@@ -632,6 +632,10 @@ isis.value-types. +
 |isis.value-types. +
 {nbsp}{nbsp}java-lang.byte.format
 
+|isis.value.format["double"]
+|isis.value-types. +
+{nbsp}{nbsp}java-lang.double.format
+
 |
 |
 
diff --git a/core/config/src/main/java/org/apache/isis/core/config/IsisConfiguration.java b/core/config/src/main/java/org/apache/isis/core/config/IsisConfiguration.java
index 66ab13c..0de4d0e 100644
--- a/core/config/src/main/java/org/apache/isis/core/config/IsisConfiguration.java
+++ b/core/config/src/main/java/org/apache/isis/core/config/IsisConfiguration.java
@@ -1183,12 +1183,20 @@ public class IsisConfiguration {
         private final JavaLang javaLang = new JavaLang();
         @Data
         public static class JavaLang {
+
             // capitalized to avoid clash with keyword
             private final Byte Byte = new Byte();
             @Data
             public static class Byte {
                 private String format;
             }
+
+            // capitalized to avoid clash with keyword
+            private final Double Double = new Double();
+            @Data
+            public static class Double {
+                private String format;
+            }
         }
 
         private final JavaMath javaMath = new JavaMath();
@@ -1259,7 +1267,7 @@ public class IsisConfiguration {
             TIMESTAMP, 
             TIME,
             
-            DOUBLE, FLOAT, LONG, SHORT,
+            FLOAT, LONG, SHORT,
             PERCENTAGE
         }
         
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/doubles/DoubleValueSemanticsProviderAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/doubles/DoubleValueSemanticsProviderAbstract.java
index 0c8305f..be18da4 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/doubles/DoubleValueSemanticsProviderAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/doubles/DoubleValueSemanticsProviderAbstract.java
@@ -22,9 +22,11 @@ package org.apache.isis.core.metamodel.facets.value.doubles;
 import java.text.DecimalFormat;
 import java.text.NumberFormat;
 import java.text.ParseException;
+import java.util.Locale;
 import java.util.Map;
 
 import org.apache.isis.core.config.IsisConfiguration.Value.FormatIdentifier;
+import org.apache.isis.core.metamodel.commons.LocaleUtil;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.object.parseable.TextEntryParseException;
@@ -48,7 +50,11 @@ implements DoubleFloatingPointValueFacet {
 
     public DoubleValueSemanticsProviderAbstract(final FacetHolder holder, final Class<Double> adaptedClass) {
         super(type(), holder, adaptedClass, TYPICAL_LENGTH, MAX_LENGTH, Immutability.IMMUTABLE, EqualByContent.HONOURED, DEFAULT_VALUE);
-        format = determineNumberFormat(FormatIdentifier.DOUBLE);
+        final String formatRequired = getConfiguration().getValueTypes().getJavaLang().getDouble().getFormat();
+
+        format = formatRequired != null
+                ? new DecimalFormat(formatRequired)
+                : NumberFormat.getNumberInstance(getConfiguration().getCore().getRuntime().getLocale().map(LocaleUtil::findLocale).orElse(Locale.getDefault()));
     }
 
     // //////////////////////////////////////////////////////////////////