in jee-modules/jpa-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jpa/impl/LegacyTransactionalInterceptorStrategy.java [83:133]
public Object execute(InvocationContext context) throws Exception
{
Transactional transactionalAnnotation = extractTransactionalAnnotation(context);
Class<? extends Annotation> qualifierClass = getTransactionQualifier(transactionalAnnotation);
Bean<EntityManager> entityManagerBean = resolveEntityManagerBean(qualifierClass);
EntityManagerEntry entityManagerEntry = null;
EntityManager entityManager;
String entityManagerId = qualifierClass.getName();
if (entityManagerBean == null)
{
//support for special add-ons which introduce backward compatibility - resolves the injected entity manager
entityManagerEntry = PersistenceHelper.tryToFindEntityManagerEntryInTarget(context.getTarget());
if(entityManagerEntry == null)
{
throw unsupportedUsage(context);
}
entityManager = entityManagerEntry.getEntityManager();
entityManagerId = entityManagerEntry.getPersistenceContextEntry().getUnitName();
//might happen due to special add-ons - don't change it!
if(entityManager == null)
{
//TODO log warning in project stage dev.
return context.proceed();
}
}
else
{
entityManager = (EntityManager) beanManager.getReference(entityManagerBean, EntityManager.class,
beanManager.createCreationalContext(entityManagerBean));
}
if (entityManagerMap.get() == null)
{
entityManagerMap.set(new HashMap<String, EntityManager>());
}
entityManagerMap.get().put(entityManagerId, entityManager);
if (refCount.get() == null)
{
refCount.set(new AtomicInteger(0));
}
return startProcess(context, entityManagerEntry, entityManager);
}