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