in deltaspike/modules/data/impl/src/main/java/org/apache/deltaspike/data/impl/meta/EntityMetadataInitializer.java [57:106]
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)
{
return new EntityMetadata(entityClass, EntityUtils.primaryKeyClass(entityClass));
}
// get from type
for (Type inf : repositoryClass.getGenericInterfaces())
{
EntityMetadata result = extractFromType(inf);
if (result != null)
{
return result;
}
}
EntityMetadata entityMetadata = extractFromType(repositoryClass.getGenericSuperclass());
if (entityMetadata != null)
{
return entityMetadata;
}
for (Type intf : repositoryClass.getGenericInterfaces())
{
if (intf instanceof Class<?>)
{
entityMetadata = extract((Class<?>) intf);
if (entityMetadata != null)
{
return entityMetadata;
}
}
}
if (repositoryClass.getSuperclass() != null)
{
return extract(repositoryClass.getSuperclass());
}
return null;
}