private EntityManager resolveEntityManagerForQualifier(Class<? extends Annotation> emQualifier) { if (emHolder.isSet()) { return emHolder.get(); } return new QualifierBackedEntityManagerResolver(beanManager, emQualifier).resolveEntityManager(); }
@Override public EntityManager resolveEntityManager() { Bean<EntityManager> entityManagerBean = resolveEntityManagerBeans(); if (entityManagerBean == null) { StringBuilder qualifierNames = new StringBuilder(); for (Class<?> c : qualifiers) { qualifierNames.append(c.getName()).append(" "); } throw new IllegalStateException("Cannot find an EntityManager qualified with [" + qualifierNames + "]. Did you add a corresponding producer?"); } return (EntityManager) beanManager.getReference(entityManagerBean, EntityManager.class, beanManager.createCreationalContext(entityManagerBean)); } private Bean<EntityManager> resolveEntityManagerBeans()
@Override public Object executeQuery(final EntityViewQueryBuilder builder, final EntityViewCdiQueryInvocationContext context) throws Throwable { if (needsTransaction(context)) { try { activeEntityManagerHolder.set(context.getEntityManager()); return executeTransactional(builder, context); } finally { activeEntityManagerHolder.dispose(); } } return executeNonTransactional(builder, context); }
if (repositoryMetadata.getQualifiers() != null) resolver = new QualifierBackedEntityManagerResolver(beanManager, repositoryMetadata.getQualifiers()); resolver = new QualifierBackedEntityManagerResolver(beanManager, Default.class);
activeEntityManagerHolder.set(entityManager);
Set<Class<? extends Annotation>> emQualifiers = emHolder.isSet() ? new HashSet<Class<? extends Annotation>>(Arrays.asList(Default.class)) : transactionHelper.resolveEntityManagerQualifiers(metadata, targetClass);
@Produces @Dependent @PersistenceUnitName("any") // the value is nonbinding, thus 'any' is just a dummy parameter here public EntityManagerFactory createEntityManagerFactoryForUnit(InjectionPoint injectionPoint) { PersistenceUnitName unitNameAnnotation = injectionPoint.getAnnotated().getAnnotation(PersistenceUnitName.class); if (unitNameAnnotation == null) { LOG.warning("@PersisteneUnitName annotation could not be found at EntityManagerFactory injection point!"); return null; } String unitName = unitNameAnnotation.value(); Properties properties = persistenceConfigurationProvider.getEntityManagerFactoryConfiguration(unitName); EntityManagerFactory emf = Persistence.createEntityManagerFactory(unitName, properties); return emf; } }
@Override public Object executeQuery(final EntityViewQueryBuilder builder, final EntityViewCdiQueryInvocationContext context) throws Throwable { if (needsTransaction(context)) { try { activeEntityManagerHolder.set(context.getEntityManager()); return executeTransactional(builder, context); } finally { activeEntityManagerHolder.dispose(); } } return executeNonTransactional(builder, context); }
public RepositoryMetadata init(Class<?> repositoryClass, BeanManager beanManager) { EntityViewAwareRepositoryMetadata repositoryMetadata = new EntityViewAwareRepositoryMetadata(repositoryClass); repositoryMetadata.setEntityViewManagerResolver(extractEntityViewManagerResolver(repositoryClass)); // read from looks for JPA Transactional and EntityManagerConfig to determine attributes // if those are set, don't process old annotations if (!repositoryMetadata.readFrom(repositoryClass, beanManager)) { repositoryMetadata.setEntityManagerResolverClass(extractEntityManagerResolver(repositoryClass)); repositoryMetadata.setEntityManagerFlushMode(extractEntityManagerFlushMode(repositoryClass)); if (repositoryMetadata.getEntityManagerResolverClass() != null) { Set<Bean<?>> beans = beanManager.getBeans(repositoryMetadata.getEntityManagerResolverClass()); Class<? extends Annotation> scope = beanManager.resolve(beans).getScope(); repositoryMetadata.setEntityManagerResolverIsNormalScope(beanManager.isNormalScope(scope)); } else { EntityManagerResolver resolver; if (repositoryMetadata.getQualifiers() != null) { resolver = new QualifierBackedEntityManagerResolver(beanManager, repositoryMetadata.getQualifiers()); } else { resolver = new QualifierBackedEntityManagerResolver(beanManager, Default.class); } repositoryMetadata.setUnmanagedResolver(resolver); repositoryMetadata.setEntityManagerResolverIsNormalScope(false); } } repositoryMetadata.setEntityMetadata(entityMetadataInitializer.init(repositoryMetadata)); initializeMethodsMetadata(repositoryMetadata, beanManager); return repositoryMetadata; }
@Override public EntityManager resolveEntityManager() { Bean<EntityManager> entityManagerBean = resolveEntityManagerBeans(); if (entityManagerBean == null) { StringBuilder qualifierNames = new StringBuilder(); for (Class<?> c : qualifiers) { qualifierNames.append(c.getName()).append(" "); } throw new IllegalStateException("Cannot find an EntityManager qualified with [" + qualifierNames + "]. Did you add a corresponding producer?"); } return (EntityManager) beanManager.getReference(entityManagerBean, EntityManager.class, beanManager.createCreationalContext(entityManagerBean)); } private Bean<EntityManager> resolveEntityManagerBeans()
@Override public Object executeQuery(final EntityViewQueryBuilder builder, final EntityViewCdiQueryInvocationContext context) throws Throwable { if (needsTransaction(context)) { try { activeEntityManagerHolder.set(context.getEntityManager()); return executeTransactional(builder, context); } finally { activeEntityManagerHolder.dispose(); } } return executeNonTransactional(builder, context); }
public RepositoryMetadata init(Class<?> repositoryClass, BeanManager beanManager) { EntityViewAwareRepositoryMetadata repositoryMetadata = new EntityViewAwareRepositoryMetadata(repositoryClass); repositoryMetadata.setEntityViewManagerResolver(extractEntityViewManagerResolver(repositoryClass)); // read from looks for JPA Transactional and EntityManagerConfig to determine attributes // if those are set, don't process old annotations if (!repositoryMetadata.readFrom(repositoryClass, beanManager)) { repositoryMetadata.setEntityManagerResolverClass(extractEntityManagerResolver(repositoryClass)); repositoryMetadata.setEntityManagerFlushMode(extractEntityManagerFlushMode(repositoryClass)); if (repositoryMetadata.getEntityManagerResolverClass() != null) { Set<Bean<?>> beans = beanManager.getBeans(repositoryMetadata.getEntityManagerResolverClass()); Class<? extends Annotation> scope = beanManager.resolve(beans).getScope(); repositoryMetadata.setEntityManagerResolverIsNormalScope(beanManager.isNormalScope(scope)); } else { EntityManagerResolver resolver; if (repositoryMetadata.getQualifiers() != null) { resolver = new QualifierBackedEntityManagerResolver(beanManager, repositoryMetadata.getQualifiers()); } else { resolver = new QualifierBackedEntityManagerResolver(beanManager, Default.class); } repositoryMetadata.setUnmanagedResolver(resolver); repositoryMetadata.setEntityManagerResolverIsNormalScope(false); } } repositoryMetadata.setEntityMetadata(entityMetadataInitializer.init(repositoryMetadata)); initializeMethodsMetadata(repositoryMetadata, beanManager); return repositoryMetadata; }
@Override public Object executeQuery(final EntityViewQueryBuilder builder, final EntityViewCdiQueryInvocationContext context) throws Throwable { if (context.getRepositoryMethodMetadata().isRequiresTransaction()) { try { activeEntityManagerHolder.set(context.getEntityManager()); return executeTransactional(builder, context); } finally { activeEntityManagerHolder.dispose(); } } return executeNonTransactional(builder, context); }
@Override public Object executeQuery(final EntityViewQueryBuilder builder, final EntityViewCdiQueryInvocationContext context) throws Throwable { if (context.getRepositoryMethodMetadata().isRequiresTransaction()) { try { activeEntityManagerHolder.set(context.getEntityManager()); return executeTransactional(builder, context); } finally { activeEntityManagerHolder.dispose(); } } return executeNonTransactional(builder, context); }
@Override public Object executeQuery(final QueryBuilder builder, final CdiQueryInvocationContext context) throws Throwable { if (context.getRepositoryMethodMetadata().isRequiresTransaction()) { try { activeEntityManagerHolder.set(context.getEntityManager()); return executeTransactional(builder, context); } finally { activeEntityManagerHolder.dispose(); } } return executeNonTransactional(builder, context); }