This is an automated email from the ASF dual-hosted git repository.

tandraschko pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/deltaspike.git


The following commit(s) were added to refs/heads/master by this push:
     new de47c4767 fixed ExtendedRepositoryAbstractIntermediate testcase
de47c4767 is described below

commit de47c47677fd5e3a910b96d6fd55c688d74ffa75
Author: Thomas Andraschko <[email protected]>
AuthorDate: Tue Feb 20 15:38:31 2024 +0100

    fixed ExtendedRepositoryAbstractIntermediate testcase
---
 .../data/impl/meta/EntityMetadataInitializer.java  | 45 ++++++++++++++++------
 .../data/impl/meta/RepositoryMetadataHandler.java  |  6 ++-
 .../impl/meta/RepositoryMetadataInitializer.java   |  9 ++++-
 3 files changed, 45 insertions(+), 15 deletions(-)

diff --git 
a/deltaspike/modules/data/impl/src/main/java/org/apache/deltaspike/data/impl/meta/EntityMetadataInitializer.java
 
b/deltaspike/modules/data/impl/src/main/java/org/apache/deltaspike/data/impl/meta/EntityMetadataInitializer.java
index e6e10c62d..897581adf 100644
--- 
a/deltaspike/modules/data/impl/src/main/java/org/apache/deltaspike/data/impl/meta/EntityMetadataInitializer.java
+++ 
b/deltaspike/modules/data/impl/src/main/java/org/apache/deltaspike/data/impl/meta/EntityMetadataInitializer.java
@@ -18,14 +18,15 @@
  */
 package org.apache.deltaspike.data.impl.meta;
 
+import jakarta.enterprise.context.ApplicationScoped;
+import org.apache.deltaspike.data.api.Repository;
+import org.apache.deltaspike.data.impl.util.EntityUtils;
+
 import java.io.Serializable;
 import java.lang.reflect.ParameterizedType;
 import java.lang.reflect.Type;
 import java.util.logging.Level;
 import java.util.logging.Logger;
-import jakarta.enterprise.context.ApplicationScoped;
-import org.apache.deltaspike.data.api.Repository;
-import org.apache.deltaspike.data.impl.util.EntityUtils;
 
 @ApplicationScoped
 public class EntityMetadataInitializer
@@ -34,19 +35,33 @@ public class EntityMetadataInitializer
     
     public EntityMetadata init(RepositoryMetadata metadata)
     {
-        EntityMetadata entityMetadata = extract(metadata.getRepositoryClass());
-        
-        
entityMetadata.setPrimaryKeyProperty(EntityUtils.primaryKeyProperty(entityMetadata.getEntityClass()));
-        
entityMetadata.setVersionProperty(EntityUtils.getVersionProperty(entityMetadata.getEntityClass()));
-        
entityMetadata.setEntityName(EntityUtils.entityName(entityMetadata.getEntityClass()));
+        try
+        {
+            EntityMetadata entityMetadata = 
extract(metadata.getRepositoryClass());
+            if (entityMetadata == null)
+            {
+                return null;
+            }
+            
entityMetadata.setPrimaryKeyProperty(EntityUtils.primaryKeyProperty(entityMetadata.getEntityClass()));
+            
entityMetadata.setVersionProperty(EntityUtils.getVersionProperty(entityMetadata.getEntityClass()));
+            
entityMetadata.setEntityName(EntityUtils.entityName(entityMetadata.getEntityClass()));
 
-        return entityMetadata;
+            return entityMetadata;
+        }
+        catch (Exception e)
+        {
+            throw new RuntimeException("Could not initialize repository 
metadata for: " + metadata.getRepositoryClass(), e);
+        }
     }
     
     private EntityMetadata extract(Class<?> repositoryClass)
     {
         // get from annotation
         Repository repository = 
repositoryClass.getAnnotation(Repository.class);
+        if (repository == null)
+        {
+            return null;
+        }
         Class<?> entityClass = repository.forEntity();
         boolean isEntityClass = !Object.class.equals(entityClass) && 
EntityUtils.isEntityClass(entityClass);
         if (isEntityClass)
@@ -69,18 +84,24 @@ public class EntityMetadataInitializer
         {
             return entityMetadata;
         }
+
         for (Type intf : repositoryClass.getGenericInterfaces())
         {
-            entityMetadata = extract( (Class< ? >)intf );
-            if (entityMetadata != null)
+            if (intf instanceof Class<?>)
             {
-                return entityMetadata;
+                entityMetadata = extract((Class<?>) intf);
+                if (entityMetadata != null)
+                {
+                    return entityMetadata;
+                }
             }
         }
+
         if (repositoryClass.getSuperclass() != null)
         {
             return extract(repositoryClass.getSuperclass());
         }
+
         return null;
     }
 
diff --git 
a/deltaspike/modules/data/impl/src/main/java/org/apache/deltaspike/data/impl/meta/RepositoryMetadataHandler.java
 
b/deltaspike/modules/data/impl/src/main/java/org/apache/deltaspike/data/impl/meta/RepositoryMetadataHandler.java
index 14de5d7d9..53ed43c0b 100644
--- 
a/deltaspike/modules/data/impl/src/main/java/org/apache/deltaspike/data/impl/meta/RepositoryMetadataHandler.java
+++ 
b/deltaspike/modules/data/impl/src/main/java/org/apache/deltaspike/data/impl/meta/RepositoryMetadataHandler.java
@@ -48,7 +48,11 @@ public class RepositoryMetadataHandler
         for (Class<?> repositoryClass : extension.getRepositoryClasses())
         {
             RepositoryMetadata metadata = 
metadataInitializer.init(repositoryClass, beanManager);
-            repositoriesMetadata.put(repositoryClass, metadata);
+            // invalid
+            if (metadata != null)
+            {
+                repositoriesMetadata.put(repositoryClass, metadata);
+            }
         }
     }
 
diff --git 
a/deltaspike/modules/data/impl/src/main/java/org/apache/deltaspike/data/impl/meta/RepositoryMetadataInitializer.java
 
b/deltaspike/modules/data/impl/src/main/java/org/apache/deltaspike/data/impl/meta/RepositoryMetadataInitializer.java
index 08a00b19f..779bdea80 100644
--- 
a/deltaspike/modules/data/impl/src/main/java/org/apache/deltaspike/data/impl/meta/RepositoryMetadataInitializer.java
+++ 
b/deltaspike/modules/data/impl/src/main/java/org/apache/deltaspike/data/impl/meta/RepositoryMetadataInitializer.java
@@ -80,9 +80,14 @@ public class RepositoryMetadataInitializer
                 
repositoryMetadata.setEntityManagerResolverIsNormalScope(false);
             }
         }
-        
repositoryMetadata.setEntityMetadata(entityMetadataInitializer.init(repositoryMetadata));
+        EntityMetadata entityMetadata = 
entityMetadataInitializer.init(repositoryMetadata);
+        if (entityMetadata == null)
+        {
+            return null;
+        }
+        repositoryMetadata.setEntityMetadata(entityMetadata);
         initializeMethodsMetadata(repositoryMetadata, beanManager);
-        
+
         return repositoryMetadata;
     }
 

Reply via email to