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/07 11:20:11 UTC
[isis] branch master updated: ISIS-2871: introduces concrete digits
related facets
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 5cefd61 ISIS-2871: introduces concrete digits related facets
5cefd61 is described below
commit 5cefd61089fb90fcdf5086aa8da6d2fdc0a78226
Author: Andi Huber <ah...@apache.org>
AuthorDate: Sun Nov 7 12:20:01 2021 +0100
ISIS-2871: introduces concrete digits related facets
---
...ameterFromJavaxValidationAnnotationFactory.java | 58 ----------------------
...FromJavaxValidationDigitsAnnotationFactory.java | 58 ----------------------
...alDigitsFacetFromValueSemanticsAnnotation.java} | 27 +++++-----
...ameterFromJavaxValidationDigitsAnnotation.java} | 8 +--
...opertyFromJavaxValidationDigitsAnnotation.java} | 8 +--
...alDigitsFacetFromValueSemanticsAnnotation.java} | 15 +++---
...rameterFromJavaxValidationDigitsAnnotation.java | 2 +-
...ropertyFromJavaxValidationDigitsAnnotation.java | 2 +-
...alDigitsFacetFromValueSemanticsAnnotation.java} | 28 +++++------
...erDigitsFacetFromValueSemanticsAnnotation.java} | 28 +++++------
.../ValueSemanticsAnnotationFacetFactory.java | 53 +++++++++++++++++---
.../dflt/ProgrammingModelFacetsJava11.java | 5 --
.../facets/param/name/ParameterNameFacetTest.java | 2 +-
.../ValueSemanticsAnnotationFacetFactoryTest.java} | 42 ++++------------
14 files changed, 112 insertions(+), 224 deletions(-)
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/bigdecimal/javaxvaldigits/BigDecimalFacetOnParameterFromJavaxValidationAnnotationFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/bigdecimal/javaxvaldigits/BigDecimalFacetOnParameterFromJavaxValidationAnnotationFactory.java
deleted file mode 100644
index 2972055..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/bigdecimal/javaxvaldigits/BigDecimalFacetOnParameterFromJavaxValidationAnnotationFactory.java
+++ /dev/null
@@ -1,58 +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.param.bigdecimal.javaxvaldigits;
-
-import java.math.BigDecimal;
-
-import javax.inject.Inject;
-import javax.validation.constraints.Digits;
-
-import org.apache.isis.core.metamodel.context.MetaModelContext;
-import org.apache.isis.core.metamodel.facetapi.FeatureType;
-import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
-
-import lombok.val;
-
-public class BigDecimalFacetOnParameterFromJavaxValidationAnnotationFactory
-extends FacetFactoryAbstract {
-
- @Inject
- public BigDecimalFacetOnParameterFromJavaxValidationAnnotationFactory(final MetaModelContext mmc) {
- super(mmc, FeatureType.PARAMETERS_ONLY);
- }
-
- @Override
- public void processParams(final ProcessParameterContext processParameterContext) {
-
- if(BigDecimal.class != processParameterContext.getParameterType()) {
- return;
- }
-
- val digitsIfAny = processParameterContext.synthesizeOnParameter(Digits.class);
-
- addFacetIfPresent(
- MaxTotalDigitsFacetOnParameterFromJavaxValidationDigitsAnnotation
- .create(digitsIfAny, processParameterContext.getFacetHolder()));
-
- addFacetIfPresent(
- MaxFractionDigitsFacetOnParameterFromJavaxValidationDigitsAnnotation
- .create(digitsIfAny, processParameterContext.getFacetHolder()));
- }
-
-}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/bigdecimal/javaxvaldigits/BigDecimalFacetOnPropertyFromJavaxValidationDigitsAnnotationFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/bigdecimal/javaxvaldigits/BigDecimalFacetOnPropertyFromJavaxValidationDigitsAnnotationFactory.java
deleted file mode 100644
index 447f115..0000000
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/bigdecimal/javaxvaldigits/BigDecimalFacetOnPropertyFromJavaxValidationDigitsAnnotationFactory.java
+++ /dev/null
@@ -1,58 +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.properties.bigdecimal.javaxvaldigits;
-
-import java.math.BigDecimal;
-
-import javax.inject.Inject;
-import javax.validation.constraints.Digits;
-
-import org.apache.isis.core.metamodel.context.MetaModelContext;
-import org.apache.isis.core.metamodel.facetapi.FeatureType;
-import org.apache.isis.core.metamodel.facets.FacetFactoryAbstract;
-
-import lombok.val;
-
-public class BigDecimalFacetOnPropertyFromJavaxValidationDigitsAnnotationFactory
-extends FacetFactoryAbstract {
-
- @Inject
- public BigDecimalFacetOnPropertyFromJavaxValidationDigitsAnnotationFactory(final MetaModelContext mmc) {
- super(mmc, FeatureType.PROPERTIES_ONLY);
- }
-
- @Override
- public void process(final ProcessMethodContext processMethodContext) {
-
- if (BigDecimal.class != processMethodContext.getMethod().getReturnType()) {
- return;
- }
-
- val digitsIfAny = processMethodContext.synthesizeOnMethod(Digits.class);
-
- addFacetIfPresent(
- MaxTotalDigitsFacetOnPropertyFromJavaxValidationDigitsAnnotation
- .create(digitsIfAny, processMethodContext.getFacetHolder()));
-
- addFacetIfPresent(
- MaxFractionDigitsFacetOnPropertyFromJavaxValidationDigitsAnnotation
- .create(digitsIfAny, processMethodContext.getFacetHolder()));
- }
-
-}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/bigdecimal/javaxvaldigits/MaxTotalDigitsFacetOnPropertyFromJavaxValidationDigitsAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/semantics/MaxFractionalDigitsFacetFromValueSemanticsAnnotation.java
similarity index 62%
copy from core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/bigdecimal/javaxvaldigits/MaxTotalDigitsFacetOnPropertyFromJavaxValidationDigitsAnnotation.java
copy to core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/semantics/MaxFractionalDigitsFacetFromValueSemanticsAnnotation.java
index f9f13f1..455ce61 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/bigdecimal/javaxvaldigits/MaxTotalDigitsFacetOnPropertyFromJavaxValidationDigitsAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/semantics/MaxFractionalDigitsFacetFromValueSemanticsAnnotation.java
@@ -16,33 +16,32 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.isis.core.metamodel.facets.properties.bigdecimal.javaxvaldigits;
+package org.apache.isis.core.metamodel.facets.value.semantics;
import java.util.Optional;
-import javax.validation.constraints.Digits;
-
+import org.apache.isis.applib.annotation.ValueSemantics;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.facets.objectvalue.digits.MaxTotalDigitsFacet;
-import org.apache.isis.core.metamodel.facets.objectvalue.digits.MaxTotalDigitsFacetAbstract;
+import org.apache.isis.core.metamodel.facets.objectvalue.digits.MaxFractionalDigitsFacet;
+import org.apache.isis.core.metamodel.facets.objectvalue.digits.MaxFractionalDigitsFacetAbstract;
-public class MaxTotalDigitsFacetOnPropertyFromJavaxValidationDigitsAnnotation
-extends MaxTotalDigitsFacetAbstract {
+public class MaxFractionalDigitsFacetFromValueSemanticsAnnotation
+extends MaxFractionalDigitsFacetAbstract {
- public static Optional<MaxTotalDigitsFacet> create(
- final Optional<Digits> digitsIfAny,
+ public static Optional<MaxFractionalDigitsFacet> create(
+ final Optional<ValueSemantics> digitsIfAny,
final FacetHolder holder) {
return digitsIfAny
.map(digits->{
- return new MaxTotalDigitsFacetOnPropertyFromJavaxValidationDigitsAnnotation(
- digits.integer() + digits.fraction(), holder);
+ return new MaxFractionalDigitsFacetFromValueSemanticsAnnotation(
+ digits.maxFractionalDigits(), holder);
});
}
- private MaxTotalDigitsFacetOnPropertyFromJavaxValidationDigitsAnnotation(
- final int maxTotalDigits, final FacetHolder holder) {
- super(maxTotalDigits, holder);
+ private MaxFractionalDigitsFacetFromValueSemanticsAnnotation(
+ final int maxFractionalDigits, final FacetHolder holder) {
+ super(maxFractionalDigits, holder);
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/bigdecimal/javaxvaldigits/MaxFractionDigitsFacetOnParameterFromJavaxValidationDigitsAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/semantics/MaxFractionalDigitsFacetOnParameterFromJavaxValidationDigitsAnnotation.java
similarity index 82%
rename from core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/bigdecimal/javaxvaldigits/MaxFractionDigitsFacetOnParameterFromJavaxValidationDigitsAnnotation.java
rename to core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/semantics/MaxFractionalDigitsFacetOnParameterFromJavaxValidationDigitsAnnotation.java
index 56e5a12..a7ac711 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/bigdecimal/javaxvaldigits/MaxFractionDigitsFacetOnParameterFromJavaxValidationDigitsAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/semantics/MaxFractionalDigitsFacetOnParameterFromJavaxValidationDigitsAnnotation.java
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.isis.core.metamodel.facets.param.bigdecimal.javaxvaldigits;
+package org.apache.isis.core.metamodel.facets.value.semantics;
import java.util.Optional;
@@ -26,7 +26,7 @@ import org.apache.isis.core.metamodel.facetapi.FacetHolder;
import org.apache.isis.core.metamodel.facets.objectvalue.digits.MaxFractionalDigitsFacet;
import org.apache.isis.core.metamodel.facets.objectvalue.digits.MaxFractionalDigitsFacetAbstract;
-public class MaxFractionDigitsFacetOnParameterFromJavaxValidationDigitsAnnotation
+public class MaxFractionalDigitsFacetOnParameterFromJavaxValidationDigitsAnnotation
extends MaxFractionalDigitsFacetAbstract {
public static Optional<MaxFractionalDigitsFacet> create(
@@ -35,12 +35,12 @@ extends MaxFractionalDigitsFacetAbstract {
return digitsIfAny
.map(digits->{
- return new MaxFractionDigitsFacetOnParameterFromJavaxValidationDigitsAnnotation(
+ return new MaxFractionalDigitsFacetOnParameterFromJavaxValidationDigitsAnnotation(
digits.fraction(), holder);
});
}
- private MaxFractionDigitsFacetOnParameterFromJavaxValidationDigitsAnnotation(
+ private MaxFractionalDigitsFacetOnParameterFromJavaxValidationDigitsAnnotation(
final int maxFractionalDigits, final FacetHolder holder) {
super(maxFractionalDigits, holder);
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/bigdecimal/javaxvaldigits/MaxFractionDigitsFacetOnPropertyFromJavaxValidationDigitsAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/semantics/MaxFractionalDigitsFacetOnPropertyFromJavaxValidationDigitsAnnotation.java
similarity index 82%
rename from core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/bigdecimal/javaxvaldigits/MaxFractionDigitsFacetOnPropertyFromJavaxValidationDigitsAnnotation.java
rename to core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/semantics/MaxFractionalDigitsFacetOnPropertyFromJavaxValidationDigitsAnnotation.java
index 95a2a47..352c2dd 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/bigdecimal/javaxvaldigits/MaxFractionDigitsFacetOnPropertyFromJavaxValidationDigitsAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/semantics/MaxFractionalDigitsFacetOnPropertyFromJavaxValidationDigitsAnnotation.java
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.isis.core.metamodel.facets.properties.bigdecimal.javaxvaldigits;
+package org.apache.isis.core.metamodel.facets.value.semantics;
import java.util.Optional;
@@ -26,7 +26,7 @@ import org.apache.isis.core.metamodel.facetapi.FacetHolder;
import org.apache.isis.core.metamodel.facets.objectvalue.digits.MaxFractionalDigitsFacet;
import org.apache.isis.core.metamodel.facets.objectvalue.digits.MaxFractionalDigitsFacetAbstract;
-public class MaxFractionDigitsFacetOnPropertyFromJavaxValidationDigitsAnnotation
+public class MaxFractionalDigitsFacetOnPropertyFromJavaxValidationDigitsAnnotation
extends MaxFractionalDigitsFacetAbstract {
public static Optional<MaxFractionalDigitsFacet> create(
@@ -35,12 +35,12 @@ extends MaxFractionalDigitsFacetAbstract {
return digitsIfAny
.map(digits->{
- return new MaxFractionDigitsFacetOnPropertyFromJavaxValidationDigitsAnnotation(
+ return new MaxFractionalDigitsFacetOnPropertyFromJavaxValidationDigitsAnnotation(
digits.fraction(), holder);
});
}
- private MaxFractionDigitsFacetOnPropertyFromJavaxValidationDigitsAnnotation(
+ private MaxFractionalDigitsFacetOnPropertyFromJavaxValidationDigitsAnnotation(
final int maxFractionalDigits, final FacetHolder holder) {
super(maxFractionalDigits, holder);
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/bigdecimal/javaxvaldigits/MaxTotalDigitsFacetOnParameterFromJavaxValidationDigitsAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/semantics/MaxTotalDigitsFacetFromValueSemanticsAnnotation.java
similarity index 74%
copy from core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/bigdecimal/javaxvaldigits/MaxTotalDigitsFacetOnParameterFromJavaxValidationDigitsAnnotation.java
copy to core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/semantics/MaxTotalDigitsFacetFromValueSemanticsAnnotation.java
index 739f401..9f57863 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/bigdecimal/javaxvaldigits/MaxTotalDigitsFacetOnParameterFromJavaxValidationDigitsAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/semantics/MaxTotalDigitsFacetFromValueSemanticsAnnotation.java
@@ -16,31 +16,30 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.isis.core.metamodel.facets.param.bigdecimal.javaxvaldigits;
+package org.apache.isis.core.metamodel.facets.value.semantics;
import java.util.Optional;
-import javax.validation.constraints.Digits;
-
+import org.apache.isis.applib.annotation.ValueSemantics;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
import org.apache.isis.core.metamodel.facets.objectvalue.digits.MaxTotalDigitsFacet;
import org.apache.isis.core.metamodel.facets.objectvalue.digits.MaxTotalDigitsFacetAbstract;
-public class MaxTotalDigitsFacetOnParameterFromJavaxValidationDigitsAnnotation
+public class MaxTotalDigitsFacetFromValueSemanticsAnnotation
extends MaxTotalDigitsFacetAbstract {
public static Optional<MaxTotalDigitsFacet> create(
- final Optional<Digits> digitsIfAny,
+ final Optional<ValueSemantics> digitsIfAny,
final FacetHolder holder) {
return digitsIfAny
.map(digits->{
- return new MaxTotalDigitsFacetOnParameterFromJavaxValidationDigitsAnnotation(
- digits.integer() + digits.fraction(), holder);
+ return new MaxTotalDigitsFacetFromValueSemanticsAnnotation(
+ digits.maxTotalDigits(), holder);
});
}
- private MaxTotalDigitsFacetOnParameterFromJavaxValidationDigitsAnnotation(
+ private MaxTotalDigitsFacetFromValueSemanticsAnnotation(
final int maxTotalDigits, final FacetHolder holder) {
super(maxTotalDigits, holder);
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/bigdecimal/javaxvaldigits/MaxTotalDigitsFacetOnParameterFromJavaxValidationDigitsAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/semantics/MaxTotalDigitsFacetOnParameterFromJavaxValidationDigitsAnnotation.java
similarity index 95%
copy from core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/bigdecimal/javaxvaldigits/MaxTotalDigitsFacetOnParameterFromJavaxValidationDigitsAnnotation.java
copy to core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/semantics/MaxTotalDigitsFacetOnParameterFromJavaxValidationDigitsAnnotation.java
index 739f401..5c18a67 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/bigdecimal/javaxvaldigits/MaxTotalDigitsFacetOnParameterFromJavaxValidationDigitsAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/semantics/MaxTotalDigitsFacetOnParameterFromJavaxValidationDigitsAnnotation.java
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.isis.core.metamodel.facets.param.bigdecimal.javaxvaldigits;
+package org.apache.isis.core.metamodel.facets.value.semantics;
import java.util.Optional;
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/bigdecimal/javaxvaldigits/MaxTotalDigitsFacetOnPropertyFromJavaxValidationDigitsAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/semantics/MaxTotalDigitsFacetOnPropertyFromJavaxValidationDigitsAnnotation.java
similarity index 95%
copy from core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/bigdecimal/javaxvaldigits/MaxTotalDigitsFacetOnPropertyFromJavaxValidationDigitsAnnotation.java
copy to core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/semantics/MaxTotalDigitsFacetOnPropertyFromJavaxValidationDigitsAnnotation.java
index f9f13f1..d3b7ec4 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/bigdecimal/javaxvaldigits/MaxTotalDigitsFacetOnPropertyFromJavaxValidationDigitsAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/semantics/MaxTotalDigitsFacetOnPropertyFromJavaxValidationDigitsAnnotation.java
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.isis.core.metamodel.facets.properties.bigdecimal.javaxvaldigits;
+package org.apache.isis.core.metamodel.facets.value.semantics;
import java.util.Optional;
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/bigdecimal/javaxvaldigits/MaxTotalDigitsFacetOnPropertyFromJavaxValidationDigitsAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/semantics/MinFractionalDigitsFacetFromValueSemanticsAnnotation.java
similarity index 61%
rename from core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/bigdecimal/javaxvaldigits/MaxTotalDigitsFacetOnPropertyFromJavaxValidationDigitsAnnotation.java
rename to core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/semantics/MinFractionalDigitsFacetFromValueSemanticsAnnotation.java
index f9f13f1..f2aeb5b 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/properties/bigdecimal/javaxvaldigits/MaxTotalDigitsFacetOnPropertyFromJavaxValidationDigitsAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/semantics/MinFractionalDigitsFacetFromValueSemanticsAnnotation.java
@@ -16,34 +16,32 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.isis.core.metamodel.facets.properties.bigdecimal.javaxvaldigits;
+package org.apache.isis.core.metamodel.facets.value.semantics;
import java.util.Optional;
-import javax.validation.constraints.Digits;
-
+import org.apache.isis.applib.annotation.ValueSemantics;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.facets.objectvalue.digits.MaxTotalDigitsFacet;
-import org.apache.isis.core.metamodel.facets.objectvalue.digits.MaxTotalDigitsFacetAbstract;
+import org.apache.isis.core.metamodel.facets.objectvalue.digits.MinFractionalDigitsFacet;
+import org.apache.isis.core.metamodel.facets.objectvalue.digits.MinFractionalDigitsFacetAbstract;
-public class MaxTotalDigitsFacetOnPropertyFromJavaxValidationDigitsAnnotation
-extends MaxTotalDigitsFacetAbstract {
+public class MinFractionalDigitsFacetFromValueSemanticsAnnotation
+extends MinFractionalDigitsFacetAbstract {
- public static Optional<MaxTotalDigitsFacet> create(
- final Optional<Digits> digitsIfAny,
+ public static Optional<MinFractionalDigitsFacet> create(
+ final Optional<ValueSemantics> digitsIfAny,
final FacetHolder holder) {
return digitsIfAny
.map(digits->{
- return new MaxTotalDigitsFacetOnPropertyFromJavaxValidationDigitsAnnotation(
- digits.integer() + digits.fraction(), holder);
+ return new MinFractionalDigitsFacetFromValueSemanticsAnnotation(
+ digits.minFractionalDigits(), holder);
});
}
- private MaxTotalDigitsFacetOnPropertyFromJavaxValidationDigitsAnnotation(
- final int maxTotalDigits, final FacetHolder holder) {
- super(maxTotalDigits, holder);
+ private MinFractionalDigitsFacetFromValueSemanticsAnnotation(
+ final int minFractionalDigits, final FacetHolder holder) {
+ super(minFractionalDigits, holder);
}
-
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/bigdecimal/javaxvaldigits/MaxTotalDigitsFacetOnParameterFromJavaxValidationDigitsAnnotation.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/semantics/MinIntegerDigitsFacetFromValueSemanticsAnnotation.java
similarity index 61%
rename from core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/bigdecimal/javaxvaldigits/MaxTotalDigitsFacetOnParameterFromJavaxValidationDigitsAnnotation.java
rename to core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/semantics/MinIntegerDigitsFacetFromValueSemanticsAnnotation.java
index 739f401..e63d60a 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/param/bigdecimal/javaxvaldigits/MaxTotalDigitsFacetOnParameterFromJavaxValidationDigitsAnnotation.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/semantics/MinIntegerDigitsFacetFromValueSemanticsAnnotation.java
@@ -16,34 +16,32 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.isis.core.metamodel.facets.param.bigdecimal.javaxvaldigits;
+package org.apache.isis.core.metamodel.facets.value.semantics;
import java.util.Optional;
-import javax.validation.constraints.Digits;
-
+import org.apache.isis.applib.annotation.ValueSemantics;
import org.apache.isis.core.metamodel.facetapi.FacetHolder;
-import org.apache.isis.core.metamodel.facets.objectvalue.digits.MaxTotalDigitsFacet;
-import org.apache.isis.core.metamodel.facets.objectvalue.digits.MaxTotalDigitsFacetAbstract;
+import org.apache.isis.core.metamodel.facets.objectvalue.digits.MinIntegerDigitsFacet;
+import org.apache.isis.core.metamodel.facets.objectvalue.digits.MinIntegerDigitsFacetAbstract;
-public class MaxTotalDigitsFacetOnParameterFromJavaxValidationDigitsAnnotation
-extends MaxTotalDigitsFacetAbstract {
+public class MinIntegerDigitsFacetFromValueSemanticsAnnotation
+extends MinIntegerDigitsFacetAbstract {
- public static Optional<MaxTotalDigitsFacet> create(
- final Optional<Digits> digitsIfAny,
+ public static Optional<MinIntegerDigitsFacet> create(
+ final Optional<ValueSemantics> digitsIfAny,
final FacetHolder holder) {
return digitsIfAny
.map(digits->{
- return new MaxTotalDigitsFacetOnParameterFromJavaxValidationDigitsAnnotation(
- digits.integer() + digits.fraction(), holder);
+ return new MinIntegerDigitsFacetFromValueSemanticsAnnotation(
+ digits.minIntegerDigits(), holder);
});
}
- private MaxTotalDigitsFacetOnParameterFromJavaxValidationDigitsAnnotation(
- final int maxTotalDigits, final FacetHolder holder) {
- super(maxTotalDigits, holder);
+ private MinIntegerDigitsFacetFromValueSemanticsAnnotation(
+ final int minIntegerDigits, final FacetHolder holder) {
+ super(minIntegerDigits, holder);
}
-
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/semantics/ValueSemanticsAnnotationFacetFactory.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/semantics/ValueSemanticsAnnotationFacetFactory.java
index 5aec743..3bc035f 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/semantics/ValueSemanticsAnnotationFacetFactory.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/value/semantics/ValueSemanticsAnnotationFacetFactory.java
@@ -22,6 +22,7 @@ import java.math.BigDecimal;
import java.util.Optional;
import javax.inject.Inject;
+import javax.validation.constraints.Digits;
import org.apache.isis.applib.annotation.ValueSemantics;
import org.apache.isis.core.metamodel.context.MetaModelContext;
@@ -47,23 +48,45 @@ extends FacetFactoryAbstract {
ValueSemantics.class,
() -> MetaModelValidatorForAmbiguousMixinAnnotations
.addValidationFailure(processMethodContext.getFacetHolder(), ValueSemantics.class));
- processProvider(processMethodContext.getFacetHolder(), valueSemanticsIfAny);
+
+ // support for @javax.validataion.Digits
+ val digitsIfAny = BigDecimal.class == processMethodContext.getMethod().getReturnType()
+ ? processMethodContext
+ .synthesizeOnMethodOrMixinType(
+ Digits.class,
+ () -> MetaModelValidatorForAmbiguousMixinAnnotations
+ .addValidationFailure(processMethodContext.getFacetHolder(), Digits.class))
+ : Optional.<Digits>empty();
+
+ processAll(processMethodContext.getFacetHolder(), valueSemanticsIfAny, digitsIfAny);
}
@Override
public void processParams(final ProcessParameterContext processParameterContext) {
- if(BigDecimal.class != processParameterContext.getParameterType()) {
- return;
- }
val valueSemanticsIfAny = processParameterContext.synthesizeOnParameter(ValueSemantics.class);
- processProvider(processParameterContext.getFacetHolder(), valueSemanticsIfAny);
+
+ // support for @javax.validataion.Digits
+ val digitsIfAny = BigDecimal.class == processParameterContext.getParameterType()
+ ? processParameterContext.synthesizeOnParameter(Digits.class)
+ : Optional.<Digits>empty();
+
+ processAll(processParameterContext.getFacetHolder(), valueSemanticsIfAny, digitsIfAny);
}
// -- HELPER
- void processProvider(
+ private void processAll(
final TypedHolderAbstract facetHolder,
- final Optional<ValueSemantics> valueSemanticsIfAny) {
+ final Optional<ValueSemantics> valueSemanticsIfAny,
+ final Optional<Digits> digitsIfAny) {
+ processProvider(facetHolder, valueSemanticsIfAny, digitsIfAny);
+ processDigits(facetHolder, valueSemanticsIfAny, digitsIfAny);
+ }
+
+ private void processProvider(
+ final TypedHolderAbstract facetHolder,
+ final Optional<ValueSemantics> valueSemanticsIfAny,
+ final Optional<Digits> digitsIfAny) {
// check for @ValueSemantics(provider=...)
addFacetIfPresent(
@@ -71,4 +94,20 @@ extends FacetFactoryAbstract {
.create(valueSemanticsIfAny, facetHolder));
}
+ private void processDigits(
+ final TypedHolderAbstract facetHolder,
+ final Optional<ValueSemantics> valueSemanticsIfAny,
+ final Optional<Digits> digitsIfAny){
+
+ addFacetIfPresent(
+ MaxTotalDigitsFacetOnPropertyFromJavaxValidationDigitsAnnotation
+ .create(digitsIfAny, facetHolder));
+
+ addFacetIfPresent(
+ MaxFractionalDigitsFacetOnPropertyFromJavaxValidationDigitsAnnotation
+ .create(digitsIfAny, facetHolder));
+
+ //FIXME[ISIS-2871] actually process @ValueSemantics(min/max...) and merge with the above
+ }
+
}
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/progmodels/dflt/ProgrammingModelFacetsJava11.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/progmodels/dflt/ProgrammingModelFacetsJava11.java
index 18888b0..5cdd658 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/progmodels/dflt/ProgrammingModelFacetsJava11.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/progmodels/dflt/ProgrammingModelFacetsJava11.java
@@ -61,7 +61,6 @@ import org.apache.isis.core.metamodel.facets.object.support.ObjectSupportFacetFa
import org.apache.isis.core.metamodel.facets.object.title.annotation.TitleAnnotationFacetFactory;
import org.apache.isis.core.metamodel.facets.object.value.annotcfg.ValueFacetForValueAnnotationOrAnyMatchingValueSemanticsFacetFactory;
import org.apache.isis.core.metamodel.facets.param.autocomplete.method.ActionParameterAutoCompleteFacetViaMethodFactory;
-import org.apache.isis.core.metamodel.facets.param.bigdecimal.javaxvaldigits.BigDecimalFacetOnParameterFromJavaxValidationAnnotationFactory;
import org.apache.isis.core.metamodel.facets.param.choices.methodnum.ActionParameterChoicesFacetViaMethodFactory;
import org.apache.isis.core.metamodel.facets.param.defaults.methodnum.ActionParameterDefaultsFacetViaMethodFactory;
import org.apache.isis.core.metamodel.facets.param.disable.method.ActionParameterDisabledFacetViaMethodFactory;
@@ -73,7 +72,6 @@ import org.apache.isis.core.metamodel.facets.param.parameter.ParameterAnnotation
import org.apache.isis.core.metamodel.facets.param.validate.method.ActionParameterValidationFacetViaMethodFactory;
import org.apache.isis.core.metamodel.facets.properties.accessor.PropertyAccessorFacetViaAccessorFactory;
import org.apache.isis.core.metamodel.facets.properties.autocomplete.method.PropertyAutoCompleteFacetMethodFactory;
-import org.apache.isis.core.metamodel.facets.properties.bigdecimal.javaxvaldigits.BigDecimalFacetOnPropertyFromJavaxValidationDigitsAnnotationFactory;
import org.apache.isis.core.metamodel.facets.properties.choices.method.PropertyChoicesFacetViaMethodFactory;
import org.apache.isis.core.metamodel.facets.properties.defaults.method.PropertyDefaultFacetViaMethodFactory;
import org.apache.isis.core.metamodel.facets.properties.disabled.inferred.DisabledFacetOnPropertyInferredFactory;
@@ -184,9 +182,6 @@ extends ProgrammingModelAbstract {
addFactory(FacetProcessingOrder.E1_MEMBER_MODELLING, new BookmarkPolicyFacetFallbackFactory(mmc));
addFactory(FacetProcessingOrder.E1_MEMBER_MODELLING, new HomePageFacetAnnotationFactory(mmc));
- addFactory(FacetProcessingOrder.E1_MEMBER_MODELLING, new BigDecimalFacetOnParameterFromJavaxValidationAnnotationFactory(mmc));
- addFactory(FacetProcessingOrder.E1_MEMBER_MODELLING, new BigDecimalFacetOnPropertyFromJavaxValidationDigitsAnnotationFactory(mmc));
-
addFactory(FacetProcessingOrder.E1_MEMBER_MODELLING, new NotInServiceMenuFacetFromDomainServiceFacetFactory(mmc));
// must come after CssClassFacetOnMemberFactory
diff --git a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/param/name/ParameterNameFacetTest.java b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/param/name/ParameterNameFacetTest.java
index b10185d..c24dc76 100644
--- a/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/param/name/ParameterNameFacetTest.java
+++ b/core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/param/name/ParameterNameFacetTest.java
@@ -67,7 +67,7 @@ extends AbstractFacetFactoryJUnit4TestCase {
@Test
public void verifyProgrammingModelNumberOfFactories() {
- assertEquals(64, programmingModel.streamFactories().count());
+ assertEquals(62, programmingModel.streamFactories().count());
}
@Test //verify we have the javac -parameter flag set when compiling this class
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/value/semantics/ValueSemanticsAnnotationFacetFactoryTest.java
similarity index 53%
rename from core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/propparam/decimal/JavaxValidationDigitsAnnotationFacetFactoryTest.java
rename to core/metamodel/src/test/java/org/apache/isis/core/metamodel/facets/value/semantics/ValueSemanticsAnnotationFacetFactoryTest.java
index aacfe56..8a11e1c 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/value/semantics/ValueSemanticsAnnotationFacetFactoryTest.java
@@ -1,22 +1,4 @@
-/*
- * 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.propparam.decimal;
+package org.apache.isis.core.metamodel.facets.value.semantics;
import java.lang.reflect.Method;
import java.math.BigDecimal;
@@ -31,19 +13,13 @@ 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.digits.MaxFractionalDigitsFacet;
import org.apache.isis.core.metamodel.facets.objectvalue.digits.MaxTotalDigitsFacet;
-import org.apache.isis.core.metamodel.facets.param.bigdecimal.javaxvaldigits.BigDecimalFacetOnParameterFromJavaxValidationAnnotationFactory;
-import org.apache.isis.core.metamodel.facets.param.bigdecimal.javaxvaldigits.MaxFractionDigitsFacetOnParameterFromJavaxValidationDigitsAnnotation;
-import org.apache.isis.core.metamodel.facets.param.bigdecimal.javaxvaldigits.MaxTotalDigitsFacetOnParameterFromJavaxValidationDigitsAnnotation;
-import org.apache.isis.core.metamodel.facets.properties.bigdecimal.javaxvaldigits.BigDecimalFacetOnPropertyFromJavaxValidationDigitsAnnotationFactory;
-import org.apache.isis.core.metamodel.facets.properties.bigdecimal.javaxvaldigits.MaxFractionDigitsFacetOnPropertyFromJavaxValidationDigitsAnnotation;
-import org.apache.isis.core.metamodel.facets.properties.bigdecimal.javaxvaldigits.MaxTotalDigitsFacetOnPropertyFromJavaxValidationDigitsAnnotation;
-
-public class JavaxValidationDigitsAnnotationFacetFactoryTest
+
+public class ValueSemanticsAnnotationFacetFactoryTest
extends AbstractFacetFactoryTest {
public void testAnnotationPickedUpOnProperty() {
- final BigDecimalFacetOnPropertyFromJavaxValidationDigitsAnnotationFactory facetFactory =
- new BigDecimalFacetOnPropertyFromJavaxValidationDigitsAnnotationFactory(metaModelContext);
+ final ValueSemanticsAnnotationFacetFactory facetFactory =
+ new ValueSemanticsAnnotationFacetFactory(metaModelContext);
class Order {
@javax.validation.constraints.Digits(integer=14, fraction=4)
@@ -60,8 +36,8 @@ extends AbstractFacetFactoryTest {
}
public void testAnnotationPickedUpOnActionParameter() {
- final BigDecimalFacetOnParameterFromJavaxValidationAnnotationFactory facetFactory =
- new BigDecimalFacetOnParameterFromJavaxValidationAnnotationFactory(metaModelContext);
+ final ValueSemanticsAnnotationFacetFactory facetFactory =
+ new ValueSemanticsAnnotationFacetFactory(metaModelContext);
class Order {
@SuppressWarnings("unused")
@@ -94,8 +70,8 @@ extends AbstractFacetFactoryTest {
if(maxFractionalDigits>=0) {
final MaxFractionalDigitsFacet facet = facetedMethod.getFacet(MaxFractionalDigitsFacet.class);
assertNotNull(facet);
- assertTrue(facet instanceof MaxFractionDigitsFacetOnPropertyFromJavaxValidationDigitsAnnotation
- ||facet instanceof MaxFractionDigitsFacetOnParameterFromJavaxValidationDigitsAnnotation);
+ assertTrue(facet instanceof MaxFractionalDigitsFacetOnPropertyFromJavaxValidationDigitsAnnotation
+ ||facet instanceof MaxFractionalDigitsFacetOnParameterFromJavaxValidationDigitsAnnotation);
assertThat(facet.getMaxFractionalDigits(), is(maxFractionalDigits));
}
}