log.debug("addEJB(): <ejb-local-ref> found");
String localRefName = getName(annotation.name(), method, field);
EjbLocalRefType ejbLocalRef = null;
EjbLocalRefType[] ejbLocalRefEntries = annotatedApp.getEjbLocalRefArray();
for (EjbLocalRefType ejbLocalRefEntry : ejbLocalRefEntries) {
if (ejbLocalRefEntry.getEjbRefName().getStringValue().trim().equals(localRefName)) {
ejbLocalRef = ejbLocalRefEntry;
break;
}
}
if (ejbLocalRef == null) {
try {
log.debug("addEJB(): Does not exist in DD: " + localRefName);
// Doesn't exist in deployment descriptor -- add new
ejbLocalRef = annotatedApp.addNewEjbLocalRef();
//------------------------------------------------------------------------------
// <ejb-local-ref> required elements:
//------------------------------------------------------------------------------
// ejb-ref-name
EjbRefNameType ejbRefName = ejbLocalRef.addNewEjbRefName();
ejbRefName.setStringValue(localRefName);
ejbLocalRef.setEjbRefName(ejbRefName);
//------------------------------------------------------------------------------
// <ejb-local-ref> optional elements:
//------------------------------------------------------------------------------
// local
if (interfce != null) {
String localAnnotation = interfce.getName();
if (!localAnnotation.equals("")) {
LocalType local = ejbLocalRef.addNewLocal();
local.setStringValue(localAnnotation);
ejbLocalRef.setLocal(local);
}
}
// ejb-link
String beanName = annotation.beanName();
if (!beanName.equals("")) {
EjbLinkType ejbLink = ejbLocalRef.addNewEjbLink();
ejbLink.setStringValue(beanName);
ejbLocalRef.setEjbLink(ejbLink);
}
// mappedName
String mappdedNameAnnotation = annotation.mappedName();
if (!mappdedNameAnnotation.equals("")) {
XsdStringType mappedName = ejbLocalRef.addNewMappedName();
mappedName.setStringValue(mappdedNameAnnotation);
ejbLocalRef.setMappedName(mappedName);
}
// description
String descriptionAnnotation = annotation.description();
if (!descriptionAnnotation.equals("")) {
DescriptionType description = ejbLocalRef.addNewDescription();
description.setStringValue(descriptionAnnotation);
}
}
catch (Exception e) {
log.debug("EJBAnnotationHelper: Exception caught while processing <ejb-local-ref>", e);
}
}
// injectionTarget
if (method != null || field != null) {
InjectionTargetType[] targets = ejbLocalRef.getInjectionTargetArray();
if (!hasTarget(method, field, targets)) {
configureInjectionTarget(ejbLocalRef.addNewInjectionTarget(), method, field);
}
}
} // end if local
else if (remoteFlag) { // remote