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:42 UTC

[isis] 06/36: ISIS-2264: isis.value.format["decimal"] -> isis.value-types.java-math.big-decimal.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 2d582bc8f088c3012c66f888b7753841af4dc693
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Thu Jan 16 23:03:25 2020 +0100

    ISIS-2264: isis.value.format["decimal"] -> isis.value-types.java-math.big-decimal.format
---
 .../toc/modules/mignotes/pages/migrating-to-2.0.0.adoc        |  4 ++++
 .../java/org/apache/isis/core/config/IsisConfiguration.java   |  8 +++++++-
 .../value/bigdecimal/BigDecimalValueSemanticsProvider.java    | 11 +++++++++--
 3 files changed, 20 insertions(+), 3 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 bc079c6..efed8eb 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
@@ -624,6 +624,10 @@ standalone-collection.bulk-load
 isis.value-types. +
 {nbsp}{nbsp}primitives.integer.format
 
+|isis.value.format["decimal"]
+|isis.value-types. +
+{nbsp}{nbsp}java-math.big-decimal.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 a50eaab..8f2bfbd 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
@@ -1187,6 +1187,12 @@ public class IsisConfiguration {
             public static class BigInteger {
                 private String format;
             }
+
+            private final BigDecimal bigDecimal = new BigDecimal();
+            @Data
+            public static class BigDecimal {
+                private String format;
+            }
         }
 
         private final JavaTime javaTime = new JavaTime();
@@ -1241,7 +1247,7 @@ public class IsisConfiguration {
             TIMESTAMP, 
             TIME,
             
-            DECIMAL, BYTE, DOUBLE, FLOAT, LONG, SHORT,
+            BYTE, DOUBLE, FLOAT, LONG, SHORT,
             PERCENTAGE
         }
         
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/bigdecimal/BigDecimalValueSemanticsProvider.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/bigdecimal/BigDecimalValueSemanticsProvider.java
index 32f6a10..5ff190c 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/bigdecimal/BigDecimalValueSemanticsProvider.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/bigdecimal/BigDecimalValueSemanticsProvider.java
@@ -28,7 +28,7 @@ import java.util.Map;
 import org.apache.isis.applib.adapters.EncoderDecoder;
 import org.apache.isis.applib.adapters.Parser;
 import org.apache.isis.core.commons.exceptions.IsisException;
-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;
@@ -58,7 +58,14 @@ public class BigDecimalValueSemanticsProvider extends ValueSemanticsProviderAndF
 
     public BigDecimalValueSemanticsProvider(final FacetHolder holder) {
         super(type(), holder, BigDecimal.class, TYPICAL_LENGTH, -1, Immutability.IMMUTABLE, EqualByContent.HONOURED, DEFAULT_VALUE);
-        format = determineNumberFormat(FormatIdentifier.DECIMAL);
+        final String formatRequired = getConfiguration().getValueTypes().getJavaMath().getBigDecimal().getFormat();
+
+        if (formatRequired != null) {
+            format = new DecimalFormat(formatRequired);
+        } else {
+            final Locale inLocale = getConfiguration().getCore().getRuntime().getLocale().map(LocaleUtil::findLocale).orElse(Locale.getDefault());
+            format = NumberFormat.getNumberInstance(inLocale);
+        }
     }
 
     public void setLocale(final Locale l) {