From ec3fa588c00c7be2338b70d5327b57f3348b1664 Mon Sep 17 00:00:00 2001 From: Dan Haywood Date: Mon, 13 May 2024 10:24:09 +0100 Subject: [PATCH 1/4] CAUSEWAY-3735: fixes copy/paste error in global config prop that is used to set up publishing facet for actions --- build-core.sh | 0 build-demo-app.sh | 0 build-site.sh | 0 build-smoketests.sh | 0 build-tooling.sh | 0 build.sh | 0 changed.sh | 0 .../ExecutionPublishingFacetForPropertyAnnotation.java | 2 +- dependency-graph.sh | 0 docker-run-demo.sh | 0 enhance.sh | 0 gitcommit.sh | 0 github-pr.sh | 0 gitrmb.sh | 0 preview.sh | 0 serve-timeline.sh | 0 sync-adoc.sh | 0 17 files changed, 1 insertion(+), 1 deletion(-) mode change 100644 => 100755 build-core.sh mode change 100644 => 100755 build-demo-app.sh mode change 100644 => 100755 build-site.sh mode change 100644 => 100755 build-smoketests.sh mode change 100644 => 100755 build-tooling.sh mode change 100644 => 100755 build.sh mode change 100644 => 100755 changed.sh mode change 100644 => 100755 dependency-graph.sh mode change 100644 => 100755 docker-run-demo.sh mode change 100644 => 100755 enhance.sh mode change 100644 => 100755 gitcommit.sh mode change 100644 => 100755 github-pr.sh mode change 100644 => 100755 gitrmb.sh mode change 100644 => 100755 preview.sh mode change 100644 => 100755 serve-timeline.sh mode change 100644 => 100755 sync-adoc.sh diff --git a/build-core.sh b/build-core.sh old mode 100644 new mode 100755 diff --git a/build-demo-app.sh b/build-demo-app.sh old mode 100644 new mode 100755 diff --git a/build-site.sh b/build-site.sh old mode 100644 new mode 100755 diff --git a/build-smoketests.sh b/build-smoketests.sh old mode 100644 new mode 100755 diff --git a/build-tooling.sh b/build-tooling.sh old mode 100644 new mode 100755 diff --git a/build.sh b/build.sh old mode 100644 new mode 100755 diff --git a/changed.sh b/changed.sh old mode 100644 new mode 100755 diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/members/publish/execution/ExecutionPublishingFacetForPropertyAnnotation.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/members/publish/execution/ExecutionPublishingFacetForPropertyAnnotation.java index a1ac8566364..7b95449fb09 100644 --- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/members/publish/execution/ExecutionPublishingFacetForPropertyAnnotation.java +++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/members/publish/execution/ExecutionPublishingFacetForPropertyAnnotation.java @@ -102,7 +102,7 @@ public static ExecutionPublishingFacet create( } } else { // we are dealing with an action - val actionPublishingPolicy = ActionConfigOptions.actionCommandPublishingPolicy(configuration); + val actionPublishingPolicy = ActionConfigOptions.actionExecutionPublishingPolicy(configuration); switch (actionPublishingPolicy) { case NONE: return new ExecutionPublishingFacetForActionFromConfiguration.None(holder); diff --git a/dependency-graph.sh b/dependency-graph.sh old mode 100644 new mode 100755 diff --git a/docker-run-demo.sh b/docker-run-demo.sh old mode 100644 new mode 100755 diff --git a/enhance.sh b/enhance.sh old mode 100644 new mode 100755 diff --git a/gitcommit.sh b/gitcommit.sh old mode 100644 new mode 100755 diff --git a/github-pr.sh b/github-pr.sh old mode 100644 new mode 100755 diff --git a/gitrmb.sh b/gitrmb.sh old mode 100644 new mode 100755 diff --git a/preview.sh b/preview.sh old mode 100644 new mode 100755 diff --git a/serve-timeline.sh b/serve-timeline.sh old mode 100644 new mode 100755 diff --git a/sync-adoc.sh b/sync-adoc.sh old mode 100644 new mode 100755 From 43e1fa582cf13b938684f489b0afbe40f4fea94e Mon Sep 17 00:00:00 2001 From: Patrick Deenen Date: Mon, 13 May 2024 14:03:39 +0200 Subject: [PATCH 2/4] ESTUP2-649: Use natural name for authorized message when in prototyping --- .../allbutparam/authorization/AuthorizationFacet.java | 6 ++++-- .../authorization/AuthorizationFacetAbstract.java | 2 +- gitcommit.sh | 0 .../ActionInteractionTest_notUsingAllowSafeSemantics.java | 4 ++-- .../ActionInteractionTest_usingAllowSafeSemantics.java | 2 +- 5 files changed, 8 insertions(+), 6 deletions(-) mode change 100644 => 100755 gitcommit.sh diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/postprocessors/allbutparam/authorization/AuthorizationFacet.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/postprocessors/allbutparam/authorization/AuthorizationFacet.java index 1c312ff1f97..897eddd8bba 100644 --- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/postprocessors/allbutparam/authorization/AuthorizationFacet.java +++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/postprocessors/allbutparam/authorization/AuthorizationFacet.java @@ -84,9 +84,11 @@ public static boolean hidesAction( .orElse(false); } - public static String formatNotAuthorizedToEdit(final @Nullable Identifier identifier) { + public static String formatNotAuthorizedToEdit(final boolean useNaturalName, + final @Nullable Identifier identifier) { return identifier!=null - ? String.format("Not authorized to edit feature: %s", identifier.getLogicalIdentityString("#")) + ? String.format("Not authorized to edit feature: %s", + useNaturalName ? identifier.getMemberNaturalName() : identifier.getLogicalIdentityString("#")) : "Not authorized to edit"; } diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/postprocessors/allbutparam/authorization/AuthorizationFacetAbstract.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/postprocessors/allbutparam/authorization/AuthorizationFacetAbstract.java index b9c1ed64abb..2919197fff9 100644 --- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/postprocessors/allbutparam/authorization/AuthorizationFacetAbstract.java +++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/postprocessors/allbutparam/authorization/AuthorizationFacetAbstract.java @@ -81,7 +81,7 @@ public Optional disables(final UsabilityContext ic) { getInteractionService().currentInteractionContextElseFail(), ic.getIdentifier()) ? null - : AuthorizationFacet.formatNotAuthorizedToEdit(ic.getIdentifier()); + : AuthorizationFacet.formatNotAuthorizedToEdit(getSystemEnvironment().isPrototyping(),ic.getIdentifier()); if(disables!=null && log.isDebugEnabled()) { log.debug("disables[{}] -> {}", ic.getIdentifier(), disables); diff --git a/gitcommit.sh b/gitcommit.sh old mode 100644 new mode 100755 diff --git a/regressiontests/interact/src/test/java/org/apache/causeway/testdomain/interact/ActionInteractionTest_notUsingAllowSafeSemantics.java b/regressiontests/interact/src/test/java/org/apache/causeway/testdomain/interact/ActionInteractionTest_notUsingAllowSafeSemantics.java index 971a83ff84a..40b9eb6dc73 100644 --- a/regressiontests/interact/src/test/java/org/apache/causeway/testdomain/interact/ActionInteractionTest_notUsingAllowSafeSemantics.java +++ b/regressiontests/interact/src/test/java/org/apache/causeway/testdomain/interact/ActionInteractionTest_notUsingAllowSafeSemantics.java @@ -94,7 +94,7 @@ void whenSafeAction_shouldDenyUse() { val veto = actionInteraction.getInteractionVeto().orElseThrow(); // should not throw val actionId = actionInteraction.getMetamodel().map(ObjectAction::getFeatureIdentifier).orElse(null); assertEquals( - AuthorizationFacet.formatNotAuthorizedToEdit(actionId), + AuthorizationFacet.formatNotAuthorizedToEdit(false,actionId), veto.getReasonAsString().orElse(null)); } @@ -106,7 +106,7 @@ void whenNonSafeAction_shouldDenyUse() { val veto = actionInteraction.getInteractionVeto().orElseThrow(); // should not throw val actionId = actionInteraction.getMetamodel().map(ObjectAction::getFeatureIdentifier).orElse(null); assertEquals( - AuthorizationFacet.formatNotAuthorizedToEdit(actionId), + AuthorizationFacet.formatNotAuthorizedToEdit(false,actionId), veto.getReasonAsString().orElse(null)); } diff --git a/regressiontests/interact/src/test/java/org/apache/causeway/testdomain/interact/ActionInteractionTest_usingAllowSafeSemantics.java b/regressiontests/interact/src/test/java/org/apache/causeway/testdomain/interact/ActionInteractionTest_usingAllowSafeSemantics.java index 32132eeca8b..fed4f0e6b3a 100644 --- a/regressiontests/interact/src/test/java/org/apache/causeway/testdomain/interact/ActionInteractionTest_usingAllowSafeSemantics.java +++ b/regressiontests/interact/src/test/java/org/apache/causeway/testdomain/interact/ActionInteractionTest_usingAllowSafeSemantics.java @@ -105,7 +105,7 @@ void whenNonSafeAction_shouldDenyUse() { val veto = actionInteraction.getInteractionVeto().orElseThrow(); // should not throw val actionId = actionInteraction.getMetamodel().map(ObjectAction::getFeatureIdentifier).orElse(null); assertEquals( - AuthorizationFacet.formatNotAuthorizedToEdit(actionId), + AuthorizationFacet.formatNotAuthorizedToEdit(false,actionId), veto.getReasonAsString().orElse(null)); } From cbc83659f04ec57c6027211d3bd1fdfc11dbc3ae Mon Sep 17 00:00:00 2001 From: Patrick Deenen Date: Mon, 13 May 2024 14:45:57 +0200 Subject: [PATCH 3/4] ESTUP2-649: Changed the message and applied a small fix --- .../allbutparam/authorization/AuthorizationFacet.java | 4 ++-- .../allbutparam/authorization/AuthorizationFacetAbstract.java | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/postprocessors/allbutparam/authorization/AuthorizationFacet.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/postprocessors/allbutparam/authorization/AuthorizationFacet.java index 897eddd8bba..a81b7450174 100644 --- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/postprocessors/allbutparam/authorization/AuthorizationFacet.java +++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/postprocessors/allbutparam/authorization/AuthorizationFacet.java @@ -87,9 +87,9 @@ public static boolean hidesAction( public static String formatNotAuthorizedToEdit(final boolean useNaturalName, final @Nullable Identifier identifier) { return identifier!=null - ? String.format("Not authorized to edit feature: %s", + ? String.format("Not authorized to edit or use feature: %s", useNaturalName ? identifier.getMemberNaturalName() : identifier.getLogicalIdentityString("#")) - : "Not authorized to edit"; + : "Not authorized to edit or use"; } } diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/postprocessors/allbutparam/authorization/AuthorizationFacetAbstract.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/postprocessors/allbutparam/authorization/AuthorizationFacetAbstract.java index 2919197fff9..d5a5fc8c99e 100644 --- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/postprocessors/allbutparam/authorization/AuthorizationFacetAbstract.java +++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/postprocessors/allbutparam/authorization/AuthorizationFacetAbstract.java @@ -81,7 +81,7 @@ public Optional disables(final UsabilityContext ic) { getInteractionService().currentInteractionContextElseFail(), ic.getIdentifier()) ? null - : AuthorizationFacet.formatNotAuthorizedToEdit(getSystemEnvironment().isPrototyping(),ic.getIdentifier()); + : AuthorizationFacet.formatNotAuthorizedToEdit(!getSystemEnvironment().isPrototyping(),ic.getIdentifier()); if(disables!=null && log.isDebugEnabled()) { log.debug("disables[{}] -> {}", ic.getIdentifier(), disables); From 1a6bed9120434cc00f93a6833c1ff02de2f26e6e Mon Sep 17 00:00:00 2001 From: Andi Huber Date: Tue, 14 May 2024 08:43:09 +0200 Subject: [PATCH 4/4] Estup2-649: post merge refactoring and test fixes --- .../progmodel/ProgrammingModelConstants.java | 7 +++-- ...ypeToBeIncludedWithMetamodelValidator.java | 2 +- .../action/ActionOverloadingValidator.java | 2 +- .../DomainObjectAnnotationFacetFactory.java | 4 +-- .../LogicalTypeMalformedValidator.java | 4 +-- .../method/NavigableParentFacetViaMethod.java | 2 +- .../TitleFacetViaTitleAnnotation.java | 4 +-- .../viewmodel/ViewModelFacetFactory.java | 4 +-- .../ViewModelFacetForViewModelInterface.java | 4 +-- .../mandatory/MandatoryFacetAbstract.java | 2 +- .../interactions/InteractionUtils.java | 2 +- ...nforcesMetamodelContributionValidator.java | 4 +-- .../_OrphanedSupportingMethodValidator.java | 2 +- .../all/MixinSanityChecksValidator.java | 6 ++--- .../authorization/AuthorizationFacet.java | 26 ++++++++++++++----- .../AuthorizationFacetAbstract.java | 2 +- .../ChoicesAndDefaultsPostProcessor.java | 2 +- .../SpecificationLoaderDefault.java | 2 +- .../specimpl/_MethodFacadeAutodetect.java | 6 ++--- .../validator/ValidationFailureUtils.java | 6 ++--- .../MemberExecutorServiceDefault.java | 6 ++--- .../DomainObjectTesterFactory.java | 2 +- .../DomainModelTest_usingBadDomain.java | 17 ++++++------ ...t_usingBadDomain_noAnnotationEnforced.java | 2 +- ...actionTest_notUsingAllowSafeSemantics.java | 11 ++++---- ...teractionTest_usingAllowSafeSemantics.java | 9 ++++--- 26 files changed, 79 insertions(+), 61 deletions(-) diff --git a/core/config/src/main/java/org/apache/causeway/core/config/progmodel/ProgrammingModelConstants.java b/core/config/src/main/java/org/apache/causeway/core/config/progmodel/ProgrammingModelConstants.java index 4dc15423bac..c323f8d40ca 100644 --- a/core/config/src/main/java/org/apache/causeway/core/config/progmodel/ProgrammingModelConstants.java +++ b/core/config/src/main/java/org/apache/causeway/core/config/progmodel/ProgrammingModelConstants.java @@ -407,7 +407,10 @@ public static Can namesFor(final MethodFacade member, final String prefi //maybe gradually consolidate all MM validation raisers here @RequiredArgsConstructor - public static enum Violation { + public static enum MessageTemplate { + NOT_AUTHORIZED_TO_EDIT_OR_USE("Not authorized to edit or use."), + NOT_AUTHORIZED_TO_EDIT_OR_USE_MEMBER("Not authorized to edit or use ${member}."), + NOT_AUTHORIZED_TO_EDIT_OR_USE_FEATURE("Not authorized to edit or use feature ${type}#${member}."), CONFLICTING_TITLE_STRATEGIES( "${type} has title() method with @Title annotation, which is not allowed; " + "consider either removing the @Title annotation or renaming the method"), @@ -511,7 +514,7 @@ public ViolationBuilder builder() { } @RequiredArgsConstructor public static class ViolationBuilder { - private final Violation violaton; + private final MessageTemplate violaton; private final Map vars = new HashMap<>(); public ViolationBuilder addVariable(final String name, final String value) { vars.put(name, value); diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/actions/action/ActionAnnotationShouldEnforceConcreteTypeToBeIncludedWithMetamodelValidator.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/actions/action/ActionAnnotationShouldEnforceConcreteTypeToBeIncludedWithMetamodelValidator.java index a9b056827db..547a5b2af7d 100644 --- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/actions/action/ActionAnnotationShouldEnforceConcreteTypeToBeIncludedWithMetamodelValidator.java +++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/actions/action/ActionAnnotationShouldEnforceConcreteTypeToBeIncludedWithMetamodelValidator.java @@ -58,7 +58,7 @@ public void validateObjectEnter(final ObjectSpecification spec) { ValidationFailure.raiseFormatted( spec, - ProgrammingModelConstants.Violation.UNKNONW_SORT_WITH_ACTION + ProgrammingModelConstants.MessageTemplate.UNKNONW_SORT_WITH_ACTION .builder() .addVariable("type", spec.getCorrespondingClass().getName()) .addVariable("actions", actionIds) diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/actions/action/ActionOverloadingValidator.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/actions/action/ActionOverloadingValidator.java index 8b83665263c..433b55b8216 100644 --- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/actions/action/ActionOverloadingValidator.java +++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/actions/action/ActionOverloadingValidator.java @@ -67,7 +67,7 @@ public void validateObjectEnter(final @NonNull ObjectSpecification spec) { ValidationFailure.raiseFormatted( spec, - ProgrammingModelConstants.Violation.ACTION_METHOD_OVERLOADING_NOT_ALLOWED + ProgrammingModelConstants.MessageTemplate.ACTION_METHOD_OVERLOADING_NOT_ALLOWED .builder() .addVariable("type", spec.getCorrespondingClass().getName()) .addVariable("overloadedNames", overloadedNames.toString()) diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactory.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactory.java index 4571cff30a2..faa4e62d640 100644 --- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactory.java +++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/object/domainobject/DomainObjectAnnotationFacetFactory.java @@ -600,7 +600,7 @@ public void validateExit() { proxies.forEach(spec->{ ValidationFailure.raiseFormatted(spec, - ProgrammingModelConstants.Violation.PROXIED_SERVICE_BEAN_NOT_ALLOWED_TO_CONTRIBUTE + ProgrammingModelConstants.MessageTemplate.PROXIED_SERVICE_BEAN_NOT_ALLOWED_TO_CONTRIBUTE .builder() .addVariable("logicalTypeName", spec.getLogicalTypeName()) .addVariable("csv", asCsv(proxies.toList())) @@ -613,7 +613,7 @@ public void validateExit() { .filter(this::logicalTypeNameIsNotIncludedInAliased) .forEach(spec->{ ValidationFailure.raiseFormatted(spec, - ProgrammingModelConstants.Violation.NON_UNIQUE_LOGICAL_TYPE_NAME_OR_ALIAS + ProgrammingModelConstants.MessageTemplate.NON_UNIQUE_LOGICAL_TYPE_NAME_OR_ALIAS .builder() .addVariable("logicalTypeName", spec.getLogicalTypeName()) .addVariable("csv", asCsv(collidingSpecs)) diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/object/logicaltype/LogicalTypeMalformedValidator.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/object/logicaltype/LogicalTypeMalformedValidator.java index 624b0cb0349..d0e37bae7fe 100644 --- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/object/logicaltype/LogicalTypeMalformedValidator.java +++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/object/logicaltype/LogicalTypeMalformedValidator.java @@ -57,8 +57,8 @@ public void validateObjectEnter(final ObjectSpecification spec) { .anyMatch(String::isEmpty)) { val validationResponse = spec.isInjectable() - ? ProgrammingModelConstants.Violation.DOMAIN_SERVICE_MISSING_A_NAMESPACE - : ProgrammingModelConstants.Violation.DOMAIN_OBJECT_MISSING_A_NAMESPACE; + ? ProgrammingModelConstants.MessageTemplate.DOMAIN_SERVICE_MISSING_A_NAMESPACE + : ProgrammingModelConstants.MessageTemplate.DOMAIN_OBJECT_MISSING_A_NAMESPACE; ValidationFailure.raiseFormatted(spec, validationResponse.builder() diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/object/navparent/method/NavigableParentFacetViaMethod.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/object/navparent/method/NavigableParentFacetViaMethod.java index 13e89ec5fda..3997775ccfb 100644 --- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/object/navparent/method/NavigableParentFacetViaMethod.java +++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/object/navparent/method/NavigableParentFacetViaMethod.java @@ -53,7 +53,7 @@ public static Optional create( // failure deficiency->{ ValidationFailure.raiseFormatted(facetHolder, - ProgrammingModelConstants.Violation.DOMAIN_OBJECT_INVALID_NAVIGABLE_PARENT + ProgrammingModelConstants.MessageTemplate.DOMAIN_OBJECT_INVALID_NAVIGABLE_PARENT .builder() .addVariable("type", processedClass.getName()) .addVariable("parentType", method.returnType().getName()) diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/object/title/annotation/TitleFacetViaTitleAnnotation.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/object/title/annotation/TitleFacetViaTitleAnnotation.java index 70c30452c4f..e79e2d7f292 100644 --- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/object/title/annotation/TitleFacetViaTitleAnnotation.java +++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/object/title/annotation/TitleFacetViaTitleAnnotation.java @@ -36,7 +36,7 @@ import org.apache.causeway.commons.internal.reflection._Reflect.InterfacePolicy; import org.apache.causeway.commons.internal.reflection._Reflect.TypeHierarchyPolicy; import org.apache.causeway.core.config.progmodel.ProgrammingModelConstants.ObjectSupportMethod; -import org.apache.causeway.core.config.progmodel.ProgrammingModelConstants.Violation; +import org.apache.causeway.core.config.progmodel.ProgrammingModelConstants.MessageTemplate; import org.apache.causeway.core.metamodel.facetapi.FacetHolder; import org.apache.causeway.core.metamodel.facets.Evaluators; import org.apache.causeway.core.metamodel.facets.Evaluators.MethodEvaluator; @@ -201,7 +201,7 @@ private static boolean isATitleProvidingObjectSupportMethod( final Runnable onTrue) { if(ObjectSupportMethod.TITLE.getMethodNames().contains(evaluator.name())) { ValidationFailure.raise(facetHolder, - Violation.CONFLICTING_TITLE_STRATEGIES + MessageTemplate.CONFLICTING_TITLE_STRATEGIES .builder() .addVariablesFor(facetHolder.getFeatureIdentifier()) .buildMessage()); diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/object/viewmodel/ViewModelFacetFactory.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/object/viewmodel/ViewModelFacetFactory.java index d8e49fd4118..efc6df01f30 100644 --- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/object/viewmodel/ViewModelFacetFactory.java +++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/object/viewmodel/ViewModelFacetFactory.java @@ -86,7 +86,7 @@ public void refineProgrammingModel(final ProgrammingModel programmingModel) { && objectSpec.getBeanSort().isViewModel() && !objectSpec.viewmodelFacet().isPresent()) { ValidationFailure.raiseFormatted(objectSpec, - ProgrammingModelConstants.Violation.VIEWMODEL_MISSING_SERIALIZATION_STRATEGY + ProgrammingModelConstants.MessageTemplate.VIEWMODEL_MISSING_SERIALIZATION_STRATEGY .builder() .addVariable("type", objectSpec.getCorrespondingClass().getName()) .buildMessage()); @@ -98,7 +98,7 @@ public void refineProgrammingModel(final ProgrammingModel programmingModel) { facetRanking .visitTopRankPairsSemanticDiffering(ViewModelFacet.class, (a, b)->{ ValidationFailure.raiseFormatted(objectSpec, - ProgrammingModelConstants.Violation.VIEWMODEL_CONFLICTING_SERIALIZATION_STRATEGIES + ProgrammingModelConstants.MessageTemplate.VIEWMODEL_CONFLICTING_SERIALIZATION_STRATEGIES .builder() .addVariable("type", objectSpec.getFullIdentifier()) .addVariable("facetA", a.getClass().getSimpleName()) diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/object/viewmodel/ViewModelFacetForViewModelInterface.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/object/viewmodel/ViewModelFacetForViewModelInterface.java index 264a5f3a508..4441345a417 100644 --- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/object/viewmodel/ViewModelFacetForViewModelInterface.java +++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/object/viewmodel/ViewModelFacetForViewModelInterface.java @@ -72,11 +72,11 @@ public static Optional create( val violation = explicitInjectConstructors.getCardinality().isMultiple() - ? ProgrammingModelConstants.Violation.VIEWMODEL_MULTIPLE_CONSTRUCTORS_WITH_INJECT_SEMANTICS + ? ProgrammingModelConstants.MessageTemplate.VIEWMODEL_MULTIPLE_CONSTRUCTORS_WITH_INJECT_SEMANTICS : explicitInjectConstructors.getCardinality().isZero() && !publicConstructors.getCardinality().isOne() // in absence of a constructor with inject semantics there must be exactly one public to pick instead - ? ProgrammingModelConstants.Violation.VIEWMODEL_MISSING_OR_MULTIPLE_PUBLIC_CONSTRUCTORS + ? ProgrammingModelConstants.MessageTemplate.VIEWMODEL_MISSING_OR_MULTIPLE_PUBLIC_CONSTRUCTORS : null; if(violation!=null) { diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/objectvalue/mandatory/MandatoryFacetAbstract.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/objectvalue/mandatory/MandatoryFacetAbstract.java index 0ab89fb3363..25391e4b3c3 100644 --- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/objectvalue/mandatory/MandatoryFacetAbstract.java +++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/objectvalue/mandatory/MandatoryFacetAbstract.java @@ -151,7 +151,7 @@ private static void raiseIfConflictingOptionality( val holder = mandatoryFacet.getFacetHolder(); ValidationFailure.raiseFormatted(holder, - ProgrammingModelConstants.Violation.CONFLICTING_OPTIONALITY.builder() + ProgrammingModelConstants.MessageTemplate.CONFLICTING_OPTIONALITY.builder() .addVariable("member", holder.getFeatureIdentifier().getFullIdentityString()) .addVariable("conflictingFacets", conflictingFacets.stream() .map(MandatoryFacet::summarize) diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/interactions/InteractionUtils.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/interactions/InteractionUtils.java index 2e784dd8bb2..0a19c24b604 100644 --- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/interactions/InteractionUtils.java +++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/interactions/InteractionUtils.java @@ -108,7 +108,7 @@ public static InteractionResultSet isValidResultSet( private static String guardAgainstEmptyReasonString( final @Nullable String reason, final @NonNull Identifier identifier) { if("".equals(reason)) { - val msg = ProgrammingModelConstants.Violation.INVALID_USE_OF_VALIDATION_SUPPORT_METHOD.builder() + val msg = ProgrammingModelConstants.MessageTemplate.INVALID_USE_OF_VALIDATION_SUPPORT_METHOD.builder() .addVariable("className", identifier.getClassName()) .addVariable("memberName", identifier.getMemberLogicalName()) .buildMessage(); diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/methods/DomainIncludeAnnotationEnforcesMetamodelContributionValidator.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/methods/DomainIncludeAnnotationEnforcesMetamodelContributionValidator.java index 25acb500d00..700650839fc 100644 --- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/methods/DomainIncludeAnnotationEnforcesMetamodelContributionValidator.java +++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/methods/DomainIncludeAnnotationEnforcesMetamodelContributionValidator.java @@ -36,7 +36,7 @@ import org.apache.causeway.commons.internal.reflection._GenericResolver.ResolvedMethod; import org.apache.causeway.commons.internal.reflection._MethodFacades.MethodFacade; import org.apache.causeway.commons.internal.reflection._Reflect; -import org.apache.causeway.core.config.progmodel.ProgrammingModelConstants.Violation; +import org.apache.causeway.core.config.progmodel.ProgrammingModelConstants.MessageTemplate; import org.apache.causeway.core.metamodel.commons.MethodUtil; import org.apache.causeway.core.metamodel.context.MetaModelContext; import org.apache.causeway.core.metamodel.facetapi.FacetHolder; @@ -139,7 +139,7 @@ public void validateObjectEnter(final ObjectSpecification spec) { .collect(Collectors.joining("; ")); ValidationFailure.raiseFormatted(spec, - Violation.UNSATISFIED_DOMAIN_INCLUDE_SEMANTICS + MessageTemplate.UNSATISFIED_DOMAIN_INCLUDE_SEMANTICS .builder() .addVariable("type", spec.getFeatureIdentifier().getClassName()) .addVariable("member", _Reflect.methodToShortString(notPickedUpMethod.method())) diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/methods/_OrphanedSupportingMethodValidator.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/methods/_OrphanedSupportingMethodValidator.java index 504d52dc36c..44bb2c6fa16 100644 --- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/methods/_OrphanedSupportingMethodValidator.java +++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/methods/_OrphanedSupportingMethodValidator.java @@ -64,7 +64,7 @@ static void validate( ValidationFailure.raise( spec, - ProgrammingModelConstants.Violation.ORPHANED_METHOD + ProgrammingModelConstants.MessageTemplate.ORPHANED_METHOD .builder() .addVariablesFor(methodIdentifier) .buildMessage()); diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/postprocessors/all/MixinSanityChecksValidator.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/postprocessors/all/MixinSanityChecksValidator.java index 0467505c4a3..0093aef8761 100644 --- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/postprocessors/all/MixinSanityChecksValidator.java +++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/postprocessors/all/MixinSanityChecksValidator.java @@ -68,7 +68,7 @@ public void validateObjectEnter(final ObjectSpecification objSpec) { if(contributing==null || contributing.isUnspecified()) { ValidationFailure.raiseFormatted(objSpec, - ProgrammingModelConstants.Violation.INVALID_MIXIN_TYPE + ProgrammingModelConstants.MessageTemplate.INVALID_MIXIN_TYPE .builder() .addVariable("type", objSpec.getCorrespondingClass().getName()) .buildMessage()); @@ -104,7 +104,7 @@ private void checkMixinSort(final ObjectSpecification objSpec, final FacetedMeth if(actualContributing!=expectedContributing) { ValidationFailure.raiseFormatted(objSpec, - ProgrammingModelConstants.Violation.INVALID_MIXIN_SORT + ProgrammingModelConstants.MessageTemplate.INVALID_MIXIN_SORT .builder() .addVariable("type", objSpec.getCorrespondingClass().getName()) .addVariable("expectedContributing", expectedContributing.name()) @@ -121,7 +121,7 @@ private void checkMixinMainMethod(final ObjectSpecification objSpec, final Ident if(!expectedMethodName.equals(actualMethodName)) { ValidationFailure.raiseFormatted(objSpec, - ProgrammingModelConstants.Violation.INVALID_MIXIN_MAIN + ProgrammingModelConstants.MessageTemplate.INVALID_MIXIN_MAIN .builder() .addVariable("type", objSpec.getCorrespondingClass().getName()) .addVariable("expectedMethodName", expectedMethodName) diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/postprocessors/allbutparam/authorization/AuthorizationFacet.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/postprocessors/allbutparam/authorization/AuthorizationFacet.java index a81b7450174..d5160fe2ca1 100644 --- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/postprocessors/allbutparam/authorization/AuthorizationFacet.java +++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/postprocessors/allbutparam/authorization/AuthorizationFacet.java @@ -21,6 +21,8 @@ import org.springframework.lang.Nullable; import org.apache.causeway.applib.Identifier; +import org.apache.causeway.core.config.progmodel.ProgrammingModelConstants; +import org.apache.causeway.core.metamodel.context.MetaModelContext; import org.apache.causeway.core.metamodel.facetapi.Facet; import org.apache.causeway.core.metamodel.interactions.ActionVisibilityContext; import org.apache.causeway.core.metamodel.interactions.CollectionVisibilityContext; @@ -83,13 +85,23 @@ public static boolean hidesAction( vc.getWhere())) != null) .orElse(false); } - - public static String formatNotAuthorizedToEdit(final boolean useNaturalName, - final @Nullable Identifier identifier) { - return identifier!=null - ? String.format("Not authorized to edit or use feature: %s", - useNaturalName ? identifier.getMemberNaturalName() : identifier.getLogicalIdentityString("#")) - : "Not authorized to edit or use"; + + /** + * @param identifier - presence results in a more verbose message + * @param mmc - if present AND when PROTOTYPING, results in a more concise message, + * only including the friendly member name (omitting the type's name) + */ + public static String formatNotAuthorizedToEdit( + final @Nullable Identifier identifier, + final @Nullable MetaModelContext mmc) { + var template = identifier==null + ? ProgrammingModelConstants.MessageTemplate.NOT_AUTHORIZED_TO_EDIT_OR_USE + : mmc!=null && !mmc.getSystemEnvironment().isPrototyping() + ? ProgrammingModelConstants.MessageTemplate.NOT_AUTHORIZED_TO_EDIT_OR_USE_MEMBER + : ProgrammingModelConstants.MessageTemplate.NOT_AUTHORIZED_TO_EDIT_OR_USE_FEATURE; + return template.builder() + .addVariablesFor(identifier) + .buildMessage(); } } diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/postprocessors/allbutparam/authorization/AuthorizationFacetAbstract.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/postprocessors/allbutparam/authorization/AuthorizationFacetAbstract.java index d5a5fc8c99e..b194d13039d 100644 --- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/postprocessors/allbutparam/authorization/AuthorizationFacetAbstract.java +++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/postprocessors/allbutparam/authorization/AuthorizationFacetAbstract.java @@ -81,7 +81,7 @@ public Optional disables(final UsabilityContext ic) { getInteractionService().currentInteractionContextElseFail(), ic.getIdentifier()) ? null - : AuthorizationFacet.formatNotAuthorizedToEdit(!getSystemEnvironment().isPrototyping(),ic.getIdentifier()); + : AuthorizationFacet.formatNotAuthorizedToEdit(ic.getIdentifier(), getMetaModelContext()); if(disables!=null && log.isDebugEnabled()) { log.debug("disables[{}] -> {}", ic.getIdentifier(), disables); diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/postprocessors/param/ChoicesAndDefaultsPostProcessor.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/postprocessors/param/ChoicesAndDefaultsPostProcessor.java index b1175e6e882..2d44718ca53 100644 --- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/postprocessors/param/ChoicesAndDefaultsPostProcessor.java +++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/postprocessors/param/ChoicesAndDefaultsPostProcessor.java @@ -245,7 +245,7 @@ private void checkParamHasChoicesOrAutoCompleteWhenRequired(final ObjectActionPa if(!hasChoicesOrAutoComplete(param)) { ValidationFailure.raiseFormatted(param, - ProgrammingModelConstants.Violation.PARAMETER_HAS_NO_CHOICES_NOR_AUTOCOMPLETE.builder() + ProgrammingModelConstants.MessageTemplate.PARAMETER_HAS_NO_CHOICES_NOR_AUTOCOMPLETE.builder() .addVariable("paramId", param.getFeatureIdentifier().toString()) .buildMessage()); } diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/specloader/SpecificationLoaderDefault.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/specloader/SpecificationLoaderDefault.java index 9c2508d867e..120fb49c7a6 100644 --- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/specloader/SpecificationLoaderDefault.java +++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/specloader/SpecificationLoaderDefault.java @@ -607,7 +607,7 @@ private void guardAgainstMetamodelLockedAfterFullIntrospection(final Class cl if(isMetamodelFullyIntrospected() && causewayConfiguration.getCore().getMetaModel().getIntrospector().isLockAfterFullIntrospection()) { - val warningMessage = ProgrammingModelConstants.Violation.TYPE_NOT_EAGERLY_DISCOVERED + val warningMessage = ProgrammingModelConstants.MessageTemplate.TYPE_NOT_EAGERLY_DISCOVERED .builder() .addVariable("type", cls.getName()) .addVariable("beanSort", causewayBeanTypeClassifier diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/specloader/specimpl/_MethodFacadeAutodetect.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/specloader/specimpl/_MethodFacadeAutodetect.java index c94c1f5654b..b4dab67fe3d 100644 --- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/specloader/specimpl/_MethodFacadeAutodetect.java +++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/specloader/specimpl/_MethodFacadeAutodetect.java @@ -28,7 +28,7 @@ import org.apache.causeway.commons.internal.reflection._GenericResolver.ResolvedMethod; import org.apache.causeway.commons.internal.reflection._MethodFacades; import org.apache.causeway.commons.internal.reflection._MethodFacades.MethodFacade; -import org.apache.causeway.core.config.progmodel.ProgrammingModelConstants.Violation; +import org.apache.causeway.core.config.progmodel.ProgrammingModelConstants.MessageTemplate; import org.apache.causeway.core.metamodel.facetapi.FacetHolder; import org.apache.causeway.core.metamodel.specloader.validator.ValidationFailure; @@ -54,7 +54,7 @@ MethodFacade autodetect(final ResolvedMethod method, final FacetHolder inspected || method.paramCount() > 1) { // invalid ValidationFailure.raiseFormatted(inspectedTypeSpec, - Violation.PARAMETER_TUPLE_INVALID_USE_OF_ANNOTATION + MessageTemplate.PARAMETER_TUPLE_INVALID_USE_OF_ANNOTATION .builder() .addVariable("type", inspectedTypeSpec.getFeatureIdentifier().getClassName()) .addVariable("member", method.name()) @@ -66,7 +66,7 @@ MethodFacade autodetect(final ResolvedMethod method, final FacetHolder inspected if(!patConstructors.isCardinalityOne()) { // invalid ValidationFailure.raiseFormatted(inspectedTypeSpec, - Violation.PARAMETER_TUPLE_TYPE_WITH_AMBIGUOUS_CONSTRUCTORS + MessageTemplate.PARAMETER_TUPLE_TYPE_WITH_AMBIGUOUS_CONSTRUCTORS .builder() .addVariable("type", inspectedTypeSpec.getFeatureIdentifier().getClassName()) .addVariable("member", method.name()) diff --git a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/specloader/validator/ValidationFailureUtils.java b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/specloader/validator/ValidationFailureUtils.java index 9a76ab77cb7..a4c71194879 100644 --- a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/specloader/validator/ValidationFailureUtils.java +++ b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/specloader/validator/ValidationFailureUtils.java @@ -36,7 +36,7 @@ public void raiseAmbiguousMixinAnnotations( final Class annotationType) { ValidationFailure.raiseFormatted(holder, - ProgrammingModelConstants.Violation.AMBIGUOUS_MIXIN_ANNOTATIONS + ProgrammingModelConstants.MessageTemplate.AMBIGUOUS_MIXIN_ANNOTATIONS .builder() .addVariable("annot", "@" + annotationType.getSimpleName()) .addVariable("mixinType", holder.getFeatureIdentifier().getFullIdentityString()) @@ -50,7 +50,7 @@ public void raiseMemberIdClash( final ObjectMember memberB) { ValidationFailure.raiseFormatted(memberB, - ProgrammingModelConstants.Violation.MEMBER_ID_CLASH + ProgrammingModelConstants.MessageTemplate.MEMBER_ID_CLASH .builder() .addVariable("type", declaringType.fqcn()) .addVariable("memberId", ""+memberB.getId()) @@ -64,7 +64,7 @@ public void raiseInvalidMemberElementType( final ObjectSpecification declaringType, final ObjectSpecification elementType) { ValidationFailure.raiseFormatted(facetHolder, - ProgrammingModelConstants.Violation.INVALID_MEMBER_ELEMENT_TYPE + ProgrammingModelConstants.MessageTemplate.INVALID_MEMBER_ELEMENT_TYPE .builder() .addVariable("type", declaringType.fqcn()) .addVariable("elementType", ""+elementType) diff --git a/core/runtimeservices/src/main/java/org/apache/causeway/core/runtimeservices/executor/MemberExecutorServiceDefault.java b/core/runtimeservices/src/main/java/org/apache/causeway/core/runtimeservices/executor/MemberExecutorServiceDefault.java index dadf8c71de8..90fcbaa0d7b 100644 --- a/core/runtimeservices/src/main/java/org/apache/causeway/core/runtimeservices/executor/MemberExecutorServiceDefault.java +++ b/core/runtimeservices/src/main/java/org/apache/causeway/core/runtimeservices/executor/MemberExecutorServiceDefault.java @@ -44,7 +44,7 @@ import org.apache.causeway.commons.internal.collections._Lists; import org.apache.causeway.commons.internal.reflection._MethodFacades.MethodFacade; import org.apache.causeway.core.config.CausewayConfiguration; -import org.apache.causeway.core.config.progmodel.ProgrammingModelConstants.Violation; +import org.apache.causeway.core.config.progmodel.ProgrammingModelConstants.MessageTemplate; import org.apache.causeway.core.metamodel.commons.CanonicalInvoker; import org.apache.causeway.core.metamodel.consent.InteractionInitiatedBy; import org.apache.causeway.core.metamodel.execution.ActionExecutor; @@ -188,8 +188,8 @@ private ManagedObject invokeActionInternally( _Assert.assertTrue(scalarNonEmpty.getBookmark().isPresent(), ()->{ var returnTypeSpec = scalarNonEmpty.getSpecification(); var violation = returnTypeSpec.isEntity() - ? Violation.ACTION_METHOD_RETURNING_TRANSIENT_ENTITY_NOT_ALLOWED - : Violation.ACTION_METHOD_RETURNING_NON_BOOKMARKABLE_OBJECT_NOT_ALLOWED; + ? MessageTemplate.ACTION_METHOD_RETURNING_TRANSIENT_ENTITY_NOT_ALLOWED + : MessageTemplate.ACTION_METHOD_RETURNING_NON_BOOKMARKABLE_OBJECT_NOT_ALLOWED; return violation.builder() .addVariablesFor(actionId) .addVariable("returnTypeSpec", returnTypeSpec.toString()) diff --git a/regressiontests/base/src/main/java/org/apache/causeway/testdomain/util/interaction/DomainObjectTesterFactory.java b/regressiontests/base/src/main/java/org/apache/causeway/testdomain/util/interaction/DomainObjectTesterFactory.java index 23b407a6bca..36dd3349322 100644 --- a/regressiontests/base/src/main/java/org/apache/causeway/testdomain/util/interaction/DomainObjectTesterFactory.java +++ b/regressiontests/base/src/main/java/org/apache/causeway/testdomain/util/interaction/DomainObjectTesterFactory.java @@ -198,7 +198,7 @@ public void assertLayout(final @Nullable String expectedResult) { } public void assertValidationFailureOnMember( - final ProgrammingModelConstants.Violation violation, + final ProgrammingModelConstants.MessageTemplate violation, final String memberName) { val validateDomainModel = diff --git a/regressiontests/domainmodel/src/test/java/org/apache/causeway/testdomain/domainmodel/DomainModelTest_usingBadDomain.java b/regressiontests/domainmodel/src/test/java/org/apache/causeway/testdomain/domainmodel/DomainModelTest_usingBadDomain.java index 0c08791dd3d..8bbef6d36de 100644 --- a/regressiontests/domainmodel/src/test/java/org/apache/causeway/testdomain/domainmodel/DomainModelTest_usingBadDomain.java +++ b/regressiontests/domainmodel/src/test/java/org/apache/causeway/testdomain/domainmodel/DomainModelTest_usingBadDomain.java @@ -30,13 +30,14 @@ import org.junit.jupiter.params.provider.Arguments; import org.junit.jupiter.params.provider.MethodSource; import org.junit.jupiter.params.provider.ValueSource; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.test.context.TestPropertySource; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertThrows; import static org.junit.jupiter.api.Assertions.assertTrue; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.TestPropertySource; + import org.apache.causeway.applib.Identifier; import org.apache.causeway.applib.annotation.Action; import org.apache.causeway.applib.annotation.ActionLayout; @@ -52,7 +53,7 @@ import org.apache.causeway.core.config.metamodel.specloader.IntrospectionMode; import org.apache.causeway.core.config.presets.CausewayPresets; import org.apache.causeway.core.config.progmodel.ProgrammingModelConstants; -import org.apache.causeway.core.config.progmodel.ProgrammingModelConstants.Violation; +import org.apache.causeway.core.config.progmodel.ProgrammingModelConstants.MessageTemplate; import org.apache.causeway.core.metamodel.spec.feature.MixedIn; import org.apache.causeway.core.metamodel.specloader.SpecificationLoader; import org.apache.causeway.testdomain.conf.Configuration_headless; @@ -134,7 +135,7 @@ void orphanedActionSupport_shouldFail() { val tester = testerFactory.objectTester(InvalidOrphanedActionSupport.class); tester.assertValidationFailureOnMember( - ProgrammingModelConstants.Violation.ORPHANED_METHOD, "hideMe()"); + ProgrammingModelConstants.MessageTemplate.ORPHANED_METHOD, "hideMe()"); } @@ -149,7 +150,7 @@ void orphanedPropertySupport_shouldFail() { val tester = testerFactory.objectTester(InvalidOrphanedPropertySupport.class); tester.assertValidationFailureOnMember( - ProgrammingModelConstants.Violation.ORPHANED_METHOD, "hideMe()"); + ProgrammingModelConstants.MessageTemplate.ORPHANED_METHOD, "hideMe()"); } @Test @@ -163,7 +164,7 @@ void orphanedCollectionSupport_shouldFail() { val tester = testerFactory.objectTester(InvalidOrphanedCollectionSupport.class); tester.assertValidationFailureOnMember( - ProgrammingModelConstants.Violation.ORPHANED_METHOD, "hideMe()"); + ProgrammingModelConstants.MessageTemplate.ORPHANED_METHOD, "hideMe()"); } @Test @@ -427,7 +428,7 @@ void invalidMixinDeclaration(final Class classUnderTest) { validator.assertAnyFailuresContaining( classUnderTest, - ProgrammingModelConstants.Violation.INVALID_MIXIN_MAIN.builder() + ProgrammingModelConstants.MessageTemplate.INVALID_MIXIN_MAIN.builder() .addVariable("type", classUnderTest.getName()) .addVariable("expectedMethodName", expectedMethodName) .addVariable("actualMethodName", "other") @@ -460,7 +461,7 @@ void invalidPropertyAnnotationOnAction_shouldFail() { private String unsatisfiedDomainIncludeSemantics( final String className, final String memberName) { - return Violation.UNSATISFIED_DOMAIN_INCLUDE_SEMANTICS + return MessageTemplate.UNSATISFIED_DOMAIN_INCLUDE_SEMANTICS .builder() .addVariable("type", className) .addVariable("member", memberName) diff --git a/regressiontests/domainmodel/src/test/java/org/apache/causeway/testdomain/domainmodel/DomainModelTest_usingBadDomain_noAnnotationEnforced.java b/regressiontests/domainmodel/src/test/java/org/apache/causeway/testdomain/domainmodel/DomainModelTest_usingBadDomain_noAnnotationEnforced.java index dc374ac587e..7c0f8526720 100644 --- a/regressiontests/domainmodel/src/test/java/org/apache/causeway/testdomain/domainmodel/DomainModelTest_usingBadDomain_noAnnotationEnforced.java +++ b/regressiontests/domainmodel/src/test/java/org/apache/causeway/testdomain/domainmodel/DomainModelTest_usingBadDomain_noAnnotationEnforced.java @@ -79,7 +79,7 @@ void orphanedActionSupport_shouldFail() { val tester = testerFactory.objectTester(InvalidOrphanedActionSupportNoAnnotationEnforced.class); tester.assertValidationFailureOnMember( - ProgrammingModelConstants.Violation.ORPHANED_METHOD, "hideOrphaned()"); + ProgrammingModelConstants.MessageTemplate.ORPHANED_METHOD, "hideOrphaned()"); } } diff --git a/regressiontests/interact/src/test/java/org/apache/causeway/testdomain/interact/ActionInteractionTest_notUsingAllowSafeSemantics.java b/regressiontests/interact/src/test/java/org/apache/causeway/testdomain/interact/ActionInteractionTest_notUsingAllowSafeSemantics.java index 40b9eb6dc73..b897bcfadc2 100644 --- a/regressiontests/interact/src/test/java/org/apache/causeway/testdomain/interact/ActionInteractionTest_notUsingAllowSafeSemantics.java +++ b/regressiontests/interact/src/test/java/org/apache/causeway/testdomain/interact/ActionInteractionTest_notUsingAllowSafeSemantics.java @@ -21,14 +21,15 @@ import javax.inject.Named; import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; + import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.stereotype.Service; import org.springframework.test.context.TestPropertySource; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertFalse; - import org.apache.causeway.applib.Identifier; import org.apache.causeway.applib.annotation.PriorityPrecedence; import org.apache.causeway.applib.annotation.Where; @@ -94,7 +95,7 @@ void whenSafeAction_shouldDenyUse() { val veto = actionInteraction.getInteractionVeto().orElseThrow(); // should not throw val actionId = actionInteraction.getMetamodel().map(ObjectAction::getFeatureIdentifier).orElse(null); assertEquals( - AuthorizationFacet.formatNotAuthorizedToEdit(false,actionId), + AuthorizationFacet.formatNotAuthorizedToEdit(actionId, objectManager.getMetaModelContext()), veto.getReasonAsString().orElse(null)); } @@ -106,7 +107,7 @@ void whenNonSafeAction_shouldDenyUse() { val veto = actionInteraction.getInteractionVeto().orElseThrow(); // should not throw val actionId = actionInteraction.getMetamodel().map(ObjectAction::getFeatureIdentifier).orElse(null); assertEquals( - AuthorizationFacet.formatNotAuthorizedToEdit(false,actionId), + AuthorizationFacet.formatNotAuthorizedToEdit(actionId, objectManager.getMetaModelContext()), veto.getReasonAsString().orElse(null)); } diff --git a/regressiontests/interact/src/test/java/org/apache/causeway/testdomain/interact/ActionInteractionTest_usingAllowSafeSemantics.java b/regressiontests/interact/src/test/java/org/apache/causeway/testdomain/interact/ActionInteractionTest_usingAllowSafeSemantics.java index fed4f0e6b3a..f141dacf7f6 100644 --- a/regressiontests/interact/src/test/java/org/apache/causeway/testdomain/interact/ActionInteractionTest_usingAllowSafeSemantics.java +++ b/regressiontests/interact/src/test/java/org/apache/causeway/testdomain/interact/ActionInteractionTest_usingAllowSafeSemantics.java @@ -21,14 +21,15 @@ import javax.inject.Named; import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; + import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.stereotype.Service; import org.springframework.test.context.TestPropertySource; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertTrue; - import org.apache.causeway.applib.Identifier; import org.apache.causeway.applib.annotation.PriorityPrecedence; import org.apache.causeway.applib.annotation.SemanticsOf; @@ -105,7 +106,7 @@ void whenNonSafeAction_shouldDenyUse() { val veto = actionInteraction.getInteractionVeto().orElseThrow(); // should not throw val actionId = actionInteraction.getMetamodel().map(ObjectAction::getFeatureIdentifier).orElse(null); assertEquals( - AuthorizationFacet.formatNotAuthorizedToEdit(false,actionId), + AuthorizationFacet.formatNotAuthorizedToEdit(actionId, objectManager.getMetaModelContext()), veto.getReasonAsString().orElse(null)); }