public EjbRefElement(Member member, AnnotatedElement ae, @Nullable PropertyDescriptor pd) { super(member, pd); EJB resource = ae.getAnnotation(EJB.class); String resourceBeanName = resource.beanName(); String resourceName = resource.name(); this.isDefaultName = !StringUtils.hasLength(resourceName); if (this.isDefaultName) { resourceName = this.member.getName(); if (this.member instanceof Method && resourceName.startsWith("set") && resourceName.length() > 3) { resourceName = Introspector.decapitalize(resourceName.substring(3)); } } Class<?> resourceType = resource.beanInterface(); if (Object.class != resourceType) { checkResourceType(resourceType); } else { // No resource type specified... check field/method. resourceType = getResourceType(); } this.beanName = resourceBeanName; this.name = resourceName; this.lookupType = resourceType; this.mappedName = resource.mappedName(); }
public EjbRefElement(Member member, AnnotatedElement ae, @Nullable PropertyDescriptor pd) { super(member, pd); EJB resource = ae.getAnnotation(EJB.class); String resourceBeanName = resource.beanName(); String resourceName = resource.name(); this.isDefaultName = !StringUtils.hasLength(resourceName); if (this.isDefaultName) { resourceName = this.member.getName(); if (this.member instanceof Method && resourceName.startsWith("set") && resourceName.length() > 3) { resourceName = Introspector.decapitalize(resourceName.substring(3)); } } Class<?> resourceType = resource.beanInterface(); if (Object.class != resourceType) { checkResourceType(resourceType); } else { // No resource type specified... check field/method. resourceType = getResourceType(); } this.beanName = resourceBeanName; this.name = resourceName; this.lookupType = resourceType; this.mappedName = resource.mappedName(); }
/** * Constructs EjbReference. * * @param ejbAnnotation ejb annotation * @param type fall back type * @return ejb reference instance */ private EjbReference getEjbReference(final EJB ejbAnnotation, final Class<?> type) { String beanInterface = ejbAnnotation.beanInterface().getName(); if (java.lang.Object.class.getName().equals(beanInterface)) { beanInterface = type.getName(); } return new EjbReference(ejbAnnotation.beanName(), beanInterface, ejbAnnotation.mappedName()); }
/** * Constructs EjbReference. * * @param ejbAnnotation ejb annotation * @param type fall back type * @return ejb reference instance */ private EjbReference getEjbReference(final EJB ejbAnnotation, final Class<?> type) { String beanInterface = ejbAnnotation.beanInterface().getName(); if (java.lang.Object.class.getName().equals(beanInterface)) { beanInterface = type.getName(); } return new EjbReference(ejbAnnotation.beanName(), beanInterface, ejbAnnotation.mappedName()); }
/** * Constructs EjbReference. * * @param ejbAnnotation ejb annotation * @param type fall back type * @return ejb reference instance */ private EjbReference getEjbReference(final EJB ejbAnnotation, final Class<?> type) { String beanInterface = ejbAnnotation.beanInterface().getName(); if (java.lang.Object.class.getName().equals(beanInterface)) { beanInterface = type.getName(); } return new EjbReference(ejbAnnotation.beanName(), beanInterface, ejbAnnotation.mappedName()); }
public void handleMethodAnnotations(Method method, InjectionContainer container, Map<AccessibleObject, Injector> injectors) { EJB ref = container.getAnnotation(EJB.class, method); if (ref != null) { if (!method.getName().startsWith("set")) throw new RuntimeException("@EJB can only be used with a set method: " + method); String encName = getEncName(ref, method); if (!container.getEncInjectors().containsKey(encName)) { ejbRefEncInjector(ref.mappedName(), encName, method.getName().substring(0), method.getParameterTypes()[0], ref.beanName(), "@EJB", container); if (isIgnoreDependency(container, ref)) log.debug("IGNORING <ejb-ref> DEPENDENCY: " + encName); else ejbRefDependency(ref.mappedName(), ref.beanName(), container, method.getParameterTypes()[0], "@EJB", encName); } super.handleMethodAnnotations(method, container, injectors); } }
public EjbRefElement(Member member, AnnotatedElement ae, @Nullable PropertyDescriptor pd) { super(member, pd); EJB resource = ae.getAnnotation(EJB.class); String resourceBeanName = resource.beanName(); String resourceName = resource.name(); this.isDefaultName = !StringUtils.hasLength(resourceName); if (this.isDefaultName) { resourceName = this.member.getName(); if (this.member instanceof Method && resourceName.startsWith("set") && resourceName.length() > 3) { resourceName = Introspector.decapitalize(resourceName.substring(3)); } } Class<?> resourceType = resource.beanInterface(); if (Object.class != resourceType) { checkResourceType(resourceType); } else { // No resource type specified... check field/method. resourceType = getResourceType(); } this.beanName = resourceBeanName; this.name = resourceName; this.lookupType = resourceType; this.mappedName = resource.mappedName(); }
protected void handleClassAnnotation(EJB ejb, Class<?> clazz, InjectionContainer container) { String encName = ejb.name(); if (encName == null || encName.equals("")) { throw new RuntimeException("JBoss requires the name of the @EJB in the @EJBs: " + clazz); } encName = "env/" + encName; if (container.getEncInjectors().containsKey(encName)) return; ejbRefEncInjector(ejb.mappedName(), encName, null, ejb.beanInterface(), ejb.beanName(), "@EJB", container); // handle dependencies if (isIgnoreDependency(container, ejb)) log.debug("IGNORING <ejb-ref> DEPENDENCY: " + encName); else ejbRefDependency(ejb.mappedName(), ejb.beanName(), container, ejb.beanInterface(), "@EJB", encName); }
protected void handleClassAnnotation(EJB ejb, Class<?> clazz, InjectionContainer container) { String encName = ejb.name(); if (encName == null || encName.equals("")) { throw new RuntimeException("JBoss requires the name of the @EJB in the @EJBs: " + clazz); } encName = "env/" + encName; if (container.getEncInjectors().containsKey(encName)) return; ejbRefEncInjector(ejb.mappedName(), encName, null, ejb.beanInterface(), ejb.beanName(), "@EJB", container); // handle dependencies if (isIgnoreDependency(container, ejb)) log.debug("IGNORING <ejb-ref> DEPENDENCY: " + encName); else ejbRefDependency(ejb.mappedName(), ejb.beanName(), container, ejb.beanInterface(), "@EJB", encName); }
if (ref.mappedName() != null && !"".equals(ref.mappedName()))
if (ref.mappedName() != null && !"".equals(ref.mappedName()))
public void handleMethodAnnotations(Method method, InjectionContainer container, Map<AccessibleObject, Injector> injectors) { EJB ref = container.getAnnotation(EJB.class, method); if (ref != null) { if (!method.getName().startsWith("set")) throw new RuntimeException("@EJB can only be used with a set method: " + method); String encName = getEncName(ref, method); if (!container.getEncInjectors().containsKey(encName)) { Class<?> businessInterface = method.getParameterTypes()[0]; if (ref.beanInterface() != null && ref.beanInterface() != Object.class) { businessInterface = ref.beanInterface(); } ejbRefEncInjector(ref.mappedName(), encName, method.getName().substring(0), businessInterface, ref.beanName(), "@EJB", container); if (container.getAnnotation(IgnoreDependency.class, method) == null) { if (isIgnoreDependency(container, ref)) log.debug("IGNORING <ejb-ref> DEPENDENCY: " + encName); else ejbRefDependency(ref.mappedName(), ref.beanName(), container, businessInterface, "@EJB", encName); } } super.handleMethodAnnotations(method, container, injectors); } }
/** * Create @EJB value meta data. * * @param annotation * @return @EJB metadata */ @Override protected ValueMetaData createValueMetaData(FieldInfo propInfo, EJB annotation) { // Get properties from the annotation String beanName = annotation.beanName(); String beanInterface = annotation.beanInterface().getName(); String mappedName = annotation.mappedName(); // Supply beanInterface from reflection if not explicitly-defined if (beanInterface == null || beanInterface.equals(Object.class.getName())) { String reflectType = propInfo.getType().getName(); beanInterface = reflectType; } // Create a reference EjbReference reference = new EjbReference(beanName, beanInterface, mappedName); log.debug("Found @EJB reference " + reference); // Return a new ValueMetaData w/ the reference return new AbstractEjbReferenceValueMetadata(this.getResolver(), reference, this.getNamingContext()); }
@Test public void testResolveJNDINameMappedNameSpecified() { cut.enrich(new EJBEnrichedMappedNameClass()); String expected = EJBEnrichedMappedNameClass.class.getDeclaredFields()[0].getAnnotation(EJB.class).mappedName(); /* * When 'mappedName' is set, the only JNDI name to check is the exact value specified in the annotation. */ assertThat(resolvedJndiName, is(notNullValue())); assertThat(resolvedJndiName.length, is(1)); assertThat(resolvedJndiName[0], is(expected)); }
@Test public void testResolveJNDINameMappedNameSpecified() { cut.enrich(new EJBEnrichedMappedNameClass()); String expected = EJBEnrichedMappedNameClass.class.getDeclaredFields()[0].getAnnotation(EJB.class).mappedName(); /* * When 'mappedName' is set, the only JNDI name to check is the exact value specified in the annotation. */ assertThat(resolvedJndiName, is(notNullValue())); assertThat(resolvedJndiName.length, is(1)); assertThat(resolvedJndiName[0], is(expected)); }
public void handleFieldAnnotations(Field field, InjectionContainer container, Map<AccessibleObject, Injector> injectors) { EJB ref = container.getAnnotation(EJB.class, field); if (ref != null) { String encName = getEncName(ref, field); if (!container.getEncInjectors().containsKey(encName)) { Class<?> businessInterface = field.getType(); if (ref.beanInterface() != null && ref.beanInterface() != Object.class) { businessInterface = ref.beanInterface(); } if (container.getAnnotation(IgnoreDependency.class, field) == null) { if (isIgnoreDependency(container, ref)) log.debug("IGNORING <ejb-ref> DEPENDENCY: " + encName); else ejbRefDependency(ref.mappedName(), ref.beanName(), container, businessInterface, "@EJB", encName); } ejbRefEncInjector(ref.mappedName(), encName, field.getName(), businessInterface, ref.beanName(), "@EJB", container); } super.handleFieldAnnotations(field, container, injectors); } }
private String getEjbBindLocation(InjectionPoint injectionPoint) { EJB ejb = ResourceInjectionUtilities.getResourceAnnotated(injectionPoint).getAnnotation(EJB.class); String mappedName = ejb.mappedName(); if (!mappedName.equals("")) { return mappedName; } String name = ejb.name(); if (!name.equals("")) { return ResourceInjectionUtilities.RESOURCE_LOOKUP_PREFIX + "/" + name; } String propertyName; if (injectionPoint.getMember() instanceof Field) { propertyName = injectionPoint.getMember().getName(); } else if (injectionPoint.getMember() instanceof Method) { propertyName = ResourceInjectionUtilities.getPropertyName((Method) injectionPoint.getMember()); if (propertyName == null) { throw WeldLogger.ROOT_LOGGER.injectionPointNotAJavabean((Method) injectionPoint.getMember()); } } else { throw WeldLogger.ROOT_LOGGER.cannotInject(injectionPoint); } String className = injectionPoint.getMember().getDeclaringClass().getName(); return ResourceInjectionUtilities.RESOURCE_LOOKUP_PREFIX + "/" + className + "/" + propertyName; }
protected AnnotatedEJBReferenceMetaData createEJB(EJB annotation, E element) { AnnotatedEJBReferenceMetaData ref = new AnnotatedEJBReferenceMetaData(); if(annotation.name().length() > 0) ref.setEjbRefName(annotation.name()); else ref.setEjbRefName(getName(element)); if(annotation.beanInterface() != Object.class) ref.setBeanInterface(annotation.beanInterface()); else ref.setBeanInterface(getType(element)); if(annotation.description().length() > 0) { DescriptionImpl description = new DescriptionImpl(); description.setDescription(annotation.description()); DescriptionsImpl descriptions = new DescriptionsImpl(); descriptions.add(description); ref.setDescriptions(descriptions); } if(annotation.beanName().length() > 0) ref.setLink(annotation.beanName()); if(annotation.mappedName().length() > 0) ref.setMappedName(annotation.mappedName()); return ref; } }
protected AnnotatedEJBReferenceMetaData createEJB(EJB annotation, E element) { AnnotatedEJBReferenceMetaData ref = new AnnotatedEJBReferenceMetaData(); if(annotation.name().length() > 0) ref.setEjbRefName(annotation.name()); else ref.setEjbRefName(getName(element)); if(annotation.beanInterface() != Object.class) ref.setBeanInterface(annotation.beanInterface()); else ref.setBeanInterface(getType(element)); if(annotation.description().length() > 0) { DescriptionImpl description = new DescriptionImpl(); description.setDescription(annotation.description()); DescriptionsImpl descriptions = new DescriptionsImpl(); descriptions.add(description); ref.setDescriptions(descriptions); } if(annotation.beanName().length() > 0) ref.setLink(annotation.beanName()); if(annotation.mappedName().length() > 0) ref.setMappedName(annotation.mappedName()); String name = ProcessorUtils.getName(element); Set<ResourceInjectionTargetMetaData> injectionTargets = ProcessorUtils.getInjectionTargets(name, element); if(injectionTargets != null) ref.setInjectionTargets(injectionTargets); return ref; }
private String getLookupName( Class annotatedClass, AnnotatedField annotatedField, List<InjectionCapable> injectionResources ) { String lookupName = null; if ( annotatedField.isAnnotationPresent( Resource.class ) ) { Resource resource = annotatedField.getAnnotation( Resource.class ); lookupName = getJndiName( resource.lookup(), resource.mappedName(), resource.name() ); } else if ( annotatedField.isAnnotationPresent( EJB.class ) ) { EJB ejb = annotatedField.getAnnotation( EJB.class ); lookupName = getJndiName(ejb.lookup(), ejb.mappedName(), ejb.name()); } else if ( annotatedField.isAnnotationPresent( WebServiceRef.class ) ) { WebServiceRef webServiceRef = annotatedField.getAnnotation( WebServiceRef.class ); lookupName = getJndiName(webServiceRef.lookup(), webServiceRef.mappedName(), webServiceRef.name()); } else if ( annotatedField.isAnnotationPresent( PersistenceUnit.class ) ) { PersistenceUnit persistenceUnit = annotatedField.getAnnotation( PersistenceUnit.class ); lookupName = getJndiName( persistenceUnit.unitName(), null, persistenceUnit.name() ); } else if ( annotatedField.isAnnotationPresent( PersistenceContext.class ) ) { PersistenceContext persistenceContext = annotatedField.getAnnotation( PersistenceContext.class ); lookupName = getJndiName( persistenceContext.unitName(), null, persistenceContext.name() ); } if ( lookupName == null || lookupName.trim().length() == 0 ) { lookupName = getComponentEnvName( annotatedClass, annotatedField.getJavaMember().getName(), injectionResources ); } return lookupName; }