}
if ( !exists ) {
try {
// Doesn't exist in deployment descriptor -- add new
EjbLocalRefType ejbLocalRef = webApp.addNewEjbLocalRef();
//------------------------------------------------------------------------------
// <ejb-local-ref> required elements:
//------------------------------------------------------------------------------
// ejb-ref-name
EjbRefNameType ejbRefName = EjbRefNameType.Factory.newInstance();
ejbRefName.setStringValue( localRefName );
ejbLocalRef.setEjbRefName( ejbRefName );
//------------------------------------------------------------------------------
// <ejb-local-ref> optional elements:
//------------------------------------------------------------------------------
// local
String localAnnotation = interfce.getName();
if ( localAnnotation.length() > 0 ) {
LocalType local = LocalType.Factory.newInstance();
local.setStringValue( localAnnotation );
ejbLocalRef.setLocal( local );
}
// ejb-link
String beanName = annotation.beanName();
if ( beanName.length() > 0 ) {
EjbLinkType ejbLink = EjbLinkType.Factory.newInstance();
ejbLink.setStringValue( beanName );
ejbLocalRef.setEjbLink( ejbLink );
}
// mappedName
String mappdedNameAnnotation = annotation.mappedName();
if ( mappdedNameAnnotation.length() > 0 ) {
XsdStringType mappedName = XsdStringType.Factory.newInstance();
mappedName.setStringValue( mappdedNameAnnotation );
ejbLocalRef.setMappedName( mappedName );
}
// description
String descriptionAnnotation = annotation.description();
if ( descriptionAnnotation.length() > 0 ) {
DescriptionType description = DescriptionType.Factory.newInstance();
description.setStringValue( descriptionAnnotation );
int arraySize = ejbLocalRef.sizeOfDescriptionArray();
ejbLocalRef.insertNewDescription( arraySize );
ejbLocalRef.setDescriptionArray( arraySize,description );
}
// injectionTarget
InjectionTargetType injectionTarget = InjectionTargetType.Factory.newInstance();
FullyQualifiedClassType qualifiedClass = FullyQualifiedClassType.Factory.newInstance();
JavaIdentifierType javaType = JavaIdentifierType.Factory.newInstance();
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 );
int arraySize = ejbLocalRef.sizeOfInjectionTargetArray();
ejbLocalRef.insertNewInjectionTarget( arraySize );
ejbLocalRef.setInjectionTargetArray( arraySize,injectionTarget );
}
else if ( field !=null ) {
qualifiedClass.setStringValue( field.getDeclaringClass().getName() );
javaType.setStringValue( field.getName() );
injectionTarget.setInjectionTargetClass( qualifiedClass );
injectionTarget.setInjectionTargetName( javaType );
int arraySize = ejbLocalRef.sizeOfInjectionTargetArray();
ejbLocalRef.insertNewInjectionTarget( arraySize );
ejbLocalRef.setInjectionTargetArray( arraySize,injectionTarget );
}
}
catch ( Exception anyException ) {
log.debug( "EJBAnnotationHelper: Exception caught while processing <ejb-local-ref>" );