From b30209a96f69d026bc07f8c4225a6724dcb2dc99 Mon Sep 17 00:00:00 2001 From: Emmanuel Bernard Date: Wed, 19 Sep 2018 21:07:05 +0200 Subject: [PATCH] [jpa] Fetch from Index when available And thus enlist the class hierarchy --- .../jboss/shamrock/jpa/JpaJandexScavenger.java | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/jpa/deployment/src/main/java/org/jboss/shamrock/jpa/JpaJandexScavenger.java b/jpa/deployment/src/main/java/org/jboss/shamrock/jpa/JpaJandexScavenger.java index b685974c3..a4229980e 100644 --- a/jpa/deployment/src/main/java/org/jboss/shamrock/jpa/JpaJandexScavenger.java +++ b/jpa/deployment/src/main/java/org/jboss/shamrock/jpa/JpaJandexScavenger.java @@ -62,7 +62,7 @@ final class JpaJandexScavenger { List persistenceUnitDescriptors = PersistenceUnitsHolder.getPersistenceUnitDescriptors(); for (PersistenceUnitDescriptor pud : persistenceUnitDescriptors) { - enlistExplicitClasses(pud.getManagedClassNames(), collector); + enlistExplicitClasses(pud.getManagedClassNames(), collector, index); } collector.registerAllForReflection(processorContext); @@ -79,10 +79,18 @@ final class JpaJandexScavenger { return collector; } - private void enlistExplicitClasses(List managedClassNames, DomainObjectSet collector) { + private static void enlistExplicitClasses(List managedClassNames, DomainObjectSet collector, IndexView index) { for (String className : managedClassNames) { - // TODO add superclass for reflection - collector.addEntity(className); + DotName dotName = DotName.createSimple(className); + boolean isInIndex = index.getClassByName(dotName) != null; + if (isInIndex) { + addClassHierarchyToReflectiveList(collector, index, dotName); + } + else { + // We do lipstick service by manually adding explicitly the reference but not navigating the hierarchy + System.out.println("[WARNING] Did not find `" + className + "` in the indexed jars. You likely forgot to add shamrock-build.yaml in your dependency jar. See https://github.com/protean-project/shamrock/#indexing-and-application-classes for more info."); + collector.addEntity(className); + } } }