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 2022/01/24 10:19:54 UTC

[isis] branch master updated: ISIS-2944: [Metamodel] even further improve validation msg

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 339f8f1  ISIS-2944: [Metamodel] even further improve validation msg
339f8f1 is described below

commit 339f8f10e90ca13054cabb0ab4e497d1cd665286
Author: andi-huber <ah...@apache.org>
AuthorDate: Mon Jan 24 11:19:45 2022 +0100

    ISIS-2944: [Metamodel] even further improve validation msg
---
 ...tionEnforcesMetamodelContributionValidator.java |  8 +++-
 .../DomainModelTest_usingBadDomain.java            | 43 ++++++++++++++++++----
 2 files changed, 41 insertions(+), 10 deletions(-)

diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/methods/DomainIncludeAnnotationEnforcesMetamodelContributionValidator.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/methods/DomainIncludeAnnotationEnforcesMetamodelContributionValidator.java
index 76d898c..41d6b93 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/methods/DomainIncludeAnnotationEnforcesMetamodelContributionValidator.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/methods/DomainIncludeAnnotationEnforcesMetamodelContributionValidator.java
@@ -58,6 +58,11 @@ extends MetaModelVisitingValidatorAbstract {
 
     private final _ClassCache classCache;
 
+    /** exposed in support of JUnit tests */
+    public static String VALIDATION_MESSAGE_TEMPLATE = "%s#%s: "
+            + "has synthesized (effective) annotation @%s, "
+            + "is assumed to represent or support a property, collection or action.";
+
     @Inject
     public DomainIncludeAnnotationEnforcesMetamodelContributionValidator(final MetaModelContext mmc) {
         super(mmc);
@@ -129,8 +134,7 @@ extends MetaModelVisitingValidatorAbstract {
                     .collect(Collectors.joining("; "));
 
             ValidationFailure.raiseFormatted(spec,
-                    "%s#%s: has synthesized (effective) annotation @%s, is assumed to support "
-                            + "a property, collection or action. Unmet constraint(s): %s",
+                    VALIDATION_MESSAGE_TEMPLATE + " Unmet constraint(s): %s",
                     spec.getFeatureIdentifier().getClassName(),
                     _Reflect.methodToShortString(notPickedUpMethod),
                     "Domain.Include",
diff --git a/regressiontests/stable-domainmodel/src/test/java/org/apache/isis/testdomain/domainmodel/DomainModelTest_usingBadDomain.java b/regressiontests/stable-domainmodel/src/test/java/org/apache/isis/testdomain/domainmodel/DomainModelTest_usingBadDomain.java
index eecdbc6..517dfe8 100644
--- a/regressiontests/stable-domainmodel/src/test/java/org/apache/isis/testdomain/domainmodel/DomainModelTest_usingBadDomain.java
+++ b/regressiontests/stable-domainmodel/src/test/java/org/apache/isis/testdomain/domainmodel/DomainModelTest_usingBadDomain.java
@@ -48,6 +48,7 @@ import org.apache.isis.core.config.environment.IsisSystemEnvironment;
 import org.apache.isis.core.config.metamodel.specloader.IntrospectionMode;
 import org.apache.isis.core.config.presets.IsisPresets;
 import org.apache.isis.core.config.progmodel.ProgrammingModelConstants;
+import org.apache.isis.core.metamodel.methods.DomainIncludeAnnotationEnforcesMetamodelContributionValidator;
 import org.apache.isis.core.metamodel.specloader.SpecificationLoader;
 import org.apache.isis.testdomain.conf.Configuration_headless;
 import org.apache.isis.testdomain.model.bad.AmbiguousMixinAnnotations;
@@ -116,8 +117,10 @@ class DomainModelTest_usingBadDomain {
     void orphanedActionSupport_shouldFail() {
         validator.assertAnyFailuresContaining(
                 Identifier.classIdentifier(LogicalType.fqcn(InvalidOrphanedActionSupport.class)),
-                "InvalidOrphanedActionSupport#hideOrphaned(): has synthesized (effective) annotation @Domain.Include, "
-                + "is assumed to support");
+                validationMessage(
+                        "InvalidOrphanedActionSupport",
+                        "hideOrphaned()",
+                        "Domain.Include"));
 
         val tester = testerFactory.objectTester(InvalidOrphanedActionSupport.class);
 
@@ -130,8 +133,10 @@ class DomainModelTest_usingBadDomain {
     void orphanedPropertySupport_shouldFail() {
         validator.assertAnyFailuresContaining(
                 Identifier.classIdentifier(LogicalType.fqcn(InvalidOrphanedPropertySupport.class)),
-                "InvalidOrphanedPropertySupport#hideMyProperty(): has synthesized (effective) annotation @Domain.Include, "
-                + "is assumed to support");
+                validationMessage(
+                        "InvalidOrphanedPropertySupport",
+                        "hideMyProperty()",
+                        "Domain.Include"));
 
         val tester = testerFactory.objectTester(InvalidOrphanedPropertySupport.class);
 
@@ -143,8 +148,10 @@ class DomainModelTest_usingBadDomain {
     void orphanedCollectionSupport_shouldFail() {
         validator.assertAnyFailuresContaining(
                 Identifier.classIdentifier(LogicalType.fqcn(InvalidOrphanedCollectionSupport.class)),
-                "InvalidOrphanedCollectionSupport#hideMyCollection(): has synthesized (effective) annotation @Domain.Include, "
-                + "is assumed to support");
+                validationMessage(
+                        "InvalidOrphanedCollectionSupport",
+                        "hideMyCollection()",
+                        "Domain.Include"));
 
         val tester = testerFactory.objectTester(InvalidOrphanedCollectionSupport.class);
 
@@ -182,12 +189,18 @@ class DomainModelTest_usingBadDomain {
         validator.assertAnyFailuresContaining(
                 Identifier.classIdentifier(LogicalType.fqcn(
                         InvalidMemberOverloadingWhenInherited.WhenAnnotationRequired.class)),
-                "#isActive(): has synthesized (effective) annotation @Domain.Include, is assumed to support a property");
+                validationMessage(
+                        "",
+                        "isActive()",
+                        "Domain.Include"));
 
         validator.assertAnyFailuresContaining(
                 Identifier.classIdentifier(LogicalType.fqcn(
                         InvalidMemberOverloadingWhenInherited.WhenEncapsulationEnabled.class)),
-                "#isActive(): has synthesized (effective) annotation @Domain.Include, is assumed to support a property");
+                validationMessage(
+                        "",
+                        "isActive()",
+                        "Domain.Include"));
     }
 
     @Test
@@ -276,4 +289,18 @@ class DomainModelTest_usingBadDomain {
 //                OrphanedPrefixedAction.class,
 //                "is assumed to support"));
 //    }
+
+    // -- HELPER
+
+    private String validationMessage(
+            final String className,
+            final String memberName,
+            final String annotationName) {
+        return String.format(
+                DomainIncludeAnnotationEnforcesMetamodelContributionValidator.VALIDATION_MESSAGE_TEMPLATE,
+                className,
+                memberName,
+                annotationName);
+    }
+
 }