andi-huber commented on code in PR #3623:
URL: https://github.com/apache/causeway/pull/3623#discussion_r3434193741


##########
core/metamodel/src/main/java/org/apache/causeway/core/metamodel/util/Facets.java:
##########
@@ -251,49 +252,77 @@ public String labelAtCss(final ObjectFeature feature) {
         return "label-" + labelAt(feature).name().toLowerCase();
     }
 
+    // -- VALUE SEMANTICS
+
+    public OptionalInt maxIntegerDigits(final FacetHolder facetHolder) {
+        return facetHolder.lookupFacet(MaxIntegerDigitsFacet.class)
+                .map(MaxIntegerDigitsFacet::maxIntegerDigits)
+                .map(OptionalInt::of)
+                .orElseGet(OptionalInt::empty);
+    }
+
+    public OptionalInt minIntegerDigits(final FacetHolder facetHolder) {
+        return facetHolder.lookupFacet(MinIntegerDigitsFacet.class)
+                .map(MinIntegerDigitsFacet::minIntegerDigits)
+                .map(OptionalInt::of)
+                .orElseGet(OptionalInt::empty);
+    }
+
     public OptionalInt minFractionalDigits(final FacetHolder facetHolder) {
         return facetHolder.lookupFacet(MinFractionalDigitsFacet.class)
-            .map(MinFractionalDigitsFacet::getMinFractionalDigits)
+            .map(MinFractionalDigitsFacet::minFractionalDigits)
             .filter(digits->digits>-1)
             .map(OptionalInt::of)
             .orElseGet(OptionalInt::empty);
     }
 
     public OptionalInt maxFractionalDigits(final FacetHolder facetHolder) {
         return facetHolder.lookupFacet(MaxFractionalDigitsFacet.class)
-            .map(MaxFractionalDigitsFacet::getMaxFractionalDigits)
+            .map(MaxFractionalDigitsFacet::maxFractionalDigits)
             .filter(digits->digits>-1)
             .map(OptionalInt::of)
             .orElseGet(OptionalInt::empty);
     }
 
-    public OptionalInt maxFractionalDigits(final @Nullable 
Iterable<FacetHolder> facetHolders) {
-        return _NullSafe.stream(facetHolders)
-            .map(Facets::maxFractionalDigits)
-            .findFirst()
-            .orElseGet(OptionalInt::empty);
+    /**
+     * Does not consult the combination of maxIntegerDigits and 
maxFractionalDigits.
+     */
+    public OptionalInt maxTotalDigitsExplicit(final FacetHolder facetHolder) {
+        return facetHolder.lookupFacet(MaxTotalDigitsFacet.class)
+                .map(MaxTotalDigitsFacet::maxTotalDigits)
+                .map(OptionalInt::of)
+                .orElseGet(OptionalInt::empty);
     }
 
-    public OptionalInt maxLength(final FacetHolder facetHolder) {
-        return facetHolder
-            .lookupFacet(MaxLengthFacet.class)
-            .map(MaxLengthFacet::value)
-            .map(OptionalInt::of)
-            .orElseGet(OptionalInt::empty);
-    }
+    /**
+     * Consults all available constraints, in contrast to {@link 
#maxTotalDigits(FacetHolder)}
+     */
+    public OptionalInt maxTotalDigitsInferred(final FacetHolder facetHolder) {
+        var maxInt = maxIntegerDigits(facetHolder);
+        if(!maxInt.isPresent())
+            return maxTotalDigitsExplicit(facetHolder);
 
-    public OptionalInt maxTotalDigits(final FacetHolder facetHolder) {
-        return facetHolder.lookupFacet(MaxTotalDigitsFacet.class)
-            .map(MaxTotalDigitsFacet::getMaxTotalDigits)
-            .map(OptionalInt::of)
-            .orElseGet(OptionalInt::empty);
+        var maxFrac = maxFractionalDigits(facetHolder);
+        if(!maxFrac.isPresent())

Review Comment:
   actually, this is not required for non-floating-point types



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to