if (!isEmpty(lookup) && !isEmpty(beanName)) {
logger.debug("Both beanName = " + beanName + " and lookup = " + lookup + " have been specified in @EJB annotation." +
" lookup will be given preference");
}
final BindingDescription bindingDescription;
if (annotationTarget instanceof FieldInfo) {
bindingDescription = processFieldInjection(FieldInfo.class.cast(annotationTarget), name, beanInterface, componentDescription);
} else if (annotationTarget instanceof MethodInfo) {
bindingDescription = processMethodInjection(MethodInfo.class.cast(annotationTarget), name, beanInterface, componentDescription);
} else if (annotationTarget instanceof ClassInfo) {
bindingDescription = processClassInjection(name, beanInterface, componentDescription);
} else {
bindingDescription = null;
}
if (bindingDescription != null) {
if (!isEmpty(description)) {
bindingDescription.setDescription(description);
}
// give preference to "lookup" before "beanName"
if (!isEmpty(lookup)) {
bindingDescription.setReferenceSourceDescription(new LookupBindingSourceDescription(lookup,componentDescription));
} else if (!isEmpty(beanName)) {
final ServiceName beanServiceName = deploymentUnit.getServiceName()
.append("component").append(beanName).append("VIEW").append(bindingDescription.getBindingType());
bindingDescription.setReferenceSourceDescription(new ServiceBindingSourceDescription(beanServiceName));
} else {
bindingDescription.setReferenceSourceDescription(new LazyBindingSourceDescription());
}
}
return bindingDescription;
}