You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by ah...@apache.org on 2021/11/04 06:58:40 UTC
[isis] branch master updated: ISIS-2741: honor
MaximumFractionDigitsFacet with BigDecimalValueSemantics
This is an automated email from the ASF dual-hosted git repository.
ahuber pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git
The following commit(s) were added to refs/heads/master by this push:
new 26d25a9 ISIS-2741: honor MaximumFractionDigitsFacet with BigDecimalValueSemantics
26d25a9 is described below
commit 26d25a95736818a045f3414c61a29999e6c30827
Author: Andi Huber <ah...@apache.org>
AuthorDate: Thu Nov 4 07:58:33 2021 +0100
ISIS-2741: honor MaximumFractionDigitsFacet with
BigDecimalValueSemantics
---
.../java/org/apache/isis/applib/Identifier.java | 3 +++
.../applib/adapters/ValueSemanticsAbstract.java | 13 +++++++---
.../maxlen/MaxFractionalDigitsFacetAbstract.java | 27 ++++++++++----------
...sFacet.java => MaximumFractionDigitsFacet.java} | 4 +--
...rameterFromJavaxValidationDigitsAnnotation.java | 4 +--
...ropertyFromJavaxValidationDigitsAnnotation.java | 4 +--
.../specimpl/ObjectActionParameterAbstract.java | 29 ++++++----------------
.../valuesemantics/BigDecimalValueSemantics.java | 17 ++++++++++---
...ValidationDigitsAnnotationFacetFactoryTest.java | 6 ++---
...nferredFromJdoColumnAnnotationFacetFactory.java | 8 +++---
...FractionalDigitsFacetInferredFromJdoColumn.java | 4 +--
...vedFromJdoColumnAnnotationFacetFactoryTest.java | 8 +++---
...FractionalDigitsFacetInferredFromJpaColumn.java | 4 +--
.../viewer/common/model/feature/ScalarUiModel.java | 6 ++---
.../domainobjects/ObjectPropertyReprRenderer.java | 6 ++---
.../components/scalars/IsisConverterLocator.java | 6 ++---
.../jdkmath/BigDecimalConverter_roundtrip.java | 4 +--
17 files changed, 79 insertions(+), 74 deletions(-)
diff --git a/api/applib/src/main/java/org/apache/isis/applib/Identifier.java b/api/applib/src/main/java/org/apache/isis/applib/Identifier.java
index 0f6965e..2498759 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/Identifier.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/Identifier.java
@@ -58,6 +58,9 @@ implements
/**
* What type of feature this identifies.
+ * @apiNote <i>Action Parameters</i> (for historic reasons) have {@link Type#ACTION},
+ * but other than <i>Actions</i>, have a non-negative {@link #parameterIndex}.
+ * (Future work, might introduce a new Type: eg. PARAMETER)
*/
public static enum Type {
CLASS, PROPERTY_OR_COLLECTION, ACTION;
diff --git a/api/applib/src/main/java/org/apache/isis/applib/adapters/ValueSemanticsAbstract.java b/api/applib/src/main/java/org/apache/isis/applib/adapters/ValueSemanticsAbstract.java
index 913a914..729cd121 100644
--- a/api/applib/src/main/java/org/apache/isis/applib/adapters/ValueSemanticsAbstract.java
+++ b/api/applib/src/main/java/org/apache/isis/applib/adapters/ValueSemanticsAbstract.java
@@ -132,16 +132,23 @@ implements
} else if (position.getIndex() < input.length()) {
throw new ParseException("input='" + input + "' was not processed completely", position.getIndex());
}
+ // check for maxFractionDigits if required ...
+ final int maxFractionDigits = format.getMaximumFractionDigits();
+ if(maxFractionDigits>-1
+ && number.scale()>format.getMaximumFractionDigits()) {
+ throw new TextEntryParseException(String.format(
+ "No more than %d fraction digits can be entered, "
+ + "got %d in '%s'.", maxFractionDigits, number.scale(), input));
+ }
return number;
} catch (final NumberFormatException | ParseException e) {
- System.err.printf("suppressed message %s%n", e.getMessage());
+ System.err.printf("suppressed message %s%n", e.getMessage()); //FIXME[ISIS-2741] remove (debug)
throw new TextEntryParseException("Not a decimal value " + input, e);
}
}
/**
- * typically overridden by BigDecimalValueSemantics to set MaximumFractionDigits
- * @param format
+ * Typically overridden by BigDecimalValueSemantics to set MaximumFractionDigits.
*/
protected void configureDecimalFormat(final Context context, final DecimalFormat format) {}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/objectvalue/maxlen/MaxFractionalDigitsFacetAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/objectvalue/maxlen/MaxFractionalDigitsFacetAbstract.java
index 6e0aa27..8fa0963 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/objectvalue/maxlen/MaxFractionalDigitsFacetAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/objectvalue/maxlen/MaxFractionalDigitsFacetAbstract.java
@@ -26,49 +26,48 @@ import org.apache.isis.core.metamodel.facetapi.FacetHolder;
import lombok.Getter;
import lombok.NonNull;
-import lombok.experimental.Accessors;
public abstract class MaxFractionalDigitsFacetAbstract
extends FacetAbstract
-implements MaxFractionalDigitsFacet {
+implements MaximumFractionDigitsFacet {
private static final Class<? extends Facet> type() {
- return MaxFractionalDigitsFacet.class;
+ return MaximumFractionDigitsFacet.class;
}
- @Getter(onMethod_ = {@Override}) @Accessors(fluent = true)
- private final int maxFractionalDigits;
+ @Getter(onMethod_ = {@Override})
+ private final int maximumFractionDigits;
protected MaxFractionalDigitsFacetAbstract(
- final int maxFractionalDigits,
+ final int maximumFractionDigits,
final FacetHolder holder) {
super(type(), holder);
- this.maxFractionalDigits= maxFractionalDigits;
+ this.maximumFractionDigits = maximumFractionDigits;
}
protected MaxFractionalDigitsFacetAbstract(
- final int maxFractionalDigits,
+ final int maximumFractionDigits,
final FacetHolder holder,
final Facet.Precedence precedence) {
super(type(), holder, precedence);
- this.maxFractionalDigits= maxFractionalDigits;
+ this.maximumFractionDigits = maximumFractionDigits;
}
@Override
public boolean semanticEquals(@NonNull final Facet other) {
- return other instanceof MaxFractionalDigitsFacet
+ return other instanceof MaximumFractionDigitsFacet
? Integer.compare(
- this.maxFractionalDigits(),
- ((MaxFractionalDigitsFacet)other).maxFractionalDigits()) == 0
+ this.getMaximumFractionDigits(),
+ ((MaximumFractionDigitsFacet)other).getMaximumFractionDigits()) == 0
: false;
}
@Override
public void visitAttributes(final BiConsumer<String, Object> visitor) {
super.visitAttributes(visitor);
- visitor.accept("maxFractionalDigits", maxFractionalDigits <0
+ visitor.accept("maximumFractionDigits", maximumFractionDigits <0
? "unlimited"
- : String.valueOf(maxFractionalDigits));
+ : String.valueOf(maximumFractionDigits));
}
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/objectvalue/maxlen/MaxFractionalDigitsFacet.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/objectvalue/maxlen/MaximumFractionDigitsFacet.java
similarity index 94%
rename from core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/objectvalue/maxlen/MaxFractionalDigitsFacet.java
rename to core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/objectvalue/maxlen/MaximumFractionDigitsFacet.java
index c0ead20..97a532a 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/objectvalue/maxlen/MaxFractionalDigitsFacet.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/objectvalue/maxlen/MaximumFractionDigitsFacet.java
@@ -34,12 +34,12 @@ import org.apache.isis.core.metamodel.facetapi.Facet;
* <li><tt>12345.0</tt> has 1 fractional digit</li>
* </ul>
*/
-public interface MaxFractionalDigitsFacet
+public interface MaximumFractionDigitsFacet
extends Facet {
/**
* eg. as provided by {@link Digits#fraction()}
*/
- int maxFractionalDigits();
+ int getMaximumFractionDigits();
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/bigdecimal/javaxvaldigits/MaxFractionalDigitsFacetOnParameterFromJavaxValidationDigitsAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/bigdecimal/javaxvaldigits/MaxFractionalDigitsFacetOnParameterFromJavaxValidationDigitsAnnotation.java
index ea6aedf..9d43737 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/bigdecimal/javaxvaldigits/MaxFractionalDigitsFacetOnParameterFromJavaxValidationDigitsAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/bigdecimal/javaxvaldigits/MaxFractionalDigitsFacetOnParameterFromJavaxValidationDigitsAnnotation.java
@@ -23,13 +23,13 @@ import java.util.Optional;
import javax.validation.constraints.Digits;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.facets.objectvalue.maxlen.MaxFractionalDigitsFacet;
+import org.apache.isis.core.metamodel.facets.objectvalue.maxlen.MaximumFractionDigitsFacet;
import org.apache.isis.core.metamodel.facets.objectvalue.maxlen.MaxFractionalDigitsFacetAbstract;
public class MaxFractionalDigitsFacetOnParameterFromJavaxValidationDigitsAnnotation
extends MaxFractionalDigitsFacetAbstract {
- public static Optional<MaxFractionalDigitsFacet> create(
+ public static Optional<MaximumFractionDigitsFacet> create(
final Optional<Digits> digitsIfAny,
final FacetHolder holder) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/bigdecimal/javaxvaldigits/MaxFractionalDigitsFacetOnPropertyFromJavaxValidationDigitsAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/bigdecimal/javaxvaldigits/MaxFractionalDigitsFacetOnPropertyFromJavaxValidationDigitsAnnotation.java
index a2d4124..bcd80fc 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/bigdecimal/javaxvaldigits/MaxFractionalDigitsFacetOnPropertyFromJavaxValidationDigitsAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/bigdecimal/javaxvaldigits/MaxFractionalDigitsFacetOnPropertyFromJavaxValidationDigitsAnnotation.java
@@ -23,13 +23,13 @@ import java.util.Optional;
import javax.validation.constraints.Digits;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.facets.objectvalue.maxlen.MaxFractionalDigitsFacet;
+import org.apache.isis.core.metamodel.facets.objectvalue.maxlen.MaximumFractionDigitsFacet;
import org.apache.isis.core.metamodel.facets.objectvalue.maxlen.MaxFractionalDigitsFacetAbstract;
public class MaxFractionalDigitsFacetOnPropertyFromJavaxValidationDigitsAnnotation
extends MaxFractionalDigitsFacetAbstract {
- public static Optional<MaxFractionalDigitsFacet> create(
+ public static Optional<MaximumFractionDigitsFacet> create(
final Optional<Digits> digitsIfAny,
final FacetHolder holder) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionParameterAbstract.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionParameterAbstract.java
index 4821e4c..b96b8cb 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionParameterAbstract.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/specloader/specimpl/ObjectActionParameterAbstract.java
@@ -54,6 +54,7 @@ import org.apache.isis.core.metamodel.spec.feature.ObjectAction;
import org.apache.isis.core.metamodel.spec.feature.ObjectActionParameter;
import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
+import lombok.Getter;
import lombok.NonNull;
import lombok.val;
@@ -62,8 +63,8 @@ implements
ObjectActionParameter,
HasFacetHolder {
- private final FeatureType featureType;
- private final int number;
+ @Getter(onMethod_ = {@Override}) private final FeatureType featureType;
+ @Getter(onMethod_ = {@Override}) private final int parameterIndex;
private final ObjectActionDefault parentAction;
private final String javaSourceParamName;
private final ObjectSpecification paramElementType;
@@ -75,7 +76,7 @@ implements
final ObjectActionDefault objectAction) {
this.featureType = featureType;
- this.number = number;
+ this.parameterIndex = number;
this.parentAction = objectAction;
this.paramElementType = paramElementType;
@@ -89,23 +90,10 @@ implements
}
@Override
- public FeatureType getFeatureType() {
- return featureType;
- }
-
- @Override
public ManagedObject get(final ManagedObject owner, final InteractionInitiatedBy interactionInitiatedBy) {
throw _Exceptions.unexpectedCodeReach(); // not available for params
}
- /**
- * Parameter number, 0-based.
- */
- @Override
- public int getParameterIndex() {
- return number;
- }
-
@Override
public ObjectAction getAction() {
return parentAction;
@@ -116,10 +104,9 @@ implements
return paramElementType;
}
- @Override
- public Identifier getFeatureIdentifier() {
- return getAction().getFeatureIdentifier().withParameterIndex(number);
- }
+ @Getter(lazy = true, onMethod_ = {@Override})
+ private final Identifier featureIdentifier = getAction().getFeatureIdentifier()
+ .withParameterIndex(getParameterIndex());
@Override
public String getId() {
@@ -181,7 +168,7 @@ implements
@Override
public FacetHolder getFacetHolder() {
// that is the faceted method parameter
- return parentAction.getFacetedMethod().getParameters().getElseFail(number);
+ return parentAction.getFacetedMethod().getParameters().getElseFail(parameterIndex);
}
// -- AutoComplete
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/BigDecimalValueSemantics.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/BigDecimalValueSemantics.java
index 88a55f8..911a412 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/BigDecimalValueSemantics.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/valuesemantics/BigDecimalValueSemantics.java
@@ -33,6 +33,7 @@ import org.apache.isis.applib.adapters.Renderer;
import org.apache.isis.applib.adapters.ValueSemanticsAbstract;
import org.apache.isis.applib.adapters.ValueSemanticsProvider;
import org.apache.isis.applib.exceptions.UnrecoverableException;
+import org.apache.isis.core.metamodel.facets.objectvalue.maxlen.MaximumFractionDigitsFacet;
import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
import org.apache.isis.schema.common.v2.ValueType;
@@ -116,11 +117,19 @@ implements
return;
}
context.getFeatureIdentifier();
- val feature = specificationLoader.loadFeature(context.getFeatureIdentifier());
-
- // FIXME[ISIS-2741] evaluate any facets that provide the MaximumFractionDigits
+ val feature = specificationLoader.loadFeature(context.getFeatureIdentifier())
+ .orElse(null);
+ if(feature==null) {
+ return;
+ }
- //format.setMaximumFractionDigits(...);
+ // evaluate any facets that provide the MaximumFractionDigits
+ feature.lookupFacet(MaximumFractionDigitsFacet.class).stream()
+ .mapToInt(MaximumFractionDigitsFacet::getMaximumFractionDigits)
+ .filter(digits->digits>-1)
+ .peek(digits->System.err.printf("digits: %d%n", digits)) //FIXME[ISIS-2741] remove (debug)
+ .forEach(digits-> // cardinality 0 or 1
+ format.setMaximumFractionDigits(digits));
}
}
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/propparam/decimal/JavaxValidationDigitsAnnotationFacetFactoryTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/propparam/decimal/JavaxValidationDigitsAnnotationFacetFactoryTest.java
index 5c2e780..6389d31 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/propparam/decimal/JavaxValidationDigitsAnnotationFacetFactoryTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/propparam/decimal/JavaxValidationDigitsAnnotationFacetFactoryTest.java
@@ -29,7 +29,7 @@ import org.apache.isis.core.metamodel.facetapi.FacetHolder;
import org.apache.isis.core.metamodel.facets.AbstractFacetFactoryTest;
import org.apache.isis.core.metamodel.facets.FacetFactory;
import org.apache.isis.core.metamodel.facets.FacetFactory.ProcessMethodContext;
-import org.apache.isis.core.metamodel.facets.objectvalue.maxlen.MaxFractionalDigitsFacet;
+import org.apache.isis.core.metamodel.facets.objectvalue.maxlen.MaximumFractionDigitsFacet;
import org.apache.isis.core.metamodel.facets.objectvalue.maxlen.MaxTotalDigitsFacet;
import org.apache.isis.core.metamodel.facets.param.bigdecimal.javaxvaldigits.BigDecimalFacetOnParameterFromJavaxValidationAnnotationFactory;
import org.apache.isis.core.metamodel.facets.param.bigdecimal.javaxvaldigits.MaxFractionalDigitsFacetOnParameterFromJavaxValidationDigitsAnnotation;
@@ -92,11 +92,11 @@ extends AbstractFacetFactoryTest {
}
if(maxFractionalDigits>=0) {
- final MaxFractionalDigitsFacet facet = facetedMethod.getFacet(MaxFractionalDigitsFacet.class);
+ final MaximumFractionDigitsFacet facet = facetedMethod.getFacet(MaximumFractionDigitsFacet.class);
assertNotNull(facet);
assertTrue(facet instanceof MaxFractionalDigitsFacetOnPropertyFromJavaxValidationDigitsAnnotation
||facet instanceof MaxFractionalDigitsFacetOnParameterFromJavaxValidationDigitsAnnotation);
- assertThat(facet.maxFractionalDigits(), is(maxFractionalDigits));
+ assertThat(facet.getMaximumFractionDigits(), is(maxFractionalDigits));
}
}
diff --git a/persistence/jdo/metamodel/src/main/java/org/apache/isis/persistence/jdo/metamodel/facets/prop/column/BigDecimalInferredFromJdoColumnAnnotationFacetFactory.java b/persistence/jdo/metamodel/src/main/java/org/apache/isis/persistence/jdo/metamodel/facets/prop/column/BigDecimalInferredFromJdoColumnAnnotationFacetFactory.java
index dfe10de..813fb69 100644
--- a/persistence/jdo/metamodel/src/main/java/org/apache/isis/persistence/jdo/metamodel/facets/prop/column/BigDecimalInferredFromJdoColumnAnnotationFacetFactory.java
+++ b/persistence/jdo/metamodel/src/main/java/org/apache/isis/persistence/jdo/metamodel/facets/prop/column/BigDecimalInferredFromJdoColumnAnnotationFacetFactory.java
@@ -29,7 +29,7 @@ import org.apache.isis.core.metamodel.facetapi.FeatureType;
import org.apache.isis.core.metamodel.facetapi.MetaModelRefiner;
import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
import org.apache.isis.core.metamodel.facets.FacetedMethod;
-import org.apache.isis.core.metamodel.facets.objectvalue.maxlen.MaxFractionalDigitsFacet;
+import org.apache.isis.core.metamodel.facets.objectvalue.maxlen.MaximumFractionDigitsFacet;
import org.apache.isis.core.metamodel.facets.objectvalue.maxlen.MaxTotalDigitsFacet;
import org.apache.isis.core.metamodel.progmodel.ProgrammingModel;
import org.apache.isis.core.metamodel.spec.feature.MixedIn;
@@ -104,10 +104,10 @@ implements MetaModelRefiner {
b.getClass().getSimpleName());
}));
- association.lookupFacet(MaxFractionalDigitsFacet.class)
- .map(MaxFractionalDigitsFacet::getSharedFacetRankingElseFail)
+ association.lookupFacet(MaximumFractionDigitsFacet.class)
+ .map(MaximumFractionDigitsFacet::getSharedFacetRankingElseFail)
.ifPresent(facetRanking->facetRanking
- .visitTopRankPairsSemanticDiffering(MaxFractionalDigitsFacet.class, (a, b)->{
+ .visitTopRankPairsSemanticDiffering(MaximumFractionDigitsFacet.class, (a, b)->{
ValidationFailure.raiseFormatted(
association,
diff --git a/persistence/jdo/metamodel/src/main/java/org/apache/isis/persistence/jdo/metamodel/facets/prop/column/MaxFractionalDigitsFacetInferredFromJdoColumn.java b/persistence/jdo/metamodel/src/main/java/org/apache/isis/persistence/jdo/metamodel/facets/prop/column/MaxFractionalDigitsFacetInferredFromJdoColumn.java
index fd732ee..a347c06 100644
--- a/persistence/jdo/metamodel/src/main/java/org/apache/isis/persistence/jdo/metamodel/facets/prop/column/MaxFractionalDigitsFacetInferredFromJdoColumn.java
+++ b/persistence/jdo/metamodel/src/main/java/org/apache/isis/persistence/jdo/metamodel/facets/prop/column/MaxFractionalDigitsFacetInferredFromJdoColumn.java
@@ -23,13 +23,13 @@ import java.util.Optional;
import javax.jdo.annotations.Column;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.facets.objectvalue.maxlen.MaxFractionalDigitsFacet;
+import org.apache.isis.core.metamodel.facets.objectvalue.maxlen.MaximumFractionDigitsFacet;
import org.apache.isis.core.metamodel.facets.objectvalue.maxlen.MaxFractionalDigitsFacetAbstract;
public class MaxFractionalDigitsFacetInferredFromJdoColumn
extends MaxFractionalDigitsFacetAbstract {
- public static Optional<MaxFractionalDigitsFacet> create(
+ public static Optional<MaximumFractionDigitsFacet> create(
final Optional<Column> jdoColumnIfAny,
final FacetHolder holder) {
diff --git a/persistence/jdo/metamodel/src/test/java/org/apache/isis/persistence/jdo/metamodel/facets/prop/column/BigDecimalDerivedFromJdoColumnAnnotationFacetFactoryTest.java b/persistence/jdo/metamodel/src/test/java/org/apache/isis/persistence/jdo/metamodel/facets/prop/column/BigDecimalDerivedFromJdoColumnAnnotationFacetFactoryTest.java
index b2ccfcf..5ee9509 100644
--- a/persistence/jdo/metamodel/src/test/java/org/apache/isis/persistence/jdo/metamodel/facets/prop/column/BigDecimalDerivedFromJdoColumnAnnotationFacetFactoryTest.java
+++ b/persistence/jdo/metamodel/src/test/java/org/apache/isis/persistence/jdo/metamodel/facets/prop/column/BigDecimalDerivedFromJdoColumnAnnotationFacetFactoryTest.java
@@ -27,7 +27,7 @@ import org.apache.isis.core.metamodel._testing.MetaModelContext_forTesting;
import org.apache.isis.core.metamodel.facetapi.FeatureType;
import org.apache.isis.core.metamodel.facets.FacetFactory.ProcessMethodContext;
import org.apache.isis.core.metamodel.facets.FacetedMethod;
-import org.apache.isis.core.metamodel.facets.objectvalue.maxlen.MaxFractionalDigitsFacet;
+import org.apache.isis.core.metamodel.facets.objectvalue.maxlen.MaximumFractionDigitsFacet;
import org.apache.isis.core.metamodel.facets.objectvalue.maxlen.MaxTotalDigitsFacet;
import org.apache.isis.persistence.jdo.metamodel.testing.AbstractFacetFactoryTest;
@@ -112,12 +112,12 @@ extends AbstractFacetFactoryTest {
}
if(maxFractionalDigits>=0) {
- final MaxFractionalDigitsFacet facet = facetedMethod.getFacet(MaxFractionalDigitsFacet.class);
+ final MaximumFractionDigitsFacet facet = facetedMethod.getFacet(MaximumFractionDigitsFacet.class);
assertNotNull(facet);
assertTrue(facet instanceof MaxFractionalDigitsFacetInferredFromJdoColumn);
- assertThat(facet.maxFractionalDigits(), is(maxFractionalDigits));
+ assertThat(facet.getMaximumFractionDigits(), is(maxFractionalDigits));
} else {
- assertNull(facetedMethod.getFacet(MaxFractionalDigitsFacet.class));
+ assertNull(facetedMethod.getFacet(MaximumFractionDigitsFacet.class));
}
}
diff --git a/persistence/jpa/metamodel/src/main/java/org/apache/isis/persistence/jpa/metamodel/facets/prop/column/MaxFractionalDigitsFacetInferredFromJpaColumn.java b/persistence/jpa/metamodel/src/main/java/org/apache/isis/persistence/jpa/metamodel/facets/prop/column/MaxFractionalDigitsFacetInferredFromJpaColumn.java
index d7e0fb7..193f13b 100644
--- a/persistence/jpa/metamodel/src/main/java/org/apache/isis/persistence/jpa/metamodel/facets/prop/column/MaxFractionalDigitsFacetInferredFromJpaColumn.java
+++ b/persistence/jpa/metamodel/src/main/java/org/apache/isis/persistence/jpa/metamodel/facets/prop/column/MaxFractionalDigitsFacetInferredFromJpaColumn.java
@@ -23,13 +23,13 @@ import java.util.Optional;
import javax.persistence.Column;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.facets.objectvalue.maxlen.MaxFractionalDigitsFacet;
+import org.apache.isis.core.metamodel.facets.objectvalue.maxlen.MaximumFractionDigitsFacet;
import org.apache.isis.core.metamodel.facets.objectvalue.maxlen.MaxFractionalDigitsFacetAbstract;
public class MaxFractionalDigitsFacetInferredFromJpaColumn
extends MaxFractionalDigitsFacetAbstract {
- public static Optional<MaxFractionalDigitsFacet> create(
+ public static Optional<MaximumFractionDigitsFacet> create(
final Optional<Column> jpaColumnIfAny,
final FacetHolder holder) {
diff --git a/viewers/common/src/main/java/org/apache/isis/viewer/common/model/feature/ScalarUiModel.java b/viewers/common/src/main/java/org/apache/isis/viewer/common/model/feature/ScalarUiModel.java
index a1c2607..66ae575 100644
--- a/viewers/common/src/main/java/org/apache/isis/viewer/common/model/feature/ScalarUiModel.java
+++ b/viewers/common/src/main/java/org/apache/isis/viewer/common/model/feature/ScalarUiModel.java
@@ -24,7 +24,7 @@ import java.util.Optional;
import org.apache.isis.commons.collections.Can;
import org.apache.isis.core.metamodel.facetapi.FeatureType;
import org.apache.isis.core.metamodel.facets.objectvalue.fileaccept.FileAcceptFacet;
-import org.apache.isis.core.metamodel.facets.objectvalue.maxlen.MaxFractionalDigitsFacet;
+import org.apache.isis.core.metamodel.facets.objectvalue.maxlen.MaximumFractionDigitsFacet;
import org.apache.isis.core.metamodel.facets.objectvalue.maxlen.MaxTotalDigitsFacet;
import org.apache.isis.core.metamodel.facets.objectvalue.typicallen.TypicalLengthFacet;
import org.apache.isis.core.metamodel.spec.ManagedObject;
@@ -68,8 +68,8 @@ public interface ScalarUiModel {
* @see #getScale()
*/
default Integer getScale() {
- return getMetaModel().lookupFacet(MaxFractionalDigitsFacet.class)
- .map(MaxFractionalDigitsFacet::maxFractionalDigits)
+ return getMetaModel().lookupFacet(MaximumFractionDigitsFacet.class)
+ .map(MaximumFractionDigitsFacet::getMaximumFractionDigits)
.orElse(null);
}
diff --git a/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ObjectPropertyReprRenderer.java b/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ObjectPropertyReprRenderer.java
index 6af1b3a..09e1619 100644
--- a/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ObjectPropertyReprRenderer.java
+++ b/viewers/restfulobjects/rendering/src/main/java/org/apache/isis/viewer/restfulobjects/rendering/domainobjects/ObjectPropertyReprRenderer.java
@@ -31,7 +31,7 @@ import org.apache.isis.core.metamodel.facetapi.Facet;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
import org.apache.isis.core.metamodel.facets.collections.collection.defaultview.DefaultViewFacet;
import org.apache.isis.core.metamodel.facets.object.value.ValueFacet;
-import org.apache.isis.core.metamodel.facets.objectvalue.maxlen.MaxFractionalDigitsFacet;
+import org.apache.isis.core.metamodel.facets.objectvalue.maxlen.MaximumFractionDigitsFacet;
import org.apache.isis.core.metamodel.facets.objectvalue.maxlen.MaxTotalDigitsFacet;
import org.apache.isis.core.metamodel.interactions.managed.ManagedProperty;
import org.apache.isis.core.metamodel.spec.feature.OneToOneAssociation;
@@ -107,8 +107,8 @@ extends AbstractObjectMemberReprRenderer<OneToOneAssociation> {
.map(MaxTotalDigitsFacet::maxTotalDigits)
.orElse(-1);
- final int scale = lookupFacet(MaxFractionalDigitsFacet.class, facetHolders)
- .map(MaxFractionalDigitsFacet::maxFractionalDigits)
+ final int scale = lookupFacet(MaximumFractionDigitsFacet.class, facetHolders)
+ .map(MaximumFractionDigitsFacet::getMaximumFractionDigits)
.orElse(-1);
format = String.format("big-decimal(%d,%d)", totalDigits, scale);
diff --git a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/IsisConverterLocator.java b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/IsisConverterLocator.java
index 2ab8fd7..a7f00cf 100644
--- a/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/IsisConverterLocator.java
+++ b/viewers/wicket/ui/src/main/java/org/apache/isis/viewer/wicket/ui/components/scalars/IsisConverterLocator.java
@@ -26,7 +26,7 @@ import org.apache.wicket.util.convert.converter.BigIntegerConverter;
import org.apache.isis.applib.adapters.ValueSemanticsProvider;
import org.apache.isis.commons.internal.base._Casts;
import org.apache.isis.commons.internal.base._NullSafe;
-import org.apache.isis.core.metamodel.facets.objectvalue.maxlen.MaxFractionalDigitsFacet;
+import org.apache.isis.core.metamodel.facets.objectvalue.maxlen.MaximumFractionDigitsFacet;
import org.apache.isis.core.metamodel.facets.objectvalue.renderedadjusted.RenderedAdjustedFacet;
import org.apache.isis.core.metamodel.spec.ManagedObject;
import org.apache.isis.viewer.wicket.model.isis.WicketViewerSettings;
@@ -112,8 +112,8 @@ public class IsisConverterLocator {
}
if (java.math.BigDecimal.class == correspondingClass) {
final int scale = objectSpecification
- .lookupFacet(MaxFractionalDigitsFacet.class)
- .map(MaxFractionalDigitsFacet::maxFractionalDigits)
+ .lookupFacet(MaximumFractionDigitsFacet.class)
+ .map(MaximumFractionDigitsFacet::getMaximumFractionDigits)
.orElse(-1);
return _Casts.uncheckedCast(new BigDecimalConverterWithScale(scale).forViewMode());
}
diff --git a/viewers/wicket/ui/src/test/java/org/apache/isis/viewer/wicket/ui/components/scalars/jdkmath/BigDecimalConverter_roundtrip.java b/viewers/wicket/ui/src/test/java/org/apache/isis/viewer/wicket/ui/components/scalars/jdkmath/BigDecimalConverter_roundtrip.java
index fcc8b13..ffc6063 100644
--- a/viewers/wicket/ui/src/test/java/org/apache/isis/viewer/wicket/ui/components/scalars/jdkmath/BigDecimalConverter_roundtrip.java
+++ b/viewers/wicket/ui/src/test/java/org/apache/isis/viewer/wicket/ui/components/scalars/jdkmath/BigDecimalConverter_roundtrip.java
@@ -121,10 +121,10 @@ class BigDecimalConverter_roundtrip {
assertRoundtrip(CustomerScale2.class, bd_789123_45_scale2, "789123.45", "789,123.45", Locale.ENGLISH);
}
- @Test @Disabled //FIXME[ISIS-2741] scale not picked up yet
+ @Test
void scale2_english_tooLargeScale() {
assertParseError(CustomerScale2.class, "123.454", Locale.ENGLISH,
- "No more than 2 digits can be entered after the decimal place");
+ "No more than 2 fraction digits can be entered, got 3 in '123.454'.");
}
// -- HELPER