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

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


The following commit(s) were added to refs/heads/master by this push:
     new 1fa71c7  ISIS-2340: partly fixing zoned java.time formats
1fa71c7 is described below

commit 1fa71c739160038c65f268f9c0a5235518da10c2
Author: Andi Huber <[email protected]>
AuthorDate: Sat Aug 15 14:56:26 2020 +0200

    ISIS-2340: partly fixing zoned java.time formats
---
 .../OffsetDateTimeValueSemanticsProvider.java      | 38 ++++++++---------
 .../OffsetTimeValueSemanticsProvider.java          | 48 +++++++++-------------
 .../ZonedDateTimeValueSemanticsProvider.java       | 45 +++++++++-----------
 3 files changed, 54 insertions(+), 77 deletions(-)

diff --git 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/temporal/offsetdatetime/OffsetDateTimeValueSemanticsProvider.java
 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/temporal/offsetdatetime/OffsetDateTimeValueSemanticsProvider.java
index c15170e..12c3cd1 100644
--- 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/temporal/offsetdatetime/OffsetDateTimeValueSemanticsProvider.java
+++ 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/temporal/offsetdatetime/OffsetDateTimeValueSemanticsProvider.java
@@ -21,7 +21,10 @@ package 
org.apache.isis.core.metamodel.facets.value.temporal.offsetdatetime;
 
 import java.time.OffsetDateTime;
 import java.time.format.DateTimeFormatter;
+import java.time.format.FormatStyle;
 import java.util.Locale;
+import java.util.Optional;
+import java.util.stream.Stream;
 
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.value.temporal.TemporalAdjust;
@@ -29,10 +32,9 @@ import 
org.apache.isis.core.metamodel.facets.value.temporal.TemporalValueFacet;
 import 
org.apache.isis.core.metamodel.facets.value.temporal.TemporalValueSemanticsProviderAbstract;
 
 import lombok.val;
-import lombok.extern.log4j.Log4j2;
 
 
-@Log4j2
+//@Log4j2
 public class OffsetDateTimeValueSemanticsProvider 
 extends TemporalValueSemanticsProviderAbstract<OffsetDateTime> {
 
@@ -49,9 +51,6 @@ extends 
TemporalValueSemanticsProviderAbstract<OffsetDateTime> {
         val basicDateTimeNoMillis = "yyyyMMdd'T'HHmmssZ";
         val basicDateTime = "yyyyMMdd'T'HHmmss.SSSZ";
         
-        super.addNamedFormat("long", "LL");
-        super.addNamedFormat("medium", "MM");
-        super.addNamedFormat("short", "SS");
         super.addNamedFormat("iso", basicDateTimeNoMillis);
         super.addNamedFormat("iso_encoding", basicDateTime);
         
@@ -61,24 +60,19 @@ extends 
TemporalValueSemanticsProviderAbstract<OffsetDateTime> {
 
         val configuredNameOrPattern = 
getConfiguration().getValueTypes().getJavaTime().getOffsetDateTime().getFormat();
 
-        val formatter = 
lookupNamedFormatter(configuredNameOrPattern).orElse(null);
-
-        DateTimeFormatter result = null;
-        if(formatter!=null) {
-            result = formatter;
-        } else {
-            try {
-                result = DateTimeFormatter.ofPattern(configuredNameOrPattern, 
Locale.getDefault());
-            } catch (Exception e) {
-                log.warn(e);
-            }
-            if (result == null) {
-                result = lookupNamedFormatterElseFail("medium");
-            }
-        }
-
-        setTitleFormatter(result);
+        // walk through 3 methods of generating a formatter, first one to 
return non empty wins
+        val formatter = Stream.<Optional<DateTimeFormatter>>of(
+                
lookupFormatStyle(configuredNameOrPattern).map(DateTimeFormatter::ofLocalizedDateTime),
+                lookupNamedFormatter(configuredNameOrPattern),
+                formatterFromPattern(configuredNameOrPattern)
+                )
+        .filter(Optional::isPresent)
+        .map(Optional::get)
+        .findFirst()
+        
.orElseGet(()->DateTimeFormatter.ofLocalizedDateTime(FormatStyle.MEDIUM));  // 
fallback
         
+        //TODO those FormatStyle based formatters potentially need additional 
zone information
+        setTitleFormatter(formatter);
         
     }
 
diff --git 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/temporal/offsettime/OffsetTimeValueSemanticsProvider.java
 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/temporal/offsettime/OffsetTimeValueSemanticsProvider.java
index ea273ce..81b070d 100644
--- 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/temporal/offsettime/OffsetTimeValueSemanticsProvider.java
+++ 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/temporal/offsettime/OffsetTimeValueSemanticsProvider.java
@@ -21,7 +21,9 @@ package 
org.apache.isis.core.metamodel.facets.value.temporal.offsettime;
 
 import java.time.OffsetTime;
 import java.time.format.DateTimeFormatter;
-import java.util.Locale;
+import java.time.format.FormatStyle;
+import java.util.Optional;
+import java.util.stream.Stream;
 
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.value.temporal.TemporalAdjust;
@@ -29,9 +31,8 @@ import 
org.apache.isis.core.metamodel.facets.value.temporal.TemporalValueFacet;
 import 
org.apache.isis.core.metamodel.facets.value.temporal.TemporalValueSemanticsProviderAbstract;
 
 import lombok.val;
-import lombok.extern.log4j.Log4j2;
 
-@Log4j2
+//@Log4j2
 public class OffsetTimeValueSemanticsProvider
 extends TemporalValueSemanticsProviderAbstract<OffsetTime> {
 
@@ -48,39 +49,28 @@ extends TemporalValueSemanticsProviderAbstract<OffsetTime> {
         val basicTimeNoMillis = "HHmmssZ";
         val basicTime = "HHmmss.SSSZ";
         
-        super.addNamedFormat("long", "-L");
-        super.addNamedFormat("medium", "-M");
-        super.addNamedFormat("short", "-S");
         super.addNamedFormat("iso", basicTimeNoMillis);
         super.addNamedFormat("iso_encoding", basicTime);
         super.updateParsers();
         
         setEncodingFormatter(lookupNamedFormatterElseFail("iso_encoding"));
-        final DateTimeFormatter formatter = formatterFromConfig();
-
-        setTitleFormatter(formatter);
-    }
-
-    private DateTimeFormatter formatterFromConfig() {
-
+        
         val configuredNameOrPattern = 
getConfiguration().getValueTypes().getJavaTime().getOffsetTime().getFormat();
-
-        val formatter = 
lookupNamedFormatter(configuredNameOrPattern).orElse(null);
-        if(formatter!=null) {
-            return formatter;
-        }
-
-        try {
-            return DateTimeFormatter.ofPattern(configuredNameOrPattern, 
Locale.getDefault());
-        } catch (Exception e) {
-            log.warn(e);
-        }
-
-        return lookupNamedFormatterElseFail("medium");
-
+        
+        // walk through 3 methods of generating a formatter, first one to 
return non empty wins
+        val formatter = Stream.<Optional<DateTimeFormatter>>of(
+                
lookupFormatStyle(configuredNameOrPattern).map(DateTimeFormatter::ofLocalizedTime),
+                lookupNamedFormatter(configuredNameOrPattern),
+                formatterFromPattern(configuredNameOrPattern)
+                )
+        .filter(Optional::isPresent)
+        .map(Optional::get)
+        .findFirst()
+        .orElseGet(()->DateTimeFormatter.ofLocalizedTime(FormatStyle.MEDIUM)); 
 // fallback
+        
+        //TODO those FormatStyle based formatters potentially need additional 
zone information
+        setTitleFormatter(formatter);
     }
 
 
-
-
 }
diff --git 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/temporal/zoneddatetime/ZonedDateTimeValueSemanticsProvider.java
 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/temporal/zoneddatetime/ZonedDateTimeValueSemanticsProvider.java
index 62a84c0f..73517aa 100644
--- 
a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/temporal/zoneddatetime/ZonedDateTimeValueSemanticsProvider.java
+++ 
b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/temporal/zoneddatetime/ZonedDateTimeValueSemanticsProvider.java
@@ -21,7 +21,9 @@ package 
org.apache.isis.core.metamodel.facets.value.temporal.zoneddatetime;
 
 import java.time.ZonedDateTime;
 import java.time.format.DateTimeFormatter;
-import java.util.Locale;
+import java.time.format.FormatStyle;
+import java.util.Optional;
+import java.util.stream.Stream;
 
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.value.temporal.TemporalAdjust;
@@ -29,10 +31,8 @@ import 
org.apache.isis.core.metamodel.facets.value.temporal.TemporalValueFacet;
 import 
org.apache.isis.core.metamodel.facets.value.temporal.TemporalValueSemanticsProviderAbstract;
 
 import lombok.val;
-import lombok.extern.log4j.Log4j2;
 
-
-@Log4j2
+//@Log4j2
 public class ZonedDateTimeValueSemanticsProvider
 extends TemporalValueSemanticsProviderAbstract<ZonedDateTime> {
 
@@ -49,36 +49,29 @@ extends 
TemporalValueSemanticsProviderAbstract<ZonedDateTime> {
         val basicDateTimeNoMillis = "yyyyMMdd'T'HHmmssZ";
         val basicDateTime = "yyyyMMdd'T'HHmmss.SSSZ";
         
-        super.addNamedFormat("long", "LL");
-        super.addNamedFormat("medium", "MM");
-        super.addNamedFormat("short", "SS");
         super.addNamedFormat("iso", basicDateTimeNoMillis);
         super.addNamedFormat("iso_encoding", basicDateTime);
         
         super.updateParsers();
 
         setEncodingFormatter(lookupNamedFormatterElseFail("iso_encoding"));
-        setTitleFormatter(formatterFromConfig());
         
-    }
-
-    private DateTimeFormatter formatterFromConfig() {
-
         val configuredNameOrPattern = 
getConfiguration().getValueTypes().getJavaTime().getZonedDateTime().getFormat();
-
-        val formatter = 
lookupNamedFormatter(configuredNameOrPattern).orElse(null);
-        if(formatter!=null) {
-            return formatter;
-        }
-
-        try {
-            return DateTimeFormatter.ofPattern(configuredNameOrPattern, 
Locale.getDefault());
-        } catch (Exception e) {
-            log.warn(e);
-        }
-
-        return lookupNamedFormatterElseFail("medium");
-
+        
+        // walk through 3 methods of generating a formatter, first one to 
return non empty wins
+        val formatter = Stream.<Optional<DateTimeFormatter>>of(
+                
lookupFormatStyle(configuredNameOrPattern).map(DateTimeFormatter::ofLocalizedDateTime),
+                lookupNamedFormatter(configuredNameOrPattern),
+                formatterFromPattern(configuredNameOrPattern)
+                )
+        .filter(Optional::isPresent)
+        .map(Optional::get)
+        .findFirst()
+        
.orElseGet(()->DateTimeFormatter.ofLocalizedDateTime(FormatStyle.MEDIUM));  // 
fallback
+        
+        //TODO those FormatStyle based formatters potentially need additional 
zone information
+        setTitleFormatter(formatter);
+        
     }
 
 

Reply via email to