You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@causeway.apache.org by da...@apache.org on 2023/09/20 12:55:41 UTC
[causeway] 02/02: CAUSEWAY-3593: adds refiner for MaxLengthJpaColumnAnnotationFacetFactory also
This is an automated email from the ASF dual-hosted git repository.
danhaywood pushed a commit to branch CAUSEWAY-3593
in repository https://gitbox.apache.org/repos/asf/causeway.git
commit 8993dbb1748bcb5bba7937a779dbe831ae302830
Author: danhaywood <da...@haywood-associates.co.uk>
AuthorDate: Wed Sep 20 13:55:35 2023 +0100
CAUSEWAY-3593: adds refiner for MaxLengthJpaColumnAnnotationFacetFactory also
and makes consistent other JDO/JPA classes from prev commit
---
...romXxxColumnAnnotationMetaModelRefinerUtil.java | 1 +
...romXxxColumnAnnotationMetaModelRefinerUtil.java | 1 +
...omXxxColumnAnnotationMetaModelRefinerUtil.java} | 16 +++++------
...DecimalFromJdoColumnAnnotationFacetFactory.java | 13 +++++----
...ndatoryFromJdoColumnAnnotationFacetFactory.java | 13 ++++-----
...xLengthFromJdoColumnAnnotationFacetFactory.java | 33 +++++-----------------
...DecimalFromJpaColumnAnnotationFacetFactory.java | 5 ++--
...ndatoryFromJpaColumnAnnotationFacetFactory.java | 7 ++---
...xLengthFromJpaColumnAnnotationFacetFactory.java | 20 +++++++++----
9 files changed, 48 insertions(+), 61 deletions(-)
diff --git a/persistence/commons/src/main/java/org/apache/causeway/persistence/commons/metamodel/facets/prop/column/BigDecimalFromXxxColumnAnnotationMetaModelRefinerUtil.java b/persistence/commons/src/main/java/org/apache/causeway/persistence/commons/metamodel/facets/prop/column/BigDecimalFromXxxColumnAnnotationMetaModelRefinerUtil.java
index ebb90f58d6..0e600923a7 100644
--- a/persistence/commons/src/main/java/org/apache/causeway/persistence/commons/metamodel/facets/prop/column/BigDecimalFromXxxColumnAnnotationMetaModelRefinerUtil.java
+++ b/persistence/commons/src/main/java/org/apache/causeway/persistence/commons/metamodel/facets/prop/column/BigDecimalFromXxxColumnAnnotationMetaModelRefinerUtil.java
@@ -9,6 +9,7 @@ import org.apache.causeway.core.metamodel.specloader.validator.ValidationFailure
@UtilityClass
public class BigDecimalFromXxxColumnAnnotationMetaModelRefinerUtil {
+
public static void validateBigDecimalValueFacet(final ObjectAssociation association) {
association.lookupFacet(MaxTotalDigitsFacet.class)
diff --git a/persistence/commons/src/main/java/org/apache/causeway/persistence/commons/metamodel/facets/prop/column/MandatoryFromXxxColumnAnnotationMetaModelRefinerUtil.java b/persistence/commons/src/main/java/org/apache/causeway/persistence/commons/metamodel/facets/prop/column/MandatoryFromXxxColumnAnnotationMetaModelRefinerUtil.java
index 76da577ad8..312cd89fad 100644
--- a/persistence/commons/src/main/java/org/apache/causeway/persistence/commons/metamodel/facets/prop/column/MandatoryFromXxxColumnAnnotationMetaModelRefinerUtil.java
+++ b/persistence/commons/src/main/java/org/apache/causeway/persistence/commons/metamodel/facets/prop/column/MandatoryFromXxxColumnAnnotationMetaModelRefinerUtil.java
@@ -8,6 +8,7 @@ import org.apache.causeway.core.metamodel.specloader.validator.ValidationFailure
@UtilityClass
public class MandatoryFromXxxColumnAnnotationMetaModelRefinerUtil {
+
public static void validateMandatoryFacet(final ObjectAssociation association) {
association.lookupFacet(MandatoryFacet.class)
diff --git a/persistence/commons/src/main/java/org/apache/causeway/persistence/commons/metamodel/facets/prop/column/MandatoryFromXxxColumnAnnotationMetaModelRefinerUtil.java b/persistence/commons/src/main/java/org/apache/causeway/persistence/commons/metamodel/facets/prop/column/MaxLengthFromXxxColumnAnnotationMetaModelRefinerUtil.java
similarity index 56%
copy from persistence/commons/src/main/java/org/apache/causeway/persistence/commons/metamodel/facets/prop/column/MandatoryFromXxxColumnAnnotationMetaModelRefinerUtil.java
copy to persistence/commons/src/main/java/org/apache/causeway/persistence/commons/metamodel/facets/prop/column/MaxLengthFromXxxColumnAnnotationMetaModelRefinerUtil.java
index 76da577ad8..dfcf3251ac 100644
--- a/persistence/commons/src/main/java/org/apache/causeway/persistence/commons/metamodel/facets/prop/column/MandatoryFromXxxColumnAnnotationMetaModelRefinerUtil.java
+++ b/persistence/commons/src/main/java/org/apache/causeway/persistence/commons/metamodel/facets/prop/column/MaxLengthFromXxxColumnAnnotationMetaModelRefinerUtil.java
@@ -2,26 +2,24 @@ package org.apache.causeway.persistence.commons.metamodel.facets.prop.column;
import lombok.experimental.UtilityClass;
-import org.apache.causeway.core.metamodel.facets.objectvalue.mandatory.MandatoryFacet;
+import org.apache.causeway.core.metamodel.facets.objectvalue.maxlen.MaxLengthFacet;
import org.apache.causeway.core.metamodel.spec.feature.ObjectAssociation;
import org.apache.causeway.core.metamodel.specloader.validator.ValidationFailure;
@UtilityClass
-public class MandatoryFromXxxColumnAnnotationMetaModelRefinerUtil {
- public static void validateMandatoryFacet(final ObjectAssociation association) {
-
- association.lookupFacet(MandatoryFacet.class)
- .map(MandatoryFacet::getSharedFacetRankingElseFail)
+public class MaxLengthFromXxxColumnAnnotationMetaModelRefinerUtil {
+ public static void validateMaxLengthFacet(ObjectAssociation association) {
+ association.lookupFacet(MaxLengthFacet.class)
+ .map(MaxLengthFacet::getSharedFacetRankingElseFail)
.ifPresent(facetRanking->facetRanking
- .visitTopRankPairsSemanticDiffering(MandatoryFacet.class, (a, b)->{
+ .visitTopRankPairsSemanticDiffering(MaxLengthFacet.class, (a, b)->{
ValidationFailure.raiseFormatted(
association,
- "%s: inconsistent Mandatory/Optional semantics specified in %s and %s.",
+ "%s: inconsistent MaxLength semantics specified in %s and %s.",
association.getFeatureIdentifier().toString(),
a.getClass().getSimpleName(),
b.getClass().getSimpleName());
}));
-
}
}
diff --git a/persistence/jdo/metamodel/src/main/java/org/apache/causeway/persistence/jdo/metamodel/facets/prop/column/BigDecimalFromJdoColumnAnnotationFacetFactory.java b/persistence/jdo/metamodel/src/main/java/org/apache/causeway/persistence/jdo/metamodel/facets/prop/column/BigDecimalFromJdoColumnAnnotationFacetFactory.java
index 10882eddb2..e2ef62282a 100644
--- a/persistence/jdo/metamodel/src/main/java/org/apache/causeway/persistence/jdo/metamodel/facets/prop/column/BigDecimalFromJdoColumnAnnotationFacetFactory.java
+++ b/persistence/jdo/metamodel/src/main/java/org/apache/causeway/persistence/jdo/metamodel/facets/prop/column/BigDecimalFromJdoColumnAnnotationFacetFactory.java
@@ -69,18 +69,19 @@ implements MetaModelRefiner {
@Override
public void refineProgrammingModel(final ProgrammingModel programmingModel) {
- programmingModel.addValidatorSkipManagedBeans(spec->{
+ programmingModel.addValidatorSkipManagedBeans(objectSpec->{
// only consider persistent entities
- final JdoPersistenceCapableFacet pcFacet = spec.getFacet(JdoPersistenceCapableFacet.class);
+ final JdoPersistenceCapableFacet pcFacet = objectSpec.getFacet(JdoPersistenceCapableFacet.class);
if(pcFacet==null || pcFacet.getIdentityType() == IdentityType.NONDURABLE) {
return;
}
- spec.streamProperties(MixedIn.EXCLUDED)
- // skip checks if annotated with JDO @NotPersistent
- .filter(association->!association.containsNonFallbackFacet(JdoNotPersistentFacet.class))
- .forEach(BigDecimalFromXxxColumnAnnotationMetaModelRefinerUtil::validateBigDecimalValueFacet);
+ objectSpec
+ .streamProperties(MixedIn.EXCLUDED)
+ // skip checks if annotated with JDO @NotPersistent
+ .filter(association->!association.containsNonFallbackFacet(JdoNotPersistentFacet.class))
+ .forEach(BigDecimalFromXxxColumnAnnotationMetaModelRefinerUtil::validateBigDecimalValueFacet);
});
}
diff --git a/persistence/jdo/metamodel/src/main/java/org/apache/causeway/persistence/jdo/metamodel/facets/prop/column/MandatoryFromJdoColumnAnnotationFacetFactory.java b/persistence/jdo/metamodel/src/main/java/org/apache/causeway/persistence/jdo/metamodel/facets/prop/column/MandatoryFromJdoColumnAnnotationFacetFactory.java
index e48052e83b..127346607a 100644
--- a/persistence/jdo/metamodel/src/main/java/org/apache/causeway/persistence/jdo/metamodel/facets/prop/column/MandatoryFromJdoColumnAnnotationFacetFactory.java
+++ b/persistence/jdo/metamodel/src/main/java/org/apache/causeway/persistence/jdo/metamodel/facets/prop/column/MandatoryFromJdoColumnAnnotationFacetFactory.java
@@ -136,14 +136,11 @@ implements MetaModelRefiner {
return;
}
- final Stream<ObjectAssociation> associations = objectSpec
- .streamAssociations(MixedIn.EXCLUDED)
- .filter(ObjectAssociation.Predicates.PROPERTIES);
-
- associations
- // skip checks if annotated with JDO @NotPersistent
- .filter(association->!association.containsNonFallbackFacet(JdoNotPersistentFacet.class))
- .forEach(MandatoryFromXxxColumnAnnotationMetaModelRefinerUtil::validateMandatoryFacet);
+ objectSpec
+ .streamProperties(MixedIn.EXCLUDED)
+ // skip checks if annotated with JDO @NotPersistent
+ .filter(association->!association.containsNonFallbackFacet(JdoNotPersistentFacet.class))
+ .forEach(MandatoryFromXxxColumnAnnotationMetaModelRefinerUtil::validateMandatoryFacet);
});
}
diff --git a/persistence/jdo/metamodel/src/main/java/org/apache/causeway/persistence/jdo/metamodel/facets/prop/column/MaxLengthFromJdoColumnAnnotationFacetFactory.java b/persistence/jdo/metamodel/src/main/java/org/apache/causeway/persistence/jdo/metamodel/facets/prop/column/MaxLengthFromJdoColumnAnnotationFacetFactory.java
index c8fbd6ea96..4785fc487f 100644
--- a/persistence/jdo/metamodel/src/main/java/org/apache/causeway/persistence/jdo/metamodel/facets/prop/column/MaxLengthFromJdoColumnAnnotationFacetFactory.java
+++ b/persistence/jdo/metamodel/src/main/java/org/apache/causeway/persistence/jdo/metamodel/facets/prop/column/MaxLengthFromJdoColumnAnnotationFacetFactory.java
@@ -29,11 +29,10 @@ import org.apache.causeway.core.metamodel.facetapi.FacetUtil;
import org.apache.causeway.core.metamodel.facetapi.FeatureType;
import org.apache.causeway.core.metamodel.facetapi.MetaModelRefiner;
import org.apache.causeway.core.metamodel.facets.FacetFactoryAbstract;
-import org.apache.causeway.core.metamodel.facets.objectvalue.maxlen.MaxLengthFacet;
import org.apache.causeway.core.metamodel.progmodel.ProgrammingModel;
import org.apache.causeway.core.metamodel.spec.feature.MixedIn;
import org.apache.causeway.core.metamodel.spec.feature.ObjectAssociation;
-import org.apache.causeway.core.metamodel.specloader.validator.ValidationFailure;
+import org.apache.causeway.persistence.commons.metamodel.facets.prop.column.MaxLengthFromXxxColumnAnnotationMetaModelRefinerUtil;
import org.apache.causeway.persistence.jdo.provider.entities.JdoFacetContext;
import org.apache.causeway.persistence.jdo.provider.metamodel.facets.object.persistencecapable.JdoPersistenceCapableFacet;
import org.apache.causeway.persistence.jdo.provider.metamodel.facets.prop.notpersistent.JdoNotPersistentFacet;
@@ -75,35 +74,17 @@ implements MetaModelRefiner {
@Override
public void refineProgrammingModel(final ProgrammingModel programmingModel) {
programmingModel.addValidatorSkipManagedBeans(objectSpec->{
+
final JdoPersistenceCapableFacet pcFacet = objectSpec.getFacet(JdoPersistenceCapableFacet.class);
if(pcFacet==null || pcFacet.getIdentityType() == IdentityType.NONDURABLE) {
return;
}
- final Stream<ObjectAssociation> associations = objectSpec
- .streamAssociations(MixedIn.EXCLUDED)
- .filter(ObjectAssociation.Predicates.PROPERTIES);
-
- associations.forEach(association->{
- // skip checks if annotated with JDO @NotPersistent
- if(association.containsNonFallbackFacet(JdoNotPersistentFacet.class)) {
- return;
- }
-
- association.lookupFacet(MaxLengthFacet.class)
- .map(MaxLengthFacet::getSharedFacetRankingElseFail)
- .ifPresent(facetRanking->facetRanking
- .visitTopRankPairsSemanticDiffering(MaxLengthFacet.class, (a, b)->{
-
- ValidationFailure.raiseFormatted(
- association,
- "%s: inconsistent MaxLength semantics specified in %s and %s.",
- association.getFeatureIdentifier().toString(),
- a.getClass().getSimpleName(),
- b.getClass().getSimpleName());
- }));
-
- });
+ objectSpec
+ .streamProperties(MixedIn.EXCLUDED)
+ // skip checks if annotated with JDO @NotPersistent
+ .filter(association->!association.containsNonFallbackFacet(JdoNotPersistentFacet.class))
+ .forEach(MaxLengthFromXxxColumnAnnotationMetaModelRefinerUtil::validateMaxLengthFacet);
});
}
diff --git a/persistence/jpa/metamodel/src/main/java/org/apache/causeway/persistence/jpa/metamodel/facets/prop/column/BigDecimalFromJpaColumnAnnotationFacetFactory.java b/persistence/jpa/metamodel/src/main/java/org/apache/causeway/persistence/jpa/metamodel/facets/prop/column/BigDecimalFromJpaColumnAnnotationFacetFactory.java
index f79bda9c7d..bed0b2a311 100644
--- a/persistence/jpa/metamodel/src/main/java/org/apache/causeway/persistence/jpa/metamodel/facets/prop/column/BigDecimalFromJpaColumnAnnotationFacetFactory.java
+++ b/persistence/jpa/metamodel/src/main/java/org/apache/causeway/persistence/jpa/metamodel/facets/prop/column/BigDecimalFromJpaColumnAnnotationFacetFactory.java
@@ -66,9 +66,10 @@ implements MetaModelRefiner {
@Override
public void refineProgrammingModel(final ProgrammingModel programmingModel) {
- programmingModel.addValidatorSkipManagedBeans(spec->{
+ programmingModel.addValidatorSkipManagedBeans(objectSpec->{
- spec.streamProperties(MixedIn.EXCLUDED)
+ objectSpec
+ .streamProperties(MixedIn.EXCLUDED)
.forEach(BigDecimalFromXxxColumnAnnotationMetaModelRefinerUtil::validateBigDecimalValueFacet);
});
diff --git a/persistence/jpa/metamodel/src/main/java/org/apache/causeway/persistence/jpa/metamodel/facets/prop/column/MandatoryFromJpaColumnAnnotationFacetFactory.java b/persistence/jpa/metamodel/src/main/java/org/apache/causeway/persistence/jpa/metamodel/facets/prop/column/MandatoryFromJpaColumnAnnotationFacetFactory.java
index 94597ac206..0040f88d9a 100644
--- a/persistence/jpa/metamodel/src/main/java/org/apache/causeway/persistence/jpa/metamodel/facets/prop/column/MandatoryFromJpaColumnAnnotationFacetFactory.java
+++ b/persistence/jpa/metamodel/src/main/java/org/apache/causeway/persistence/jpa/metamodel/facets/prop/column/MandatoryFromJpaColumnAnnotationFacetFactory.java
@@ -73,11 +73,8 @@ implements MetaModelRefiner {
public void refineProgrammingModel(final ProgrammingModel programmingModel) {
programmingModel.addValidatorSkipManagedBeans(objectSpec->{
- final Stream<ObjectAssociation> associations = objectSpec
- .streamAssociations(MixedIn.EXCLUDED)
- .filter(ObjectAssociation.Predicates.PROPERTIES);
-
- associations
+ objectSpec
+ .streamProperties(MixedIn.EXCLUDED)
.forEach(MandatoryFromXxxColumnAnnotationMetaModelRefinerUtil::validateMandatoryFacet);
});
diff --git a/persistence/jpa/metamodel/src/main/java/org/apache/causeway/persistence/jpa/metamodel/facets/prop/column/MaxLengthFromJpaColumnAnnotationFacetFactory.java b/persistence/jpa/metamodel/src/main/java/org/apache/causeway/persistence/jpa/metamodel/facets/prop/column/MaxLengthFromJpaColumnAnnotationFacetFactory.java
index 5df9e0cf0d..3efa4ca5c6 100644
--- a/persistence/jpa/metamodel/src/main/java/org/apache/causeway/persistence/jpa/metamodel/facets/prop/column/MaxLengthFromJpaColumnAnnotationFacetFactory.java
+++ b/persistence/jpa/metamodel/src/main/java/org/apache/causeway/persistence/jpa/metamodel/facets/prop/column/MaxLengthFromJpaColumnAnnotationFacetFactory.java
@@ -18,8 +18,6 @@
*/
package org.apache.causeway.persistence.jpa.metamodel.facets.prop.column;
-import java.util.stream.Stream;
-
import javax.persistence.Column;
import org.apache.causeway.core.metamodel.context.MetaModelContext;
@@ -27,16 +25,18 @@ import org.apache.causeway.core.metamodel.facetapi.FacetUtil;
import org.apache.causeway.core.metamodel.facetapi.FeatureType;
import org.apache.causeway.core.metamodel.facetapi.MetaModelRefiner;
import org.apache.causeway.core.metamodel.facets.FacetFactoryAbstract;
-import org.apache.causeway.core.metamodel.facets.objectvalue.maxlen.MaxLengthFacet;
import org.apache.causeway.core.metamodel.progmodel.ProgrammingModel;
import org.apache.causeway.core.metamodel.spec.feature.MixedIn;
import org.apache.causeway.core.metamodel.spec.feature.ObjectAssociation;
-import org.apache.causeway.core.metamodel.specloader.validator.ValidationFailure;
+import org.apache.causeway.persistence.commons.metamodel.facets.prop.column.MaxLengthFromXxxColumnAnnotationMetaModelRefinerUtil;
import lombok.val;
+import java.util.stream.Stream;
+
public class MaxLengthFromJpaColumnAnnotationFacetFactory
-extends FacetFactoryAbstract {
+extends FacetFactoryAbstract
+implements MetaModelRefiner {
public MaxLengthFromJpaColumnAnnotationFacetFactory(final MetaModelContext mmc) {
super(mmc, FeatureType.PROPERTIES_ONLY);
@@ -61,4 +61,14 @@ extends FacetFactoryAbstract {
.create(jdoColumnIfAny, facetHolder));
}
+ @Override
+ public void refineProgrammingModel(final ProgrammingModel programmingModel) {
+ programmingModel.addValidatorSkipManagedBeans(objectSpec->{
+
+ objectSpec
+ .streamProperties(MixedIn.EXCLUDED)
+ .forEach(MaxLengthFromXxxColumnAnnotationMetaModelRefinerUtil::validateMaxLengthFacet);
+ });
+ }
+
}