in jpa-cdi/src/main/java/org/apache/aries/jpa/cdi/TransactionalContext.java [142:175]
public <T> T get(
Contextual<T> contextual,
CreationalContext<T> creationalContext) {
if (!isActive()) {
throw new ContextNotActiveException();
}
if (contextual == null) {
throw new IllegalArgumentException(
"No contextual specified to retrieve");
}
TransactionSupport transactionSupport = getTransactionSupport();
Map<Contextual<T>, ContextualInstance<T>> instances =
getInstances(transactionSupport);
ContextualInstance<T> contextualInstance = instances.get(contextual);
if (contextualInstance != null) {
return contextualInstance.instance;
} else if (creationalContext == null) {
return null;
} else {
T instance = contextual.create(creationalContext);
contextualInstance = new ContextualInstance<T>(instance,
creationalContext);
instances.put(contextual, contextualInstance);
if (log.isDebugEnabled()) {
log.debug("Created a new transaction scoped instance "
+ contextualInstance);
}
return instance;
}
}