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 3324ba7941 CAUSEWAY-3767: prepare fix for v3
3324ba7941 is described below

commit 3324ba79416f7e6ae123393b49b33512f743efd8
Author: andi-huber <[email protected]>
AuthorDate: Mon Jun 10 09:08:42 2024 +0200

    CAUSEWAY-3767: prepare fix for v3
    
    - that is, skip validation if spec refs a Java record
---
 .../LogicalTypeFacetFromClassNameFactory.java      | 10 ++++++----
 .../core/metamodel/object/MmSpecUtils.java         | 23 +++++++++++++++-------
 2 files changed, 22 insertions(+), 11 deletions(-)

diff --git 
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/object/logicaltype/classname/LogicalTypeFacetFromClassNameFactory.java
 
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/object/logicaltype/classname/LogicalTypeFacetFromClassNameFactory.java
index 2d4c46c72f..43a863cb02 100644
--- 
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/object/logicaltype/classname/LogicalTypeFacetFromClassNameFactory.java
+++ 
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/facets/object/logicaltype/classname/LogicalTypeFacetFromClassNameFactory.java
@@ -73,7 +73,7 @@ implements
             if(skip(objectSpec)) return;
 
             val logicalType = objectSpec.getLogicalType();
-            
+
             //XXX has a slight chance to be a false positive; would need to 
check whether annotated with @Named
             
if(logicalType.getClassName().equals(logicalType.getLogicalTypeName())) {
                 ValidationFailure.raise(objectSpec, 
MessageTemplate.LOGICAL_TYPE_NAME_IS_NOT_EXPLICIT
@@ -85,22 +85,24 @@ implements
             }
         });
     }
-    
+
     // -- HELPER
 
     private boolean skip(final ObjectSpecification objectSpec) {
         if (objectSpec.isAbstract()
-                || objectSpec.isMixin()
+                || MmSpecUtils.isJavaRecord(objectSpec)
                 || objectSpec.isValue()
+                || objectSpec.isMixin()
                 || MmSpecUtils.isFixtureScript(objectSpec)) return true;
         if (objectSpec.isEntity()) return false;
         if (objectSpec.isViewModel()) {
+            // with
             // skip JAXB DTOs
             return 
objectSpec.getCorrespondingClass().getAnnotation(XmlType.class) != null;
         }
         if (objectSpec.isInjectable()) {
             // only check if its a domain service (that is potentially 
contributing to UI or Web-API(s).
-            if(!objectSpec.isDomainService()) return true; 
+            if(!objectSpec.isDomainService()) return true;
 
             // skip if domain service has only programmatic methods
             return 
objectSpec.streamAnyActions(MixedIn.INCLUDED).findAny().isEmpty();
diff --git 
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/object/MmSpecUtils.java
 
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/object/MmSpecUtils.java
index fd66476383..bcbf4733b3 100644
--- 
a/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/object/MmSpecUtils.java
+++ 
b/core/metamodel/src/main/java/org/apache/causeway/core/metamodel/object/MmSpecUtils.java
@@ -109,25 +109,34 @@ public final class MmSpecUtils {
 
         return sb.toString();
     }
-    
+
+    /**
+     * Whether given {@link ObjectSpecification} represents a Java record
+     * (as supported since 3.0.0, which map to view-models).
+     */
+    public boolean isJavaRecord(final @Nullable ObjectSpecification spec) {
+        if(spec==null) return false;
+        return /*spec.getCorrespondingClass().isRecord();*/ false;
+    }
+
     /**
-     * Whether given {@link ObjectSpecification} represents a FixtureScript 
(from testing.fixtures.applib). 
+     * Whether given {@link ObjectSpecification} represents a FixtureScript 
(from testing.fixtures.applib).
      */
     public boolean isFixtureScript(final @Nullable ObjectSpecification spec) {
         if(spec==null) return false;
         return 
getFixtureScriptClass().isAssignableFrom(spec.getCorrespondingClass());
     }
-    
-    // -- HELPER 
-    
+
+    // -- HELPER
+
     @Getter(lazy = true, value = AccessLevel.PRIVATE)
     private final Class<?> fixtureScriptClass = loadFixtureScriptClass();
-    
+
     @SneakyThrows
     private Class<?> loadFixtureScriptClass() {
         return _Context.loadClass(
                 
"org.apache.causeway.testing.fixtures.applib.fixturescripts.FixtureScript");
     }
-    
+
 
 }
\ No newline at end of file

Reply via email to