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/04/25 07:21:15 UTC
[isis] branch master updated: ISIS-3021: Improved Validation Message for DomainServices when missing Namespace
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 17d5647eac ISIS-3021: Improved Validation Message for DomainServices when missing Namespace
17d5647eac is described below
commit 17d5647eac36944574a0f75f23c159a213ad70df
Author: Andi Huber <ah...@apache.org>
AuthorDate: Mon Apr 25 09:21:06 2022 +0200
ISIS-3021: Improved Validation Message for DomainServices when missing
Namespace
---
.../config/progmodel/ProgrammingModelConstants.java | 13 +++++++++++--
.../logicaltype/LogicalTypeMalformedValidator.java | 20 ++++++++++++--------
2 files changed, 23 insertions(+), 10 deletions(-)
diff --git a/core/config/src/main/java/org/apache/isis/core/config/progmodel/ProgrammingModelConstants.java b/core/config/src/main/java/org/apache/isis/core/config/progmodel/ProgrammingModelConstants.java
index 5dc322e159..686eef5d8b 100644
--- a/core/config/src/main/java/org/apache/isis/core/config/progmodel/ProgrammingModelConstants.java
+++ b/core/config/src/main/java/org/apache/isis/core/config/progmodel/ProgrammingModelConstants.java
@@ -428,7 +428,7 @@ public final class ProgrammingModelConstants {
}
}
- //maybe consolidate all MM validation raisers here, if we can find a common method signature for that
+ //maybe gradually consolidate all MM validation raisers here
@RequiredArgsConstructor
public static enum Validation {
CONFLICTING_TITLE_STRATEGIES(
@@ -442,7 +442,16 @@ public final class ProgrammingModelConstants {
+ "is assumed to represent or support a property, collection or action."),
VIEWMODEL_MISSING_DESERIALIZING_CONSTRUCTOR(
"${type}: ViewModel contract violation: missing single (String) arg constructor "
- + "(for de-serialization from memento string).");
+ + "(for de-serialization from memento string)."),
+ DOMAIN_OBJECT_MISSING_A_NAMESPACE("${type}: the service type must declare a namespace, "
+ + "yet there was none found in '${logicalTypeName}'; "
+ + "Spring supports various naming strategies @Named(...) being one of them, "
+ + "where eg. @Named(\"Customer\") is considered invalid, "
+ + "whereas @Named(\"sales.Customer\") is valid."),
+ DOMAIN_SERVICE_MISSING_A_NAMESPACE("${type}: the object type must declare a namespace, "
+ + "yet there was none found in '${logicalTypeName}'; "
+ + "eg. @DomainObject(logicalTypeName=\"Customer\") is considered invalid, "
+ + "whereas @DomainObject(logicalTypeName=\"sales.Customer\") is valid."),
;
private final String template;
public String getMessage(final Identifier featureIdentifier) {
diff --git a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/logicaltype/LogicalTypeMalformedValidator.java b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/logicaltype/LogicalTypeMalformedValidator.java
index ae292d9f2e..e33fb6c7f5 100644
--- a/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/logicaltype/LogicalTypeMalformedValidator.java
+++ b/core/metamodel/src/main/java/org/apache/isis/core/metamodel/facets/object/logicaltype/LogicalTypeMalformedValidator.java
@@ -18,8 +18,11 @@
*/
package org.apache.isis.core.metamodel.facets.object.logicaltype;
+import java.util.Map;
+
import org.apache.isis.commons.collections.Can;
import org.apache.isis.commons.internal.base._Strings;
+import org.apache.isis.core.config.progmodel.ProgrammingModelConstants;
import org.apache.isis.core.metamodel.facetapi.MetaModelRefiner;
import org.apache.isis.core.metamodel.progmodel.ProgrammingModel;
import org.apache.isis.core.metamodel.specloader.validator.ValidationFailure;
@@ -37,7 +40,7 @@ public class LogicalTypeMalformedValidator
implements MetaModelRefiner {
@Override
- public void refineProgrammingModel(ProgrammingModel programmingModel) {
+ public void refineProgrammingModel(final ProgrammingModel programmingModel) {
programmingModel.addVisitingValidator(spec->{
@@ -60,13 +63,14 @@ implements MetaModelRefiner {
|| nameParts.stream()
.anyMatch(String::isEmpty)) {
- ValidationFailure.raiseFormatted(
- spec,
- "%s: the object type must declare a namespace, yet was found to be invalid '%s'; "
- + "eg. @DomainObject(logicalTypeName=\"Customer\") is considered invalid, "
- + "whereas @DomainObject(logicalTypeName=\"sales.Customer\") is valid.",
- spec.getFullIdentifier(),
- logicalTypeName);
+ val validationResponse = spec.isManagedBean()
+ ? ProgrammingModelConstants.Validation.DOMAIN_SERVICE_MISSING_A_NAMESPACE
+ : ProgrammingModelConstants.Validation.DOMAIN_OBJECT_MISSING_A_NAMESPACE;
+
+ ValidationFailure.raiseFormatted(spec,
+ validationResponse.getMessage(Map.of(
+ "type", spec.getFullIdentifier(),
+ "logicalTypeName", logicalTypeName)));
}
});