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:12:07 UTC

[isis] 31/36: ISIS-2264: further conversions from isis.value-types.format["xxx"] to isis.value-types.aaa.bbb.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 7f349f948750fefec7daaa1b40f944d72eb7e256
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Fri Jan 17 01:54:11 2020 +0100

    ISIS-2264: further conversions from isis.value-types.format["xxx"] to isis.value-types.aaa.bbb.format
---
 .../modules/mignotes/pages/migrating-to-2.0.0.adoc | 17 +++++++
 .../apache/isis/core/config/IsisConfiguration.java | 52 +++++++++++++++++-----
 .../ValueSemanticsProviderAndFacetAbstract.java    | 18 --------
 .../bytes/ByteValueSemanticsProviderAbstract.java  |  1 -
 .../JodaLocalDateValueSemanticsProvider.java       |  4 +-
 .../JodaLocalDateTimeValueSemanticsProvider.java   |  1 -
 .../DoubleValueSemanticsProviderAbstract.java      |  1 -
 .../FloatValueSemanticsProviderAbstract.java       |  1 -
 .../integer/IntValueSemanticsProviderAbstract.java |  1 -
 .../longs/LongValueSemanticsProviderAbstract.java  |  1 -
 .../ShortValueSemanticsProviderAbstract.java       |  3 +-
 .../TemporalValueSemanticsProviderAbstract.java    | 20 ---------
 .../localdate/LocalDateValueSemanticsProvider.java | 27 ++++++++++-
 .../LocalDateTimeValueSemanticsProvider.java       |  1 -
 .../localtime/LocalTimeValueSemanticsProvider.java | 22 ++++++++-
 .../OffsetDateTimeValueSemanticsProvider.java      |  1 -
 .../OffsetTimeValueSemanticsProvider.java          | 28 +++++++++++-
 .../ZonedDateTimeValueSemanticsProvider.java       | 29 ++++++++++--
 .../JavaSqlTimeStampValueSemanticsProvider.java    | 14 +++---
 .../PercentageValueSemanticsProvider.java          |  1 -
 20 files changed, 161 insertions(+), 82 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 2edbad4..2d2ba0b 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
@@ -672,10 +672,27 @@ isis.value-types. +
 isis.value-types. +
 {nbsp}{nbsp}joda.date-time.format
 
+isis.value-types. +
+{nbsp}{nbsp}joda.local-date.format
+
 |isis.value.format["time"]
 |isis.value-types. +
 {nbsp}{nbsp}java-sql.time.format
 
+isis.value-types. +
+{nbsp}{nbsp}java-time.offset-time.format
+
+isis.value-types. +
+{nbsp}{nbsp}java-time.local-time.format
+
+isis.value-types. +
+{nbsp}{nbsp}zoned-date-time.local-time.format
+
+|isis.value.format["timestamp"]
+|isis.value-types. +
+{nbsp}{nbsp}java-sql.timestamp.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 8342ad4..c06b369 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
@@ -1251,6 +1251,31 @@ public class IsisConfiguration {
             public static class OffsetDateTime {
                 private String format = "medium";
             }
+
+            private final OffsetTime offsetTime = new OffsetTime();
+            @Data
+            public static class OffsetTime {
+                private String format = "medium";
+            }
+
+            private final LocalDate localDate = new LocalDate();
+            @Data
+            public static class LocalDate {
+                // lower case
+                private String format = "medium";
+            }
+
+            private final LocalTime localTime = new LocalTime();
+            @Data
+            public static class LocalTime {
+                private String format = "medium";
+            }
+
+            private final ZonedDateTime zonedDateTime = new ZonedDateTime();
+            @Data
+            public static class ZonedDateTime {
+                private String format = "medium";
+            }
         }
 
         private final JavaUtil javaUtil = new JavaUtil();
@@ -1282,6 +1307,13 @@ public class IsisConfiguration {
                 private String format = "short";
             }
 
+            private final Timestamp timestamp = new Timestamp();
+            @Data
+            public static class Timestamp {
+                // lower case
+                private String format = "short";
+            }
+
         }
 
         private final Joda joda = new Joda();
@@ -1293,6 +1325,14 @@ public class IsisConfiguration {
                 // lower case
                 private String format = "medium";
             }
+
+            private final LocalDate localDate = new LocalDate();
+            @Data
+            public static class LocalDate {
+                // lower case
+                private String format = "medium";
+            }
+
             private final DateTime dateTime = new DateTime();
             @Data
             public static class DateTime {
@@ -1325,18 +1365,6 @@ public class IsisConfiguration {
         private Map<String, String> format = new HashMap<>();
         
         public enum FormatIdentifier {
-            /**
-             * Key to indicate how LocalDate should be parsed/rendered.
-             * <p>
-             * eg: {@code isis.value.format.date=iso}
-             * <p>
-             * A pre-determined list of values is available, specifically 'iso_encoding', 'iso' and 'medium' (see
-             * <code>org.apache.isis.core.metamodel.facets.value.datejdk8local.Jdk8LocalDateValueSemanticsProvider.NAMED_TITLE_FORMATTERS</code>).
-             * Alternatively,  can also specify a mask, eg <tt>dd-MMM-yyyy</tt>.
-             */
-            DATE, 
-            TIMESTAMP, 
-            TIME,
         }
 
         private final Money money = new Money();
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/vsp/ValueSemanticsProviderAndFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/vsp/ValueSemanticsProviderAndFacetAbstract.java
index bd9c7a1..d590ddd 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/vsp/ValueSemanticsProviderAndFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/value/vsp/ValueSemanticsProviderAndFacetAbstract.java
@@ -19,10 +19,7 @@
 
 package org.apache.isis.core.metamodel.facets.object.value.vsp;
 
-import java.text.DecimalFormat;
 import java.text.Format;
-import java.text.NumberFormat;
-import java.util.Locale;
 import java.util.Map;
 
 import org.apache.isis.applib.adapters.DefaultsProvider;
@@ -31,8 +28,6 @@ import org.apache.isis.applib.adapters.Parser;
 import org.apache.isis.applib.adapters.ValueSemanticsProvider;
 import org.apache.isis.applib.clock.Clock;
 import org.apache.isis.core.commons.exceptions.UnknownTypeException;
-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.FacetAbstract;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
@@ -281,19 +276,6 @@ implements ValueSemanticsProvider<T>, EncoderDecoder<T>, Parser<T>, DefaultsProv
     // Helper: Locale handling
     // ///////////////////////////////////////////////////////////////////////////
 
-    protected NumberFormat determineNumberFormat(FormatIdentifier formatIdentifier) {
-        final String formatRequired = getConfiguration()
-                .getValue().getFormat().getOrDefault(formatIdentifier.name().toLowerCase(), null);
-
-        return formatRequired != null
-                ? new DecimalFormat(formatRequired)
-                : NumberFormat.getNumberInstance(findLocale());
-    }
-
-    private Locale findLocale() {
-        return getConfiguration().getCore().getRuntime().getLocale().map(LocaleUtil::findLocale).orElse(Locale.getDefault());
-    }
-
     // //////////////////////////////////////////////////////////
     // Helper: createAdapter
     // //////////////////////////////////////////////////////////
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/bytes/ByteValueSemanticsProviderAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/bytes/ByteValueSemanticsProviderAbstract.java
index 75471db..b832017 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/bytes/ByteValueSemanticsProviderAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/bytes/ByteValueSemanticsProviderAbstract.java
@@ -25,7 +25,6 @@ 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;
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/datejodalocal/JodaLocalDateValueSemanticsProvider.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/datejodalocal/JodaLocalDateValueSemanticsProvider.java
index 71b648f..967caf1 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/datejodalocal/JodaLocalDateValueSemanticsProvider.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/datejodalocal/JodaLocalDateValueSemanticsProvider.java
@@ -32,7 +32,6 @@ import org.apache.isis.applib.adapters.EncodingException;
 import org.apache.isis.applib.adapters.Parser;
 import org.apache.isis.core.commons.internal.collections._Lists;
 import org.apache.isis.core.commons.internal.collections._Maps;
-import org.apache.isis.core.config.IsisConfiguration.Value.FormatIdentifier;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.object.value.vsp.ValueSemanticsProviderAndFacetAbstract;
@@ -129,8 +128,7 @@ public class JodaLocalDateValueSemanticsProvider extends ValueSemanticsProviderA
     public JodaLocalDateValueSemanticsProvider(final FacetHolder holder) {
         super(type(), holder, LocalDate.class, TYPICAL_LENGTH, MAX_LENGTH, Immutability.IMMUTABLE, EqualByContent.HONOURED, DEFAULT_VALUE);
 
-        String configuredNameOrPattern = getConfiguration()
-                .getValue().getFormat().getOrDefault(FormatIdentifier.DATE.name().toLowerCase(), "medium");
+        String configuredNameOrPattern = getConfiguration().getValueTypes().getJoda().getLocalDate().getFormat();
         
         updateTitleStringFormatter(configuredNameOrPattern);
     }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/datetimejodalocal/JodaLocalDateTimeValueSemanticsProvider.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/datetimejodalocal/JodaLocalDateTimeValueSemanticsProvider.java
index 77bd9b8..c783f71 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/datetimejodalocal/JodaLocalDateTimeValueSemanticsProvider.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/datetimejodalocal/JodaLocalDateTimeValueSemanticsProvider.java
@@ -33,7 +33,6 @@ import org.apache.isis.applib.adapters.EncodingException;
 import org.apache.isis.applib.adapters.Parser;
 import org.apache.isis.core.commons.internal.collections._Lists;
 import org.apache.isis.core.commons.internal.collections._Maps;
-import org.apache.isis.core.config.IsisConfiguration.Value.FormatIdentifier;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.object.value.vsp.ValueSemanticsProviderAndFacetAbstract;
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 be18da4..af98b03 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
@@ -25,7 +25,6 @@ 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;
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/floats/FloatValueSemanticsProviderAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/floats/FloatValueSemanticsProviderAbstract.java
index 6087bd3..042f3a8 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/floats/FloatValueSemanticsProviderAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/floats/FloatValueSemanticsProviderAbstract.java
@@ -25,7 +25,6 @@ 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;
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/integer/IntValueSemanticsProviderAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/integer/IntValueSemanticsProviderAbstract.java
index af31781..8819760 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/integer/IntValueSemanticsProviderAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/integer/IntValueSemanticsProviderAbstract.java
@@ -25,7 +25,6 @@ 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;
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/longs/LongValueSemanticsProviderAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/longs/LongValueSemanticsProviderAbstract.java
index 7fe5644..3437779 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/longs/LongValueSemanticsProviderAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/longs/LongValueSemanticsProviderAbstract.java
@@ -25,7 +25,6 @@ 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;
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/shortint/ShortValueSemanticsProviderAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/shortint/ShortValueSemanticsProviderAbstract.java
index c129892..d95e639 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/shortint/ShortValueSemanticsProviderAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/shortint/ShortValueSemanticsProviderAbstract.java
@@ -25,7 +25,6 @@ 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;
@@ -51,7 +50,7 @@ public class ShortValueSemanticsProviderAbstract extends ValueSemanticsProviderA
         format = xdetermineNumberFormat();
     }
     protected NumberFormat xdetermineNumberFormat() {
-        final String formatRequired = getConfiguration().getValue().getFormat().get("short");
+        final String formatRequired = getConfiguration().getValueTypes().getJavaLang().getShort().getFormat();
 
         return formatRequired != null
                 ? new DecimalFormat(formatRequired)
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/temporal/TemporalValueSemanticsProviderAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/temporal/TemporalValueSemanticsProviderAbstract.java
index 621a431..e63ceef 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/temporal/TemporalValueSemanticsProviderAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/temporal/TemporalValueSemanticsProviderAbstract.java
@@ -34,7 +34,6 @@ import org.apache.isis.core.commons.collections.Can;
 import org.apache.isis.core.commons.internal.base._Casts;
 import org.apache.isis.core.commons.internal.collections._Maps;
 import org.apache.isis.core.commons.internal.exceptions._Exceptions;
-import org.apache.isis.core.config.IsisConfiguration.Value.FormatIdentifier;
 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;
@@ -117,26 +116,7 @@ implements TemporalValueFacet<T> {
                 .orElseThrow(()->_Exceptions.noSuchElement("unknown format name %s", formatName));
     }
     
-    protected DateTimeFormatter formatterFromConfig(FormatIdentifier formatIdentifier, String namedFallback) {
 
-        val configuredNameOrPattern = getConfiguration()
-                .getValue().getFormat().getOrDefault(formatIdentifier.name().toLowerCase(), namedFallback);
-        
-        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(namedFallback);
-
-    }
-    
     
     protected void updateParsers() {
         parsers = Can.ofCollection(namedFormatters.values())
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/temporal/localdate/LocalDateValueSemanticsProvider.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/temporal/localdate/LocalDateValueSemanticsProvider.java
index 56b069c..2d0bde0 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/temporal/localdate/LocalDateValueSemanticsProvider.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/temporal/localdate/LocalDateValueSemanticsProvider.java
@@ -20,13 +20,18 @@
 package org.apache.isis.core.metamodel.facets.value.temporal.localdate;
 
 import java.time.LocalDate;
+import java.time.format.DateTimeFormatter;
+import java.util.Locale;
 
-import org.apache.isis.core.config.IsisConfiguration.Value.FormatIdentifier;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.value.temporal.TemporalAdjust;
 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
 public class LocalDateValueSemanticsProvider
 extends TemporalValueSemanticsProviderAbstract<LocalDate> {
 
@@ -48,7 +53,25 @@ extends TemporalValueSemanticsProviderAbstract<LocalDate> {
         super.updateParsers();
 
         setEncodingFormatter(lookupNamedFormatterElseFail("iso_encoding"));
-        setTitleFormatter(formatterFromConfig(FormatIdentifier.DATE, "medium"));
+
+        val configuredNameOrPattern = getConfiguration().getValueTypes().getJavaTime().getLocalDate().getFormat();
+
+        val formatter = lookupNamedFormatter(configuredNameOrPattern).orElse(null);
+
+        setTitleFormatter(formatter != null ? formatter : formatterFrom(configuredNameOrPattern));
+    }
+
+    private DateTimeFormatter formatterFrom(String configuredNameOrPattern) {
+        DateTimeFormatter result = null;
+        try {
+            result = DateTimeFormatter.ofPattern(configuredNameOrPattern, Locale.getDefault());
+        } catch (Exception e) {
+            log.warn(e);
+        }
+        if (result == null) {
+            result = lookupNamedFormatterElseFail("medium");
+        }
+        return result;
     }
 
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/temporal/localdatetime/LocalDateTimeValueSemanticsProvider.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/temporal/localdatetime/LocalDateTimeValueSemanticsProvider.java
index 07da58d..98c175f 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/temporal/localdatetime/LocalDateTimeValueSemanticsProvider.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/temporal/localdatetime/LocalDateTimeValueSemanticsProvider.java
@@ -23,7 +23,6 @@ import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
 import java.util.Locale;
 
-import org.apache.isis.core.config.IsisConfiguration.Value.FormatIdentifier;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.value.temporal.TemporalAdjust;
 import org.apache.isis.core.metamodel.facets.value.temporal.TemporalValueFacet;
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/temporal/localtime/LocalTimeValueSemanticsProvider.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/temporal/localtime/LocalTimeValueSemanticsProvider.java
index 860d210..185e327 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/temporal/localtime/LocalTimeValueSemanticsProvider.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/temporal/localtime/LocalTimeValueSemanticsProvider.java
@@ -23,14 +23,15 @@ import java.time.LocalTime;
 import java.time.format.DateTimeFormatter;
 import java.util.Locale;
 
-import org.apache.isis.core.config.IsisConfiguration.Value.FormatIdentifier;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.value.temporal.TemporalAdjust;
 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
 public class LocalTimeValueSemanticsProvider
 extends TemporalValueSemanticsProviderAbstract<LocalTime> {
 
@@ -57,8 +58,25 @@ extends TemporalValueSemanticsProviderAbstract<LocalTime> {
 
         setEncodingFormatter(
                 DateTimeFormatter.ofPattern(hourMinuteSecondMillis, Locale.getDefault()));
-        setTitleFormatter(formatterFromConfig(FormatIdentifier.TIME, "medium"));
+        DateTimeFormatter result = null;
 
+        val configuredNameOrPattern = getConfiguration().getValueTypes().getJavaTime().getLocalTime().getFormat();
+
+        val formatter = lookupNamedFormatter(configuredNameOrPattern).orElse(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);
     }
 
 
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 538a7b1..c15170e 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
@@ -23,7 +23,6 @@ import java.time.OffsetDateTime;
 import java.time.format.DateTimeFormatter;
 import java.util.Locale;
 
-import org.apache.isis.core.config.IsisConfiguration.Value.FormatIdentifier;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.value.temporal.TemporalAdjust;
 import org.apache.isis.core.metamodel.facets.value.temporal.TemporalValueFacet;
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 980825f..ea273ce 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
@@ -20,15 +20,18 @@
 package org.apache.isis.core.metamodel.facets.value.temporal.offsettime;
 
 import java.time.OffsetTime;
+import java.time.format.DateTimeFormatter;
+import java.util.Locale;
 
-import org.apache.isis.core.config.IsisConfiguration.Value.FormatIdentifier;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.value.temporal.TemporalAdjust;
 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
 public class OffsetTimeValueSemanticsProvider
 extends TemporalValueSemanticsProviderAbstract<OffsetTime> {
 
@@ -53,7 +56,28 @@ extends TemporalValueSemanticsProviderAbstract<OffsetTime> {
         super.updateParsers();
         
         setEncodingFormatter(lookupNamedFormatterElseFail("iso_encoding"));
-        setTitleFormatter(formatterFromConfig(FormatIdentifier.TIME, "medium"));
+        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");
+
     }
 
 
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 ce53c46..62a84c0 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
@@ -20,17 +20,20 @@
 package org.apache.isis.core.metamodel.facets.value.temporal.zoneddatetime;
 
 import java.time.ZonedDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.Locale;
 
-import org.apache.isis.core.config.IsisConfiguration.Value.FormatIdentifier;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.value.temporal.TemporalAdjust;
 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;
 
 
-public class ZonedDateTimeValueSemanticsProvider 
+@Log4j2
+public class ZonedDateTimeValueSemanticsProvider
 extends TemporalValueSemanticsProviderAbstract<ZonedDateTime> {
 
     public static final int MAX_LENGTH = 36;
@@ -55,8 +58,28 @@ extends TemporalValueSemanticsProviderAbstract<ZonedDateTime> {
         super.updateParsers();
 
         setEncodingFormatter(lookupNamedFormatterElseFail("iso_encoding"));
-        setTitleFormatter(formatterFromConfig(FormatIdentifier.TIME, "medium"));
+        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");
+
+    }
+
+
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/timestampsql/JavaSqlTimeStampValueSemanticsProvider.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/timestampsql/JavaSqlTimeStampValueSemanticsProvider.java
index 2b62cad..55cefb3 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/timestampsql/JavaSqlTimeStampValueSemanticsProvider.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/timestampsql/JavaSqlTimeStampValueSemanticsProvider.java
@@ -63,16 +63,12 @@ extends ValueSemanticsProviderAbstractTemporal<Timestamp> {
     public JavaSqlTimeStampValueSemanticsProvider(final FacetHolder holder) {
         super("timestamp", type(), holder, java.sql.Timestamp.class, 25, Immutability.NOT_IMMUTABLE, EqualByContent.NOT_HONOURED, null);
 
-        configuredFormat = getConfiguration().getValue().getFormat().getOrDefault("timestamp", "short").toLowerCase().trim();
+        configuredFormat = getConfiguration().getValueTypes().getJavaSql().getTimestamp().getFormat();
 
-        buildFormat(configuredFormat);
-
-        final String formatRequired = getConfiguration().getValue().getFormat().get("timestamp");
-
-        if (formatRequired == null) {
-            format = formats().get("short");
-        } else {
-            setMask(formatRequired);
+        final Map<String, DateFormat> formats1 = formats();
+        format = formats1.get(configuredFormat);
+        if (format == null) {
+            setMask(configuredFormat);
         }
     }
 
diff --git a/legacy/extensions/core/metamodel/src/main/java/org/apache/isis/legacy/metamodel/facets/value/percentage/PercentageValueSemanticsProvider.java b/legacy/extensions/core/metamodel/src/main/java/org/apache/isis/legacy/metamodel/facets/value/percentage/PercentageValueSemanticsProvider.java
index e9b50ad..c1842d8 100644
--- a/legacy/extensions/core/metamodel/src/main/java/org/apache/isis/legacy/metamodel/facets/value/percentage/PercentageValueSemanticsProvider.java
+++ b/legacy/extensions/core/metamodel/src/main/java/org/apache/isis/legacy/metamodel/facets/value/percentage/PercentageValueSemanticsProvider.java
@@ -25,7 +25,6 @@ import java.text.ParseException;
 
 import org.apache.isis.applib.adapters.EncoderDecoder;
 import org.apache.isis.applib.adapters.Parser;
-import org.apache.isis.core.config.IsisConfiguration.Value.FormatIdentifier;
 import org.apache.isis.legacy.applib.value.Percentage;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;