Last active
August 29, 2015 14:16
-
-
Save oranheim/97e65c33ef1ed58fdcac to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// 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