try {
log.debug("addEJB(): Does not exist in DD: " + remoteRefName);
// Doesn't exist in deployment descriptor -- add new
EjbRefType ejbRef = annotatedApp.addNewEjbRef();
//------------------------------------------------------------------------------
// <ejb-ref> required elements:
//------------------------------------------------------------------------------
// ejb-ref-name
EjbRefNameType ejbRefName = ejbRef.addNewEjbRefName();
ejbRefName.setStringValue(remoteRefName);
ejbRef.setEjbRefName(ejbRefName);
//------------------------------------------------------------------------------
// <ejb-ref> optional elements:
//------------------------------------------------------------------------------
// remote
if (interfce != null) {
String remoteAnnotation = interfce.getName();
if (!remoteAnnotation.equals("")) {
RemoteType remote = ejbRef.addNewRemote();
remote.setStringValue(remoteAnnotation);
ejbRef.setRemote(remote);
}
}
// ejb-link
String beanName = annotation.beanName();
if (!beanName.equals("")) {
EjbLinkType ejbLink = ejbRef.addNewEjbLink();
ejbLink.setStringValue(beanName);
ejbRef.setEjbLink(ejbLink);
}
// mappedName
String mappdedNameAnnotation = annotation.mappedName();
if (!mappdedNameAnnotation.equals("")) {
XsdStringType mappedName = ejbRef.addNewMappedName();
mappedName.setStringValue(mappdedNameAnnotation);
ejbRef.setMappedName(mappedName);
}
// description
String descriptionAnnotation = annotation.description();
if (!descriptionAnnotation.equals("")) {
DescriptionType description = ejbRef.addNewDescription();
description.setStringValue(descriptionAnnotation);
}
// injectionTarget
if (method != null || field != null) { // No class-level injection
InjectionTargetType injectionTarget = ejbRef.addNewInjectionTarget();
FullyQualifiedClassType qualifiedClass = injectionTarget.addNewInjectionTargetClass();
JavaIdentifierType javaType = injectionTarget.addNewInjectionTargetName();
if (method != null) {
qualifiedClass.setStringValue(method.getDeclaringClass().getName());
javaType.setStringValue(method.getName().substring(3)); // method should start with "set"
injectionTarget.setInjectionTargetClass(qualifiedClass);
injectionTarget.setInjectionTargetName(javaType);
}
else if (field != null) {
qualifiedClass.setStringValue(field.getDeclaringClass().getName());
javaType.setStringValue(field.getName());
injectionTarget.setInjectionTargetClass(qualifiedClass);
injectionTarget.setInjectionTargetName(javaType);
}
}
}
catch (Exception anyException) {
log.debug("EJBAnnotationHelper: Exception caught while processing <ejb-ref>");
anyException.printStackTrace();
}
}
} // end if remote
else { // ambiguous
//--------------------------------------------------------------------------------------
// 3. <UNKNOWN>
//--------------------------------------------------------------------------------------
log.debug("addEJB(): <UNKNOWN> found");
String remoteRefName = annotation.name();
if (remoteRefName.equals("")) {
if (method != null) {
remoteRefName = method.getDeclaringClass().getName() + "/" + method.getName().substring(3); // method should start with "set"
} else if (field != null) {
remoteRefName = field.getDeclaringClass().getName() + "/" + field.getName();
}
}
boolean exists = false;
EjbRefType[] ejbRefEntries = annotatedApp.getEjbRefArray();
for (EjbRefType ejbRefEntry : ejbRefEntries) {
if (ejbRefEntry.getEjbRefName().getStringValue().trim().equals(remoteRefName)) {
exists = true;
break;
}
}
if (!exists) {
try {
log.debug("addEJB(): Does not exist in DD: " + remoteRefName);
// Doesn't exist in deployment descriptor -- add as an <ejb-ref> to the
// ambiguous list so that it can be resolved later
EjbRefType ejbRef = EjbRefType.Factory.newInstance();
annotatedApp.getAmbiguousEjbRefs().add(ejbRef);
//------------------------------------------------------------------------------
// <ejb-ref> required elements:
//------------------------------------------------------------------------------
// ejb-ref-name
EjbRefNameType ejbRefName = ejbRef.addNewEjbRefName();
ejbRefName.setStringValue(remoteRefName);
ejbRef.setEjbRefName(ejbRefName);
//------------------------------------------------------------------------------
// <ejb-ref> optional elements:
//------------------------------------------------------------------------------
// remote
if (interfce != null) {
String remoteAnnotation = interfce.getName();
if (!remoteAnnotation.equals("")) {
RemoteType remote = ejbRef.addNewRemote();
remote.setStringValue(remoteAnnotation);
ejbRef.setRemote(remote);
}
}
// ejb-link
String beanName = annotation.beanName();
if (!beanName.equals("")) {
EjbLinkType ejbLink = ejbRef.addNewEjbLink();
ejbLink.setStringValue(beanName);
ejbRef.setEjbLink(ejbLink);
}
// mappedName
String mappdedNameAnnotation = annotation.mappedName();
if (!mappdedNameAnnotation.equals("")) {
XsdStringType mappedName = ejbRef.addNewMappedName();
mappedName.setStringValue(mappdedNameAnnotation);
ejbRef.setMappedName(mappedName);
}
// description
String descriptionAnnotation = annotation.description();
if (!descriptionAnnotation.equals("")) {
DescriptionType description = ejbRef.addNewDescription();
description.setStringValue(descriptionAnnotation);
}
// injectionTarget
if (method != null || field != null) { // No class-level injection
InjectionTargetType injectionTarget = ejbRef.addNewInjectionTarget();
FullyQualifiedClassType qualifiedClass = injectionTarget.addNewInjectionTargetClass();
JavaIdentifierType javaType = injectionTarget.addNewInjectionTargetName();
if (method != null) {
qualifiedClass.setStringValue(method.getDeclaringClass().getName());
javaType.setStringValue(method.getName().substring(3)); // method should start with "set"