public static <T> BeanAttributes<T> forNewBean(Set<Type> types, final Class<?> javaClass) { Set<Annotation> qualifiers = Collections.<Annotation>singleton(new NewLiteral(javaClass)); return new ImmutableBeanAttributes<T>(Collections.<Class<? extends Annotation>> emptySet(), false, null, qualifiers, types, Dependent.class); }
private ResolvableBuilder addQualifier(Annotation qualifier, InjectionPoint injectionPoint) { QualifierInstance qualifierInstance = QualifierInstance.of(qualifier, store); final Class<? extends Annotation> annotationType = qualifierInstance.getAnnotationClass(); // Handle the @New qualifier special case if (annotationType.equals(New.class)) { New newQualifier = New.class.cast(qualifier); if (newQualifier.value().equals(New.class) && rawType == null) { throw new IllegalStateException("Cannot transform @New when there is no known raw type"); } else if (newQualifier.value().equals(New.class)) { qualifier = new NewLiteral(rawType); qualifierInstance = QualifierInstance.of(qualifier, store); } } else if (injectionPoint != null && annotationType.equals(Named.class)) { Named named = (Named) qualifier; if (named.value().equals("")) { // WELD-1739 // This is an injection point with an @Named qualifier, with no value specified, we need to assume the name of the field in the value named = new NamedLiteral(injectionPoint.getMember().getName()); qualifier = named; qualifierInstance = QualifierInstance.of(named, store); } } checkQualifier(qualifier, qualifierInstance, annotationType); this.qualifierInstances.add(qualifierInstance); this.annotationTypes.add(annotationType); return this; }