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