throws AnnotationProcessorException {
EjbReferenceDescriptor ejbRefs[] = null;
String defaultLogicalName = null;
Class defaultBeanInterface = null;
InjectionTarget target = null;
if (ElementType.FIELD.equals(ainfo.getElementType())) {
Field f = (Field)ainfo.getAnnotatedElement();
String targetClassName = f.getDeclaringClass().getName();
defaultLogicalName = targetClassName + "/" + f.getName();
defaultBeanInterface = f.getType();
target = new InjectionTarget();
target.setClassName(targetClassName);
target.setFieldName(f.getName());
target.setMetadataSource(MetadataSource.ANNOTATION);
} else if (ElementType.METHOD.equals(ainfo.getElementType())) {
Method m = (Method)ainfo.getAnnotatedElement();
String targetClassName = m.getDeclaringClass().getName();
validateInjectionMethod(m, ainfo);
// Derive javabean property name.
String propertyName = getInjectionMethodPropertyName(m, ainfo);
defaultLogicalName = targetClassName + "/" + propertyName;
defaultBeanInterface = m.getParameterTypes()[0];
target = new InjectionTarget();
target.setClassName(targetClassName);
target.setMethodName(m.getName());
target.setMetadataSource(MetadataSource.ANNOTATION);
} else if( ElementType.TYPE.equals(ainfo.getElementType()) ) {
// name() and beanInterface() are required for TYPE-level @EJB
// if either of them not set, fail fast. See issue 17284
if (ejbAn.name().equals("") ||