}
if (!name.startsWith("java:")) {
name = environment.getDefaultContext() + name;
}
BindingDescription bindingDescription = new BindingDescription(name);
bindingDescriptions.add(bindingDescription);
//add any injection targets
processInjectionTargets(classLoader, deploymentReflectionIndex, puRef, bindingDescription, EntityManager.class);
bindingDescription.setBindingType(EntityManager.class.getName());
if (!isEmpty(lookup)) {
if (componentDescription != null) {
bindingDescription.setReferenceSourceDescription(new LookupBindingSourceDescription(lookup, componentDescription));
} else {
bindingDescription.setReferenceSourceDescription(new LookupBindingSourceDescription(lookup, moduleDescription));
}
} else if (!isEmpty(persistenceUnitName)) {
PropertiesMetaData properties = puRef.getProperties();
Map map = new HashMap();
if(properties != null) {
for(PropertyMetaData prop : properties) {
map.put(prop.getKey(),prop.getValue());
}
}
PersistenceContextType type = puRef.getPersistenceContextType() == null ? PersistenceContextType.TRANSACTION : puRef.getPersistenceContextType();
bindingDescription.setReferenceSourceDescription(getPersistenceContextBindingSource(deploymentUnit, persistenceUnitName, type, map));
} else {
bindingDescription.setReferenceSourceDescription(new LazyBindingSourceDescription());
}
}
}
return bindingDescriptions;
}