in jpa-blueprint/src/main/java/org/apache/aries/jpa/blueprint/impl/JpaComponentProcessor.java [89:126]
private void handleComponent(MutableBeanMetadata compDef, Bundle bundle, ComponentDefinitionRegistry cdr, BlueprintContainer container) {
final String compName = compDef.getId();
if (compDef.getClassName() == null) {
LOGGER.debug("No classname for " + compDef.getId());
return;
}
Class<?> compClass;
try {
compClass = bundle.loadClass(compDef.getClassName());
} catch (final ClassNotFoundException e) {
throw new IllegalArgumentException("Bean class not found " + compDef.getClassName(), e);
}
compDef.setFieldInjection(true);
List<AccessibleObject> pcMembers = annotationScanner.getJpaAnnotatedMembers(compClass, PersistenceContext.class);
for (AccessibleObject member : pcMembers) {
PersistenceContext pcAnn = member.getAnnotation(PersistenceContext.class);
String propName = AnnotationScanner.getName(member);
Class<?> iface = AnnotationScanner.getType(member);
LOGGER.debug("Injecting {} into prop {} of bean {} with class {}", iface.getSimpleName(), propName, compName, compClass);
MutableRefMetadata ref = getServiceRef(cdr, pcAnn.unitName(), iface);
compDef.addProperty(propName, ref);
MutableRefMetadata emRef = getServiceRef(cdr, pcAnn.unitName(), EntityManager.class);
Interceptor interceptor = new JpaInterceptor(container, JPA_COORDINATOR, emRef.getComponentId());
cdr.registerInterceptorWithComponent(compDef, interceptor);
}
List<AccessibleObject> puMembers = annotationScanner.getJpaAnnotatedMembers(compClass, PersistenceUnit.class);
for (AccessibleObject member : puMembers) {
PersistenceUnit puAnn = member.getAnnotation(PersistenceUnit.class);
String propName = AnnotationScanner.getName(member);
Class<?> iface = AnnotationScanner.getType(member);
LOGGER.debug("Injecting {} into prop {} of bean {} with class {}", iface.getSimpleName(), propName, compName, compClass);
MutableRefMetadata ref = getServiceRef(cdr, puAnn.unitName(), iface);
compDef.addProperty(propName, ref);
}
}