private AnnotatedField decorateUnit()

in jpa-cdi/src/main/java/org/apache/aries/jpa/cdi/PersistenceAnnotatedType.java [105:129]


    private <X> AnnotatedField<X> decorateUnit(AnnotatedField<X> field) {
        final PersistenceUnit persistenceUnit = field.getAnnotation(PersistenceUnit.class);
        final UniqueIdentifier identifier = UniqueIdentifierLitteral.random();

        Set<Annotation> templateQualifiers = new HashSet<>();
        templateQualifiers.add(ServiceLiteral.SERVICE);
        if (hasUnitName(persistenceUnit)) {
            templateQualifiers.add(new FilterLiteral("(osgi.unit.name=" + persistenceUnit.unitName() + ")"));
        }
        Bean<EntityManagerFactory> bean = manager.getExtension(OsgiExtension.class)
                .globalDependency(EntityManagerFactory.class, templateQualifiers);

        Set<Annotation> qualifiers = new HashSet<>();
        qualifiers.add(identifier);
        Bean<EntityManagerFactory> b = new SimpleBean<>(EntityManagerFactory.class, Dependent.class, Collections.singleton(EntityManagerFactory.class), qualifiers, () -> {
            CreationalContext<EntityManagerFactory> context = manager.createCreationalContext(bean);
            return (EntityManagerFactory) manager.getReference(bean, EntityManagerFactory.class, context);
        });
        beans.add(b);

        Set<Annotation> fieldAnnotations = new HashSet<>();
        fieldAnnotations.add(InjectLiteral.INJECT);
        fieldAnnotations.add(identifier);
        return new SyntheticAnnotatedField<>(field, fieldAnnotations);
    }