Skip to content

Instantly share code, notes, and snippets.

@oranheim
Last active August 29, 2015 14:16
Show Gist options
  • Save oranheim/97e65c33ef1ed58fdcac to your computer and use it in GitHub Desktop.
Save oranheim/97e65c33ef1ed58fdcac to your computer and use it in GitHub Desktop.
// Test case:
@Inject
@PartsRepository
EntityManager em;
@Inject
private ActiveEntityManagerHolder emHolder;
@Test
public void testEm() {
log.info("em: "+em); <== return em instance
log.info("em: "+emHolder.get()); <== return null
}
public class EntityManagerFactoryProducer {
@Produces
@PartsRepository
@ApplicationScoped
public EntityManagerFactory createEntityManagerFactory() {
return Persistence.createEntityManagerFactory("primary");
}
public void close(@Disposes @PartsRepository EntityManagerFactory entityManagerFactory) {
entityManagerFactory.close();
}
}
public class EntityManagerProducer {
@Produces
@PartsRepository
@RequestScoped
public EntityManager createEntityManager(@PartsRepository EntityManagerFactory entityManagerFactory) {
return (EntityManager) JtaEntityManagerProxy.newInstance(entityManagerFactory.createEntityManager());
}
public void close(@Disposes @PartsRepository EntityManager entityManager) {
if (entityManager.isOpen()) {
entityManager.close();
}
}
}
// BeanManagedUserTransactionStrategy
private EntityManager resolveEntityManagerForQualifier(Class<? extends Annotation> emQualifier)
{
if (emHolder.isSet())
{
return emHolder.get();
}
Bean<EntityManager> entityManagerBean = resolveEntityManagerBean(emQualifier);
if (entityManagerBean == null)
{
throw new IllegalStateException("Cannot find an EntityManager qualified with [" + emQualifier.getName()
+ "]. Did you add a corresponding producer?");
}
return (EntityManager) beanManager.getReference(entityManagerBean, EntityManager.class,
beanManager.createCreationalContext(entityManagerBean));
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment