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

[isis] branch master updated (bd89918 -> 516620e)

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

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


    from bd89918  ISIS-2265: cleaning up and make ValueTypeDefinition immutable
     new 4eb02b4  ISIS-2264: removes unused methods for IsisConfiguration / Money
     new 68426ba  ISIS-2264: refactors calls using IsisConfiguration#format with INT
     new 837cfc8  ISIS-2264: simplifies IsisConfiguration format for INT
     new 73931c7  ISIS-2264: simplifies further
     new 3ca9f15  ISIS-2264: isis.value.format["int"] -> isis.value-types.java-math.big-integer.format or isis.value-types.primitives.integer.format
     new 2d582bc  ISIS-2264: isis.value.format["decimal"] -> isis.value-types.java-math.big-decimal.format
     new 417213d  ISIS-2264: isis.value.format["byte"] -> isis.value-types.java-lang.byte.format
     new dd20e1e  ISIS-2264: isis.value.format["double"] -> isis.value-types.java-lang.double.format
     new 21ff60a  ISIS-2264: isis.value.format["float"] -> isis.value-types.java-lang.float.format
     new d9ebfc6  ISIS-2264: isis.value.format["long"] -> isis.value-types.}java-lang.long.format
     new ce64ae1  ISIS-2264: isis.value.format["short"] -> isis.value-types.}java-lang.short.format
     new 3e789ca  ISIS-2264: isis.value.format["percentage"] -> isis.legacy.value-types.percentage.format
     new c61f6a8  ISIS-2264: isis.value.format["datetime"] -> isis.value-types.joda.local-date-time.format
     new 4a00d14  ISIS-2264: isis.value.format["datetime"] -> ALSO TO: isis.value-types.java-time.local-date-time.format
     new 1bf1fbe  ISIS-2264: isis.value.format["datetime"] -> ALSO TO: isis.value-types.java-time.offset-date-time.format
     new f9f3be9  ISIS-2264: moves configuredFormat (also propertyType) to subclasses of ValueSemanticsProviderAbstractTemporal
     new 24556c7  ISIS-2264: more refactoring of datetime VSP's
     new 2c26da2  ISIS-2264: further refactorings of Temporal VSPs
     new 9698e5c  ISIS-2264: further refactorings of temporal VSP's
     new a88a239  ISIS-2264: moves JodaDateTimeValueSemanticsProviderAbstract down to subclass (since there is only one)
     new f7d17f7  ISIS-2264: pushes TimeStampValueSemanticsProviderAbstract down to its subclass, JavaSqlTimeStampValueSemanticsProvider
     new 8899c33  ISIS-2264: pushes DateAndTimeValueSemanticsProviderAbstract down to its subclass, JavaUtilDateValueSemanticsProvider
     new a107f9f  ISIS-2264: inlines DateValueSemanticsProviderAbstract down into its subclass, JavaSqlDateValueSemanticsProvider
     new 9acf623  ISIS-2264: pushes TimeValueSemanticsProviderAbstract down to its subclass, JavaSqlTimeValueSemanticsProvider
     new 3d26698  ISIS-2264: removes ValueSemanticsProviderAbstractTemporal#defaultFormat
     new 9f1eb16  ISIS-2264: further simplifications of temporal VSP's
     new 066b272  ISIS-2264: isis.value.format.date -> isis.value-types.java-sql.date.format
     new 3449f94  ISIS-2264: isis.value.format.date -> ALSO TO: isis.value-types.joda.date-time.format
     new fe146a1  ISIS-2264: isis.value.format.datetime -> isis.value-types.java-util.date.format
     new 9ce41cc  ISIS-2264: isis.value.format["time"] -> isis.value-types.java-sql.time.format
     new 7f349f9  ISIS-2264: further conversions from isis.value-types.format["xxx"] to isis.value-types.aaa.bbb.format
     new b002abb  ISIS-2264: isis.value.money.current -> isis.legacy.value-types.money.current
     new fe35401  ISIS-2264: updates scripts to generate docs
     new dcd9163  ISIS-2264: updates generated docs
     new 3d752dd  ISIS-2264: fixes illegal char in comment
     new 516620e  ISIS-2264: docs

The 36 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../modules/mignotes/pages/migrating-to-2.0.0.adoc |  79 ++++++-
 .../modules/config/examples/generated/Other.adoc   |   4 -
 .../examples/generated/isis.core.runtime.adoc      |   4 +
 .../config/examples/generated/isis.legacy.adoc     |  10 +
 .../examples/generated/isis.value-types.adoc       | 110 +++++++++
 .../config/examples/generated/isis.value.adoc      |   8 -
 .../examples/generated/isis.viewer.wicket.adoc     |   2 +-
 .../config/examples/generated/resteasy.adoc        |   9 -
 .../config/pages/configuration-properties.adoc     |   5 +-
 .../apache/isis/core/config/IsisConfiguration.java | 247 +++++++++++++++++----
 .../additional-spring-configuration-metadata.json  |   8 +
 .../ValueSemanticsProviderAndFacetAbstract.java    |  18 --
 .../DateAndTimeValueSemanticsProviderAbstract.java | 116 ----------
 .../ValueSemanticsProviderAbstractTemporal.java    |  41 +---
 .../BigDecimalValueSemanticsProvider.java          |  11 +-
 .../BigIntegerValueSemanticsProvider.java          |  15 +-
 .../bytes/ByteValueSemanticsProviderAbstract.java  |  10 +-
 .../date/DateValueSemanticsProviderAbstract.java   | 121 ----------
 .../JodaLocalDateValueSemanticsProvider.java       |   4 +-
 .../datesql/JavaSqlDateValueSemanticsProvider.java | 107 ++++++++-
 .../JodaDateTimeValueSemanticsProvider.java        | 112 +++++++++-
 ...JodaDateTimeValueSemanticsProviderAbstract.java | 121 ----------
 .../JodaLocalDateTimeValueSemanticsProvider.java   |   3 +-
 .../JavaUtilDateValueSemanticsProvider.java        |  95 +++++++-
 .../DoubleValueSemanticsProviderAbstract.java      |   9 +-
 .../FloatValueSemanticsProviderAbstract.java       |  10 +-
 .../integer/IntValueSemanticsProviderAbstract.java |  14 +-
 .../longs/LongValueSemanticsProviderAbstract.java  |  10 +-
 .../ShortValueSemanticsProviderAbstract.java       |  12 +-
 .../TemporalValueSemanticsProviderAbstract.java    |  21 --
 .../localdate/LocalDateValueSemanticsProvider.java |  27 ++-
 .../LocalDateTimeValueSemanticsProvider.java       |  28 ++-
 .../localtime/LocalTimeValueSemanticsProvider.java |  22 +-
 .../OffsetDateTimeValueSemanticsProvider.java      |  28 ++-
 .../OffsetTimeValueSemanticsProvider.java          |  28 ++-
 .../ZonedDateTimeValueSemanticsProvider.java       |  29 ++-
 .../time/TimeValueSemanticsProviderAbstract.java   | 111 ---------
 .../timesql/JavaSqlTimeValueSemanticsProvider.java |  84 ++++++-
 ...ampValueFacetUsingSemanticsProviderFactory.java |   2 +-
 .../JavaSqlTimeStampValueSemanticsProvider.java    |  98 +++++++-
 .../TimeStampValueSemanticsProviderAbstract.java   | 101 ---------
 .../JavaSqlDateValueSemanticsProviderTest.java     |   4 -
 .../JavaUtilDateValueSemanticsProviderTest.java    |   4 -
 .../value/money/MoneyValueSemanticsProvider.java   |   6 +-
 .../PercentageValueSemanticsProvider.java          |   4 +-
 scripts/generateConfigDocs.groovy                  |   2 +-
 .../isis/testing/specsupport/applib/specs/V.java   |   2 +-
 47 files changed, 1113 insertions(+), 803 deletions(-)
 create mode 100644 core/config/src/main/adoc/modules/config/examples/generated/isis.legacy.adoc
 create mode 100644 core/config/src/main/adoc/modules/config/examples/generated/isis.value-types.adoc
 delete mode 100644 core/config/src/main/adoc/modules/config/examples/generated/isis.value.adoc
 delete mode 100644 core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/DateAndTimeValueSemanticsProviderAbstract.java
 delete mode 100644 core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/date/DateValueSemanticsProviderAbstract.java
 delete mode 100644 core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/datetimejoda/JodaDateTimeValueSemanticsProviderAbstract.java
 delete mode 100644 core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/time/TimeValueSemanticsProviderAbstract.java
 delete mode 100644 core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/timestampsql/TimeStampValueSemanticsProviderAbstract.java


[isis] 18/36: ISIS-2264: further refactorings of Temporal VSPs

Posted by da...@apache.org.
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 2c26da2010d92653d90b79c361b2eaa684a97020
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Fri Jan 17 00:10:21 2020 +0100

    ISIS-2264: further refactorings of Temporal VSPs
---
 .../facets/value/DateAndTimeValueSemanticsProviderAbstract.java     | 2 +-
 .../facets/value/date/DateValueSemanticsProviderAbstract.java       | 6 +-----
 .../datetimejoda/JodaDateTimeValueSemanticsProviderAbstract.java    | 2 +-
 .../facets/value/time/TimeValueSemanticsProviderAbstract.java       | 6 +-----
 .../value/timestampsql/TimeStampValueSemanticsProviderAbstract.java | 2 +-
 5 files changed, 5 insertions(+), 13 deletions(-)

diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/DateAndTimeValueSemanticsProviderAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/DateAndTimeValueSemanticsProviderAbstract.java
index 309104e..cb4bc7a 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/DateAndTimeValueSemanticsProviderAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/DateAndTimeValueSemanticsProviderAbstract.java
@@ -60,7 +60,7 @@ extends ValueSemanticsProviderAbstractTemporal<T> {
         this(FormatIdentifier.DATETIME, holder, adaptedClass, TYPICAL_LENGTH, immutability, equalByContent, (T) DEFAULT_VALUE);
 
         configuredFormat = getConfiguration()
-                .getValue().getFormat().getOrDefault(FormatIdentifier.DATETIME.name().toLowerCase(), defaultFormat()).toLowerCase().trim();
+                .getValue().getFormat().getOrDefault(FormatIdentifier.DATETIME.name().toLowerCase(), "medium").toLowerCase().trim();
 
         buildFormat(configuredFormat);
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/date/DateValueSemanticsProviderAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/date/DateValueSemanticsProviderAbstract.java
index 0405c5f..23d4cfe 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/date/DateValueSemanticsProviderAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/date/DateValueSemanticsProviderAbstract.java
@@ -55,7 +55,7 @@ public abstract class DateValueSemanticsProviderAbstract<T> extends ValueSemanti
         this(FormatIdentifier.DATE, holder, adaptedClass, 12, immutability, equalByContent, defaultValue);
 
         configuredFormat = getConfiguration()
-                .getValue().getFormat().getOrDefault(FormatIdentifier.DATE.name().toLowerCase(), defaultFormat()).toLowerCase().trim();
+                .getValue().getFormat().getOrDefault(FormatIdentifier.DATE.name().toLowerCase(), "medium").toLowerCase().trim();
 
         buildFormat(configuredFormat);
 
@@ -71,10 +71,6 @@ public abstract class DateValueSemanticsProviderAbstract<T> extends ValueSemanti
     }
 
     // //////////////////////////////////////////////////////////////////
-    // DateValueFacet
-    // //////////////////////////////////////////////////////////////////
-
-    // //////////////////////////////////////////////////////////////////
     // temporal-specific stuff
     // //////////////////////////////////////////////////////////////////
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/datetimejoda/JodaDateTimeValueSemanticsProviderAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/datetimejoda/JodaDateTimeValueSemanticsProviderAbstract.java
index c3be280..f04aeda 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/datetimejoda/JodaDateTimeValueSemanticsProviderAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/datetimejoda/JodaDateTimeValueSemanticsProviderAbstract.java
@@ -55,7 +55,7 @@ public abstract class JodaDateTimeValueSemanticsProviderAbstract<T> extends Valu
         this(FormatIdentifier.DATE, holder, adaptedClass, 12, Immutability.IMMUTABLE, EqualByContent.HONOURED, defaultValue);
 
         configuredFormat = getConfiguration()
-                .getValue().getFormat().getOrDefault(FormatIdentifier.DATE.name().toLowerCase(), defaultFormat()).toLowerCase().trim();
+                .getValue().getFormat().getOrDefault(FormatIdentifier.DATE.name().toLowerCase(), "medium").toLowerCase().trim();
 
         buildFormat(configuredFormat);
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/time/TimeValueSemanticsProviderAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/time/TimeValueSemanticsProviderAbstract.java
index ebd1b42..24c01f4 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/time/TimeValueSemanticsProviderAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/time/TimeValueSemanticsProviderAbstract.java
@@ -56,7 +56,7 @@ extends ValueSemanticsProviderAbstractTemporal<T> {
         this(FormatIdentifier.TIME, holder, adaptedClass, TYPICAL_LENGTH, Immutability.NOT_IMMUTABLE, EqualByContent.NOT_HONOURED, (T) DEFAULT_VALUE);
 
         configuredFormat = getConfiguration()
-                .getValue().getFormat().getOrDefault(FormatIdentifier.TIME.name().toLowerCase(), defaultFormat()).toLowerCase().trim();
+                .getValue().getFormat().getOrDefault(FormatIdentifier.TIME.name().toLowerCase(), "short").toLowerCase().trim();
 
         buildFormat(configuredFormat);
 
@@ -70,10 +70,6 @@ extends ValueSemanticsProviderAbstractTemporal<T> {
     }
 
     // //////////////////////////////////////////////////////////////////
-    // DateValueFacet
-    // //////////////////////////////////////////////////////////////////
-
-    // //////////////////////////////////////////////////////////////////
     // temporal-specific stuff
     // //////////////////////////////////////////////////////////////////
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/timestampsql/TimeStampValueSemanticsProviderAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/timestampsql/TimeStampValueSemanticsProviderAbstract.java
index b350e82..9f8c60d 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/timestampsql/TimeStampValueSemanticsProviderAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/timestampsql/TimeStampValueSemanticsProviderAbstract.java
@@ -55,7 +55,7 @@ abstract class TimeStampValueSemanticsProviderAbstract<T> extends ValueSemantics
         this(FormatIdentifier.TIMESTAMP, holder, adaptedClass, TYPICAL_LENGTH, Immutability.NOT_IMMUTABLE, EqualByContent.NOT_HONOURED, (T) DEFAULT_VALUE);
 
         configuredFormat = getConfiguration()
-                .getValue().getFormat().getOrDefault(FormatIdentifier.TIMESTAMP.name().toLowerCase(), defaultFormat()).toLowerCase().trim();
+                .getValue().getFormat().getOrDefault(FormatIdentifier.TIMESTAMP.name().toLowerCase(), "short").toLowerCase().trim();
 
         buildFormat(configuredFormat);
 


[isis] 22/36: ISIS-2264: pushes DateAndTimeValueSemanticsProviderAbstract down to its subclass, JavaUtilDateValueSemanticsProvider

Posted by da...@apache.org.
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 8899c330ec0ae99cb9e1289d0ff0d8b0af799df3
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Fri Jan 17 00:45:26 2020 +0100

    ISIS-2264: pushes DateAndTimeValueSemanticsProviderAbstract down to its subclass, JavaUtilDateValueSemanticsProvider
---
 .../DateAndTimeValueSemanticsProviderAbstract.java | 137 ---------------------
 .../JavaUtilDateValueSemanticsProvider.java        | 105 +++++++++++++++-
 2 files changed, 102 insertions(+), 140 deletions(-)

diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/DateAndTimeValueSemanticsProviderAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/DateAndTimeValueSemanticsProviderAbstract.java
deleted file mode 100644
index 85a66b4..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/DateAndTimeValueSemanticsProviderAbstract.java
+++ /dev/null
@@ -1,137 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-
-package org.apache.isis.core.metamodel.facets.value;
-
-import java.text.DateFormat;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Locale;
-import java.util.Map;
-import java.util.TimeZone;
-
-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.FacetHolder;
-
-import lombok.Getter;
-import lombok.Setter;
-
-public abstract class DateAndTimeValueSemanticsProviderAbstract<T> 
-extends ValueSemanticsProviderAbstractTemporal<T> {
-
-    private static Map<String, DateFormat> formats = _Maps.newHashMap();
-
-    static {
-        formats.put(ISO_ENCODING_FORMAT, createDateEncodingFormat("yyyyMMdd'T'HHmmssSSS"));
-        formats.put("iso", createDateFormat("yyyy-MM-dd HH:mm"));
-        formats.put("medium", DateFormat.getDateTimeInstance(DateFormat.MEDIUM, DateFormat.SHORT));
-    }
-
-    private static final Object DEFAULT_VALUE = null; // no default
-    private static final int TYPICAL_LENGTH = 18;
-
-    @Getter @Setter
-    private String configuredFormat;
-
-
-    public DateAndTimeValueSemanticsProviderAbstract(final FormatIdentifier formatIdentifier, final FacetHolder holder, final Class<T> adaptedClass, final int typicalLength, final Immutability immutability, final EqualByContent equalByContent, final T defaultValue) {
-        super(formatIdentifier.name().toLowerCase(), type(), holder, adaptedClass, typicalLength, immutability, equalByContent, defaultValue);
-    }
-
-    @SuppressWarnings("unchecked")
-    public DateAndTimeValueSemanticsProviderAbstract(final FacetHolder holder, final Class<T> adaptedClass, final Immutability immutability, final EqualByContent equalByContent) {
-        this(FormatIdentifier.DATETIME, holder, adaptedClass, TYPICAL_LENGTH, immutability, equalByContent, (T) DEFAULT_VALUE);
-
-        configuredFormat = getConfiguration().getValue().getFormat().getOrDefault(FormatIdentifier.DATETIME.name().toLowerCase(), "medium").toLowerCase().trim();
-
-        buildFormat(configuredFormat);
-
-        final String formatRequired = getConfiguration()
-                .getValue().getFormat().getOrDefault(FormatIdentifier.DATETIME.name().toLowerCase(), null);
-                
-        if (formatRequired == null) {
-            format = formats().get(defaultFormat());
-        } else {
-            setMask(formatRequired);
-        }
-    }
-
-
-    // //////////////////////////////////////////////////////////////////
-    // temporal-specific stuff
-    // //////////////////////////////////////////////////////////////////
-
-    @Override
-    protected String defaultFormat() {
-        return "medium";
-    }
-
-    @Override
-    protected Map<String, DateFormat> formats() {
-        return formats;
-    }
-
-    @Override
-    protected DateFormat format() {
-        final Locale locale = Locale.getDefault();
-        final TimeZone timeZone = TimeZone.getDefault();
-
-        final DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.MEDIUM, DateFormat.SHORT, locale);
-        dateFormat.setTimeZone(timeZone);
-        return dateFormat;
-    }
-
-    @Override
-    public String toString() {
-        return "JavaDateTimeValueSemanticsProvider: " + format;
-    }
-
-    @Override
-    protected List<DateFormat> formatsToTry() {
-        List<DateFormat> formats = new ArrayList<DateFormat>();
-
-        final Locale locale = Locale.getDefault();
-        final TimeZone timeZone = TimeZone.getDefault();
-
-        formats.add(DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG, locale));
-        formats.add(createDateFormat("yyyy-MM-dd HH:mm:ss.SSS"));
-        formats.add(createDateFormat("yyyyMMdd'T'HHmmssSSS"));
-        formats.add(DateFormat.getDateTimeInstance(DateFormat.MEDIUM, DateFormat.SHORT, locale));
-        formats.add(createDateFormat("yyyy-MM-dd HH:mm:ss"));
-        formats.add(DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT, locale));
-        formats.add(createDateFormat("yyyyMMdd'T'HHmmss"));
-        formats.add(createDateFormat("yyyy-MM-dd HH:mm"));
-        formats.add(createDateFormat("yyyyMMdd'T'HHmm"));
-        formats.add(createDateFormat("dd-MMM-yyyy HH:mm"));
-
-        for (DateFormat format : formats) {
-            format.setTimeZone(timeZone);
-        }
-
-        return formats;
-    }
-
-    @Override
-    public void appendAttributesTo(Map<String, Object> attributeMap) {
-        super.appendAttributesTo(attributeMap);
-        attributeMap.put("configuredFormat", configuredFormat);
-    }
-
-}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/dateutil/JavaUtilDateValueSemanticsProvider.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/dateutil/JavaUtilDateValueSemanticsProvider.java
index 7ae2a05..73ae34e 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/dateutil/JavaUtilDateValueSemanticsProvider.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/dateutil/JavaUtilDateValueSemanticsProvider.java
@@ -19,17 +19,27 @@
 
 package org.apache.isis.core.metamodel.facets.value.dateutil;
 
+import java.text.DateFormat;
+import java.util.ArrayList;
 import java.util.Calendar;
 import java.util.Date;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+import java.util.TimeZone;
 
 import org.apache.isis.applib.adapters.EncoderDecoder;
 import org.apache.isis.applib.adapters.Parser;
 import org.apache.isis.applib.clock.Clock;
+import org.apache.isis.core.commons.internal.collections._Maps;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.facets.value.DateAndTimeValueSemanticsProviderAbstract;
+import org.apache.isis.core.metamodel.facets.value.ValueSemanticsProviderAbstractTemporal;
 import org.apache.isis.core.metamodel.facets.value.datesql.JavaSqlDateValueSemanticsProvider;
 import org.apache.isis.core.metamodel.facets.value.timesql.JavaSqlTimeValueSemanticsProvider;
 
+import lombok.Getter;
+import lombok.Setter;
+
 /**
  * An adapter that handles {@link java.util.Date} as both a date AND time
  * component.
@@ -37,7 +47,19 @@ import org.apache.isis.core.metamodel.facets.value.timesql.JavaSqlTimeValueSeman
  * @see JavaSqlDateValueSemanticsProvider
  * @see JavaSqlTimeValueSemanticsProvider
  */
-public class JavaUtilDateValueSemanticsProvider extends DateAndTimeValueSemanticsProviderAbstract<java.util.Date> {
+public class JavaUtilDateValueSemanticsProvider extends ValueSemanticsProviderAbstractTemporal<java.util.Date> {
+
+    private static Map<String, DateFormat> formats = _Maps.newHashMap();
+
+    static {
+        formats.put(ISO_ENCODING_FORMAT, createDateEncodingFormat("yyyyMMdd'T'HHmmssSSS"));
+        formats.put("iso", createDateFormat("yyyy-MM-dd HH:mm"));
+        formats.put("medium", DateFormat.getDateTimeInstance(DateFormat.MEDIUM, DateFormat.SHORT));
+    }
+
+    @Getter
+    @Setter
+    private String configuredFormat;
 
     /**
      * Required because implementation of {@link Parser} and
@@ -48,10 +70,87 @@ public class JavaUtilDateValueSemanticsProvider extends DateAndTimeValueSemantic
     }
 
     public JavaUtilDateValueSemanticsProvider(final FacetHolder holder) {
-        super(holder, Date.class, Immutability.NOT_IMMUTABLE, EqualByContent.NOT_HONOURED);
+        super("datetime", type(), holder, Date.class, 18, Immutability.NOT_IMMUTABLE, EqualByContent.NOT_HONOURED, null);
+
+        configuredFormat = getConfiguration().getValue().getFormat().getOrDefault("datetime", "medium").toLowerCase().trim();
+
+        buildFormat(configuredFormat);
+
+        final String formatRequired = getConfiguration().getValue().getFormat().get("datetime");
+
+        if (formatRequired == null) {
+            format = formats().get(defaultFormat());
+        } else {
+            setMask(formatRequired);
+        }
+    }
+
+
+    // //////////////////////////////////////////////////////////////////
+    // temporal-specific stuff
+    // //////////////////////////////////////////////////////////////////
+
+    @Override
+    protected String defaultFormat() {
+        return "medium";
+    }
+
+    @Override
+    protected Map<String, DateFormat> formats() {
+        return formats;
+    }
+
+    @Override
+    protected DateFormat format() {
+        final Locale locale = Locale.getDefault();
+        final TimeZone timeZone = TimeZone.getDefault();
+
+        final DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.MEDIUM, DateFormat.SHORT, locale);
+        dateFormat.setTimeZone(timeZone);
+        return dateFormat;
+    }
+
+    @Override
+    public String toString() {
+        return "JavaDateTimeValueSemanticsProvider: " + format;
     }
 
     @Override
+    protected List<DateFormat> formatsToTry() {
+        List<DateFormat> formats = new ArrayList<>();
+
+        final Locale locale = Locale.getDefault();
+        final TimeZone timeZone = TimeZone.getDefault();
+
+        formats.add(DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG, locale));
+        formats.add(createDateFormat("yyyy-MM-dd HH:mm:ss.SSS"));
+        formats.add(createDateFormat("yyyyMMdd'T'HHmmssSSS"));
+        formats.add(DateFormat.getDateTimeInstance(DateFormat.MEDIUM, DateFormat.SHORT, locale));
+        formats.add(createDateFormat("yyyy-MM-dd HH:mm:ss"));
+        formats.add(DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT, locale));
+        formats.add(createDateFormat("yyyyMMdd'T'HHmmss"));
+        formats.add(createDateFormat("yyyy-MM-dd HH:mm"));
+        formats.add(createDateFormat("yyyyMMdd'T'HHmm"));
+        formats.add(createDateFormat("dd-MMM-yyyy HH:mm"));
+
+        for (DateFormat format : formats) {
+            format.setTimeZone(timeZone);
+        }
+
+        return formats;
+    }
+
+    @Override
+    public void appendAttributesTo(Map<String, Object> attributeMap) {
+        super.appendAttributesTo(attributeMap);
+        attributeMap.put("configuredFormat", configuredFormat);
+    }
+
+
+
+
+
+    @Override
     protected Date dateValue(final Object value) {
         return value == null ? null : (Date) value;
     }


[isis] 10/36: ISIS-2264: isis.value.format["long"] -> isis.value-types.}java-lang.long.format

Posted by da...@apache.org.
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 d9ebfc6c395dc14aa0e07e4a66afecaea848bdcd
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Thu Jan 16 23:22:09 2020 +0100

    ISIS-2264: isis.value.format["long"] -> isis.value-types.}java-lang.long.format
---
 .../toc/modules/mignotes/pages/migrating-to-2.0.0.adoc           | 4 ++++
 .../main/java/org/apache/isis/core/config/IsisConfiguration.java | 9 ++++++++-
 .../facets/value/longs/LongValueSemanticsProviderAbstract.java   | 9 ++++++++-
 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 738cf54..00c693c 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
@@ -640,6 +640,10 @@ isis.value-types. +
 |isis.value-types. +
 {nbsp}{nbsp}java-lang.float.format
 
+|isis.value.format["long"]
+|isis.value-types. +
+{nbsp}{nbsp}java-lang.long.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 5242b75..41871d4 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
@@ -1204,6 +1204,13 @@ public class IsisConfiguration {
             public static class Float {
                 private String format;
             }
+
+            // capitalized to avoid clash with keyword
+            private final Long Long = new Long();
+            @Data
+            public static class Long {
+                private String format;
+            }
         }
 
         private final JavaMath javaMath = new JavaMath();
@@ -1274,7 +1281,7 @@ public class IsisConfiguration {
             TIMESTAMP, 
             TIME,
             
-            LONG, SHORT,
+            SHORT,
             PERCENTAGE
         }
         
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 d1592b6..7fe5644 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
@@ -22,9 +22,11 @@ package org.apache.isis.core.metamodel.facets.value.longs;
 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;
@@ -46,9 +48,14 @@ public abstract class LongValueSemanticsProviderAbstract extends ValueSemanticsP
 
     public LongValueSemanticsProviderAbstract(final FacetHolder holder, final Class<Long> adaptedClass) {
         super(type(), holder, adaptedClass, TYPICAL_LENGTH, MAX_LENGTH, Immutability.IMMUTABLE, EqualByContent.HONOURED, DEFAULT_VALUE);
-        format = determineNumberFormat(FormatIdentifier.LONG);
+        final String formatRequired = getConfiguration().getValueTypes().getJavaLang().getLong().getFormat();
+
+        format = formatRequired != null
+                ? new DecimalFormat(formatRequired)
+                : NumberFormat.getNumberInstance(getConfiguration().getCore().getRuntime().getLocale().map(LocaleUtil::findLocale).orElse(Locale.getDefault()));
     }
 
+
     // //////////////////////////////////////////////////////////////////
     // Parser
     // //////////////////////////////////////////////////////////////////


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

Posted by da...@apache.org.
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 417213d14b74b35c6c071b262ad62664e9490cb1
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Thu Jan 16 23:13:11 2020 +0100

    ISIS-2264: isis.value.format["byte"] -> isis.value-types.java-lang.byte.format
    
    also renames isis.value-types.primitives.integer -> ...int
---
 .../toc/modules/mignotes/pages/migrating-to-2.0.0.adoc |  6 +++++-
 .../org/apache/isis/core/config/IsisConfiguration.java | 18 +++++++++++++++---
 .../additional-spring-configuration-metadata.json      |  8 ++++++++
 .../bytes/ByteValueSemanticsProviderAbstract.java      |  9 ++++++++-
 .../integer/IntValueSemanticsProviderAbstract.java     |  2 +-
 5 files changed, 37 insertions(+), 6 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 efed8eb..8680ff9 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
@@ -622,12 +622,16 @@ standalone-collection.bulk-load
 {nbsp}{nbsp}java-math.big-integer.format +
 
 isis.value-types. +
-{nbsp}{nbsp}primitives.integer.format
+{nbsp}{nbsp}primitives.int.format
 
 |isis.value.format["decimal"]
 |isis.value-types. +
 {nbsp}{nbsp}java-math.big-decimal.format
 
+|isis.value.format["byte"]
+|isis.value-types. +
+{nbsp}{nbsp}java-lang.byte.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 8f2bfbd..66ab13c 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
@@ -1172,9 +1172,21 @@ public class IsisConfiguration {
         @Data
         public static class Primitives {
 
-            private final Integer integer = new Integer();
+            // capitalized to avoid clash with keyword
+            private final Int Int = new Int();
             @Data
-            public static class Integer {
+            public static class Int {
+                private String format;
+            }
+        }
+
+        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;
             }
         }
@@ -1247,7 +1259,7 @@ public class IsisConfiguration {
             TIMESTAMP, 
             TIME,
             
-            BYTE, DOUBLE, FLOAT, LONG, SHORT,
+            DOUBLE, FLOAT, LONG, SHORT,
             PERCENTAGE
         }
         
diff --git a/core/config/src/main/resources/META-INF/additional-spring-configuration-metadata.json b/core/config/src/main/resources/META-INF/additional-spring-configuration-metadata.json
index faa68e6..fd56d0c 100644
--- a/core/config/src/main/resources/META-INF/additional-spring-configuration-metadata.json
+++ b/core/config/src/main/resources/META-INF/additional-spring-configuration-metadata.json
@@ -1,6 +1,14 @@
 {
   "properties": [
     {
+      "name": "isis.value-types.primitives.integer.format",
+      "type": "java.lang.String"
+    },
+    {
+      "name": "isis.value-types.java-lang.byte.format",
+      "type": "java.lang.String"
+    },
+    {
       "name": "isis.persistence.jdo-datanucleus.impl.datanucleus.ConnectionFactoryName"
     },
     {
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 1cd1bab..75471db 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
@@ -22,9 +22,11 @@ package org.apache.isis.core.metamodel.facets.value.bytes;
 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;
@@ -47,9 +49,14 @@ implements ByteValueFacet {
 
     public ByteValueSemanticsProviderAbstract(final FacetHolder holder, final Class<Byte> adaptedClass) {
         super(type(), holder, adaptedClass, TYPICAL_LENGTH, MAX_LENGTH, Immutability.IMMUTABLE, EqualByContent.HONOURED, DEFAULT_VALUE);
-        format = determineNumberFormat(FormatIdentifier.BYTE);
+        final String formatRequired = getConfiguration().getValueTypes().getJavaLang().getByte().getFormat();
+
+        format = formatRequired != null
+                ? new DecimalFormat(formatRequired)
+                : NumberFormat.getNumberInstance(getConfiguration().getCore().getRuntime().getLocale().map(LocaleUtil::findLocale).orElse(Locale.getDefault()));
     }
 
+
     // //////////////////////////////////////////////////////////////////
     // Parser
     // //////////////////////////////////////////////////////////////////
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 df43fad..af31781 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
@@ -48,7 +48,7 @@ public abstract class IntValueSemanticsProviderAbstract extends ValueSemanticsPr
 
     public IntValueSemanticsProviderAbstract(final FacetHolder holder, final Class<Integer> adaptedClass) {
         super(type(), holder, adaptedClass, TYPICAL_LENGTH, MAX_LENGTH, Immutability.IMMUTABLE, EqualByContent.HONOURED, DEFAULT_VALUE);
-        final String formatRequired = getConfiguration().getValueTypes().getPrimitives().getInteger().getFormat();
+        final String formatRequired = getConfiguration().getValueTypes().getPrimitives().getInt().getFormat();
 
         NumberFormat result;
         if (formatRequired != null) {


[isis] 03/36: ISIS-2264: simplifies IsisConfiguration format for INT

Posted by da...@apache.org.
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 837cfc8fd6d3e47c8e381a869b7584793f68855e
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Thu Jan 16 22:47:39 2020 +0100

    ISIS-2264: simplifies IsisConfiguration format for INT
---
 .../facets/value/biginteger/BigIntegerValueSemanticsProvider.java       | 2 +-
 .../facets/value/integer/IntValueSemanticsProviderAbstract.java         | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/biginteger/BigIntegerValueSemanticsProvider.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/biginteger/BigIntegerValueSemanticsProvider.java
index cd9a6a5..a31eca5 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/biginteger/BigIntegerValueSemanticsProvider.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/biginteger/BigIntegerValueSemanticsProvider.java
@@ -59,7 +59,7 @@ public class BigIntegerValueSemanticsProvider extends ValueSemanticsProviderAndF
 
         super(type(), holder, BigInteger.class, TYPICAL_LENGTH, -1, Immutability.IMMUTABLE, EqualByContent.HONOURED, DEFAULT_VALUE);
         final String formatRequired =
-                getConfiguration().getValue().getFormat().getOrDefault(FormatIdentifier.INT.name().toLowerCase(), null);
+                getConfiguration().getValue().getFormat().get(FormatIdentifier.INT.name().toLowerCase());
 
         NumberFormat result;
         if (formatRequired != null) {
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 e540776..1a8e73f 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
@@ -49,7 +49,7 @@ public abstract class IntValueSemanticsProviderAbstract extends ValueSemanticsPr
     public IntValueSemanticsProviderAbstract(final FacetHolder holder, final Class<Integer> adaptedClass) {
         super(type(), holder, adaptedClass, TYPICAL_LENGTH, MAX_LENGTH, Immutability.IMMUTABLE, EqualByContent.HONOURED, DEFAULT_VALUE);
         final String formatRequired =
-                getConfiguration().getValue().getFormat().getOrDefault(FormatIdentifier.INT.name().toLowerCase(), null);
+                getConfiguration().getValue().getFormat().get(FormatIdentifier.INT.name().toLowerCase());
 
         NumberFormat result;
         if (formatRequired != null) {


[isis] 36/36: ISIS-2264: docs

Posted by da...@apache.org.
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 516620e01e00d7b890bb9c498d57fd028b7a2e5a
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Fri Jan 17 02:07:14 2020 +0100

    ISIS-2264: docs
---
 .../modules/config/examples/generated/isis.viewer.wicket.adoc    | 2 +-
 .../main/adoc/modules/config/examples/generated/resteasy.adoc    | 9 ---------
 2 files changed, 1 insertion(+), 10 deletions(-)

diff --git a/core/config/src/main/adoc/modules/config/examples/generated/isis.viewer.wicket.adoc b/core/config/src/main/adoc/modules/config/examples/generated/isis.viewer.wicket.adoc
index bd4c912..8c0b5a9 100644
--- a/core/config/src/main/adoc/modules/config/examples/generated/isis.viewer.wicket.adoc
+++ b/core/config/src/main/adoc/modules/config/examples/generated/isis.viewer.wicket.adoc
@@ -93,7 +93,7 @@ clear-original-destination
 date-pattern
 |  dd-MM-yyyy
 |  The pattern used for rendering and parsing dates.  +
- Each Date scalar panel will use {@ #getDatePattern()} or {@linkplain #getDateTimePattern()} depending on its date type.  In the case of panels with a date picker, the pattern will be dynamically adjusted so that it can be used by the <a href="https://github.com/Eonasdan/bootstrap-datetimepicker">Bootstrap Datetime Picker</a> component (which uses <a href="http://momentjs.com/docs/#/parsing/string-format/">Moment.js formats</a>, rather than those of regular Java code).
+ Each Date scalar panel will use {#getDatePattern()} or {@linkplain #getDateTimePattern()} depending on its date type.  In the case of panels with a date picker, the pattern will be dynamically adjusted so that it can be used by the <a href="https://github.com/Eonasdan/bootstrap-datetimepicker">Bootstrap Datetime Picker</a> component (which uses <a href="http://momentjs.com/docs/#/parsing/string-format/">Moment.js formats</a>, rather than those of regular Java code).
 
 | isis.viewer.wicket. +
 date-picker.max-date
diff --git a/core/config/src/main/adoc/modules/config/examples/generated/resteasy.adoc b/core/config/src/main/adoc/modules/config/examples/generated/resteasy.adoc
index 8a8ac8b..644481d 100644
--- a/core/config/src/main/adoc/modules/config/examples/generated/resteasy.adoc
+++ b/core/config/src/main/adoc/modules/config/examples/generated/resteasy.adoc
@@ -6,15 +6,6 @@
 | 
 | 
 
-| resteasy.jaxrs.app. +
-registration
-| 
-| 
-
-| resteasy.jaxrs.default-path
-|  /restful
-|  Note that this is used rather than `resteasy.servlet.mapping.prefix</code> because there is _NO</i> implementation of {@link javax.ws.rs.core.Application}, so we rely on it being automatically created.
-
 | resteasy.resteasy-settings
 | 
 | 


[isis] 28/36: ISIS-2264: isis.value.format.date -> ALSO TO: isis.value-types.joda.date-time.format

Posted by da...@apache.org.
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 3449f94883509db65d5cd3cd6b345d8fe8ea9b0e
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Fri Jan 17 01:30:02 2020 +0100

    ISIS-2264: isis.value.format.date -> ALSO TO: isis.value-types.joda.date-time.format
---
 .../modules/mignotes/pages/migrating-to-2.0.0.adoc    |  2 ++
 .../apache/isis/core/config/IsisConfiguration.java    |  7 ++++++-
 .../JodaDateTimeValueSemanticsProvider.java           | 19 +++++++------------
 3 files changed, 15 insertions(+), 13 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 b230f95..855cfa5 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
@@ -666,6 +666,8 @@ isis.value-types. +
 |isis.value-types. +
 {nbsp}{nbsp}java-sql.date.format
 
+isis.value-types. +
+{nbsp}{nbsp}joda.date-time.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 bf97fd9..67c375c 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
@@ -1240,7 +1240,7 @@ public class IsisConfiguration {
         private final JavaTime javaTime = new JavaTime();
         @Data
         public static class JavaTime {
-            private final Joda.LocalDateTime localDateTime = new Joda.LocalDateTime();
+            private final LocalDateTime localDateTime = new LocalDateTime();
             @Data
             public static class LocalDateTime {
                 private String format = "medium";
@@ -1276,6 +1276,11 @@ public class IsisConfiguration {
             private final LocalDateTime localDateTime = new LocalDateTime();
             @Data
             public static class LocalDateTime {
+            }
+            private final DateTime dateTime = new DateTime();
+            @Data
+            public static class DateTime {
+                // lower case
                 private String format = "medium";
             }
         }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/datetimejoda/JodaDateTimeValueSemanticsProvider.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/datetimejoda/JodaDateTimeValueSemanticsProvider.java
index a0f8fce..24bc9d5 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/datetimejoda/JodaDateTimeValueSemanticsProvider.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/datetimejoda/JodaDateTimeValueSemanticsProvider.java
@@ -51,8 +51,7 @@ public class JodaDateTimeValueSemanticsProvider extends ValueSemanticsProviderAb
         FORMATS.put("medium", DateFormat.getDateInstance(DateFormat.MEDIUM));
     }
 
-    @Getter
-    @Setter
+    @Getter @Setter
     private String configuredFormat;
 
     /**
@@ -67,20 +66,16 @@ public class JodaDateTimeValueSemanticsProvider extends ValueSemanticsProviderAb
             final FacetHolder holder) {
         super("date", type(), holder, DateTime.class, 12, Immutability.IMMUTABLE, EqualByContent.HONOURED, null);
 
-        configuredFormat = getConfiguration().getValue().getFormat().getOrDefault("date", "medium").toLowerCase().trim();
-
-        buildFormat(configuredFormat);
-
-        String formatRequired = getConfiguration().getValue().getFormat().get("date");
-
-        if (formatRequired == null) {
-            format = formats().get("medium");
-        } else {
-            setMask(formatRequired); //TODO fails when using format names eg 'medium'
+        final Map<String, DateFormat> formats = formats();
+        configuredFormat = getConfiguration().getValueTypes().getJoda().getDateTime().getFormat();
+        format = formats.get(configuredFormat);
+        if (format == null) {
+            setMask(configuredFormat);
         }
     }
 
 
+
     // //////////////////////////////////////////////////////////////////
     // temporal-specific stuff
     // //////////////////////////////////////////////////////////////////


[isis] 13/36: ISIS-2264: isis.value.format["datetime"] -> isis.value-types.joda.local-date-time.format

Posted by da...@apache.org.
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 c61f6a8174d651bd31c9c6b2569266697b424fb9
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Thu Jan 16 23:33:57 2020 +0100

    ISIS-2264: isis.value.format["datetime"] -> isis.value-types.joda.local-date-time.format
---
 .../components/toc/modules/mignotes/pages/migrating-to-2.0.0.adoc | 4 ++++
 .../main/java/org/apache/isis/core/config/IsisConfiguration.java  | 8 +++++---
 .../JodaLocalDateTimeValueSemanticsProvider.java                  | 2 +-
 3 files changed, 10 insertions(+), 4 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 bf2af81..9f1da5b 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
@@ -652,6 +652,10 @@ isis.value-types. +
 |isis.legacy.value-types. +
 {nbsp}{nbsp}percentage.format
 
+|isis.value.format["datetime"]
+|isis.value-types. +
+{nbsp}{nbsp}joda.local-date-time.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 2d35f48..6269d8e 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,7 +1251,11 @@ public class IsisConfiguration {
         private final Joda joda = new Joda();
         @Data
         public static class Joda {
-
+            private final LocalDateTime localDateTime = new LocalDateTime();
+            @Data
+            public static class LocalDateTime {
+                private String format = "medium";
+            }
         }
     }
 
@@ -1300,8 +1304,6 @@ public class IsisConfiguration {
             DATE, 
             TIMESTAMP, 
             TIME,
-            
-            PERCENTAGE
         }
         
         public String getFormatOrElse(FormatIdentifier formatIdentifier, String defaultFormat) {
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 909a922..77bd9b8 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
@@ -133,7 +133,7 @@ implements JodaLocalDateTimeValueFacet {
         super(type(), holder, LocalDateTime.class, TYPICAL_LENGTH, MAX_LENGTH, Immutability.IMMUTABLE, EqualByContent.HONOURED, DEFAULT_VALUE);
 
         String configuredNameOrPattern = getConfiguration()
-                .getValue().getFormatOrElse(FormatIdentifier.DATETIME, "medium");
+                .getValueTypes().getJoda().getLocalDateTime().getFormat();
         updateTitleStringFormatter(configuredNameOrPattern);
     }
 


[isis] 26/36: ISIS-2264: further simplifications of temporal VSP's

Posted by da...@apache.org.
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 9f1eb16f379f81ddd0c1286c090c6a2aca0ebdf2
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Fri Jan 17 01:23:55 2020 +0100

    ISIS-2264: further simplifications of temporal VSP's
---
 .../value/ValueSemanticsProviderAbstractTemporal.java      | 12 ++----------
 .../datetimejoda/JodaDateTimeValueSemanticsProvider.java   | 14 +++-----------
 .../JavaSqlTimeStampValueSemanticsProvider.java            |  7 +------
 3 files changed, 6 insertions(+), 27 deletions(-)

diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/ValueSemanticsProviderAbstractTemporal.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/ValueSemanticsProviderAbstractTemporal.java
index 8034053..0c96ee8 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/ValueSemanticsProviderAbstractTemporal.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/ValueSemanticsProviderAbstractTemporal.java
@@ -321,11 +321,6 @@ implements DateValueFacet {
         return getObjectManager().adapt(setDate(date));
     }
 
-
-    // //////////////////////////////////////////////////////////////////
-    // temporal-specific stuff
-    // //////////////////////////////////////////////////////////////////
-
     protected abstract T add(T original, int years, int months, int days, int hours, int minutes);
 
     protected void clearFields(final Calendar cal) {
@@ -349,11 +344,8 @@ implements DateValueFacet {
         format.setLenient(false);
     }
 
-    protected boolean isEmpty() {
-        return false;
-    }
-
-    @Override public void appendAttributesTo(final Map<String, Object> attributeMap) {
+    @Override
+    public void appendAttributesTo(final Map<String, Object> attributeMap) {
         super.appendAttributesTo(attributeMap);
         attributeMap.put("propertyType", propertyType);
     }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/datetimejoda/JodaDateTimeValueSemanticsProvider.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/datetimejoda/JodaDateTimeValueSemanticsProvider.java
index 312e2cf..a0f8fce 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/datetimejoda/JodaDateTimeValueSemanticsProvider.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/datetimejoda/JodaDateTimeValueSemanticsProvider.java
@@ -35,7 +35,6 @@ import org.apache.isis.applib.adapters.EncoderDecoder;
 import org.apache.isis.applib.adapters.EncodingException;
 import org.apache.isis.applib.adapters.Parser;
 import org.apache.isis.core.commons.internal.collections._Maps;
-import org.apache.isis.core.config.IsisConfiguration;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.value.ValueSemanticsProviderAbstractTemporal;
 
@@ -64,12 +63,9 @@ public class JodaDateTimeValueSemanticsProvider extends ValueSemanticsProviderAb
         this(null);
     }
 
-    public JodaDateTimeValueSemanticsProvider(final FacetHolder holder) {
-        this(holder, null);
-    }
-
-    private JodaDateTimeValueSemanticsProvider(final FacetHolder holder, final DateTime defaultValue) {
-        this("date", holder, defaultValue);
+    public JodaDateTimeValueSemanticsProvider(
+            final FacetHolder holder) {
+        super("date", type(), holder, DateTime.class, 12, Immutability.IMMUTABLE, EqualByContent.HONOURED, null);
 
         configuredFormat = getConfiguration().getValue().getFormat().getOrDefault("date", "medium").toLowerCase().trim();
 
@@ -84,10 +80,6 @@ public class JodaDateTimeValueSemanticsProvider extends ValueSemanticsProviderAb
         }
     }
 
-    private JodaDateTimeValueSemanticsProvider(
-            final String propertyType, final FacetHolder holder, final DateTime defaultValue) {
-        super(propertyType, type(), holder, DateTime.class, 12, Immutability.IMMUTABLE, EqualByContent.HONOURED, defaultValue);
-    }
 
     // //////////////////////////////////////////////////////////////////
     // temporal-specific stuff
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 3404b8b..2b62cad 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
@@ -31,7 +31,6 @@ import java.util.TimeZone;
 import org.apache.isis.applib.adapters.EncoderDecoder;
 import org.apache.isis.applib.adapters.Parser;
 import org.apache.isis.core.commons.internal.collections._Maps;
-import org.apache.isis.core.config.IsisConfiguration;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.object.parseable.InvalidEntryException;
 import org.apache.isis.core.metamodel.facets.properties.defaults.PropertyDefaultFacet;
@@ -62,7 +61,7 @@ extends ValueSemanticsProviderAbstractTemporal<Timestamp> {
 
     @SuppressWarnings("unchecked")
     public JavaSqlTimeStampValueSemanticsProvider(final FacetHolder holder) {
-        this(IsisConfiguration.Value.FormatIdentifier.TIMESTAMP, holder, 25, Immutability.NOT_IMMUTABLE, EqualByContent.NOT_HONOURED, null);
+        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();
 
@@ -77,10 +76,6 @@ extends ValueSemanticsProviderAbstractTemporal<Timestamp> {
         }
     }
 
-    private JavaSqlTimeStampValueSemanticsProvider(final IsisConfiguration.Value.FormatIdentifier formatIdentifier, final FacetHolder holder, final int typicalLength, final Immutability immutability, final EqualByContent equalByContent, final Timestamp defaultValue) {
-        super(formatIdentifier.name().toLowerCase(), type(), holder, java.sql.Timestamp.class, typicalLength, immutability, equalByContent, defaultValue);
-    }
-
     @Override
     protected Timestamp add(final Timestamp original, final int years, final int months, final int days, final int hours, final int minutes) {
         return original;


[isis] 25/36: ISIS-2264: removes ValueSemanticsProviderAbstractTemporal#defaultFormat

Posted by da...@apache.org.
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 3d26698406556bd0a3d7800c300fb54aaa65cde9
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Fri Jan 17 01:06:06 2020 +0100

    ISIS-2264: removes ValueSemanticsProviderAbstractTemporal#defaultFormat
---
 .../facets/value/ValueSemanticsProviderAbstractTemporal.java     | 2 --
 .../facets/value/datesql/JavaSqlDateValueSemanticsProvider.java  | 6 +-----
 .../value/datetimejoda/JodaDateTimeValueSemanticsProvider.java   | 7 +------
 .../value/dateutil/JavaUtilDateValueSemanticsProvider.java       | 7 +------
 .../facets/value/timesql/JavaSqlTimeValueSemanticsProvider.java  | 7 +------
 .../timestampsql/JavaSqlTimeStampValueSemanticsProvider.java     | 9 +--------
 .../facets/value/JavaSqlDateValueSemanticsProviderTest.java      | 4 ----
 .../facets/value/JavaUtilDateValueSemanticsProviderTest.java     | 4 ----
 8 files changed, 5 insertions(+), 41 deletions(-)

diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/ValueSemanticsProviderAbstractTemporal.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/ValueSemanticsProviderAbstractTemporal.java
index ce3fca9..8034053 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/ValueSemanticsProviderAbstractTemporal.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/ValueSemanticsProviderAbstractTemporal.java
@@ -333,8 +333,6 @@ implements DateValueFacet {
 
     protected abstract Date dateValue(Object value);
 
-    protected abstract String defaultFormat();
-
     protected abstract Map<String, DateFormat> formats();
 
     protected boolean ignoreTimeZone() {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/datesql/JavaSqlDateValueSemanticsProvider.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/datesql/JavaSqlDateValueSemanticsProvider.java
index 8bf1a62..2bdbeb6 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/datesql/JavaSqlDateValueSemanticsProvider.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/datesql/JavaSqlDateValueSemanticsProvider.java
@@ -77,7 +77,7 @@ public class JavaSqlDateValueSemanticsProvider extends ValueSemanticsProviderAbs
 
         final String formatRequired = getConfiguration().getValue().getFormat().get("date");
         if (formatRequired == null) {
-            format = formats().get(defaultFormat());
+            format = formats().get("medium");
         } else {
             setMask(formatRequired); //TODO fails when using format names eg 'medium'
         }
@@ -97,10 +97,6 @@ public class JavaSqlDateValueSemanticsProvider extends ValueSemanticsProviderAbs
         cal.set(Calendar.MILLISECOND, 0);
     }
 
-    @Override
-    protected String defaultFormat() {
-        return "medium";
-    }
 
     @Override
     protected boolean ignoreTimeZone() {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/datetimejoda/JodaDateTimeValueSemanticsProvider.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/datetimejoda/JodaDateTimeValueSemanticsProvider.java
index 929778e..312e2cf 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/datetimejoda/JodaDateTimeValueSemanticsProvider.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/datetimejoda/JodaDateTimeValueSemanticsProvider.java
@@ -78,7 +78,7 @@ public class JodaDateTimeValueSemanticsProvider extends ValueSemanticsProviderAb
         String formatRequired = getConfiguration().getValue().getFormat().get("date");
 
         if (formatRequired == null) {
-            format = formats().get(defaultFormat());
+            format = formats().get("medium");
         } else {
             setMask(formatRequired); //TODO fails when using format names eg 'medium'
         }
@@ -104,11 +104,6 @@ public class JodaDateTimeValueSemanticsProvider extends ValueSemanticsProviderAb
     }
 
     @Override
-    protected String defaultFormat() {
-        return "medium";
-    }
-
-    @Override
     protected boolean ignoreTimeZone() {
         return true;
     }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/dateutil/JavaUtilDateValueSemanticsProvider.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/dateutil/JavaUtilDateValueSemanticsProvider.java
index 73ae34e..4519a6a 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/dateutil/JavaUtilDateValueSemanticsProvider.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/dateutil/JavaUtilDateValueSemanticsProvider.java
@@ -79,7 +79,7 @@ public class JavaUtilDateValueSemanticsProvider extends ValueSemanticsProviderAb
         final String formatRequired = getConfiguration().getValue().getFormat().get("datetime");
 
         if (formatRequired == null) {
-            format = formats().get(defaultFormat());
+            format = formats().get("medium");
         } else {
             setMask(formatRequired);
         }
@@ -91,11 +91,6 @@ public class JavaUtilDateValueSemanticsProvider extends ValueSemanticsProviderAb
     // //////////////////////////////////////////////////////////////////
 
     @Override
-    protected String defaultFormat() {
-        return "medium";
-    }
-
-    @Override
     protected Map<String, DateFormat> formats() {
         return formats;
     }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/timesql/JavaSqlTimeValueSemanticsProvider.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/timesql/JavaSqlTimeValueSemanticsProvider.java
index 0a5539c..6291de1 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/timesql/JavaSqlTimeValueSemanticsProvider.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/timesql/JavaSqlTimeValueSemanticsProvider.java
@@ -69,7 +69,7 @@ public class JavaSqlTimeValueSemanticsProvider extends ValueSemanticsProviderAbs
 
         final String formatRequired = getConfiguration().getValue().getFormat().get("time");
         if (formatRequired == null) {
-            format = formats().get(defaultFormat());
+            format = formats().get("short");
         } else {
             setMask(formatRequired);
         }
@@ -83,11 +83,6 @@ public class JavaSqlTimeValueSemanticsProvider extends ValueSemanticsProviderAbs
     }
 
     @Override
-    protected String defaultFormat() {
-        return "short";
-    }
-
-    @Override
     public String toString() {
         return "TimeValueSemanticsProvider: " + format;
     }
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 620b516..3404b8b 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
@@ -43,8 +43,6 @@ import lombok.Setter;
 public class JavaSqlTimeStampValueSemanticsProvider
 extends ValueSemanticsProviderAbstractTemporal<Timestamp> {
 
-    private static final Object DEFAULT_VALUE = null; // no default
-    private static final int TYPICAL_LENGTH = 25;
 
     protected static void initFormats(final Map<String, DateFormat> formats) {
         formats.put(ISO_ENCODING_FORMAT, createDateEncodingFormat("yyyyMMdd'T'HHmmssSSS"));
@@ -73,7 +71,7 @@ extends ValueSemanticsProviderAbstractTemporal<Timestamp> {
         final String formatRequired = getConfiguration().getValue().getFormat().get("timestamp");
 
         if (formatRequired == null) {
-            format = formats().get(defaultFormat());
+            format = formats().get("short");
         } else {
             setMask(formatRequired);
         }
@@ -89,11 +87,6 @@ extends ValueSemanticsProviderAbstractTemporal<Timestamp> {
     }
 
     @Override
-    protected String defaultFormat() {
-        return "short";
-    }
-
-    @Override
     public String toString() {
         return "TimeStampValueSemanticsProvider: " + format;
     }
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/JavaSqlDateValueSemanticsProviderTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/JavaSqlDateValueSemanticsProviderTest.java
index 8a555b3..c2c1fa9 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/JavaSqlDateValueSemanticsProviderTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/JavaSqlDateValueSemanticsProviderTest.java
@@ -55,10 +55,6 @@ public class JavaSqlDateValueSemanticsProviderTest extends ValueSemanticsProvide
         ((MetaModelContextAware)holder).setMetaModelContext(super.metaModelContext);
         
         setValue(adapter = new JavaSqlDateValueSemanticsProvider(holder) {
-            @Override
-            protected String defaultFormat() {
-                return "iso";
-            }
         });
     }
 
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/JavaUtilDateValueSemanticsProviderTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/JavaUtilDateValueSemanticsProviderTest.java
index c981cf2..1b71aaf 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/JavaUtilDateValueSemanticsProviderTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/JavaUtilDateValueSemanticsProviderTest.java
@@ -54,10 +54,6 @@ public class JavaUtilDateValueSemanticsProviderTest extends ValueSemanticsProvid
         ((MetaModelContextAware)holder).setMetaModelContext(super.metaModelContext);
         
         setValue(new JavaUtilDateValueSemanticsProvider(holder) {
-            @Override
-            protected String defaultFormat() {
-                return "iso";
-            }
         });
     }
 


[isis] 16/36: ISIS-2264: moves configuredFormat (also propertyType) to subclasses of ValueSemanticsProviderAbstractTemporal

Posted by da...@apache.org.
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 f9f3be9cc7ed66ca2d8c98efee3c25288eaebe6d
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Fri Jan 17 00:03:04 2020 +0100

    ISIS-2264: moves configuredFormat (also propertyType) to subclasses of ValueSemanticsProviderAbstractTemporal
---
 .../DateAndTimeValueSemanticsProviderAbstract.java | 20 ++++++++++++++++++-
 .../ValueSemanticsProviderAbstractTemporal.java    | 23 ++++++++++------------
 .../date/DateValueSemanticsProviderAbstract.java   | 20 ++++++++++++++++++-
 ...JodaDateTimeValueSemanticsProviderAbstract.java | 18 ++++++++++++++++-
 .../time/TimeValueSemanticsProviderAbstract.java   | 20 ++++++++++++++++++-
 .../TimeStampValueSemanticsProviderAbstract.java   | 20 ++++++++++++++++++-
 6 files changed, 103 insertions(+), 18 deletions(-)

diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/DateAndTimeValueSemanticsProviderAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/DateAndTimeValueSemanticsProviderAbstract.java
index b42dc5f..adc10ad 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/DateAndTimeValueSemanticsProviderAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/DateAndTimeValueSemanticsProviderAbstract.java
@@ -30,6 +30,9 @@ 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.FacetHolder;
 
+import lombok.Getter;
+import lombok.Setter;
+
 public abstract class DateAndTimeValueSemanticsProviderAbstract<T> 
 extends ValueSemanticsProviderAbstractTemporal<T> {
 
@@ -44,9 +47,18 @@ extends ValueSemanticsProviderAbstractTemporal<T> {
     private static final Object DEFAULT_VALUE = null; // no default
     private static final int TYPICAL_LENGTH = 18;
 
+    @Getter @Setter
+    private String configuredFormat;
+
+
     @SuppressWarnings("unchecked")
     public DateAndTimeValueSemanticsProviderAbstract(final FacetHolder holder, final Class<T> adaptedClass, final Immutability immutability, final EqualByContent equalByContent) {
-        super(FormatIdentifier.DATETIME, holder, adaptedClass, TYPICAL_LENGTH, immutability, equalByContent, (T) DEFAULT_VALUE);
+        super(FormatIdentifier.DATETIME, FormatIdentifier.DATETIME.name().toLowerCase(), holder, adaptedClass, TYPICAL_LENGTH, immutability, equalByContent, (T) DEFAULT_VALUE);
+
+        configuredFormat = getConfiguration()
+                .getValue().getFormat().getOrDefault(FormatIdentifier.DATETIME.name().toLowerCase(), defaultFormat()).toLowerCase().trim();
+
+        buildFormat(configuredFormat);
 
         final String formatRequired = getConfiguration()
                 .getValue().getFormat().getOrDefault(FormatIdentifier.DATETIME.name().toLowerCase(), null);
@@ -113,4 +125,10 @@ extends ValueSemanticsProviderAbstractTemporal<T> {
         return formats;
     }
 
+    @Override
+    public void appendAttributesTo(Map<String, Object> attributeMap) {
+        super.appendAttributesTo(attributeMap);
+        attributeMap.put("configuredFormat", configuredFormat);
+    }
+
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/ValueSemanticsProviderAbstractTemporal.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/ValueSemanticsProviderAbstractTemporal.java
index 8c47763..9db345d 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/ValueSemanticsProviderAbstractTemporal.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/ValueSemanticsProviderAbstractTemporal.java
@@ -95,29 +95,24 @@ implements DateValueFacet {
 
     private final DateFormat encodingFormat;
     protected DateFormat format;
-    private String configuredFormat;
     private String propertyType;
 
     /**
      * Uses {@link #type()} as the facet type.
      */
-    public ValueSemanticsProviderAbstractTemporal(final FormatIdentifier formatIdentifier, final FacetHolder holder, final Class<T> adaptedClass, final int typicalLength, final Immutability immutability, final EqualByContent equalByContent, final T defaultValue) {
-        this(formatIdentifier, type(), holder, adaptedClass, typicalLength, immutability, equalByContent, defaultValue);
+    public ValueSemanticsProviderAbstractTemporal(final FormatIdentifier formatIdentifier, String propertyType, final FacetHolder holder, final Class<T> adaptedClass, final int typicalLength, final Immutability immutability, final EqualByContent equalByContent, final T defaultValue) {
+        this(formatIdentifier, propertyType, type(), holder, adaptedClass, typicalLength, immutability, equalByContent, defaultValue);
     }
 
     /**
      * Allows the specific facet subclass to be specified (rather than use
      * {@link #type()}.
      */
-    public ValueSemanticsProviderAbstractTemporal(final FormatIdentifier formatIdentifier, final Class<? extends Facet> facetType, final FacetHolder holder, final Class<T> adaptedClass, final int typicalLength, final Immutability immutability, final EqualByContent equalByContent, final T defaultValue) {
+    public ValueSemanticsProviderAbstractTemporal(final FormatIdentifier formatIdentifier, String propertyType, final Class<? extends Facet> facetType, final FacetHolder holder, final Class<T> adaptedClass, final int typicalLength, final Immutability immutability, final EqualByContent equalByContent, final T defaultValue) {
         super(facetType, holder, adaptedClass, typicalLength, -1, immutability, equalByContent, defaultValue);
         configureFormats();
 
-        this.propertyType = formatIdentifier.name().toLowerCase();
-        configuredFormat = getConfiguration()
-                .getValue().getFormat().getOrDefault(formatIdentifier.name().toLowerCase(), defaultFormat()).toLowerCase().trim();
-               
-        buildFormat(configuredFormat);
+        this.propertyType = propertyType;
 
         encodingFormat = formats().get(ISO_ENCODING_FORMAT);
     }
@@ -136,15 +131,18 @@ implements DateValueFacet {
     protected void buildDefaultFormatIfRequired() {
         final Map<String, String> map = FORMATS.get();
         final String currentlyConfiguredFormat = map.get(propertyType);
-        if (currentlyConfiguredFormat == null || configuredFormat.equals(currentlyConfiguredFormat)) {
+        if (currentlyConfiguredFormat == null || getConfiguredFormat().equals(currentlyConfiguredFormat)) {
             return;
         }
 
         // (re)create format
-        configuredFormat = currentlyConfiguredFormat;
-        buildFormat(configuredFormat);
+        setConfiguredFormat(currentlyConfiguredFormat);
+        buildFormat(getConfiguredFormat());
     }
 
+    protected abstract String getConfiguredFormat();
+    protected abstract void setConfiguredFormat(final String configuredFormat);
+
     protected void buildFormat(final String configuredFormat) {
         final Map<String, DateFormat> formats = formats();
         format = formats.get(configuredFormat);
@@ -367,7 +365,6 @@ implements DateValueFacet {
 
     @Override public void appendAttributesTo(final Map<String, Object> attributeMap) {
         super.appendAttributesTo(attributeMap);
-        attributeMap.put("configuredFormat", configuredFormat);
         attributeMap.put("propertyType", propertyType);
     }
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/date/DateValueSemanticsProviderAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/date/DateValueSemanticsProviderAbstract.java
index de706b1..174122e 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/date/DateValueSemanticsProviderAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/date/DateValueSemanticsProviderAbstract.java
@@ -31,6 +31,9 @@ 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.ValueSemanticsProviderAbstractTemporal;
 
+import lombok.Getter;
+import lombok.Setter;
+
 public abstract class DateValueSemanticsProviderAbstract<T> extends ValueSemanticsProviderAbstractTemporal<T> {
 
     private static Map<String, DateFormat> formats = _Maps.newHashMap();
@@ -41,8 +44,16 @@ public abstract class DateValueSemanticsProviderAbstract<T> extends ValueSemanti
         formats.put("medium", DateFormat.getDateInstance(DateFormat.MEDIUM));
     }
 
+    @Getter @Setter
+    private String configuredFormat;
+
     public DateValueSemanticsProviderAbstract(final FacetHolder holder, final Class<T> adaptedClass, final Immutability immutability, final EqualByContent equalByContent, final T defaultValue) {
-        super(FormatIdentifier.DATE, holder, adaptedClass, 12, immutability, equalByContent, defaultValue);
+        super(FormatIdentifier.DATE, FormatIdentifier.DATE.name().toLowerCase(), holder, adaptedClass, 12, immutability, equalByContent, defaultValue);
+
+        configuredFormat = getConfiguration()
+                .getValue().getFormat().getOrDefault(FormatIdentifier.DATE.name().toLowerCase(), defaultFormat()).toLowerCase().trim();
+
+        buildFormat(configuredFormat);
 
         final String formatRequired = getConfiguration().getValue().getFormat().getOrDefault(FormatIdentifier.DATE.name().toLowerCase(), null);
         
@@ -51,6 +62,8 @@ public abstract class DateValueSemanticsProviderAbstract<T> extends ValueSemanti
         } else {
             setMask(formatRequired); //TODO fails when using format names eg 'medium'
         }
+
+
     }
 
     // //////////////////////////////////////////////////////////////////
@@ -117,4 +130,9 @@ public abstract class DateValueSemanticsProviderAbstract<T> extends ValueSemanti
         return formats;
     }
 
+    @Override
+    public void appendAttributesTo(Map<String, Object> attributeMap) {
+        super.appendAttributesTo(attributeMap);
+        attributeMap.put("configuredFormat", configuredFormat);
+    }
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/datetimejoda/JodaDateTimeValueSemanticsProviderAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/datetimejoda/JodaDateTimeValueSemanticsProviderAbstract.java
index bb016bd..513008f 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/datetimejoda/JodaDateTimeValueSemanticsProviderAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/datetimejoda/JodaDateTimeValueSemanticsProviderAbstract.java
@@ -31,6 +31,9 @@ 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.ValueSemanticsProviderAbstractTemporal;
 
+import lombok.Getter;
+import lombok.Setter;
+
 public abstract class JodaDateTimeValueSemanticsProviderAbstract<T> extends ValueSemanticsProviderAbstractTemporal<T> {
 
     private static final Map<String, DateFormat> FORMATS = _Maps.newHashMap();
@@ -41,8 +44,16 @@ public abstract class JodaDateTimeValueSemanticsProviderAbstract<T> extends Valu
         FORMATS.put("medium", DateFormat.getDateInstance(DateFormat.MEDIUM));
     }
 
+    @Getter @Setter
+    private String configuredFormat;
+
     public JodaDateTimeValueSemanticsProviderAbstract(final FacetHolder holder, final Class<T> adaptedClass, final T defaultValue) {
-        super(FormatIdentifier.DATE, holder, adaptedClass, 12, Immutability.IMMUTABLE, EqualByContent.HONOURED, defaultValue);
+        super(FormatIdentifier.DATE, FormatIdentifier.DATE.name().toLowerCase(), holder, adaptedClass, 12, Immutability.IMMUTABLE, EqualByContent.HONOURED, defaultValue);
+
+        configuredFormat = getConfiguration()
+                .getValue().getFormat().getOrDefault(FormatIdentifier.DATE.name().toLowerCase(), defaultFormat()).toLowerCase().trim();
+
+        buildFormat(configuredFormat);
 
         String formatRequired = getConfiguration()
                 .getValue().getFormat().getOrDefault(FormatIdentifier.DATE.name().toLowerCase(), null);
@@ -118,4 +129,9 @@ public abstract class JodaDateTimeValueSemanticsProviderAbstract<T> extends Valu
         return formats;
     }
 
+    @Override
+    public void appendAttributesTo(Map<String, Object> attributeMap) {
+        super.appendAttributesTo(attributeMap);
+        attributeMap.put("configuredFormat", configuredFormat);
+    }
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/time/TimeValueSemanticsProviderAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/time/TimeValueSemanticsProviderAbstract.java
index 1338340..5fc3d67 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/time/TimeValueSemanticsProviderAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/time/TimeValueSemanticsProviderAbstract.java
@@ -30,6 +30,9 @@ 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.ValueSemanticsProviderAbstractTemporal;
 
+import lombok.Getter;
+import lombok.Setter;
+
 public abstract class TimeValueSemanticsProviderAbstract<T> 
 extends ValueSemanticsProviderAbstractTemporal<T> {
 
@@ -41,9 +44,17 @@ extends ValueSemanticsProviderAbstractTemporal<T> {
         formats.put("short", DateFormat.getTimeInstance(DateFormat.SHORT));
     }
 
+    @Getter @Setter
+    private String configuredFormat;
+
     @SuppressWarnings("unchecked")
     public TimeValueSemanticsProviderAbstract(final FacetHolder holder, final Class<T> adaptedClass) {
-        super(FormatIdentifier.TIME, holder, adaptedClass, TYPICAL_LENGTH, Immutability.NOT_IMMUTABLE, EqualByContent.NOT_HONOURED, (T) DEFAULT_VALUE);
+        super(FormatIdentifier.TIME, FormatIdentifier.TIME.name().toLowerCase(), holder, adaptedClass, TYPICAL_LENGTH, Immutability.NOT_IMMUTABLE, EqualByContent.NOT_HONOURED, (T) DEFAULT_VALUE);
+
+        configuredFormat = getConfiguration()
+                .getValue().getFormat().getOrDefault(FormatIdentifier.TIME.name().toLowerCase(), defaultFormat()).toLowerCase().trim();
+
+        buildFormat(configuredFormat);
 
         final String formatRequired = getConfiguration()
                 .getValue().getFormat().getOrDefault(FormatIdentifier.TIME.name().toLowerCase(), null);
@@ -108,4 +119,11 @@ extends ValueSemanticsProviderAbstractTemporal<T> {
 
         return formats;
     }
+
+    @Override
+    public void appendAttributesTo(Map<String, Object> attributeMap) {
+        super.appendAttributesTo(attributeMap);
+        attributeMap.put("configuredFormat", configuredFormat);
+    }
+
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/timestampsql/TimeStampValueSemanticsProviderAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/timestampsql/TimeStampValueSemanticsProviderAbstract.java
index 783f741..af34f1b 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/timestampsql/TimeStampValueSemanticsProviderAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/timestampsql/TimeStampValueSemanticsProviderAbstract.java
@@ -30,6 +30,9 @@ 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.ValueSemanticsProviderAbstractTemporal;
 
+import lombok.Getter;
+import lombok.Setter;
+
 abstract class TimeStampValueSemanticsProviderAbstract<T> extends ValueSemanticsProviderAbstractTemporal<T> {
 
     private static final Object DEFAULT_VALUE = null; // no default
@@ -40,9 +43,17 @@ abstract class TimeStampValueSemanticsProviderAbstract<T> extends ValueSemantics
         formats.put("short", DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.LONG));
     }
 
+    @Getter @Setter
+    private String configuredFormat;
+
     @SuppressWarnings("unchecked")
     public TimeStampValueSemanticsProviderAbstract(final FacetHolder holder, final Class<T> adaptedClass) {
-        super(FormatIdentifier.TIMESTAMP, holder, adaptedClass, TYPICAL_LENGTH, Immutability.NOT_IMMUTABLE, EqualByContent.NOT_HONOURED, (T) DEFAULT_VALUE);
+        super(FormatIdentifier.TIMESTAMP, FormatIdentifier.TIMESTAMP.name().toLowerCase(), holder, adaptedClass, TYPICAL_LENGTH, Immutability.NOT_IMMUTABLE, EqualByContent.NOT_HONOURED, (T) DEFAULT_VALUE);
+
+        configuredFormat = getConfiguration()
+                .getValue().getFormat().getOrDefault(FormatIdentifier.TIMESTAMP.name().toLowerCase(), defaultFormat()).toLowerCase().trim();
+
+        buildFormat(configuredFormat);
 
         final String formatRequired = getConfiguration()
                 .getValue().getFormat().getOrDefault(FormatIdentifier.TIMESTAMP.name().toLowerCase(), null);
@@ -98,4 +109,11 @@ abstract class TimeStampValueSemanticsProviderAbstract<T> extends ValueSemantics
 
         return formats;
     }
+
+    @Override
+    public void appendAttributesTo(Map<String, Object> attributeMap) {
+        super.appendAttributesTo(attributeMap);
+        attributeMap.put("configuredFormat", configuredFormat);
+    }
+
 }


[isis] 23/36: ISIS-2264: inlines DateValueSemanticsProviderAbstract down into its subclass, JavaSqlDateValueSemanticsProvider

Posted by da...@apache.org.
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 a107f9f3f4629415ba6c0e7075f67d73c1551999
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Fri Jan 17 00:54:54 2020 +0100

    ISIS-2264: inlines DateValueSemanticsProviderAbstract down into its subclass, JavaSqlDateValueSemanticsProvider
---
 .../date/DateValueSemanticsProviderAbstract.java   | 136 ---------------------
 .../datesql/JavaSqlDateValueSemanticsProvider.java | 116 +++++++++++++++++-
 2 files changed, 112 insertions(+), 140 deletions(-)

diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/date/DateValueSemanticsProviderAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/date/DateValueSemanticsProviderAbstract.java
deleted file mode 100644
index 3be27c7..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/date/DateValueSemanticsProviderAbstract.java
+++ /dev/null
@@ -1,136 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-
-package org.apache.isis.core.metamodel.facets.value.date;
-
-import java.text.DateFormat;
-import java.util.ArrayList;
-import java.util.Calendar;
-import java.util.List;
-import java.util.Locale;
-import java.util.Map;
-
-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.FacetHolder;
-import org.apache.isis.core.metamodel.facets.value.ValueSemanticsProviderAbstractTemporal;
-
-import lombok.Getter;
-import lombok.Setter;
-
-public abstract class DateValueSemanticsProviderAbstract<T> extends ValueSemanticsProviderAbstractTemporal<T> {
-
-    private static Map<String, DateFormat> formats = _Maps.newHashMap();
-
-    static {
-        formats.put(ISO_ENCODING_FORMAT, createDateEncodingFormat("yyyyMMdd"));
-        formats.put("iso", createDateFormat("yyyy-MM-dd"));
-        formats.put("medium", DateFormat.getDateInstance(DateFormat.MEDIUM));
-    }
-
-    @Getter @Setter
-    private String configuredFormat;
-
-    public DateValueSemanticsProviderAbstract(final FormatIdentifier formatIdentifier, final FacetHolder holder, final Class<T> adaptedClass, final int typicalLength, final Immutability immutability, final EqualByContent equalByContent, final T defaultValue) {
-        super(formatIdentifier.name().toLowerCase(), type(), holder, adaptedClass, typicalLength, immutability, equalByContent, defaultValue);
-    }
-
-    public DateValueSemanticsProviderAbstract(final FacetHolder holder, final Class<T> adaptedClass, final Immutability immutability, final EqualByContent equalByContent, final T defaultValue) {
-        this(FormatIdentifier.DATE, holder, adaptedClass, 12, immutability, equalByContent, defaultValue);
-
-        configuredFormat = getConfiguration().getValue().getFormat().getOrDefault("date", "medium").toLowerCase().trim();
-
-        buildFormat(configuredFormat);
-
-        final String formatRequired = getConfiguration().getValue().getFormat().get("date");
-        if (formatRequired == null) {
-            format = formats().get(defaultFormat());
-        } else {
-            setMask(formatRequired); //TODO fails when using format names eg 'medium'
-        }
-
-
-    }
-
-    // //////////////////////////////////////////////////////////////////
-    // temporal-specific stuff
-    // //////////////////////////////////////////////////////////////////
-
-    @Override
-    protected void clearFields(final Calendar cal) {
-        cal.set(Calendar.HOUR, 0);
-        cal.set(Calendar.HOUR_OF_DAY, 0);
-        cal.set(Calendar.MINUTE, 0);
-        cal.set(Calendar.SECOND, 0);
-        cal.set(Calendar.AM_PM, 0);
-        cal.set(Calendar.MILLISECOND, 0);
-    }
-
-    @Override
-    protected String defaultFormat() {
-        return "medium";
-    }
-
-    @Override
-    protected boolean ignoreTimeZone() {
-        return true;
-    }
-
-    @Override
-    protected Map<String, DateFormat> formats() {
-        return formats;
-    }
-
-    @Override
-    public String toString() {
-        return "DateValueSemanticsProvider: " + format;
-    }
-
-    @Override
-    protected DateFormat format() {
-        final Locale locale = Locale.getDefault();
-        final DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.MEDIUM, locale);
-        dateFormat.setTimeZone(UTC_TIME_ZONE);
-        return dateFormat;
-    }
-
-    @Override
-    protected List<DateFormat> formatsToTry() {
-        List<DateFormat> formats = new ArrayList<DateFormat>();
-
-        Locale locale = Locale.getDefault();
-        formats.add(DateFormat.getDateInstance(DateFormat.LONG, locale));
-        formats.add(DateFormat.getDateInstance(DateFormat.MEDIUM, locale));
-        formats.add(DateFormat.getDateInstance(DateFormat.SHORT, locale));
-        formats.add(createDateFormat("yyyy-MM-dd"));
-        formats.add(createDateFormat("yyyyMMdd"));
-
-        for (DateFormat format : formats) {
-            format.setTimeZone(UTC_TIME_ZONE);
-        }
-
-        return formats;
-    }
-
-    @Override
-    public void appendAttributesTo(Map<String, Object> attributeMap) {
-        super.appendAttributesTo(attributeMap);
-        attributeMap.put("configuredFormat", configuredFormat);
-    }
-}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/datesql/JavaSqlDateValueSemanticsProvider.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/datesql/JavaSqlDateValueSemanticsProvider.java
index 1c9c9f2..8bf1a62 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/datesql/JavaSqlDateValueSemanticsProvider.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/datesql/JavaSqlDateValueSemanticsProvider.java
@@ -20,25 +20,45 @@
 package org.apache.isis.core.metamodel.facets.value.datesql;
 
 import java.sql.Date;
+import java.text.DateFormat;
+import java.util.ArrayList;
 import java.util.Calendar;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
 
 import org.apache.isis.applib.adapters.EncoderDecoder;
 import org.apache.isis.applib.adapters.Parser;
 import org.apache.isis.applib.clock.Clock;
+import org.apache.isis.core.commons.internal.collections._Maps;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.facets.value.date.DateValueSemanticsProviderAbstract;
+import org.apache.isis.core.metamodel.facets.value.ValueSemanticsProviderAbstractTemporal;
 import org.apache.isis.core.metamodel.facets.value.dateutil.JavaUtilDateValueSemanticsProvider;
 import org.apache.isis.core.metamodel.facets.value.timesql.JavaSqlTimeValueSemanticsProvider;
 
+import lombok.Getter;
+import lombok.Setter;
+
 /**
  * An adapter that handles {@link java.sql.Date} with only date component.
  *
  * @see JavaUtilDateValueSemanticsProvider
  * @see JavaSqlTimeValueSemanticsProvider
  */
-public class JavaSqlDateValueSemanticsProvider extends DateValueSemanticsProviderAbstract<Date> {
+public class JavaSqlDateValueSemanticsProvider extends ValueSemanticsProviderAbstractTemporal<Date> {
 
-    private static final Date DEFAULT_VALUE = null; // no default
+
+    private static Map<String, DateFormat> formats = _Maps.newHashMap();
+
+    static {
+        formats.put(ISO_ENCODING_FORMAT, createDateEncodingFormat("yyyyMMdd"));
+        formats.put("iso", createDateFormat("yyyy-MM-dd"));
+        formats.put("medium", DateFormat.getDateInstance(DateFormat.MEDIUM));
+    }
+
+    @Getter
+    @Setter
+    private String configuredFormat;
 
     /**
      * Required because implementation of {@link Parser} and
@@ -49,10 +69,98 @@ public class JavaSqlDateValueSemanticsProvider extends DateValueSemanticsProvide
     }
 
     public JavaSqlDateValueSemanticsProvider(final FacetHolder holder) {
-        super(holder, Date.class, Immutability.NOT_IMMUTABLE, EqualByContent.NOT_HONOURED, DEFAULT_VALUE);
+        super("date", type(), holder, Date.class, 12, Immutability.NOT_IMMUTABLE, EqualByContent.NOT_HONOURED, null);
+
+        configuredFormat = getConfiguration().getValue().getFormat().getOrDefault("date", "medium").toLowerCase().trim();
+
+        buildFormat(configuredFormat);
+
+        final String formatRequired = getConfiguration().getValue().getFormat().get("date");
+        if (formatRequired == null) {
+            format = formats().get(defaultFormat());
+        } else {
+            setMask(formatRequired); //TODO fails when using format names eg 'medium'
+        }
+    }
+
+    // //////////////////////////////////////////////////////////////////
+    // temporal-specific stuff
+    // //////////////////////////////////////////////////////////////////
+
+    @Override
+    protected void clearFields(final Calendar cal) {
+        cal.set(Calendar.HOUR, 0);
+        cal.set(Calendar.HOUR_OF_DAY, 0);
+        cal.set(Calendar.MINUTE, 0);
+        cal.set(Calendar.SECOND, 0);
+        cal.set(Calendar.AM_PM, 0);
+        cal.set(Calendar.MILLISECOND, 0);
+    }
+
+    @Override
+    protected String defaultFormat() {
+        return "medium";
+    }
+
+    @Override
+    protected boolean ignoreTimeZone() {
+        return true;
+    }
+
+    @Override
+    protected Map<String, DateFormat> formats() {
+        return formats;
+    }
+
+    @Override
+    public String toString() {
+        return "DateValueSemanticsProvider: " + format;
+    }
+
+    @Override
+    protected DateFormat format() {
+        final Locale locale = Locale.getDefault();
+        final DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.MEDIUM, locale);
+        dateFormat.setTimeZone(UTC_TIME_ZONE);
+        return dateFormat;
     }
 
     @Override
+    protected List<DateFormat> formatsToTry() {
+        List<DateFormat> formats = new ArrayList<DateFormat>();
+
+        Locale locale = Locale.getDefault();
+        formats.add(DateFormat.getDateInstance(DateFormat.LONG, locale));
+        formats.add(DateFormat.getDateInstance(DateFormat.MEDIUM, locale));
+        formats.add(DateFormat.getDateInstance(DateFormat.SHORT, locale));
+        formats.add(createDateFormat("yyyy-MM-dd"));
+        formats.add(createDateFormat("yyyyMMdd"));
+
+        for (DateFormat format : formats) {
+            format.setTimeZone(UTC_TIME_ZONE);
+        }
+
+        return formats;
+    }
+
+    @Override
+    public void appendAttributesTo(Map<String, Object> attributeMap) {
+        super.appendAttributesTo(attributeMap);
+        attributeMap.put("configuredFormat", configuredFormat);
+    }
+
+
+
+
+
+
+
+
+
+
+    private static final Date DEFAULT_VALUE = null; // no default
+
+    @Override
     protected Date add(final Date original, final int years, final int months, final int days, final int hours, final int minutes) {
         final Date date = original;
         final Calendar cal = Calendar.getInstance();


[isis] 35/36: ISIS-2264: fixes illegal char in comment

Posted by da...@apache.org.
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 3d752dd97fb3792ab7600c331b765b69074df16e
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Fri Jan 17 02:05:26 2020 +0100

    ISIS-2264: fixes illegal char in comment
---
 .../src/main/java/org/apache/isis/core/config/IsisConfiguration.java  | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

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 b88ced0..a9482af 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
@@ -18,7 +18,6 @@
  */
 package org.apache.isis.core.config;
 
-import java.time.OffsetDateTime;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
@@ -40,7 +39,6 @@ import org.springframework.validation.annotation.Validated;
 import org.apache.isis.applib.annotation.LabelPosition;
 import org.apache.isis.applib.annotation.PromptStyle;
 import org.apache.isis.applib.services.i18n.TranslationService;
-import org.apache.isis.core.commons.internal.base._Strings;
 import org.apache.isis.core.config.metamodel.facets.AuditObjectsConfiguration;
 import org.apache.isis.core.config.metamodel.facets.CommandActionsConfiguration;
 import org.apache.isis.core.config.metamodel.facets.CommandPropertiesConfiguration;
@@ -836,7 +834,7 @@ public class IsisConfiguration {
              * The pattern used for rendering and parsing dates.
              *
              * <p>
-             * Each Date scalar panel will use {@ #getDatePattern()} or {@linkplain #getDateTimePattern()} depending on its
+             * Each Date scalar panel will use {#getDatePattern()} or {@linkplain #getDateTimePattern()} depending on its
              * date type.  In the case of panels with a date picker, the pattern will be dynamically adjusted so that it can be
              * used by the <a href="https://github.com/Eonasdan/bootstrap-datetimepicker">Bootstrap Datetime Picker</a>
              * component (which uses <a href="http://momentjs.com/docs/#/parsing/string-format/">Moment.js formats</a>, rather


[isis] 05/36: ISIS-2264: isis.value.format["int"] -> isis.value-types.java-math.big-integer.format or isis.value-types.primitives.integer.format

Posted by da...@apache.org.
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 3ca9f15384046080b1328ae22bac59c90b9a12e8
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Thu Jan 16 22:56:55 2020 +0100

    ISIS-2264: isis.value.format["int"] -> isis.value-types.java-math.big-integer.format or isis.value-types.primitives.integer.format
---
 .../modules/mignotes/pages/migrating-to-2.0.0.adoc |  6 +++
 .../apache/isis/core/config/IsisConfiguration.java | 49 +++++++++++++++++++++-
 .../BigIntegerValueSemanticsProvider.java          |  3 +-
 .../integer/IntValueSemanticsProviderAbstract.java |  2 +-
 .../isis/testing/specsupport/applib/specs/V.java   |  2 +-
 5 files changed, 56 insertions(+), 6 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 e28a3cc..bc079c6 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
@@ -617,6 +617,12 @@ standalone-collection.bulk-load
 |isis.timezone
 |isis.core.runtime.timezone
 
+|isis.value.format["int"]
+|isis.value-types. +
+{nbsp}{nbsp}java-math.big-integer.format +
+
+isis.value-types. +
+{nbsp}{nbsp}primitives.integer.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 64f60b1..a50eaab 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
@@ -1164,12 +1164,57 @@ public class IsisConfiguration {
         }
     }
 
+    private final ValueTypes valueTypes = new ValueTypes();
+    @Data
+    public static class ValueTypes {
+
+        private final Primitives primitives = new Primitives();
+        @Data
+        public static class Primitives {
+
+            private final Integer integer = new Integer();
+            @Data
+            public static class Integer {
+                private String format;
+            }
+        }
+
+        private final JavaMath javaMath = new JavaMath();
+        @Data
+        public static class JavaMath {
+            private final BigInteger bigInteger = new BigInteger();
+            @Data
+            public static class BigInteger {
+                private String format;
+            }
+        }
+
+        private final JavaTime javaTime = new JavaTime();
+        @Data
+        public static class JavaTime {
+
+        }
+
+        private final JavaUtil javaUtil = new JavaUtil();
+        @Data
+        public static class JavaUtil {
+
+        }
+
+        private final Joda joda = new Joda();
+        @Data
+        public static class Joda {
+
+        }
+
+
+    }
 
     //TODO no meta data yet ... https://docs.spring.io/spring-boot/docs/current/reference/html/appendix-configuration-metadata.html#configuration-metadata-property-attributes
     private final Value value = new Value();
     @Data
     public static class Value {
-        
+
         private Map<String, String> format = new HashMap<>();
         
         public enum FormatIdentifier {
@@ -1196,7 +1241,7 @@ public class IsisConfiguration {
             TIMESTAMP, 
             TIME,
             
-            INT, DECIMAL, BYTE, DOUBLE, FLOAT, LONG, SHORT, 
+            DECIMAL, BYTE, DOUBLE, FLOAT, LONG, SHORT,
             PERCENTAGE
         }
         
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/biginteger/BigIntegerValueSemanticsProvider.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/biginteger/BigIntegerValueSemanticsProvider.java
index b1439a8..2a2af9c 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/biginteger/BigIntegerValueSemanticsProvider.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/biginteger/BigIntegerValueSemanticsProvider.java
@@ -27,7 +27,6 @@ import java.util.Map;
 
 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.core.metamodel.commons.LocaleUtil;
 import org.apache.isis.core.metamodel.facetapi.Facet;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
@@ -58,7 +57,7 @@ public class BigIntegerValueSemanticsProvider extends ValueSemanticsProviderAndF
     public BigIntegerValueSemanticsProvider(final FacetHolder holder) {
 
         super(type(), holder, BigInteger.class, TYPICAL_LENGTH, -1, Immutability.IMMUTABLE, EqualByContent.HONOURED, DEFAULT_VALUE);
-        final String formatRequired = getConfiguration().getValue().getFormat().get("int");
+        final String formatRequired = getConfiguration().getValueTypes().getJavaMath().getBigInteger().getFormat();
 
         NumberFormat result;
         if (formatRequired != null) {
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 c18e7f7..df43fad 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
@@ -48,7 +48,7 @@ public abstract class IntValueSemanticsProviderAbstract extends ValueSemanticsPr
 
     public IntValueSemanticsProviderAbstract(final FacetHolder holder, final Class<Integer> adaptedClass) {
         super(type(), holder, adaptedClass, TYPICAL_LENGTH, MAX_LENGTH, Immutability.IMMUTABLE, EqualByContent.HONOURED, DEFAULT_VALUE);
-        final String formatRequired = getConfiguration().getValue().getFormat().get("int");
+        final String formatRequired = getConfiguration().getValueTypes().getPrimitives().getInteger().getFormat();
 
         NumberFormat result;
         if (formatRequired != null) {
diff --git a/testing/specsupport/applib/src/main/java/org/apache/isis/testing/specsupport/applib/specs/V.java b/testing/specsupport/applib/src/main/java/org/apache/isis/testing/specsupport/applib/specs/V.java
index 9d42e46..8e50eb5 100644
--- a/testing/specsupport/applib/src/main/java/org/apache/isis/testing/specsupport/applib/specs/V.java
+++ b/testing/specsupport/applib/src/main/java/org/apache/isis/testing/specsupport/applib/specs/V.java
@@ -159,7 +159,7 @@ public class V {
     }
 
     /**
-     * Converts {@link java.lang.String}s to {@link java.lang.BigInteger}, but also recognizing the
+     * Converts {@link java.lang.String}s to {@link java.math.BigInteger}, but also recognizing the
      * keyword 'null'.
      */
     public static class BigInteger extends Transformer<java.math.BigInteger> {


[isis] 14/36: ISIS-2264: isis.value.format["datetime"] -> ALSO TO: isis.value-types.java-time.local-date-time.format

Posted by da...@apache.org.
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 4a00d1440481bf8fe6a75ffc8cf3f2681fbecab1
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Thu Jan 16 23:39:16 2020 +0100

    ISIS-2264: isis.value.format["datetime"] -> ALSO TO: isis.value-types.java-time.local-date-time.format
---
 .../modules/mignotes/pages/migrating-to-2.0.0.adoc |  4 ++++
 .../apache/isis/core/config/IsisConfiguration.java | 12 +++++-----
 .../ValueSemanticsProviderAndFacetAbstract.java    |  2 +-
 .../DateAndTimeValueSemanticsProviderAbstract.java |  2 +-
 .../ValueSemanticsProviderAbstractTemporal.java    |  2 +-
 .../date/DateValueSemanticsProviderAbstract.java   |  3 +--
 .../JodaLocalDateValueSemanticsProvider.java       |  2 +-
 ...JodaDateTimeValueSemanticsProviderAbstract.java |  2 +-
 .../TemporalValueSemanticsProviderAbstract.java    |  5 ++--
 .../LocalDateTimeValueSemanticsProvider.java       | 27 +++++++++++++++++++---
 .../time/TimeValueSemanticsProviderAbstract.java   |  2 +-
 .../TimeStampValueSemanticsProviderAbstract.java   |  4 ++--
 12 files changed, 45 insertions(+), 22 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 9f1da5b..61fdf2f 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
@@ -656,6 +656,10 @@ isis.value-types. +
 |isis.value-types. +
 {nbsp}{nbsp}joda.local-date-time.format
 
+isis.value-types. +
+{nbsp}{nbsp}java-time.local-date-time.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 6269d8e..b496acd 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
@@ -1239,7 +1239,11 @@ public class IsisConfiguration {
         private final JavaTime javaTime = new JavaTime();
         @Data
         public static class JavaTime {
-
+            private final Joda.LocalDateTime localDateTime = new Joda.LocalDateTime();
+            @Data
+            public static class LocalDateTime {
+                private String format = "medium";
+            }
         }
 
         private final JavaUtil javaUtil = new JavaUtil();
@@ -1305,11 +1309,7 @@ public class IsisConfiguration {
             TIMESTAMP, 
             TIME,
         }
-        
-        public String getFormatOrElse(FormatIdentifier formatIdentifier, String defaultFormat) {
-            return getFormat().getOrDefault(formatIdentifier.name().toLowerCase(), defaultFormat);
-        }
-        
+
         private final Money money = new Money();
         @Data
         public static class 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 d3b0de5..bd9c7a1 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
@@ -283,7 +283,7 @@ implements ValueSemanticsProvider<T>, EncoderDecoder<T>, Parser<T>, DefaultsProv
 
     protected NumberFormat determineNumberFormat(FormatIdentifier formatIdentifier) {
         final String formatRequired = getConfiguration()
-                .getValue().getFormatOrElse(formatIdentifier, null);
+                .getValue().getFormat().getOrDefault(formatIdentifier.name().toLowerCase(), null);
 
         return formatRequired != null
                 ? new DecimalFormat(formatRequired)
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/DateAndTimeValueSemanticsProviderAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/DateAndTimeValueSemanticsProviderAbstract.java
index 3f14052..b42dc5f 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/DateAndTimeValueSemanticsProviderAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/DateAndTimeValueSemanticsProviderAbstract.java
@@ -49,7 +49,7 @@ extends ValueSemanticsProviderAbstractTemporal<T> {
         super(FormatIdentifier.DATETIME, holder, adaptedClass, TYPICAL_LENGTH, immutability, equalByContent, (T) DEFAULT_VALUE);
 
         final String formatRequired = getConfiguration()
-                .getValue().getFormatOrElse(FormatIdentifier.DATETIME, null);
+                .getValue().getFormat().getOrDefault(FormatIdentifier.DATETIME.name().toLowerCase(), null);
                 
         if (formatRequired == null) {
             format = formats().get(defaultFormat());
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/ValueSemanticsProviderAbstractTemporal.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/ValueSemanticsProviderAbstractTemporal.java
index dfbdcdc..8c47763 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/ValueSemanticsProviderAbstractTemporal.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/ValueSemanticsProviderAbstractTemporal.java
@@ -115,7 +115,7 @@ implements DateValueFacet {
 
         this.propertyType = formatIdentifier.name().toLowerCase();
         configuredFormat = getConfiguration()
-                .getValue().getFormatOrElse(formatIdentifier, defaultFormat()).toLowerCase().trim();
+                .getValue().getFormat().getOrDefault(formatIdentifier.name().toLowerCase(), defaultFormat()).toLowerCase().trim();
                
         buildFormat(configuredFormat);
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/date/DateValueSemanticsProviderAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/date/DateValueSemanticsProviderAbstract.java
index 4772fec..de706b1 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/date/DateValueSemanticsProviderAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/date/DateValueSemanticsProviderAbstract.java
@@ -44,8 +44,7 @@ public abstract class DateValueSemanticsProviderAbstract<T> extends ValueSemanti
     public DateValueSemanticsProviderAbstract(final FacetHolder holder, final Class<T> adaptedClass, final Immutability immutability, final EqualByContent equalByContent, final T defaultValue) {
         super(FormatIdentifier.DATE, holder, adaptedClass, 12, immutability, equalByContent, defaultValue);
 
-        final String formatRequired = getConfiguration().getValue()
-                .getFormatOrElse(FormatIdentifier.DATE, null);
+        final String formatRequired = getConfiguration().getValue().getFormat().getOrDefault(FormatIdentifier.DATE.name().toLowerCase(), null);
         
         if (formatRequired == null) {
             format = formats().get(defaultFormat());
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 4a1bebb..71b648f 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
@@ -130,7 +130,7 @@ public class JodaLocalDateValueSemanticsProvider extends ValueSemanticsProviderA
         super(type(), holder, LocalDate.class, TYPICAL_LENGTH, MAX_LENGTH, Immutability.IMMUTABLE, EqualByContent.HONOURED, DEFAULT_VALUE);
 
         String configuredNameOrPattern = getConfiguration()
-                .getValue().getFormatOrElse(FormatIdentifier.DATE, "medium");
+                .getValue().getFormat().getOrDefault(FormatIdentifier.DATE.name().toLowerCase(), "medium");
         
         updateTitleStringFormatter(configuredNameOrPattern);
     }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/datetimejoda/JodaDateTimeValueSemanticsProviderAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/datetimejoda/JodaDateTimeValueSemanticsProviderAbstract.java
index adac98c..bb016bd 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/datetimejoda/JodaDateTimeValueSemanticsProviderAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/datetimejoda/JodaDateTimeValueSemanticsProviderAbstract.java
@@ -45,7 +45,7 @@ public abstract class JodaDateTimeValueSemanticsProviderAbstract<T> extends Valu
         super(FormatIdentifier.DATE, holder, adaptedClass, 12, Immutability.IMMUTABLE, EqualByContent.HONOURED, defaultValue);
 
         String formatRequired = getConfiguration()
-                .getValue().getFormatOrElse(FormatIdentifier.DATE, null);
+                .getValue().getFormat().getOrDefault(FormatIdentifier.DATE.name().toLowerCase(), null);
         
         if (formatRequired == null) {
             format = formats().get(defaultFormat());
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 1876686..621a431 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
@@ -118,10 +118,9 @@ implements TemporalValueFacet<T> {
     }
     
     protected DateTimeFormatter formatterFromConfig(FormatIdentifier formatIdentifier, String namedFallback) {
-        
+
         val configuredNameOrPattern = getConfiguration()
-                .getValue()
-                .getFormatOrElse(formatIdentifier, namedFallback);
+                .getValue().getFormat().getOrDefault(formatIdentifier.name().toLowerCase(), namedFallback);
         
         val formatter = lookupNamedFormatter(configuredNameOrPattern).orElse(null);
         if(formatter!=null) {
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 df3789b..07da58d 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
@@ -30,9 +30,11 @@ 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 LocalDateTimeValueSemanticsProvider 
+@Log4j2
+public class LocalDateTimeValueSemanticsProvider
 extends TemporalValueSemanticsProviderAbstract<LocalDateTime> {
 
     public static final int MAX_LENGTH = 36;
@@ -59,8 +61,27 @@ extends TemporalValueSemanticsProviderAbstract<LocalDateTime> {
 
         setEncodingFormatter(
                 DateTimeFormatter.ofPattern(dateHourMinuteSecondMillis, Locale.getDefault()));
-        setTitleFormatter(formatterFromConfig(FormatIdentifier.DATETIME, "medium"));
-        
+
+        val configuredNameOrPattern =
+                getConfiguration().getValueTypes().getJavaTime().getLocalDateTime().getFormat();
+
+        val formatter = lookupNamedFormatter(configuredNameOrPattern).orElse(null);
+
+        DateTimeFormatter titleFormatter = null;
+        if(formatter!=null) {
+            titleFormatter = formatter;
+        } else {
+            try {
+                titleFormatter = DateTimeFormatter.ofPattern(configuredNameOrPattern, Locale.getDefault());
+            } catch (Exception e) {
+                log.warn(e);
+            }
+            if (titleFormatter == null) {
+                titleFormatter = lookupNamedFormatterElseFail("medium");
+            }
+        }
+
+        setTitleFormatter(titleFormatter);
     }
 
 }
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/time/TimeValueSemanticsProviderAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/time/TimeValueSemanticsProviderAbstract.java
index 3fda3df..1338340 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/time/TimeValueSemanticsProviderAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/time/TimeValueSemanticsProviderAbstract.java
@@ -46,7 +46,7 @@ extends ValueSemanticsProviderAbstractTemporal<T> {
         super(FormatIdentifier.TIME, holder, adaptedClass, TYPICAL_LENGTH, Immutability.NOT_IMMUTABLE, EqualByContent.NOT_HONOURED, (T) DEFAULT_VALUE);
 
         final String formatRequired = getConfiguration()
-                .getValue().getFormatOrElse(FormatIdentifier.TIME, null); 
+                .getValue().getFormat().getOrDefault(FormatIdentifier.TIME.name().toLowerCase(), null);
         if (formatRequired == null) {
             format = formats().get(defaultFormat());
         } else {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/timestampsql/TimeStampValueSemanticsProviderAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/timestampsql/TimeStampValueSemanticsProviderAbstract.java
index ee57d58..783f741 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/timestampsql/TimeStampValueSemanticsProviderAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/timestampsql/TimeStampValueSemanticsProviderAbstract.java
@@ -43,9 +43,9 @@ abstract class TimeStampValueSemanticsProviderAbstract<T> extends ValueSemantics
     @SuppressWarnings("unchecked")
     public TimeStampValueSemanticsProviderAbstract(final FacetHolder holder, final Class<T> adaptedClass) {
         super(FormatIdentifier.TIMESTAMP, holder, adaptedClass, TYPICAL_LENGTH, Immutability.NOT_IMMUTABLE, EqualByContent.NOT_HONOURED, (T) DEFAULT_VALUE);
-        
+
         final String formatRequired = getConfiguration()
-                .getValue().getFormatOrElse(FormatIdentifier.TIMESTAMP, null);
+                .getValue().getFormat().getOrDefault(FormatIdentifier.TIMESTAMP.name().toLowerCase(), null);
         
         if (formatRequired == null) {
             format = formats().get(defaultFormat());


[isis] 20/36: ISIS-2264: moves JodaDateTimeValueSemanticsProviderAbstract down to subclass (since there is only one)

Posted by da...@apache.org.
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 a88a2398a7b414fb56f7c67675d6f2c311278e83
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Fri Jan 17 00:25:32 2020 +0100

    ISIS-2264: moves JodaDateTimeValueSemanticsProviderAbstract down to subclass (since there is only one)
---
 .../JodaDateTimeValueSemanticsProvider.java        | 128 ++++++++++++++++++-
 ...JodaDateTimeValueSemanticsProviderAbstract.java | 139 ---------------------
 .../time/TimeValueSemanticsProviderAbstract.java   |   3 +-
 3 files changed, 125 insertions(+), 145 deletions(-)

diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/datetimejoda/JodaDateTimeValueSemanticsProvider.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/datetimejoda/JodaDateTimeValueSemanticsProvider.java
index d03dc6a..929778e 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/datetimejoda/JodaDateTimeValueSemanticsProvider.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/datetimejoda/JodaDateTimeValueSemanticsProvider.java
@@ -19,7 +19,13 @@
 
 package org.apache.isis.core.metamodel.facets.value.datetimejoda;
 
+import java.text.DateFormat;
+import java.util.ArrayList;
+import java.util.Calendar;
 import java.util.Date;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
 
 import org.joda.time.DateTime;
 import org.joda.time.format.DateTimeFormatter;
@@ -28,13 +34,27 @@ import org.joda.time.format.ISODateTimeFormat;
 import org.apache.isis.applib.adapters.EncoderDecoder;
 import org.apache.isis.applib.adapters.EncodingException;
 import org.apache.isis.applib.adapters.Parser;
+import org.apache.isis.core.commons.internal.collections._Maps;
+import org.apache.isis.core.config.IsisConfiguration;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
+import org.apache.isis.core.metamodel.facets.value.ValueSemanticsProviderAbstractTemporal;
 
-public class JodaDateTimeValueSemanticsProvider extends JodaDateTimeValueSemanticsProviderAbstract<DateTime> {
+import lombok.Getter;
+import lombok.Setter;
 
-    // no default
-    private static final DateTime DEFAULT_VALUE = null;
+public class JodaDateTimeValueSemanticsProvider extends ValueSemanticsProviderAbstractTemporal<DateTime> {
+
+    private static final Map<String, DateFormat> FORMATS = _Maps.newHashMap();
+
+    static {
+        FORMATS.put(ISO_ENCODING_FORMAT, createDateEncodingFormat("yyyyMMdd"));
+        FORMATS.put("iso", createDateFormat("yyyy-MM-dd"));
+        FORMATS.put("medium", DateFormat.getDateInstance(DateFormat.MEDIUM));
+    }
 
+    @Getter
+    @Setter
+    private String configuredFormat;
 
     /**
      * Required because implementation of {@link Parser} and
@@ -45,10 +65,110 @@ public class JodaDateTimeValueSemanticsProvider extends JodaDateTimeValueSemanti
     }
 
     public JodaDateTimeValueSemanticsProvider(final FacetHolder holder) {
-        super(holder, DateTime.class, DEFAULT_VALUE);
+        this(holder, null);
+    }
+
+    private JodaDateTimeValueSemanticsProvider(final FacetHolder holder, final DateTime defaultValue) {
+        this("date", holder, defaultValue);
+
+        configuredFormat = getConfiguration().getValue().getFormat().getOrDefault("date", "medium").toLowerCase().trim();
+
+        buildFormat(configuredFormat);
+
+        String formatRequired = getConfiguration().getValue().getFormat().get("date");
+
+        if (formatRequired == null) {
+            format = formats().get(defaultFormat());
+        } else {
+            setMask(formatRequired); //TODO fails when using format names eg 'medium'
+        }
+    }
+
+    private JodaDateTimeValueSemanticsProvider(
+            final String propertyType, final FacetHolder holder, final DateTime defaultValue) {
+        super(propertyType, type(), holder, DateTime.class, 12, Immutability.IMMUTABLE, EqualByContent.HONOURED, defaultValue);
+    }
+
+    // //////////////////////////////////////////////////////////////////
+    // temporal-specific stuff
+    // //////////////////////////////////////////////////////////////////
+
+    @Override
+    protected void clearFields(final Calendar cal) {
+        cal.set(Calendar.HOUR, 0);
+        cal.set(Calendar.HOUR_OF_DAY, 0);
+        cal.set(Calendar.MINUTE, 0);
+        cal.set(Calendar.SECOND, 0);
+        cal.set(Calendar.AM_PM, 0);
+        cal.set(Calendar.MILLISECOND, 0);
+    }
+
+    @Override
+    protected String defaultFormat() {
+        return "medium";
+    }
+
+    @Override
+    protected boolean ignoreTimeZone() {
+        return true;
+    }
+
+    @Override
+    protected Map<String, DateFormat> formats() {
+        return FORMATS;
     }
 
     @Override
+    public String toString() {
+        return "DateValueSemanticsProvider: " + format;
+    }
+
+    @Override
+    protected DateFormat format() {
+        final Locale locale = Locale.getDefault();
+
+        final DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.MEDIUM, locale);
+        dateFormat.setTimeZone(UTC_TIME_ZONE);
+        return dateFormat;
+    }
+
+    @Override
+    protected List<DateFormat> formatsToTry() {
+
+        final Locale locale = Locale.getDefault();
+
+        List<DateFormat> formats = new ArrayList<>();
+
+        formats.add(DateFormat.getDateInstance(DateFormat.LONG, locale));
+        formats.add(DateFormat.getDateInstance(DateFormat.MEDIUM, locale));
+        formats.add(DateFormat.getDateInstance(DateFormat.SHORT, locale));
+        formats.add(createDateFormat("yyyy-MM-dd"));
+        formats.add(createDateFormat("yyyyMMdd"));
+
+        for (DateFormat format : formats) {
+            format.setTimeZone(UTC_TIME_ZONE);
+        }
+
+        return formats;
+    }
+
+    @Override
+    public void appendAttributesTo(Map<String, Object> attributeMap) {
+        super.appendAttributesTo(attributeMap);
+        attributeMap.put("configuredFormat", configuredFormat);
+    }
+
+
+
+
+
+
+    // no default
+    private static final DateTime DEFAULT_VALUE = null;
+
+
+
+    @Override
     protected DateTime add(final DateTime original, final int years, final int months, final int days, final int hours, final int minutes) {
         if(hours != 0 || minutes != 0) {
             throw new IllegalArgumentException("cannot add non-zero hours or minutes to a DateTime");
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/datetimejoda/JodaDateTimeValueSemanticsProviderAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/datetimejoda/JodaDateTimeValueSemanticsProviderAbstract.java
deleted file mode 100644
index 4da3836..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/datetimejoda/JodaDateTimeValueSemanticsProviderAbstract.java
+++ /dev/null
@@ -1,139 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-
-package org.apache.isis.core.metamodel.facets.value.datetimejoda;
-
-import java.text.DateFormat;
-import java.util.ArrayList;
-import java.util.Calendar;
-import java.util.List;
-import java.util.Locale;
-import java.util.Map;
-
-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.FacetHolder;
-import org.apache.isis.core.metamodel.facets.value.ValueSemanticsProviderAbstractTemporal;
-
-import lombok.Getter;
-import lombok.Setter;
-
-public abstract class JodaDateTimeValueSemanticsProviderAbstract<T> extends ValueSemanticsProviderAbstractTemporal<T> {
-
-    private static final Map<String, DateFormat> FORMATS = _Maps.newHashMap();
-
-    static {
-        FORMATS.put(ISO_ENCODING_FORMAT, createDateEncodingFormat("yyyyMMdd"));
-        FORMATS.put("iso", createDateFormat("yyyy-MM-dd"));
-        FORMATS.put("medium", DateFormat.getDateInstance(DateFormat.MEDIUM));
-    }
-
-    @Getter @Setter
-    private String configuredFormat;
-
-    public JodaDateTimeValueSemanticsProviderAbstract(final FormatIdentifier formatIdentifier, final FacetHolder holder, final Class<T> adaptedClass, final int typicalLength, final Immutability immutability, final EqualByContent equalByContent, final T defaultValue) {
-        super(formatIdentifier.name().toLowerCase(), type(), holder, adaptedClass, typicalLength, immutability, equalByContent, defaultValue);
-    }
-
-    public JodaDateTimeValueSemanticsProviderAbstract(final FacetHolder holder, final Class<T> adaptedClass, final T defaultValue) {
-        this(FormatIdentifier.DATE, holder, adaptedClass, 12, Immutability.IMMUTABLE, EqualByContent.HONOURED, defaultValue);
-
-        configuredFormat = getConfiguration().getValue().getFormat().getOrDefault("date", "medium").toLowerCase().trim();
-
-        buildFormat(configuredFormat);
-
-        String formatRequired = getConfiguration().getValue().getFormat().get("date");
-        
-        if (formatRequired == null) {
-            format = formats().get(defaultFormat());
-        } else {
-            setMask(formatRequired); //TODO fails when using format names eg 'medium'
-        }
-    }
-
-
-    // //////////////////////////////////////////////////////////////////
-    // temporal-specific stuff
-    // //////////////////////////////////////////////////////////////////
-
-    @Override
-    protected void clearFields(final Calendar cal) {
-        cal.set(Calendar.HOUR, 0);
-        cal.set(Calendar.HOUR_OF_DAY, 0);
-        cal.set(Calendar.MINUTE, 0);
-        cal.set(Calendar.SECOND, 0);
-        cal.set(Calendar.AM_PM, 0);
-        cal.set(Calendar.MILLISECOND, 0);
-    }
-
-    @Override
-    protected String defaultFormat() {
-        return "medium";
-    }
-
-    @Override
-    protected boolean ignoreTimeZone() {
-        return true;
-    }
-
-    @Override
-    protected Map<String, DateFormat> formats() {
-        return FORMATS;
-    }
-
-    @Override
-    public String toString() {
-        return "DateValueSemanticsProvider: " + format;
-    }
-
-    @Override
-    protected DateFormat format() {
-        final Locale locale = Locale.getDefault();
-
-        final DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.MEDIUM, locale);
-        dateFormat.setTimeZone(UTC_TIME_ZONE);
-        return dateFormat;
-    }
-
-    @Override
-    protected List<DateFormat> formatsToTry() {
-
-        final Locale locale = Locale.getDefault();
-
-        List<DateFormat> formats = new ArrayList<>();
-
-        formats.add(DateFormat.getDateInstance(DateFormat.LONG, locale));
-        formats.add(DateFormat.getDateInstance(DateFormat.MEDIUM, locale));
-        formats.add(DateFormat.getDateInstance(DateFormat.SHORT, locale));
-        formats.add(createDateFormat("yyyy-MM-dd"));
-        formats.add(createDateFormat("yyyyMMdd"));
-
-        for (DateFormat format : formats) {
-            format.setTimeZone(UTC_TIME_ZONE);
-        }
-
-        return formats;
-    }
-
-    @Override
-    public void appendAttributesTo(Map<String, Object> attributeMap) {
-        super.appendAttributesTo(attributeMap);
-        attributeMap.put("configuredFormat", configuredFormat);
-    }
-}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/time/TimeValueSemanticsProviderAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/time/TimeValueSemanticsProviderAbstract.java
index 0a599d7..d092e0b 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/time/TimeValueSemanticsProviderAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/time/TimeValueSemanticsProviderAbstract.java
@@ -36,7 +36,6 @@ import lombok.Setter;
 public abstract class TimeValueSemanticsProviderAbstract<T> 
 extends ValueSemanticsProviderAbstractTemporal<T> {
 
-    private static final Object DEFAULT_VALUE = null; // no default
     private static final int TYPICAL_LENGTH = 8;
 
     protected static void initFormats(final Map<String, DateFormat> formats) {
@@ -53,7 +52,7 @@ extends ValueSemanticsProviderAbstractTemporal<T> {
 
     @SuppressWarnings("unchecked")
     public TimeValueSemanticsProviderAbstract(final FacetHolder holder, final Class<T> adaptedClass) {
-        this(FormatIdentifier.TIME, holder, adaptedClass, TYPICAL_LENGTH, Immutability.NOT_IMMUTABLE, EqualByContent.NOT_HONOURED, (T) DEFAULT_VALUE);
+        this(FormatIdentifier.TIME, holder, adaptedClass, 8, Immutability.NOT_IMMUTABLE, EqualByContent.NOT_HONOURED, (T) null);
 
         configuredFormat = getConfiguration().getValue().getFormat().getOrDefault("time", "short").toLowerCase().trim();
 


[isis] 30/36: ISIS-2264: isis.value.format["time"] -> isis.value-types.java-sql.time.format

Posted by da...@apache.org.
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 9ce41ccdc2161417dd495c7a04d941f5f4127bd8
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Fri Jan 17 01:34:41 2020 +0100

    ISIS-2264: isis.value.format["time"] -> isis.value-types.java-sql.time.format
---
 .../modules/mignotes/pages/migrating-to-2.0.0.adoc    |  7 +++++--
 .../apache/isis/core/config/IsisConfiguration.java    | 19 +++++++++----------
 .../timesql/JavaSqlTimeValueSemanticsProvider.java    | 14 +++++---------
 3 files changed, 19 insertions(+), 21 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 71083da..2edbad4 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
@@ -662,6 +662,9 @@ isis.value-types. +
 isis.value-types. +
 {nbsp}{nbsp}java-time.offset-date-time.format
 
+isis.value-types. +
+{nbsp}{nbsp}java-util.date.format
+
 |isis.value.format["date"]
 |isis.value-types. +
 {nbsp}{nbsp}java-sql.date.format
@@ -669,9 +672,9 @@ isis.value-types. +
 isis.value-types. +
 {nbsp}{nbsp}joda.date-time.format
 
-|isis.value.format["datetime"]
+|isis.value.format["time"]
 |isis.value-types. +
-{nbsp}{nbsp}java-util.date.format
+{nbsp}{nbsp}java-sql.time.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 9a251d6..8342ad4 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
@@ -1275,6 +1275,13 @@ public class IsisConfiguration {
                 // lower case
                 private String format = "medium";
             }
+            private final Time time = new Time();
+            @Data
+            public static class Time {
+                // lower case
+                private String format = "short";
+            }
+
         }
 
         private final Joda joda = new Joda();
@@ -1283,6 +1290,8 @@ public class IsisConfiguration {
             private final LocalDateTime localDateTime = new LocalDateTime();
             @Data
             public static class LocalDateTime {
+                // lower case
+                private String format = "medium";
             }
             private final DateTime dateTime = new DateTime();
             @Data
@@ -1317,16 +1326,6 @@ public class IsisConfiguration {
         
         public enum FormatIdentifier {
             /**
-             * Key to indicate how LocalDateTime should be parsed/rendered.
-             * <p>
-             * eg: {@code isis.value.format.datetime=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.datetimejdk8local.Jdk8LocalDateTimeValueSemanticsProvider#NAMED_TITLE_FORMATTERS</code>).
-             * Alternatively, can also specify a mask, eg <tt>dd-MMM-yyyy</tt>.
-             */
-            DATETIME,
-            /**
              * Key to indicate how LocalDate should be parsed/rendered.
              * <p>
              * eg: {@code isis.value.format.date=iso}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/timesql/JavaSqlTimeValueSemanticsProvider.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/timesql/JavaSqlTimeValueSemanticsProvider.java
index 6291de1..cbed5c5 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/timesql/JavaSqlTimeValueSemanticsProvider.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/timesql/JavaSqlTimeValueSemanticsProvider.java
@@ -63,15 +63,11 @@ public class JavaSqlTimeValueSemanticsProvider extends ValueSemanticsProviderAbs
     public JavaSqlTimeValueSemanticsProvider(final FacetHolder holder) {
         super("time", type(), holder, java.sql.Time.class, 8, Immutability.NOT_IMMUTABLE, EqualByContent.NOT_HONOURED, null);
 
-        configuredFormat = getConfiguration().getValue().getFormat().getOrDefault("time", "short").toLowerCase().trim();
-
-        buildFormat(configuredFormat);
-
-        final String formatRequired = getConfiguration().getValue().getFormat().get("time");
-        if (formatRequired == null) {
-            format = formats().get("short");
-        } else {
-            setMask(formatRequired);
+        final Map<String, DateFormat> formats = formats();
+        configuredFormat = getConfiguration().getValueTypes().getJavaSql().getTime().getFormat();
+        format = formats.get(configuredFormat);
+        if (format == null) {
+            setMask(configuredFormat);
         }
     }
 


[isis] 15/36: ISIS-2264: isis.value.format["datetime"] -> ALSO TO: isis.value-types.java-time.offset-date-time.format

Posted by da...@apache.org.
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 1bf1fbed05ec1187e17cc76edfe3cc5e4925e251
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Thu Jan 16 23:43:02 2020 +0100

    ISIS-2264: isis.value.format["datetime"] -> ALSO TO: isis.value-types.java-time.offset-date-time.format
---
 .../modules/mignotes/pages/migrating-to-2.0.0.adoc |  3 +++
 .../apache/isis/core/config/IsisConfiguration.java |  7 ++++++
 .../OffsetDateTimeValueSemanticsProvider.java      | 27 ++++++++++++++++++----
 3 files changed, 33 insertions(+), 4 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 61fdf2f..a8ef867 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
@@ -659,6 +659,9 @@ isis.value-types. +
 isis.value-types. +
 {nbsp}{nbsp}java-time.local-date-time.format
 
+isis.value-types. +
+{nbsp}{nbsp}java-time.offset-date-time.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 b496acd..75ef370 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
@@ -18,6 +18,7 @@
  */
 package org.apache.isis.core.config;
 
+import java.time.OffsetDateTime;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
@@ -1244,6 +1245,12 @@ public class IsisConfiguration {
             public static class LocalDateTime {
                 private String format = "medium";
             }
+
+            private final OffsetDateTime offsetDateTime = new OffsetDateTime();
+            @Data
+            public static class OffsetDateTime {
+                private String format = "medium";
+            }
         }
 
         private final JavaUtil javaUtil = new JavaUtil();
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 33bd8ed..538a7b1 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
@@ -30,8 +30,10 @@ 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 OffsetDateTimeValueSemanticsProvider 
 extends TemporalValueSemanticsProviderAbstract<OffsetDateTime> {
 
@@ -56,10 +58,27 @@ extends TemporalValueSemanticsProviderAbstract<OffsetDateTime> {
         
         super.updateParsers();
 
-        setEncodingFormatter(
-                DateTimeFormatter.ofPattern(basicDateTime, Locale.getDefault()));
-        
-        setTitleFormatter(formatterFromConfig(FormatIdentifier.DATETIME, "medium"));
+        setEncodingFormatter(DateTimeFormatter.ofPattern(basicDateTime, Locale.getDefault()));
+
+        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);
         
         
     }


[isis] 04/36: ISIS-2264: simplifies further

Posted by da...@apache.org.
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 73931c74ca7eb05acc10fc23bad1e110f28ec623
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Thu Jan 16 22:48:15 2020 +0100

    ISIS-2264: simplifies further
---
 .../facets/value/biginteger/BigIntegerValueSemanticsProvider.java      | 3 +--
 .../facets/value/integer/IntValueSemanticsProviderAbstract.java        | 3 +--
 2 files changed, 2 insertions(+), 4 deletions(-)

diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/biginteger/BigIntegerValueSemanticsProvider.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/biginteger/BigIntegerValueSemanticsProvider.java
index a31eca5..b1439a8 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/biginteger/BigIntegerValueSemanticsProvider.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/biginteger/BigIntegerValueSemanticsProvider.java
@@ -58,8 +58,7 @@ public class BigIntegerValueSemanticsProvider extends ValueSemanticsProviderAndF
     public BigIntegerValueSemanticsProvider(final FacetHolder holder) {
 
         super(type(), holder, BigInteger.class, TYPICAL_LENGTH, -1, Immutability.IMMUTABLE, EqualByContent.HONOURED, DEFAULT_VALUE);
-        final String formatRequired =
-                getConfiguration().getValue().getFormat().get(FormatIdentifier.INT.name().toLowerCase());
+        final String formatRequired = getConfiguration().getValue().getFormat().get("int");
 
         NumberFormat result;
         if (formatRequired != null) {
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 1a8e73f..c18e7f7 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
@@ -48,8 +48,7 @@ public abstract class IntValueSemanticsProviderAbstract extends ValueSemanticsPr
 
     public IntValueSemanticsProviderAbstract(final FacetHolder holder, final Class<Integer> adaptedClass) {
         super(type(), holder, adaptedClass, TYPICAL_LENGTH, MAX_LENGTH, Immutability.IMMUTABLE, EqualByContent.HONOURED, DEFAULT_VALUE);
-        final String formatRequired =
-                getConfiguration().getValue().getFormat().get(FormatIdentifier.INT.name().toLowerCase());
+        final String formatRequired = getConfiguration().getValue().getFormat().get("int");
 
         NumberFormat result;
         if (formatRequired != null) {


[isis] 34/36: ISIS-2264: updates generated docs

Posted by da...@apache.org.
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 dcd91634a0254e64e8b164e3c1557121e51539f7
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Fri Jan 17 02:04:05 2020 +0100

    ISIS-2264: updates generated docs
---
 .../modules/config/examples/generated/Other.adoc   |   4 -
 .../examples/generated/isis.core.runtime.adoc      |   4 +
 .../config/examples/generated/isis.legacy.adoc     |  10 ++
 .../examples/generated/isis.value-types.adoc       | 110 +++++++++++++++++++++
 .../config/examples/generated/isis.value.adoc      |   8 --
 5 files changed, 124 insertions(+), 12 deletions(-)

diff --git a/core/config/src/main/adoc/modules/config/examples/generated/Other.adoc b/core/config/src/main/adoc/modules/config/examples/generated/Other.adoc
index 36d9e00..08b7e90 100644
--- a/core/config/src/main/adoc/modules/config/examples/generated/Other.adoc
+++ b/core/config/src/main/adoc/modules/config/examples/generated/Other.adoc
@@ -6,7 +6,3 @@
 | 
 | 
 
-| isis.timezone
-| 
-| 
-
diff --git a/core/config/src/main/adoc/modules/config/examples/generated/isis.core.runtime.adoc b/core/config/src/main/adoc/modules/config/examples/generated/isis.core.runtime.adoc
index d794fb5..04456a7 100644
--- a/core/config/src/main/adoc/modules/config/examples/generated/isis.core.runtime.adoc
+++ b/core/config/src/main/adoc/modules/config/examples/generated/isis.core.runtime.adoc
@@ -2,3 +2,7 @@
 | 
 |  Set to override {@link Locale#getDefault()}
 
+| isis.core.runtime.timezone
+| 
+| 
+
diff --git a/core/config/src/main/adoc/modules/config/examples/generated/isis.legacy.adoc b/core/config/src/main/adoc/modules/config/examples/generated/isis.legacy.adoc
new file mode 100644
index 0000000..b46ab7d
--- /dev/null
+++ b/core/config/src/main/adoc/modules/config/examples/generated/isis.legacy.adoc
@@ -0,0 +1,10 @@
+| isis.legacy.value-types.money. +
+currency
+| 
+| 
+
+| isis.legacy.value-types. +
+percentage.format
+| 
+| 
+
diff --git a/core/config/src/main/adoc/modules/config/examples/generated/isis.value-types.adoc b/core/config/src/main/adoc/modules/config/examples/generated/isis.value-types.adoc
new file mode 100644
index 0000000..023d082
--- /dev/null
+++ b/core/config/src/main/adoc/modules/config/examples/generated/isis.value-types.adoc
@@ -0,0 +1,110 @@
+| isis.value-types.java-lang. +
+byte.format
+| 
+| 
+
+| isis.value-types.java-lang. +
+double.format
+| 
+| 
+
+| isis.value-types.java-lang. +
+float.format
+| 
+| 
+
+| isis.value-types.java-lang. +
+long.format
+| 
+| 
+
+| isis.value-types.java-lang. +
+short.format
+| 
+| 
+
+| isis.value-types.java-math. +
+big-decimal.format
+| 
+| 
+
+| isis.value-types.java-math. +
+big-integer.format
+| 
+| 
+
+| isis.value-types.java-sql. +
+date.format
+|  medium
+| 
+
+| isis.value-types.java-sql. +
+time.format
+|  short
+| 
+
+| isis.value-types.java-sql. +
+timestamp.format
+|  short
+| 
+
+| isis.value-types.java-time. +
+local-date-time.format
+|  medium
+| 
+
+| isis.value-types.java-time. +
+local-date.format
+|  medium
+| 
+
+| isis.value-types.java-time. +
+local-time.format
+|  medium
+| 
+
+| isis.value-types.java-time. +
+offset-date-time.format
+|  medium
+| 
+
+| isis.value-types.java-time. +
+offset-time.format
+|  medium
+| 
+
+| isis.value-types.java-time. +
+zoned-date-time.format
+|  medium
+| 
+
+| isis.value-types.java-util. +
+date.format
+|  medium
+| 
+
+| isis.value-types.joda. +
+date-time.format
+|  medium
+| 
+
+| isis.value-types.joda. +
+local-date-time.format
+|  medium
+| 
+
+| isis.value-types.joda. +
+local-date.format
+|  medium
+| 
+
+| isis.value-types.primitives. +
+int.format
+| 
+| 
+
+| isis.value-types.primitives. +
+integer.format
+| 
+| 
+
diff --git a/core/config/src/main/adoc/modules/config/examples/generated/isis.value.adoc b/core/config/src/main/adoc/modules/config/examples/generated/isis.value.adoc
deleted file mode 100644
index 05ec86e..0000000
--- a/core/config/src/main/adoc/modules/config/examples/generated/isis.value.adoc
+++ /dev/null
@@ -1,8 +0,0 @@
-| isis.value.format
-| 
-| 
-
-| isis.value.money.currency
-| 
-| 
-


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

Posted by da...@apache.org.
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()));
     }
 
     // //////////////////////////////////////////////////////////////////


[isis] 01/36: ISIS-2264: removes unused methods for IsisConfiguration / Money

Posted by da...@apache.org.
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 4eb02b40b17b8e85aa44821a251b20beeb265e85
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Thu Jan 16 22:38:38 2020 +0100

    ISIS-2264: removes unused methods for IsisConfiguration / Money
---
 .../main/java/org/apache/isis/core/config/IsisConfiguration.java  | 8 +-------
 .../metamodel/facets/value/money/MoneyValueSemanticsProvider.java | 4 ----
 2 files changed, 1 insertion(+), 11 deletions(-)

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 1939625..ddfb5f6 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
@@ -1207,15 +1207,9 @@ public class IsisConfiguration {
         private final Money money = new Money();
         @Data
         public static class Money {
-            
             private Optional<String> currency = Optional.empty();
-
-            public String getCurrencyOrElse(String fallback) { 
-                return getCurrency().filter(_Strings::isNotEmpty).orElse(fallback);
-            }
         }
-        
-        
+
     }
 
     private final Extensions extensions = new Extensions();
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 1a1c424..75cf126 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
@@ -60,10 +60,6 @@ implements MoneyValueFacet {
         LOCAL_CURRENCY_CODE = getDefaultCurrencyCode();
     }
 
-    static final boolean isAPropertyDefaultFacet() {
-        return PropertyDefaultFacet.class.isAssignableFrom(MoneyValueSemanticsProvider.class);
-    }
-
     private static String getDefaultCurrencyCode() {
         try {
             return DEFAULT_CURRENCY_FORMAT.getCurrency().getCurrencyCode();


[isis] 32/36: ISIS-2264: isis.value.money.current -> isis.legacy.value-types.money.current

Posted by da...@apache.org.
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 b002abbfacf71f95470c14a56784b81ba6484707
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Fri Jan 17 01:57:03 2020 +0100

    ISIS-2264: isis.value.money.current -> isis.legacy.value-types.money.current
---
 .../toc/modules/mignotes/pages/migrating-to-2.0.0.adoc |  4 ++--
 .../org/apache/isis/core/config/IsisConfiguration.java | 18 ++++++++----------
 .../value/money/MoneyValueSemanticsProvider.java       |  2 +-
 3 files changed, 11 insertions(+), 13 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 2d2ba0b..a2fdc1d 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
@@ -693,8 +693,8 @@ isis.value-types. +
 {nbsp}{nbsp}java-sql.timestamp.format
 
 
-|
-|
+|isis.value.money.current
+|isis.legacy.value-types.money.current
 
 |===
 
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 c06b369..b88ced0 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
@@ -1354,7 +1354,15 @@ public class IsisConfiguration {
             public static class Percentage {
                 private String format;
             }
+
+            private final Money money = new Money();
+            @Data
+            public static class Money {
+                private Optional<String> currency = Optional.empty();
+            }
         }
+
+
     }
 
     //TODO no meta data yet ... https://docs.spring.io/spring-boot/docs/current/reference/html/appendix-configuration-metadata.html#configuration-metadata-property-attributes
@@ -1362,16 +1370,6 @@ public class IsisConfiguration {
     @Data
     public static class Value {
 
-        private Map<String, String> format = new HashMap<>();
-        
-        public enum FormatIdentifier {
-        }
-
-        private final Money money = new Money();
-        @Data
-        public static class Money {
-            private Optional<String> currency = Optional.empty();
-        }
 
     }
 
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 75cf126..d550afc 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
@@ -80,7 +80,7 @@ implements MoneyValueFacet {
         super(type(), holder, Money.class, TYPICAL_LENGTH, -1, Immutability.IMMUTABLE, EqualByContent.HONOURED, DEFAULT_VALUE);
 
         defaultCurrencyCode =
-                getConfiguration().getValue().getMoney().getCurrency()
+                getConfiguration().getLegacy().getValueTypes().getMoney().getCurrency()
                     .filter(_Strings::isNotEmpty)
                     .orElse(LOCAL_CURRENCY_CODE);
     }


[isis] 29/36: ISIS-2264: isis.value.format.datetime -> isis.value-types.java-util.date.format

Posted by da...@apache.org.
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 fe146a143e5a92615c10e7bd4aacc36b8e0d2c09
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Fri Jan 17 01:31:58 2020 +0100

    ISIS-2264: isis.value.format.datetime -> isis.value-types.java-util.date.format
---
 .../toc/modules/mignotes/pages/migrating-to-2.0.0.adoc    |  4 ++++
 .../org/apache/isis/core/config/IsisConfiguration.java    |  7 +++++++
 .../dateutil/JavaUtilDateValueSemanticsProvider.java      | 15 +++++----------
 3 files changed, 16 insertions(+), 10 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 855cfa5..71083da 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
@@ -669,6 +669,10 @@ isis.value-types. +
 isis.value-types. +
 {nbsp}{nbsp}joda.date-time.format
 
+|isis.value.format["datetime"]
+|isis.value-types. +
+{nbsp}{nbsp}java-util.date.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 67c375c..9a251d6 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
@@ -1257,8 +1257,15 @@ public class IsisConfiguration {
         @Data
         public static class JavaUtil {
 
+            private final Date date = new Date();
+            @Data
+            public static class Date {
+                // lower case
+                private String format = "medium";
+            }
 
         }
+
         private final JavaSql javaSql = new JavaSql();
         @Data
         public static class JavaSql {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/dateutil/JavaUtilDateValueSemanticsProvider.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/dateutil/JavaUtilDateValueSemanticsProvider.java
index 4519a6a..fa131fc 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/dateutil/JavaUtilDateValueSemanticsProvider.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/dateutil/JavaUtilDateValueSemanticsProvider.java
@@ -72,16 +72,11 @@ public class JavaUtilDateValueSemanticsProvider extends ValueSemanticsProviderAb
     public JavaUtilDateValueSemanticsProvider(final FacetHolder holder) {
         super("datetime", type(), holder, Date.class, 18, Immutability.NOT_IMMUTABLE, EqualByContent.NOT_HONOURED, null);
 
-        configuredFormat = getConfiguration().getValue().getFormat().getOrDefault("datetime", "medium").toLowerCase().trim();
-
-        buildFormat(configuredFormat);
-
-        final String formatRequired = getConfiguration().getValue().getFormat().get("datetime");
-
-        if (formatRequired == null) {
-            format = formats().get("medium");
-        } else {
-            setMask(formatRequired);
+        final Map<String, DateFormat> formats = formats();
+        configuredFormat = getConfiguration().getValueTypes().getJavaUtil().getDate().getFormat();
+        format = formats.get(configuredFormat);
+        if (format == null) {
+            setMask(configuredFormat);
         }
     }
 


[isis] 33/36: ISIS-2264: updates scripts to generate docs

Posted by da...@apache.org.
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 fe35401432b1915cd9736ac20226da2d472cac75
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Fri Jan 17 01:58:25 2020 +0100

    ISIS-2264: updates scripts to generate docs
---
 .../src/main/adoc/modules/config/pages/configuration-properties.adoc    | 2 +-
 scripts/generateConfigDocs.groovy                                       | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/core/config/src/main/adoc/modules/config/pages/configuration-properties.adoc b/core/config/src/main/adoc/modules/config/pages/configuration-properties.adoc
index ab110fa..191b96b 100644
--- a/core/config/src/main/adoc/modules/config/pages/configuration-properties.adoc
+++ b/core/config/src/main/adoc/modules/config/pages/configuration-properties.adoc
@@ -179,7 +179,7 @@ include::refguide:config:example$generated/isis.viewer.wicket.adoc[]
 (default value)
 |Description
 
-include::refguide:config:example$generated/isis.value.adoc[]
+include::refguide:config:example$generated/isis.value-types.adoc[]
 
 |===
 
diff --git a/scripts/generateConfigDocs.groovy b/scripts/generateConfigDocs.groovy
index 11a7412..b476c94 100644
--- a/scripts/generateConfigDocs.groovy
+++ b/scripts/generateConfigDocs.groovy
@@ -144,7 +144,7 @@ groups+= new PropertyGroup() {{
 }}
 
 groups+= new PropertyGroup() {{
-    prefix = "isis.value"
+    prefix = "isis.value-types"
     name = "Value types"
     description = "Configuration that applies to value type definitions"
     searchOrder = 501


[isis] 17/36: ISIS-2264: more refactoring of datetime VSP's

Posted by da...@apache.org.
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 24556c73841fd99f8a03bee017a215abdcf22669
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Fri Jan 17 00:07:32 2020 +0100

    ISIS-2264: more refactoring of datetime VSP's
---
 .../facets/value/DateAndTimeValueSemanticsProviderAbstract.java     | 6 +++++-
 .../facets/value/date/DateValueSemanticsProviderAbstract.java       | 6 +++++-
 .../datetimejoda/JodaDateTimeValueSemanticsProviderAbstract.java    | 6 +++++-
 .../facets/value/time/TimeValueSemanticsProviderAbstract.java       | 6 +++++-
 .../value/timestampsql/TimeStampValueSemanticsProviderAbstract.java | 6 +++++-
 5 files changed, 25 insertions(+), 5 deletions(-)

diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/DateAndTimeValueSemanticsProviderAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/DateAndTimeValueSemanticsProviderAbstract.java
index adc10ad..309104e 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/DateAndTimeValueSemanticsProviderAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/DateAndTimeValueSemanticsProviderAbstract.java
@@ -51,9 +51,13 @@ extends ValueSemanticsProviderAbstractTemporal<T> {
     private String configuredFormat;
 
 
+    public DateAndTimeValueSemanticsProviderAbstract(final FormatIdentifier formatIdentifier, final FacetHolder holder, final Class<T> adaptedClass, final int typicalLength, final Immutability immutability, final EqualByContent equalByContent, final T defaultValue) {
+        super(formatIdentifier, formatIdentifier.name().toLowerCase(), type(), holder, adaptedClass, typicalLength, immutability, equalByContent, defaultValue);
+    }
+
     @SuppressWarnings("unchecked")
     public DateAndTimeValueSemanticsProviderAbstract(final FacetHolder holder, final Class<T> adaptedClass, final Immutability immutability, final EqualByContent equalByContent) {
-        super(FormatIdentifier.DATETIME, FormatIdentifier.DATETIME.name().toLowerCase(), holder, adaptedClass, TYPICAL_LENGTH, immutability, equalByContent, (T) DEFAULT_VALUE);
+        this(FormatIdentifier.DATETIME, holder, adaptedClass, TYPICAL_LENGTH, immutability, equalByContent, (T) DEFAULT_VALUE);
 
         configuredFormat = getConfiguration()
                 .getValue().getFormat().getOrDefault(FormatIdentifier.DATETIME.name().toLowerCase(), defaultFormat()).toLowerCase().trim();
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/date/DateValueSemanticsProviderAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/date/DateValueSemanticsProviderAbstract.java
index 174122e..0405c5f 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/date/DateValueSemanticsProviderAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/date/DateValueSemanticsProviderAbstract.java
@@ -47,8 +47,12 @@ public abstract class DateValueSemanticsProviderAbstract<T> extends ValueSemanti
     @Getter @Setter
     private String configuredFormat;
 
+    public DateValueSemanticsProviderAbstract(final FormatIdentifier formatIdentifier, final FacetHolder holder, final Class<T> adaptedClass, final int typicalLength, final Immutability immutability, final EqualByContent equalByContent, final T defaultValue) {
+        super(formatIdentifier, formatIdentifier.name().toLowerCase(), type(), holder, adaptedClass, typicalLength, immutability, equalByContent, defaultValue);
+    }
+
     public DateValueSemanticsProviderAbstract(final FacetHolder holder, final Class<T> adaptedClass, final Immutability immutability, final EqualByContent equalByContent, final T defaultValue) {
-        super(FormatIdentifier.DATE, FormatIdentifier.DATE.name().toLowerCase(), holder, adaptedClass, 12, immutability, equalByContent, defaultValue);
+        this(FormatIdentifier.DATE, holder, adaptedClass, 12, immutability, equalByContent, defaultValue);
 
         configuredFormat = getConfiguration()
                 .getValue().getFormat().getOrDefault(FormatIdentifier.DATE.name().toLowerCase(), defaultFormat()).toLowerCase().trim();
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/datetimejoda/JodaDateTimeValueSemanticsProviderAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/datetimejoda/JodaDateTimeValueSemanticsProviderAbstract.java
index 513008f..c3be280 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/datetimejoda/JodaDateTimeValueSemanticsProviderAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/datetimejoda/JodaDateTimeValueSemanticsProviderAbstract.java
@@ -47,8 +47,12 @@ public abstract class JodaDateTimeValueSemanticsProviderAbstract<T> extends Valu
     @Getter @Setter
     private String configuredFormat;
 
+    public JodaDateTimeValueSemanticsProviderAbstract(final FormatIdentifier formatIdentifier, final FacetHolder holder, final Class<T> adaptedClass, final int typicalLength, final Immutability immutability, final EqualByContent equalByContent, final T defaultValue) {
+        super(formatIdentifier, formatIdentifier.name().toLowerCase(), type(), holder, adaptedClass, typicalLength, immutability, equalByContent, defaultValue);
+    }
+
     public JodaDateTimeValueSemanticsProviderAbstract(final FacetHolder holder, final Class<T> adaptedClass, final T defaultValue) {
-        super(FormatIdentifier.DATE, FormatIdentifier.DATE.name().toLowerCase(), holder, adaptedClass, 12, Immutability.IMMUTABLE, EqualByContent.HONOURED, defaultValue);
+        this(FormatIdentifier.DATE, holder, adaptedClass, 12, Immutability.IMMUTABLE, EqualByContent.HONOURED, defaultValue);
 
         configuredFormat = getConfiguration()
                 .getValue().getFormat().getOrDefault(FormatIdentifier.DATE.name().toLowerCase(), defaultFormat()).toLowerCase().trim();
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/time/TimeValueSemanticsProviderAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/time/TimeValueSemanticsProviderAbstract.java
index 5fc3d67..ebd1b42 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/time/TimeValueSemanticsProviderAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/time/TimeValueSemanticsProviderAbstract.java
@@ -47,9 +47,13 @@ extends ValueSemanticsProviderAbstractTemporal<T> {
     @Getter @Setter
     private String configuredFormat;
 
+    public TimeValueSemanticsProviderAbstract(final FormatIdentifier formatIdentifier, final FacetHolder holder, final Class<T> adaptedClass, final int typicalLength, final Immutability immutability, final EqualByContent equalByContent, final T defaultValue) {
+        super(formatIdentifier, formatIdentifier.name().toLowerCase(), type(), holder, adaptedClass, typicalLength, immutability, equalByContent, defaultValue);
+    }
+
     @SuppressWarnings("unchecked")
     public TimeValueSemanticsProviderAbstract(final FacetHolder holder, final Class<T> adaptedClass) {
-        super(FormatIdentifier.TIME, FormatIdentifier.TIME.name().toLowerCase(), holder, adaptedClass, TYPICAL_LENGTH, Immutability.NOT_IMMUTABLE, EqualByContent.NOT_HONOURED, (T) DEFAULT_VALUE);
+        this(FormatIdentifier.TIME, holder, adaptedClass, TYPICAL_LENGTH, Immutability.NOT_IMMUTABLE, EqualByContent.NOT_HONOURED, (T) DEFAULT_VALUE);
 
         configuredFormat = getConfiguration()
                 .getValue().getFormat().getOrDefault(FormatIdentifier.TIME.name().toLowerCase(), defaultFormat()).toLowerCase().trim();
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/timestampsql/TimeStampValueSemanticsProviderAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/timestampsql/TimeStampValueSemanticsProviderAbstract.java
index af34f1b..b350e82 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/timestampsql/TimeStampValueSemanticsProviderAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/timestampsql/TimeStampValueSemanticsProviderAbstract.java
@@ -46,9 +46,13 @@ abstract class TimeStampValueSemanticsProviderAbstract<T> extends ValueSemantics
     @Getter @Setter
     private String configuredFormat;
 
+    public TimeStampValueSemanticsProviderAbstract(final FormatIdentifier formatIdentifier, final FacetHolder holder, final Class<T> adaptedClass, final int typicalLength, final Immutability immutability, final EqualByContent equalByContent, final T defaultValue) {
+        super(formatIdentifier, formatIdentifier.name().toLowerCase(), type(), holder, adaptedClass, typicalLength, immutability, equalByContent, defaultValue);
+    }
+
     @SuppressWarnings("unchecked")
     public TimeStampValueSemanticsProviderAbstract(final FacetHolder holder, final Class<T> adaptedClass) {
-        super(FormatIdentifier.TIMESTAMP, FormatIdentifier.TIMESTAMP.name().toLowerCase(), holder, adaptedClass, TYPICAL_LENGTH, Immutability.NOT_IMMUTABLE, EqualByContent.NOT_HONOURED, (T) DEFAULT_VALUE);
+        this(FormatIdentifier.TIMESTAMP, holder, adaptedClass, TYPICAL_LENGTH, Immutability.NOT_IMMUTABLE, EqualByContent.NOT_HONOURED, (T) DEFAULT_VALUE);
 
         configuredFormat = getConfiguration()
                 .getValue().getFormat().getOrDefault(FormatIdentifier.TIMESTAMP.name().toLowerCase(), defaultFormat()).toLowerCase().trim();


[isis] 02/36: ISIS-2264: refactors calls using IsisConfiguration#format with INT

Posted by da...@apache.org.
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 68426ba251c7c8486a1113ce4fb9be0007f60fbc
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Thu Jan 16 22:45:40 2020 +0100

    ISIS-2264: refactors calls using IsisConfiguration#format with INT
---
 .../org/apache/isis/core/config/IsisConfiguration.java    |  2 +-
 .../biginteger/BigIntegerValueSemanticsProvider.java      | 15 ++++++++++++++-
 .../value/integer/IntValueSemanticsProviderAbstract.java  | 14 +++++++++++++-
 3 files changed, 28 insertions(+), 3 deletions(-)

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 ddfb5f6..64f60b1 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
@@ -1201,7 +1201,7 @@ public class IsisConfiguration {
         }
         
         public String getFormatOrElse(FormatIdentifier formatIdentifier, String defaultFormat) {
-            return format.getOrDefault(formatIdentifier.name().toLowerCase(), defaultFormat);
+            return getFormat().getOrDefault(formatIdentifier.name().toLowerCase(), defaultFormat);
         }
         
         private final Money money = new Money();
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/biginteger/BigIntegerValueSemanticsProvider.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/biginteger/BigIntegerValueSemanticsProvider.java
index 5a953dd..cd9a6a5 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/biginteger/BigIntegerValueSemanticsProvider.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/biginteger/BigIntegerValueSemanticsProvider.java
@@ -22,11 +22,13 @@ package org.apache.isis.core.metamodel.facets.value.biginteger;
 import java.math.BigInteger;
 import java.text.DecimalFormat;
 import java.text.NumberFormat;
+import java.util.Locale;
 import java.util.Map;
 
 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.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;
@@ -56,9 +58,20 @@ public class BigIntegerValueSemanticsProvider extends ValueSemanticsProviderAndF
     public BigIntegerValueSemanticsProvider(final FacetHolder holder) {
 
         super(type(), holder, BigInteger.class, TYPICAL_LENGTH, -1, Immutability.IMMUTABLE, EqualByContent.HONOURED, DEFAULT_VALUE);
-        format = determineNumberFormat(FormatIdentifier.INT);
+        final String formatRequired =
+                getConfiguration().getValue().getFormat().getOrDefault(FormatIdentifier.INT.name().toLowerCase(), null);
+
+        NumberFormat result;
+        if (formatRequired != null) {
+            result = new DecimalFormat(formatRequired);
+        } else {
+            final Locale inLocale = getConfiguration().getCore().getRuntime().getLocale().map(LocaleUtil::findLocale).orElse(Locale.getDefault());
+            result = NumberFormat.getNumberInstance(inLocale);
+        }
+        format = result;
     }
 
+
     // //////////////////////////////////////////////////////////////////
     // Parser
     // //////////////////////////////////////////////////////////////////
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 929f003..e540776 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
@@ -22,9 +22,11 @@ package org.apache.isis.core.metamodel.facets.value.integer;
 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;
@@ -46,7 +48,17 @@ public abstract class IntValueSemanticsProviderAbstract extends ValueSemanticsPr
 
     public IntValueSemanticsProviderAbstract(final FacetHolder holder, final Class<Integer> adaptedClass) {
         super(type(), holder, adaptedClass, TYPICAL_LENGTH, MAX_LENGTH, Immutability.IMMUTABLE, EqualByContent.HONOURED, DEFAULT_VALUE);
-        format = determineNumberFormat(FormatIdentifier.INT);
+        final String formatRequired =
+                getConfiguration().getValue().getFormat().getOrDefault(FormatIdentifier.INT.name().toLowerCase(), null);
+
+        NumberFormat result;
+        if (formatRequired != null) {
+            result = new DecimalFormat(formatRequired);
+        } else {
+            final Locale inLocale = getConfiguration().getCore().getRuntime().getLocale().map(LocaleUtil::findLocale).orElse(Locale.getDefault());
+            result = NumberFormat.getNumberInstance(inLocale);
+        }
+        format = result;
     }
 
     // //////////////////////////////////////////////////////////////////


[isis] 21/36: ISIS-2264: pushes TimeStampValueSemanticsProviderAbstract down to its subclass, JavaSqlTimeStampValueSemanticsProvider

Posted by da...@apache.org.
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 f7d17f77d0a7ff0b70f64c32da465d4cf5b37444
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Fri Jan 17 00:32:44 2020 +0100

    ISIS-2264: pushes TimeStampValueSemanticsProviderAbstract down to its subclass, JavaSqlTimeStampValueSemanticsProvider
---
 ...ampValueFacetUsingSemanticsProviderFactory.java |   2 +-
 .../JavaSqlTimeStampValueSemanticsProvider.java    | 114 +++++++++++++++++--
 .../TimeStampValueSemanticsProviderAbstract.java   | 121 ---------------------
 3 files changed, 103 insertions(+), 134 deletions(-)

diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/timestampsql/JavaSqlTimeStampValueFacetUsingSemanticsProviderFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/timestampsql/JavaSqlTimeStampValueFacetUsingSemanticsProviderFactory.java
index cc7a358..bc10055 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/timestampsql/JavaSqlTimeStampValueFacetUsingSemanticsProviderFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/timestampsql/JavaSqlTimeStampValueFacetUsingSemanticsProviderFactory.java
@@ -41,7 +41,7 @@ extends ValueFacetUsingSemanticsProviderFactory<Timestamp> {
         if (type != java.sql.Timestamp.class) {
             return;
         }
-        addFacets(new JavaSqlTimeStampValueSemanticsProvider(holder, getContext()));
+        addFacets(new JavaSqlTimeStampValueSemanticsProvider(holder));
     }
 
 }
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 b405dab..620b516 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
@@ -21,42 +21,132 @@ package org.apache.isis.core.metamodel.facets.value.timestampsql;
 
 import java.sql.Timestamp;
 import java.text.DateFormat;
+import java.util.ArrayList;
 import java.util.Date;
+import java.util.List;
+import java.util.Locale;
 import java.util.Map;
+import java.util.TimeZone;
 
 import org.apache.isis.applib.adapters.EncoderDecoder;
 import org.apache.isis.applib.adapters.Parser;
-import org.apache.isis.applib.services.inject.ServiceInjector;
 import org.apache.isis.core.commons.internal.collections._Maps;
+import org.apache.isis.core.config.IsisConfiguration;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
 import org.apache.isis.core.metamodel.facets.object.parseable.InvalidEntryException;
 import org.apache.isis.core.metamodel.facets.properties.defaults.PropertyDefaultFacet;
+import org.apache.isis.core.metamodel.facets.value.ValueSemanticsProviderAbstractTemporal;
 
-public class JavaSqlTimeStampValueSemanticsProvider
-extends TimeStampValueSemanticsProviderAbstract<java.sql.Timestamp> {
+import lombok.Getter;
+import lombok.Setter;
 
-    public static final boolean isAPropertyDefaultFacet() {
-        return PropertyDefaultFacet.class.isAssignableFrom(JavaSqlTimeStampValueSemanticsProvider.class);
-    }
+public class JavaSqlTimeStampValueSemanticsProvider
+extends ValueSemanticsProviderAbstractTemporal<Timestamp> {
 
-    private static Map<String, DateFormat> formats = _Maps.newHashMap();
+    private static final Object DEFAULT_VALUE = null; // no default
+    private static final int TYPICAL_LENGTH = 25;
 
-    static {
-        initFormats(formats);
+    protected static void initFormats(final Map<String, DateFormat> formats) {
+        formats.put(ISO_ENCODING_FORMAT, createDateEncodingFormat("yyyyMMdd'T'HHmmssSSS"));
+        formats.put("short", DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.LONG));
     }
 
+    @Getter @Setter
+    private String configuredFormat;
+
     /**
      * Required because implementation of {@link Parser} and
      * {@link EncoderDecoder}.
      */
     public JavaSqlTimeStampValueSemanticsProvider() {
-        this(null, null);
+        this(null);
+    }
+
+    @SuppressWarnings("unchecked")
+    public JavaSqlTimeStampValueSemanticsProvider(final FacetHolder holder) {
+        this(IsisConfiguration.Value.FormatIdentifier.TIMESTAMP, holder, 25, Immutability.NOT_IMMUTABLE, EqualByContent.NOT_HONOURED, null);
+
+        configuredFormat = getConfiguration().getValue().getFormat().getOrDefault("timestamp", "short").toLowerCase().trim();
+
+        buildFormat(configuredFormat);
+
+        final String formatRequired = getConfiguration().getValue().getFormat().get("timestamp");
+
+        if (formatRequired == null) {
+            format = formats().get(defaultFormat());
+        } else {
+            setMask(formatRequired);
+        }
+    }
+
+    private JavaSqlTimeStampValueSemanticsProvider(final IsisConfiguration.Value.FormatIdentifier formatIdentifier, final FacetHolder holder, final int typicalLength, final Immutability immutability, final EqualByContent equalByContent, final Timestamp defaultValue) {
+        super(formatIdentifier.name().toLowerCase(), type(), holder, java.sql.Timestamp.class, typicalLength, immutability, equalByContent, defaultValue);
+    }
+
+    @Override
+    protected Timestamp add(final Timestamp original, final int years, final int months, final int days, final int hours, final int minutes) {
+        return original;
+    }
+
+    @Override
+    protected String defaultFormat() {
+        return "short";
+    }
+
+    @Override
+    public String toString() {
+        return "TimeStampValueSemanticsProvider: " + format;
+    }
+
+    @Override
+    protected DateFormat format() {
+
+        final Locale locale = Locale.getDefault();
+        final TimeZone timeZone = TimeZone.getDefault();
+
+        final DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.LONG, locale);
+        dateFormat.setTimeZone(timeZone);
+
+        return dateFormat;
+    }
+
+    @Override
+    protected List<DateFormat> formatsToTry() {
+        final List<DateFormat> formats = new ArrayList<DateFormat>();
+
+        final Locale locale = Locale.getDefault();
+        final TimeZone timeZone = TimeZone.getDefault();
+
+        formats.add(DateFormat.getDateTimeInstance(DateFormat.MEDIUM, DateFormat.LONG, locale));
+        formats.add(DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.LONG, locale));
+        formats.add(createDateFormat("yyyy-MM-dd HH:mm:ss.SSS"));
+
+        for (final DateFormat format : formats) {
+            format.setTimeZone(timeZone);
+        }
+
+        return formats;
     }
 
-    public JavaSqlTimeStampValueSemanticsProvider(final FacetHolder holder, final ServiceInjector context) {
-        super(holder, java.sql.Timestamp.class);
+    @Override
+    public void appendAttributesTo(Map<String, Object> attributeMap) {
+        super.appendAttributesTo(attributeMap);
+        attributeMap.put("configuredFormat", configuredFormat);
     }
 
+
+
+    public static final boolean isAPropertyDefaultFacet() {
+        return PropertyDefaultFacet.class.isAssignableFrom(JavaSqlTimeStampValueSemanticsProvider.class);
+    }
+
+    private static Map<String, DateFormat> formats = _Maps.newHashMap();
+
+    static {
+        initFormats(formats);
+    }
+
+
     // //////////////////////////////////////////////////////////////////
     // temporal-specific stuff
     // //////////////////////////////////////////////////////////////////
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/timestampsql/TimeStampValueSemanticsProviderAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/timestampsql/TimeStampValueSemanticsProviderAbstract.java
deleted file mode 100644
index f681bbb..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/timestampsql/TimeStampValueSemanticsProviderAbstract.java
+++ /dev/null
@@ -1,121 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-
-package org.apache.isis.core.metamodel.facets.value.timestampsql;
-
-import java.text.DateFormat;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Locale;
-import java.util.Map;
-import java.util.TimeZone;
-
-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.ValueSemanticsProviderAbstractTemporal;
-
-import lombok.Getter;
-import lombok.Setter;
-
-abstract class TimeStampValueSemanticsProviderAbstract<T> extends ValueSemanticsProviderAbstractTemporal<T> {
-
-    private static final Object DEFAULT_VALUE = null; // no default
-    private static final int TYPICAL_LENGTH = 25;
-
-    protected static void initFormats(final Map<String, DateFormat> formats) {
-        formats.put(ISO_ENCODING_FORMAT, createDateEncodingFormat("yyyyMMdd'T'HHmmssSSS"));
-        formats.put("short", DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.LONG));
-    }
-
-    @Getter @Setter
-    private String configuredFormat;
-
-    public TimeStampValueSemanticsProviderAbstract(final FormatIdentifier formatIdentifier, final FacetHolder holder, final Class<T> adaptedClass, final int typicalLength, final Immutability immutability, final EqualByContent equalByContent, final T defaultValue) {
-        super(formatIdentifier.name().toLowerCase(), type(), holder, adaptedClass, typicalLength, immutability, equalByContent, defaultValue);
-    }
-
-    @SuppressWarnings("unchecked")
-    public TimeStampValueSemanticsProviderAbstract(final FacetHolder holder, final Class<T> adaptedClass) {
-        this(FormatIdentifier.TIMESTAMP, holder, adaptedClass, TYPICAL_LENGTH, Immutability.NOT_IMMUTABLE, EqualByContent.NOT_HONOURED, (T) DEFAULT_VALUE);
-
-        configuredFormat = getConfiguration().getValue().getFormat().getOrDefault("timestamp", "short").toLowerCase().trim();
-
-        buildFormat(configuredFormat);
-
-        final String formatRequired = getConfiguration().getValue().getFormat().get("timestamp");
-        
-        if (formatRequired == null) {
-            format = formats().get(defaultFormat());
-        } else {
-            setMask(formatRequired);
-        }
-    }
-
-    @Override
-    protected T add(final T original, final int years, final int months, final int days, final int hours, final int minutes) {
-        return original;
-    }
-
-    @Override
-    protected String defaultFormat() {
-        return "short";
-    }
-
-    @Override
-    public String toString() {
-        return "TimeStampValueSemanticsProvider: " + format;
-    }
-
-    @Override
-    protected DateFormat format() {
-
-        final Locale locale = Locale.getDefault();
-        final TimeZone timeZone = TimeZone.getDefault();
-
-        final DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.LONG, locale);
-        dateFormat.setTimeZone(timeZone);
-
-        return dateFormat;
-    }
-
-    @Override
-    protected List<DateFormat> formatsToTry() {
-        final List<DateFormat> formats = new ArrayList<DateFormat>();
-
-        final Locale locale = Locale.getDefault();
-        final TimeZone timeZone = TimeZone.getDefault();
-
-        formats.add(DateFormat.getDateTimeInstance(DateFormat.MEDIUM, DateFormat.LONG, locale));
-        formats.add(DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.LONG, locale));
-        formats.add(createDateFormat("yyyy-MM-dd HH:mm:ss.SSS"));
-
-        for (final DateFormat format : formats) {
-            format.setTimeZone(timeZone);
-        }
-
-        return formats;
-    }
-
-    @Override
-    public void appendAttributesTo(Map<String, Object> attributeMap) {
-        super.appendAttributesTo(attributeMap);
-        attributeMap.put("configuredFormat", configuredFormat);
-    }
-
-}


[isis] 06/36: ISIS-2264: isis.value.format["decimal"] -> isis.value-types.java-math.big-decimal.format

Posted by da...@apache.org.
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) {


[isis] 31/36: ISIS-2264: further conversions from isis.value-types.format["xxx"] to isis.value-types.aaa.bbb.format

Posted by da...@apache.org.
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;


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

Posted by da...@apache.org.
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 21ff60a863eba15292677671a77ddcbb5116eef6
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Thu Jan 16 23:19:35 2020 +0100

    ISIS-2264: isis.value.format["float"] -> isis.value-types.java-lang.float.format
---
 .../toc/modules/mignotes/pages/migrating-to-2.0.0.adoc           | 4 ++++
 .../main/java/org/apache/isis/core/config/IsisConfiguration.java | 9 ++++++++-
 .../facets/value/floats/FloatValueSemanticsProviderAbstract.java | 9 ++++++++-
 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 d140d66..738cf54 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
@@ -636,6 +636,10 @@ isis.value-types. +
 |isis.value-types. +
 {nbsp}{nbsp}java-lang.double.format
 
+|isis.value.format["float"]
+|isis.value-types. +
+{nbsp}{nbsp}java-lang.float.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 0de4d0e..5242b75 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
@@ -1197,6 +1197,13 @@ public class IsisConfiguration {
             public static class Double {
                 private String format;
             }
+
+            // capitalized to avoid clash with keyword
+            private final Float Float = new Float();
+            @Data
+            public static class Float {
+                private String format;
+            }
         }
 
         private final JavaMath javaMath = new JavaMath();
@@ -1267,7 +1274,7 @@ public class IsisConfiguration {
             TIMESTAMP, 
             TIME,
             
-            FLOAT, LONG, SHORT,
+            LONG, SHORT,
             PERCENTAGE
         }
         
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 9fd5d11..6087bd3 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
@@ -22,9 +22,11 @@ package org.apache.isis.core.metamodel.facets.value.floats;
 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,9 +50,14 @@ implements FloatingPointValueFacet {
 
     public FloatValueSemanticsProviderAbstract(final FacetHolder holder, final Class<Float> adaptedClass) {
         super(type(), holder, adaptedClass, TYPICAL_LENGTH, MAX_LENGTH, Immutability.IMMUTABLE, EqualByContent.HONOURED, DEFAULT_VALUE);
-        format = determineNumberFormat(FormatIdentifier.FLOAT);
+        final String formatRequired = getConfiguration().getValueTypes().getJavaLang().getFloat().getFormat();
+
+        format = formatRequired != null
+                ? new DecimalFormat(formatRequired)
+                : NumberFormat.getNumberInstance(getConfiguration().getCore().getRuntime().getLocale().map(LocaleUtil::findLocale).orElse(Locale.getDefault()));
     }
 
+
     // //////////////////////////////////////////////////////////////////
     // Parser
     // //////////////////////////////////////////////////////////////////


[isis] 11/36: ISIS-2264: isis.value.format["short"] -> isis.value-types.}java-lang.short.format

Posted by da...@apache.org.
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 ce64ae115f4c2342bd65d5d4dba3b034b39a0c1b
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Thu Jan 16 23:24:18 2020 +0100

    ISIS-2264: isis.value.format["short"] -> isis.value-types.}java-lang.short.format
---
 .../toc/modules/mignotes/pages/migrating-to-2.0.0.adoc        |  4 ++++
 .../java/org/apache/isis/core/config/IsisConfiguration.java   |  8 +++++++-
 .../value/shortint/ShortValueSemanticsProviderAbstract.java   | 11 ++++++++++-
 3 files changed, 21 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 00c693c..77b9f50 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
@@ -644,6 +644,10 @@ isis.value-types. +
 |isis.value-types. +
 {nbsp}{nbsp}java-lang.long.format
 
+|isis.value.format["short"]
+|isis.value-types. +
+{nbsp}{nbsp}java-lang.short.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 41871d4..f32a5ec 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
@@ -1211,6 +1211,13 @@ public class IsisConfiguration {
             public static class Long {
                 private String format;
             }
+
+            // capitalized to avoid clash with keyword
+            private final Short Short = new Short();
+            @Data
+            public static class Short {
+                private String format;
+            }
         }
 
         private final JavaMath javaMath = new JavaMath();
@@ -1281,7 +1288,6 @@ public class IsisConfiguration {
             TIMESTAMP, 
             TIME,
             
-            SHORT,
             PERCENTAGE
         }
         
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 2f93955..c129892 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
@@ -22,9 +22,11 @@ package org.apache.isis.core.metamodel.facets.value.shortint;
 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;
@@ -46,7 +48,14 @@ public class ShortValueSemanticsProviderAbstract extends ValueSemanticsProviderA
 
     public ShortValueSemanticsProviderAbstract(final FacetHolder holder, final Class<Short> adaptedClass) {
         super(type(), holder, adaptedClass, TYPICAL_LENGTH, MAX_LENGTH, Immutability.IMMUTABLE, EqualByContent.HONOURED, DEFAULT_VALUE);
-        format = determineNumberFormat(FormatIdentifier.SHORT);
+        format = xdetermineNumberFormat();
+    }
+    protected NumberFormat xdetermineNumberFormat() {
+        final String formatRequired = getConfiguration().getValue().getFormat().get("short");
+
+        return formatRequired != null
+                ? new DecimalFormat(formatRequired)
+                : NumberFormat.getNumberInstance(getConfiguration().getCore().getRuntime().getLocale().map(LocaleUtil::findLocale).orElse(Locale.getDefault()));
     }
 
     // //////////////////////////////////////////////////////////////////


[isis] 27/36: ISIS-2264: isis.value.format.date -> isis.value-types.java-sql.date.format

Posted by da...@apache.org.
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 066b2722baf90935a47abaf83642b556cd172cfd
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Fri Jan 17 01:26:24 2020 +0100

    ISIS-2264: isis.value.format.date -> isis.value-types.java-sql.date.format
---
 .../toc/modules/mignotes/pages/migrating-to-2.0.0.adoc  |  4 ++++
 .../org/apache/isis/core/config/IsisConfiguration.java  | 11 +++++++++++
 .../datesql/JavaSqlDateValueSemanticsProvider.java      | 17 ++++++-----------
 3 files changed, 21 insertions(+), 11 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 a8ef867..b230f95 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
@@ -662,6 +662,10 @@ isis.value-types. +
 isis.value-types. +
 {nbsp}{nbsp}java-time.offset-date-time.format
 
+|isis.value.format["date"]
+|isis.value-types. +
+{nbsp}{nbsp}java-sql.date.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 75ef370..bf97fd9 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
@@ -1257,6 +1257,17 @@ public class IsisConfiguration {
         @Data
         public static class JavaUtil {
 
+
+        }
+        private final JavaSql javaSql = new JavaSql();
+        @Data
+        public static class JavaSql {
+            private final Date date = new Date();
+            @Data
+            public static class Date {
+                // lower case
+                private String format = "medium";
+            }
         }
 
         private final Joda joda = new Joda();
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/datesql/JavaSqlDateValueSemanticsProvider.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/datesql/JavaSqlDateValueSemanticsProvider.java
index 2bdbeb6..93b59f9 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/datesql/JavaSqlDateValueSemanticsProvider.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/datesql/JavaSqlDateValueSemanticsProvider.java
@@ -56,8 +56,7 @@ public class JavaSqlDateValueSemanticsProvider extends ValueSemanticsProviderAbs
         formats.put("medium", DateFormat.getDateInstance(DateFormat.MEDIUM));
     }
 
-    @Getter
-    @Setter
+    @Getter @Setter
     private String configuredFormat;
 
     /**
@@ -71,15 +70,11 @@ public class JavaSqlDateValueSemanticsProvider extends ValueSemanticsProviderAbs
     public JavaSqlDateValueSemanticsProvider(final FacetHolder holder) {
         super("date", type(), holder, Date.class, 12, Immutability.NOT_IMMUTABLE, EqualByContent.NOT_HONOURED, null);
 
-        configuredFormat = getConfiguration().getValue().getFormat().getOrDefault("date", "medium").toLowerCase().trim();
-
-        buildFormat(configuredFormat);
-
-        final String formatRequired = getConfiguration().getValue().getFormat().get("date");
-        if (formatRequired == null) {
-            format = formats().get("medium");
-        } else {
-            setMask(formatRequired); //TODO fails when using format names eg 'medium'
+        final Map<String, DateFormat> formats = formats();
+        configuredFormat = getConfiguration().getValueTypes().getJavaSql().getDate().getFormat();
+        format = formats.get(configuredFormat);
+        if (format == null) {
+            setMask(configuredFormat);
         }
     }
 


[isis] 24/36: ISIS-2264: pushes TimeValueSemanticsProviderAbstract down to its subclass, JavaSqlTimeValueSemanticsProvider

Posted by da...@apache.org.
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 9acf62391d2a356665d5dc59a1524461bcd1d86e
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Fri Jan 17 01:02:55 2020 +0100

    ISIS-2264: pushes TimeValueSemanticsProviderAbstract down to its subclass, JavaSqlTimeValueSemanticsProvider
---
 .../time/TimeValueSemanticsProviderAbstract.java   | 126 ---------------------
 .../timesql/JavaSqlTimeValueSemanticsProvider.java |  93 ++++++++++++++-
 2 files changed, 87 insertions(+), 132 deletions(-)

diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/time/TimeValueSemanticsProviderAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/time/TimeValueSemanticsProviderAbstract.java
deleted file mode 100644
index d092e0b..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/time/TimeValueSemanticsProviderAbstract.java
+++ /dev/null
@@ -1,126 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *        http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-
-package org.apache.isis.core.metamodel.facets.value.time;
-
-import java.text.DateFormat;
-import java.util.ArrayList;
-import java.util.Calendar;
-import java.util.List;
-import java.util.Locale;
-import java.util.Map;
-
-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.ValueSemanticsProviderAbstractTemporal;
-
-import lombok.Getter;
-import lombok.Setter;
-
-public abstract class TimeValueSemanticsProviderAbstract<T> 
-extends ValueSemanticsProviderAbstractTemporal<T> {
-
-    private static final int TYPICAL_LENGTH = 8;
-
-    protected static void initFormats(final Map<String, DateFormat> formats) {
-        formats.put(ISO_ENCODING_FORMAT, createDateEncodingFormat("HHmmssSSS"));
-        formats.put("short", DateFormat.getTimeInstance(DateFormat.SHORT));
-    }
-
-    @Getter @Setter
-    private String configuredFormat;
-
-    public TimeValueSemanticsProviderAbstract(final FormatIdentifier formatIdentifier, final FacetHolder holder, final Class<T> adaptedClass, final int typicalLength, final Immutability immutability, final EqualByContent equalByContent, final T defaultValue) {
-        super(formatIdentifier.name().toLowerCase(), type(), holder, adaptedClass, typicalLength, immutability, equalByContent, defaultValue);
-    }
-
-    @SuppressWarnings("unchecked")
-    public TimeValueSemanticsProviderAbstract(final FacetHolder holder, final Class<T> adaptedClass) {
-        this(FormatIdentifier.TIME, holder, adaptedClass, 8, Immutability.NOT_IMMUTABLE, EqualByContent.NOT_HONOURED, (T) null);
-
-        configuredFormat = getConfiguration().getValue().getFormat().getOrDefault("time", "short").toLowerCase().trim();
-
-        buildFormat(configuredFormat);
-
-        final String formatRequired = getConfiguration().getValue().getFormat().get("time");
-        if (formatRequired == null) {
-            format = formats().get(defaultFormat());
-        } else {
-            setMask(formatRequired);
-        }
-    }
-
-    // //////////////////////////////////////////////////////////////////
-    // temporal-specific stuff
-    // //////////////////////////////////////////////////////////////////
-
-    @Override
-    protected void clearFields(final Calendar cal) {
-        cal.set(Calendar.YEAR, 1970);
-        cal.set(Calendar.MONTH, 0);
-        cal.set(Calendar.DAY_OF_MONTH, 1);
-    }
-
-    @Override
-    protected String defaultFormat() {
-        return "short";
-    }
-
-    @Override
-    public String toString() {
-        return "TimeValueSemanticsProvider: " + format;
-    }
-
-    @Override
-    protected DateFormat format() {
-
-        final Locale locale = Locale.getDefault();
-        final DateFormat dateFormat = DateFormat.getTimeInstance(DateFormat.SHORT, locale);
-        dateFormat.setTimeZone(UTC_TIME_ZONE);
-        return dateFormat;
-    }
-
-    @Override
-    protected List<DateFormat> formatsToTry() {
-        List<DateFormat> formats = new ArrayList<DateFormat>();
-
-        final Locale locale = Locale.getDefault();
-
-        formats.add(DateFormat.getTimeInstance(DateFormat.LONG, locale));
-        formats.add(DateFormat.getTimeInstance(DateFormat.MEDIUM, locale));
-        formats.add(DateFormat.getTimeInstance(DateFormat.SHORT, locale));
-        formats.add(createDateFormat("HH:mm:ss.SSS"));
-        formats.add(createDateFormat("HHmmssSSS"));
-        formats.add(createDateFormat("HH:mm:ss"));
-        formats.add(createDateFormat("HHmmss"));
-
-        for (DateFormat format : formats) {
-            format.setTimeZone(UTC_TIME_ZONE);
-        }
-
-        return formats;
-    }
-
-    @Override
-    public void appendAttributesTo(Map<String, Object> attributeMap) {
-        super.appendAttributesTo(attributeMap);
-        attributeMap.put("configuredFormat", configuredFormat);
-    }
-
-}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/timesql/JavaSqlTimeValueSemanticsProvider.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/timesql/JavaSqlTimeValueSemanticsProvider.java
index ad5bc28..0a5539c 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/timesql/JavaSqlTimeValueSemanticsProvider.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/timesql/JavaSqlTimeValueSemanticsProvider.java
@@ -21,8 +21,11 @@ package org.apache.isis.core.metamodel.facets.value.timesql;
 
 import java.sql.Time;
 import java.text.DateFormat;
+import java.util.ArrayList;
 import java.util.Calendar;
 import java.util.Date;
+import java.util.List;
+import java.util.Locale;
 import java.util.Map;
 
 import org.apache.isis.applib.adapters.EncoderDecoder;
@@ -30,19 +33,25 @@ import org.apache.isis.applib.adapters.Parser;
 import org.apache.isis.applib.clock.Clock;
 import org.apache.isis.core.commons.internal.collections._Maps;
 import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.facets.value.time.TimeValueSemanticsProviderAbstract;
+import org.apache.isis.core.metamodel.facets.value.ValueSemanticsProviderAbstractTemporal;
+
+import lombok.Getter;
+import lombok.Setter;
 
 /**
  * Treats {@link java.sql.Time} as a time-only value type.
  *
  */
-public class JavaSqlTimeValueSemanticsProvider extends TimeValueSemanticsProviderAbstract<java.sql.Time> {
-    private static Map<String, DateFormat> formats = _Maps.newHashMap();
+public class JavaSqlTimeValueSemanticsProvider extends ValueSemanticsProviderAbstractTemporal<Time> {
 
-    static {
-        initFormats(formats);
+    protected static void initFormats(final Map<String, DateFormat> formats) {
+        formats.put(ISO_ENCODING_FORMAT, createDateEncodingFormat("HHmmssSSS"));
+        formats.put("short", DateFormat.getTimeInstance(DateFormat.SHORT));
     }
 
+    @Getter @Setter
+    private String configuredFormat;
+
     /**
      * Required because implementation of {@link Parser} and
      * {@link EncoderDecoder}.
@@ -52,10 +61,82 @@ public class JavaSqlTimeValueSemanticsProvider extends TimeValueSemanticsProvide
     }
 
     public JavaSqlTimeValueSemanticsProvider(final FacetHolder holder) {
-        super(holder, java.sql.Time.class);
+        super("time", type(), holder, java.sql.Time.class, 8, Immutability.NOT_IMMUTABLE, EqualByContent.NOT_HONOURED, null);
+
+        configuredFormat = getConfiguration().getValue().getFormat().getOrDefault("time", "short").toLowerCase().trim();
+
+        buildFormat(configuredFormat);
+
+        final String formatRequired = getConfiguration().getValue().getFormat().get("time");
+        if (formatRequired == null) {
+            format = formats().get(defaultFormat());
+        } else {
+            setMask(formatRequired);
+        }
     }
 
     @Override
+    protected void clearFields(final Calendar cal) {
+        cal.set(Calendar.YEAR, 1970);
+        cal.set(Calendar.MONTH, 0);
+        cal.set(Calendar.DAY_OF_MONTH, 1);
+    }
+
+    @Override
+    protected String defaultFormat() {
+        return "short";
+    }
+
+    @Override
+    public String toString() {
+        return "TimeValueSemanticsProvider: " + format;
+    }
+
+    @Override
+    protected DateFormat format() {
+
+        final Locale locale = Locale.getDefault();
+        final DateFormat dateFormat = DateFormat.getTimeInstance(DateFormat.SHORT, locale);
+        dateFormat.setTimeZone(UTC_TIME_ZONE);
+        return dateFormat;
+    }
+
+    @Override
+    protected List<DateFormat> formatsToTry() {
+        List<DateFormat> formats = new ArrayList<DateFormat>();
+
+        final Locale locale = Locale.getDefault();
+
+        formats.add(DateFormat.getTimeInstance(DateFormat.LONG, locale));
+        formats.add(DateFormat.getTimeInstance(DateFormat.MEDIUM, locale));
+        formats.add(DateFormat.getTimeInstance(DateFormat.SHORT, locale));
+        formats.add(createDateFormat("HH:mm:ss.SSS"));
+        formats.add(createDateFormat("HHmmssSSS"));
+        formats.add(createDateFormat("HH:mm:ss"));
+        formats.add(createDateFormat("HHmmss"));
+
+        for (DateFormat format : formats) {
+            format.setTimeZone(UTC_TIME_ZONE);
+        }
+
+        return formats;
+    }
+
+    @Override
+    public void appendAttributesTo(Map<String, Object> attributeMap) {
+        super.appendAttributesTo(attributeMap);
+        attributeMap.put("configuredFormat", configuredFormat);
+    }
+
+
+    private static Map<String, DateFormat> formats = _Maps.newHashMap();
+
+    static {
+        initFormats(formats);
+    }
+
+
+    @Override
     public Time add(final Time original, final int years, final int months, final int days, final int hours, final int minutes) {
         final java.sql.Time time = original;
         final Calendar cal = Calendar.getInstance();


[isis] 19/36: ISIS-2264: further refactorings of temporal VSP's

Posted by da...@apache.org.
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 9698e5c1f1bb99298eb7c62895bedb5e9694a86a
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Fri Jan 17 00:14:46 2020 +0100

    ISIS-2264: further refactorings of temporal VSP's
---
 .../value/DateAndTimeValueSemanticsProviderAbstract.java       |  5 ++---
 .../facets/value/ValueSemanticsProviderAbstractTemporal.java   | 10 +---------
 .../facets/value/date/DateValueSemanticsProviderAbstract.java  |  8 +++-----
 .../JodaDateTimeValueSemanticsProviderAbstract.java            |  8 +++-----
 .../facets/value/time/TimeValueSemanticsProviderAbstract.java  |  8 +++-----
 .../timestampsql/TimeStampValueSemanticsProviderAbstract.java  |  8 +++-----
 6 files changed, 15 insertions(+), 32 deletions(-)

diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/DateAndTimeValueSemanticsProviderAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/DateAndTimeValueSemanticsProviderAbstract.java
index cb4bc7a..85a66b4 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/DateAndTimeValueSemanticsProviderAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/DateAndTimeValueSemanticsProviderAbstract.java
@@ -52,15 +52,14 @@ extends ValueSemanticsProviderAbstractTemporal<T> {
 
 
     public DateAndTimeValueSemanticsProviderAbstract(final FormatIdentifier formatIdentifier, final FacetHolder holder, final Class<T> adaptedClass, final int typicalLength, final Immutability immutability, final EqualByContent equalByContent, final T defaultValue) {
-        super(formatIdentifier, formatIdentifier.name().toLowerCase(), type(), holder, adaptedClass, typicalLength, immutability, equalByContent, defaultValue);
+        super(formatIdentifier.name().toLowerCase(), type(), holder, adaptedClass, typicalLength, immutability, equalByContent, defaultValue);
     }
 
     @SuppressWarnings("unchecked")
     public DateAndTimeValueSemanticsProviderAbstract(final FacetHolder holder, final Class<T> adaptedClass, final Immutability immutability, final EqualByContent equalByContent) {
         this(FormatIdentifier.DATETIME, holder, adaptedClass, TYPICAL_LENGTH, immutability, equalByContent, (T) DEFAULT_VALUE);
 
-        configuredFormat = getConfiguration()
-                .getValue().getFormat().getOrDefault(FormatIdentifier.DATETIME.name().toLowerCase(), "medium").toLowerCase().trim();
+        configuredFormat = getConfiguration().getValue().getFormat().getOrDefault(FormatIdentifier.DATETIME.name().toLowerCase(), "medium").toLowerCase().trim();
 
         buildFormat(configuredFormat);
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/ValueSemanticsProviderAbstractTemporal.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/ValueSemanticsProviderAbstractTemporal.java
index 9db345d..ce3fca9 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/ValueSemanticsProviderAbstractTemporal.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/ValueSemanticsProviderAbstractTemporal.java
@@ -33,7 +33,6 @@ import java.util.TimeZone;
 import org.apache.isis.applib.adapters.EncodingException;
 import org.apache.isis.core.commons.internal.base._Casts;
 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.parseable.TextEntryParseException;
@@ -98,17 +97,10 @@ implements DateValueFacet {
     private String propertyType;
 
     /**
-     * Uses {@link #type()} as the facet type.
-     */
-    public ValueSemanticsProviderAbstractTemporal(final FormatIdentifier formatIdentifier, String propertyType, final FacetHolder holder, final Class<T> adaptedClass, final int typicalLength, final Immutability immutability, final EqualByContent equalByContent, final T defaultValue) {
-        this(formatIdentifier, propertyType, type(), holder, adaptedClass, typicalLength, immutability, equalByContent, defaultValue);
-    }
-
-    /**
      * Allows the specific facet subclass to be specified (rather than use
      * {@link #type()}.
      */
-    public ValueSemanticsProviderAbstractTemporal(final FormatIdentifier formatIdentifier, String propertyType, final Class<? extends Facet> facetType, final FacetHolder holder, final Class<T> adaptedClass, final int typicalLength, final Immutability immutability, final EqualByContent equalByContent, final T defaultValue) {
+    public ValueSemanticsProviderAbstractTemporal(String propertyType, final Class<? extends Facet> facetType, final FacetHolder holder, final Class<T> adaptedClass, final int typicalLength, final Immutability immutability, final EqualByContent equalByContent, final T defaultValue) {
         super(facetType, holder, adaptedClass, typicalLength, -1, immutability, equalByContent, defaultValue);
         configureFormats();
 
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/date/DateValueSemanticsProviderAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/date/DateValueSemanticsProviderAbstract.java
index 23d4cfe..3be27c7 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/date/DateValueSemanticsProviderAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/date/DateValueSemanticsProviderAbstract.java
@@ -48,19 +48,17 @@ public abstract class DateValueSemanticsProviderAbstract<T> extends ValueSemanti
     private String configuredFormat;
 
     public DateValueSemanticsProviderAbstract(final FormatIdentifier formatIdentifier, final FacetHolder holder, final Class<T> adaptedClass, final int typicalLength, final Immutability immutability, final EqualByContent equalByContent, final T defaultValue) {
-        super(formatIdentifier, formatIdentifier.name().toLowerCase(), type(), holder, adaptedClass, typicalLength, immutability, equalByContent, defaultValue);
+        super(formatIdentifier.name().toLowerCase(), type(), holder, adaptedClass, typicalLength, immutability, equalByContent, defaultValue);
     }
 
     public DateValueSemanticsProviderAbstract(final FacetHolder holder, final Class<T> adaptedClass, final Immutability immutability, final EqualByContent equalByContent, final T defaultValue) {
         this(FormatIdentifier.DATE, holder, adaptedClass, 12, immutability, equalByContent, defaultValue);
 
-        configuredFormat = getConfiguration()
-                .getValue().getFormat().getOrDefault(FormatIdentifier.DATE.name().toLowerCase(), "medium").toLowerCase().trim();
+        configuredFormat = getConfiguration().getValue().getFormat().getOrDefault("date", "medium").toLowerCase().trim();
 
         buildFormat(configuredFormat);
 
-        final String formatRequired = getConfiguration().getValue().getFormat().getOrDefault(FormatIdentifier.DATE.name().toLowerCase(), null);
-        
+        final String formatRequired = getConfiguration().getValue().getFormat().get("date");
         if (formatRequired == null) {
             format = formats().get(defaultFormat());
         } else {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/datetimejoda/JodaDateTimeValueSemanticsProviderAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/datetimejoda/JodaDateTimeValueSemanticsProviderAbstract.java
index f04aeda..4da3836 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/datetimejoda/JodaDateTimeValueSemanticsProviderAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/datetimejoda/JodaDateTimeValueSemanticsProviderAbstract.java
@@ -48,19 +48,17 @@ public abstract class JodaDateTimeValueSemanticsProviderAbstract<T> extends Valu
     private String configuredFormat;
 
     public JodaDateTimeValueSemanticsProviderAbstract(final FormatIdentifier formatIdentifier, final FacetHolder holder, final Class<T> adaptedClass, final int typicalLength, final Immutability immutability, final EqualByContent equalByContent, final T defaultValue) {
-        super(formatIdentifier, formatIdentifier.name().toLowerCase(), type(), holder, adaptedClass, typicalLength, immutability, equalByContent, defaultValue);
+        super(formatIdentifier.name().toLowerCase(), type(), holder, adaptedClass, typicalLength, immutability, equalByContent, defaultValue);
     }
 
     public JodaDateTimeValueSemanticsProviderAbstract(final FacetHolder holder, final Class<T> adaptedClass, final T defaultValue) {
         this(FormatIdentifier.DATE, holder, adaptedClass, 12, Immutability.IMMUTABLE, EqualByContent.HONOURED, defaultValue);
 
-        configuredFormat = getConfiguration()
-                .getValue().getFormat().getOrDefault(FormatIdentifier.DATE.name().toLowerCase(), "medium").toLowerCase().trim();
+        configuredFormat = getConfiguration().getValue().getFormat().getOrDefault("date", "medium").toLowerCase().trim();
 
         buildFormat(configuredFormat);
 
-        String formatRequired = getConfiguration()
-                .getValue().getFormat().getOrDefault(FormatIdentifier.DATE.name().toLowerCase(), null);
+        String formatRequired = getConfiguration().getValue().getFormat().get("date");
         
         if (formatRequired == null) {
             format = formats().get(defaultFormat());
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/time/TimeValueSemanticsProviderAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/time/TimeValueSemanticsProviderAbstract.java
index 24c01f4..0a599d7 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/time/TimeValueSemanticsProviderAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/time/TimeValueSemanticsProviderAbstract.java
@@ -48,20 +48,18 @@ extends ValueSemanticsProviderAbstractTemporal<T> {
     private String configuredFormat;
 
     public TimeValueSemanticsProviderAbstract(final FormatIdentifier formatIdentifier, final FacetHolder holder, final Class<T> adaptedClass, final int typicalLength, final Immutability immutability, final EqualByContent equalByContent, final T defaultValue) {
-        super(formatIdentifier, formatIdentifier.name().toLowerCase(), type(), holder, adaptedClass, typicalLength, immutability, equalByContent, defaultValue);
+        super(formatIdentifier.name().toLowerCase(), type(), holder, adaptedClass, typicalLength, immutability, equalByContent, defaultValue);
     }
 
     @SuppressWarnings("unchecked")
     public TimeValueSemanticsProviderAbstract(final FacetHolder holder, final Class<T> adaptedClass) {
         this(FormatIdentifier.TIME, holder, adaptedClass, TYPICAL_LENGTH, Immutability.NOT_IMMUTABLE, EqualByContent.NOT_HONOURED, (T) DEFAULT_VALUE);
 
-        configuredFormat = getConfiguration()
-                .getValue().getFormat().getOrDefault(FormatIdentifier.TIME.name().toLowerCase(), "short").toLowerCase().trim();
+        configuredFormat = getConfiguration().getValue().getFormat().getOrDefault("time", "short").toLowerCase().trim();
 
         buildFormat(configuredFormat);
 
-        final String formatRequired = getConfiguration()
-                .getValue().getFormat().getOrDefault(FormatIdentifier.TIME.name().toLowerCase(), null);
+        final String formatRequired = getConfiguration().getValue().getFormat().get("time");
         if (formatRequired == null) {
             format = formats().get(defaultFormat());
         } else {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/timestampsql/TimeStampValueSemanticsProviderAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/timestampsql/TimeStampValueSemanticsProviderAbstract.java
index 9f8c60d..f681bbb 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/timestampsql/TimeStampValueSemanticsProviderAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/timestampsql/TimeStampValueSemanticsProviderAbstract.java
@@ -47,20 +47,18 @@ abstract class TimeStampValueSemanticsProviderAbstract<T> extends ValueSemantics
     private String configuredFormat;
 
     public TimeStampValueSemanticsProviderAbstract(final FormatIdentifier formatIdentifier, final FacetHolder holder, final Class<T> adaptedClass, final int typicalLength, final Immutability immutability, final EqualByContent equalByContent, final T defaultValue) {
-        super(formatIdentifier, formatIdentifier.name().toLowerCase(), type(), holder, adaptedClass, typicalLength, immutability, equalByContent, defaultValue);
+        super(formatIdentifier.name().toLowerCase(), type(), holder, adaptedClass, typicalLength, immutability, equalByContent, defaultValue);
     }
 
     @SuppressWarnings("unchecked")
     public TimeStampValueSemanticsProviderAbstract(final FacetHolder holder, final Class<T> adaptedClass) {
         this(FormatIdentifier.TIMESTAMP, holder, adaptedClass, TYPICAL_LENGTH, Immutability.NOT_IMMUTABLE, EqualByContent.NOT_HONOURED, (T) DEFAULT_VALUE);
 
-        configuredFormat = getConfiguration()
-                .getValue().getFormat().getOrDefault(FormatIdentifier.TIMESTAMP.name().toLowerCase(), "short").toLowerCase().trim();
+        configuredFormat = getConfiguration().getValue().getFormat().getOrDefault("timestamp", "short").toLowerCase().trim();
 
         buildFormat(configuredFormat);
 
-        final String formatRequired = getConfiguration()
-                .getValue().getFormat().getOrDefault(FormatIdentifier.TIMESTAMP.name().toLowerCase(), null);
+        final String formatRequired = getConfiguration().getValue().getFormat().get("timestamp");
         
         if (formatRequired == null) {
             format = formats().get(defaultFormat());


[isis] 12/36: ISIS-2264: isis.value.format["percentage"] -> isis.legacy.value-types.percentage.format

Posted by da...@apache.org.
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 3e789cabce60508c509c01a31c079dd7f6bc6c31
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Thu Jan 16 23:29:22 2020 +0100

    ISIS-2264: isis.value.format["percentage"] -> isis.legacy.value-types.percentage.format
---
 .../toc/modules/mignotes/pages/migrating-to-2.0.0.adoc      |  4 ++++
 .../adoc/modules/config/pages/configuration-properties.adoc |  3 ---
 .../java/org/apache/isis/core/config/IsisConfiguration.java | 13 +++++++++++++
 .../value/percentage/PercentageValueSemanticsProvider.java  |  3 +--
 4 files changed, 18 insertions(+), 5 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 77b9f50..bf2af81 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
@@ -648,6 +648,10 @@ isis.value-types. +
 |isis.value-types. +
 {nbsp}{nbsp}java-lang.short.format
 
+|isis.value.format["percentage"]
+|isis.legacy.value-types. +
+{nbsp}{nbsp}percentage.format
+
 |
 |
 
diff --git a/core/config/src/main/adoc/modules/config/pages/configuration-properties.adoc b/core/config/src/main/adoc/modules/config/pages/configuration-properties.adoc
index f11a111..ab110fa 100644
--- a/core/config/src/main/adoc/modules/config/pages/configuration-properties.adoc
+++ b/core/config/src/main/adoc/modules/config/pages/configuration-properties.adoc
@@ -244,7 +244,6 @@ include::refguide:config:example$generated/isis.incubator.adoc[]
 
 endif::[]
 
-ifdef::env-this-stuff-is-currently-disabled[]
 
 == Legacy
 
@@ -259,8 +258,6 @@ include::refguide:config:example$generated/isis.legacy.adoc[]
 
 |===
 
-endif::[]
-
 
 == 3rd Party
 
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 f32a5ec..2d35f48 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
@@ -1253,8 +1253,21 @@ public class IsisConfiguration {
         public static class Joda {
 
         }
+    }
 
+    private final Legacy legacy = new Legacy();
+    @Data
+    public static class Legacy {
 
+        private final ValueTypes valueTypes = new ValueTypes();
+        @Data
+        public static class ValueTypes {
+            private final Percentage percentage = new Percentage();
+            @Data
+            public static class Percentage {
+                private String format;
+            }
+        }
     }
 
     //TODO no meta data yet ... https://docs.spring.io/spring-boot/docs/current/reference/html/appendix-configuration-metadata.html#configuration-metadata-property-attributes
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 84272e8..e9b50ad 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
@@ -61,8 +61,7 @@ implements FloatingPointValueFacet {
     public PercentageValueSemanticsProvider(final FacetHolder holder) {
         super(type(), holder, Percentage.class, TYPICAL_LENGTH, -1, Immutability.IMMUTABLE, EqualByContent.HONOURED, DEFAULT_VALUE);
 
-        final String formatRequired = getConfiguration()
-                .getValue().getFormatOrElse(FormatIdentifier.PERCENTAGE, null);
+        final String formatRequired = getConfiguration().getLegacy().getValueTypes().getPercentage().getFormat();
                 
         if (formatRequired == null) {
             format = PERCENTAGE_FORMAT;