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/causeway.git
The following commit(s) were added to refs/heads/master by this push:
new 1a6bed9120 Estup2-649: post merge refactoring and test fixes
1a6bed9120 is described below
commit 1a6bed9120434cc00f93a6833c1ff02de2f26e6e
Author: Andi Huber <[email protected]>
AuthorDate: Tue May 14 08:43:09 2024 +0200
Estup2-649: post merge refactoring and test fixes
---
.../progmodel/ProgrammingModelConstants.java | 7 ++++--
...reteTypeToBeIncludedWithMetamodelValidator.java | 2 +-
.../actions/action/ActionOverloadingValidator.java | 2 +-
.../DomainObjectAnnotationFacetFactory.java | 4 ++--
.../logicaltype/LogicalTypeMalformedValidator.java | 4 ++--
.../method/NavigableParentFacetViaMethod.java | 2 +-
.../annotation/TitleFacetViaTitleAnnotation.java | 4 ++--
.../object/viewmodel/ViewModelFacetFactory.java | 4 ++--
.../ViewModelFacetForViewModelInterface.java | 4 ++--
.../mandatory/MandatoryFacetAbstract.java | 2 +-
.../metamodel/interactions/InteractionUtils.java | 2 +-
...tionEnforcesMetamodelContributionValidator.java | 4 ++--
.../_OrphanedSupportingMethodValidator.java | 2 +-
.../all/MixinSanityChecksValidator.java | 6 ++---
.../authorization/AuthorizationFacet.java | 26 ++++++++++++++++------
.../authorization/AuthorizationFacetAbstract.java | 2 +-
.../param/ChoicesAndDefaultsPostProcessor.java | 2 +-
.../specloader/SpecificationLoaderDefault.java | 2 +-
.../specimpl/_MethodFacadeAutodetect.java | 6 ++---
.../validator/ValidationFailureUtils.java | 6 ++---
.../executor/MemberExecutorServiceDefault.java | 6 ++---
.../interaction/DomainObjectTesterFactory.java | 2 +-
.../DomainModelTest_usingBadDomain.java | 17 +++++++-------
...elTest_usingBadDomain_noAnnotationEnforced.java | 2 +-
...InteractionTest_notUsingAllowSafeSemantics.java | 11 ++++-----
...ionInteractionTest_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 4dc15423ba..c323f8d40c 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 final class ProgrammingModelConstants {
//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 final class ProgrammingModelConstants {
}
@RequiredArgsConstructor
public static class ViolationBuilder {
- private final Violation violaton;
+ private final MessageTemplate violaton;
private final Map<String, String> 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 a9b056827d..547a5b2af7 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 @@ extends MetaModelValidatorAbstract {
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 8b83665263..433b55b821 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 @@ extends MetaModelValidatorAbstract {
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 4571cff30a..faa4e62d64 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 @@ implements
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 @@ implements
.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 624b0cb034..d0e37bae7f 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 @@ extends MetaModelValidatorAbstract {
.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 13e89ec5fd..3997775ccf 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 @@ extends NavigableParentFacetAbstract {
// 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 70c30452c4..e79e2d7f29 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._MethodFacades.MethodFaca
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 @@ implements ImperativeFacet {
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 d8e49fd411..efc6df01f3 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 @@ implements
&& 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 @@ implements
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 264a5f3a50..4441345a41 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 @@ extends ViewModelFacetAbstract {
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 0ab89fb336..25391e4b3c 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 @@ implements MandatoryFacet {
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 2e784dd8bb..0a19c24b60 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 final class InteractionUtils {
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 25acb500d0..700650839f 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._ClassCache;
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 @@ extends MetaModelValidatorAbstract {
.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 504d52dc36..44bb2c6fa1 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 @@ class _OrphanedSupportingMethodValidator {
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 0467505c4a..0093aef876 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 @@ implements
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 @@ implements
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 @@ implements
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 a81b745017..d5160fe2ca 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 @@ package
org.apache.causeway.core.metamodel.postprocessors.allbutparam.authorizat
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 @@ extends Facet, HidingInteractionAdvisor,
DisablingInteractionAdvisor {
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 d5a5fc8c99..b194d13039 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 @@ implements AuthorizationFacet {
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 b1175e6e88..2d44718ca5 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 @@ extends MetaModelPostProcessorAbstract {
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 9c2508d867..120fb49c7a 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 @@ implements
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 c94c1f5654..b4dab67fe3 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._ClassCache;
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 @@ class _MethodFacadeAutodetect {
|| 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 @@ class _MethodFacadeAutodetect {
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 9a76ab77cb..a4c7119487 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 final class ValidationFailureUtils {
final Class<A> 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 final class ValidationFailureUtils {
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 final class ValidationFailureUtils {
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 dadf8c71de..90fcbaa0d7 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.assertions._Assert;
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 @@ implements MemberExecutorService {
_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 23b407a6bc..36dd334932 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 class DomainObjectTesterFactory implements
HasMetaModelContext {
}
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 0c08791dd3..8bbef6d36d 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.ParameterizedTest;
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.environment.CausewaySystemEnvironment;
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 @@ class DomainModelTest_usingBadDomain {
val tester =
testerFactory.objectTester(InvalidOrphanedActionSupport.class);
tester.assertValidationFailureOnMember(
- ProgrammingModelConstants.Violation.ORPHANED_METHOD,
"hideMe()");
+ ProgrammingModelConstants.MessageTemplate.ORPHANED_METHOD,
"hideMe()");
}
@@ -149,7 +150,7 @@ class DomainModelTest_usingBadDomain {
val tester =
testerFactory.objectTester(InvalidOrphanedPropertySupport.class);
tester.assertValidationFailureOnMember(
- ProgrammingModelConstants.Violation.ORPHANED_METHOD,
"hideMe()");
+ ProgrammingModelConstants.MessageTemplate.ORPHANED_METHOD,
"hideMe()");
}
@Test
@@ -163,7 +164,7 @@ class DomainModelTest_usingBadDomain {
val tester =
testerFactory.objectTester(InvalidOrphanedCollectionSupport.class);
tester.assertValidationFailureOnMember(
- ProgrammingModelConstants.Violation.ORPHANED_METHOD,
"hideMe()");
+ ProgrammingModelConstants.MessageTemplate.ORPHANED_METHOD,
"hideMe()");
}
@Test
@@ -427,7 +428,7 @@ class DomainModelTest_usingBadDomain {
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 @@ class DomainModelTest_usingBadDomain {
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 dc374ac587..7c0f852672 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 @@ class DomainModelTest_usingBadDomain_noAnnotationEnforced
extends CausewayIntegr
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 40b9eb6dc7..b897bcfadc 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 @@ package org.apache.causeway.testdomain.interact;
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 @@ class ActionInteractionTest_notUsingAllowSafeSemantics
extends InteractionTestAb
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 @@ class ActionInteractionTest_notUsingAllowSafeSemantics
extends InteractionTestAb
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 fed4f0e6b3..f141dacf7f 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 @@ package org.apache.causeway.testdomain.interact;
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 @@ class ActionInteractionTest_usingAllowSafeSemantics extends
InteractionTestAbstr
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));
}