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/09 18:25:49 UTC

[isis] 10/11: ISIS-2261: also uses Optional for a couple of other config props

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 c4b506f68dd9ea20a7dc309adc80256a27562d64
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Thu Jan 9 17:44:20 2020 +0000

    ISIS-2261: also uses Optional<X> for a couple of other config props
---
 .../org/apache/isis/config/IsisConfiguration.java  |  9 +++---
 .../ValueSemanticsProviderAndFacetAbstract.java    | 16 ++++------
 .../session/init/IsisLocaleInitializer.java        | 35 +++++++++++++---------
 .../value/money/MoneyValueSemanticsProvider.java   |  6 +++-
 4 files changed, 36 insertions(+), 30 deletions(-)

diff --git a/core/config/src/main/java/org/apache/isis/config/IsisConfiguration.java b/core/config/src/main/java/org/apache/isis/config/IsisConfiguration.java
index 906a1e8..565592d 100644
--- a/core/config/src/main/java/org/apache/isis/config/IsisConfiguration.java
+++ b/core/config/src/main/java/org/apache/isis/config/IsisConfiguration.java
@@ -88,10 +88,9 @@ public class IsisConfiguration {
     }
     
     /**
-     * Optional: set to override {@link Locale#getDefault()}
-     * <p>{@code null} is allowed
+     * Set to override {@link Locale#getDefault()}
      */
-    private String locale = null; //TODO no meta data yet ... https://docs.spring.io/spring-boot/docs/current/reference/html/appendix-configuration-metadata.html#configuration-metadata-property-attributes
+    private Optional<String> locale = Optional.empty();
 
     private final Objects objects = new Objects();
     @Data
@@ -1217,10 +1216,10 @@ public class IsisConfiguration {
         @Data
         public static class Money {
             
-            private String currency = null;
+            private Optional<String> currency = Optional.empty();
 
             public String getCurrencyOrElse(String fallback) { 
-                return _Strings.isNotEmpty(getCurrency()) ? getCurrency() : fallback;
+                return getCurrency().filter(_Strings::isNotEmpty).orElse(fallback);
             }
         }
         
diff --git a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/value/vsp/ValueSemanticsProviderAndFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/value/vsp/ValueSemanticsProviderAndFacetAbstract.java
index 5ad6233..be6f4f1 100644
--- a/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/value/vsp/ValueSemanticsProviderAndFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/metamodel/facets/object/value/vsp/ValueSemanticsProviderAndFacetAbstract.java
@@ -283,19 +283,15 @@ implements ValueSemanticsProvider<T>, EncoderDecoder<T>, Parser<T>, DefaultsProv
 
     protected NumberFormat determineNumberFormat(FormatIdentifier formatIdentifier) {
         final String formatRequired = getConfiguration()
-                .getValue().getFormatOrElse(formatIdentifier, null);  
-                
-        if (formatRequired != null) {
-            return new DecimalFormat(formatRequired);
-        } else {
-            return NumberFormat.getNumberInstance(findLocale());
-        }
+                .getValue().getFormatOrElse(formatIdentifier, null);
+
+        return formatRequired != null
+                ? new DecimalFormat(formatRequired)
+                : NumberFormat.getNumberInstance(findLocale());
     }
 
     private Locale findLocale() {
-        final String localeStr = getConfiguration().getLocale();
-        final Locale findLocale = LocaleUtil.findLocale(localeStr);
-        return findLocale != null ? findLocale : Locale.getDefault();
+        return getConfiguration().getLocale().map(LocaleUtil::findLocale).orElse(Locale.getDefault());
     }
 
     // //////////////////////////////////////////////////////////
diff --git a/core/runtime/src/main/java/org/apache/isis/runtime/session/init/IsisLocaleInitializer.java b/core/runtime/src/main/java/org/apache/isis/runtime/session/init/IsisLocaleInitializer.java
index 7380f55..6697fcd 100644
--- a/core/runtime/src/main/java/org/apache/isis/runtime/session/init/IsisLocaleInitializer.java
+++ b/core/runtime/src/main/java/org/apache/isis/runtime/session/init/IsisLocaleInitializer.java
@@ -20,6 +20,7 @@
 package org.apache.isis.runtime.session.init;
 
 import java.util.Locale;
+import java.util.Optional;
 
 import org.apache.isis.config.IsisConfiguration;
 
@@ -29,21 +30,27 @@ import lombok.extern.log4j.Log4j2;
 public class IsisLocaleInitializer {
 
     public void initLocale(final IsisConfiguration configuration) {
-        final String localeSpec = configuration.getLocale();
-        if (localeSpec != null) {
-            final int pos = localeSpec.indexOf('_');
-            Locale locale;
-            if (pos == -1) {
-                locale = new Locale(localeSpec, "");
-            } else {
-                final String language = localeSpec.substring(0, pos);
-                final String country = localeSpec.substring(pos + 1);
-                locale = new Locale(language, country);
-            }
-            Locale.setDefault(locale);
-            log.info("locale set to {}", locale);
-        }
+        final Optional<String> localeSpecOpt = configuration.getLocale();
+        localeSpecOpt.map(IsisLocaleInitializer::toLocale).ifPresent(IsisLocaleInitializer::setLocaleDefault);
         log.debug("locale is {}", Locale.getDefault());
     }
 
+    private static Locale toLocale(String localeSpec) {
+        final int pos = localeSpec.indexOf('_');
+        Locale locale;
+        if (pos == -1) {
+            locale = new Locale(localeSpec, "");
+        } else {
+            final String language = localeSpec.substring(0, pos);
+            final String country = localeSpec.substring(pos + 1);
+            locale = new Locale(language, country);
+        }
+        return locale;
+    }
+
+    private static void setLocaleDefault(Locale locale) {
+        Locale.setDefault(locale);
+        log.info("locale set to {}", locale);
+    }
+
 }
diff --git a/legacy/extensions/core/metamodel/src/main/java/org/apache/isis/legacy/metamodel/facets/value/money/MoneyValueSemanticsProvider.java b/legacy/extensions/core/metamodel/src/main/java/org/apache/isis/legacy/metamodel/facets/value/money/MoneyValueSemanticsProvider.java
index 64a7551..bc263d6 100644
--- a/legacy/extensions/core/metamodel/src/main/java/org/apache/isis/legacy/metamodel/facets/value/money/MoneyValueSemanticsProvider.java
+++ b/legacy/extensions/core/metamodel/src/main/java/org/apache/isis/legacy/metamodel/facets/value/money/MoneyValueSemanticsProvider.java
@@ -27,6 +27,7 @@ import java.util.Map;
 
 import org.apache.isis.applib.adapters.EncoderDecoder;
 import org.apache.isis.applib.adapters.Parser;
+import org.apache.isis.commons.internal.base._Strings;
 import org.apache.isis.legacy.applib.value.Money;
 import org.apache.isis.metamodel.facetapi.Facet;
 import org.apache.isis.metamodel.facetapi.FacetHolder;
@@ -82,7 +83,10 @@ implements MoneyValueFacet {
     public MoneyValueSemanticsProvider(final FacetHolder holder) {
         super(type(), holder, Money.class, TYPICAL_LENGTH, -1, Immutability.IMMUTABLE, EqualByContent.HONOURED, DEFAULT_VALUE);
 
-        defaultCurrencyCode = getConfiguration().getValue().getMoney().getCurrencyOrElse(LOCAL_CURRENCY_CODE);        
+        defaultCurrencyCode =
+                getConfiguration().getValue().getMoney().getCurrency()
+                    .filter(_Strings::isNotEmpty)
+                    .orElse(LOCAL_CURRENCY_CODE);
     }
 
     // //////////////////////////////////////////////////////////////////