- Timestamp:
- 11/14/11 12:08:03 (6 months ago)
- Files:
-
- 1 modified
Legend:
- Unmodified
- Added
- Removed
-
trunk/pustefix-cdi/src/main/java/org/pustefixframework/cdi/CDIExtension.java
r6019 r6053 28 28 29 29 import javax.enterprise.event.Observes; 30 import javax.enterprise.inject.Any;31 import javax.enterprise.inject.Default;32 30 import javax.enterprise.inject.spi.AfterBeanDiscovery; 31 import javax.enterprise.inject.spi.Annotated; 33 32 import javax.enterprise.inject.spi.AnnotatedType; 34 33 import javax.enterprise.inject.spi.Bean; … … 39 38 import javax.enterprise.inject.spi.ProcessBean; 40 39 import javax.enterprise.inject.spi.ProcessInjectionTarget; 41 import javax.enterprise.util.AnnotationLiteral;42 40 import javax.inject.Named; 43 41 … … 67 65 List<SpringBean> beans = getUnknownBeans(manager); 68 66 for(SpringBean bean : beans) { 69 event.addBean(bean); 67 Set<Bean<?>> found = null; 68 if(bean.getName() != null) { 69 found = manager.getBeans(bean.getName()); 70 } 71 if(found == null || found.size() == 0) { 72 Annotation[] qualifiers = bean.getQualifiers().toArray(new Annotation[bean.getQualifiers().size()]); 73 found = manager.getBeans(bean.getBeanClass(), qualifiers); 74 } 75 if(found.size() == 0) { 76 event.addBean(bean); 77 } 70 78 } 71 79 } … … 86 94 Set<InjectionPoint> ips = pit.getInjectionTarget().getInjectionPoints(); 87 95 for(InjectionPoint ip : ips) { 96 97 BeanFactoryAdapter beanFactoryAdapter = beanFactoryAdapters.get(beanManager); 88 98 Class<?> clazz = (Class<?>)ip.getType(); 99 Annotated annotated = ip.getAnnotated(); 100 101 String name = null; 102 Named named = annotated.getAnnotation(Named.class); 103 if(named != null) { 104 name = named.value(); 105 //if(name.equals("")) { 106 // name = clazz.getSimpleName(); 107 // name = Character.toLowerCase(name.charAt(0)) + name.substring(1); 108 //} 109 } 110 89 111 AnnotatedType<?> annotatedType = beanManager.createAnnotatedType(clazz); 90 //TODO: check if really no CDI bean by additional criteria 91 if(!annotatedType.isAnnotationPresent(Named.class)) { 92 Set<Type> beanTypes = annotatedType.getTypeClosure(); 93 BeanFactoryAdapter beanFactoryAdapter = beanFactoryAdapters.get(beanManager); 94 HashSet<Annotation> qualifiers = new HashSet<Annotation>(); 95 qualifiers.add(new AnnotationLiteral<Any>() {}); 96 qualifiers.add(new AnnotationLiteral<Default>() {}); 97 Set<Class<? extends Annotation>> stereotypes = new HashSet<Class<? extends Annotation>>(); 98 getUnknownBeans(beanManager).add(new SpringBean(beanFactoryAdapter, clazz.getSimpleName(), clazz, beanTypes, qualifiers, stereotypes)); 112 Set<Type> beanTypes = annotatedType.getTypeClosure(); 113 114 Set<Annotation> qualifiers = new HashSet<Annotation>(); 115 Set<Class<? extends Annotation>> stereoTypes = new HashSet<Class<? extends Annotation>>(); 116 Set<Annotation> annotations = ip.getAnnotated().getAnnotations(); 117 for(Annotation annotation: annotations) { 118 if(beanManager.isQualifier(annotation.annotationType())) { 119 qualifiers.add(annotation); 120 } else if(beanManager.isStereotype(annotation.annotationType())) { 121 stereoTypes.add(annotation.annotationType()); 122 } 99 123 } 124 125 SpringBean bean = new SpringBean(beanFactoryAdapter, name, clazz, beanTypes, qualifiers, stereoTypes); 126 127 getUnknownBeans(beanManager).add(bean); 128 100 129 } 101 130 } 102 131 103 132 }
