private void handleComponent()

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