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);
+ }
+
}