private String computeBeanName(BeanDefinition<?> definition) { String name; if (definition instanceof NameResolver) { name = ((NameResolver) definition).resolveName().orElse(Primary.class.getSimpleName()); } else { name = definition.getValue(Named.class, String.class).orElseGet(() -> definition.getAnnotationTypeByStereotype(Qualifier.class).map(Class::getSimpleName).orElse(definition.getClass().getSimpleName()) ); } return definition.getBeanType().getName() + "(" + name + ")"; }
candidateName = ((NameResolver) candidate).resolveName().orElse(candidate.getBeanType().getSimpleName()); } else { Optional<String> annotation = candidate.getAnnotationMetadata().getValue(Named.class, String.class);
candidateName = ((NameResolver) candidate).resolveName().orElse(candidate.getBeanType().getSimpleName()); } else { Optional<String> annotation = candidate.getAnnotationMetadata().getValue(Named.class, String.class);
@Override public <BT extends BeanType<T>> Stream<BT> reduce(Class<T> beanType, Stream<BT> candidates) { check("beanType", beanType).notNull(); check("candidates", candidates).notNull(); return candidates.filter(candidate -> { if (!beanType.isAssignableFrom(candidate.getBeanType())) { return false; } String typeName; AnnotationMetadata annotationMetadata = candidate.getAnnotationMetadata(); // here we resolved the declared Qualifier of the bean Optional<String> beanQualifier = annotationMetadata.findDeclaredAnnotation(Named.class).flatMap(namedAnnotationValue -> namedAnnotationValue.getValue(String.class)); typeName = beanQualifier.orElseGet(() -> { if (candidate instanceof NameResolver) { Optional<String> resolvedName = ((NameResolver) candidate).resolveName(); return resolvedName.orElse(candidate.getBeanType().getSimpleName()); } return candidate.getBeanType().getSimpleName(); }); return typeName.equalsIgnoreCase(name) || typeName.equalsIgnoreCase(name + beanType.getSimpleName()); } ); }
candidateName = ((NameResolver) candidate).resolveName().orElse(candidate.getBeanType().getSimpleName()); } else { Optional<String> annotation = candidate.getAnnotationMetadata().getValue(Named.class, String.class);
candidateName = ((NameResolver) candidate).resolveName().orElse(candidate.getBeanType().getSimpleName()); } else { Optional<String> annotation = candidate.getAnnotationMetadata().getValue(Named.class, String.class);
@Override public <BT extends BeanType<T>> Stream<BT> reduce(Class<T> beanType, Stream<BT> candidates) { check("beanType", beanType).notNull(); check("candidates", candidates).notNull(); return candidates.filter(candidate -> { if (!beanType.isAssignableFrom(candidate.getBeanType())) { return false; } String typeName; AnnotationMetadata annotationMetadata = candidate.getAnnotationMetadata(); // here we resolved the declared Qualifier of the bean Optional<String> beanQualifier = annotationMetadata.findDeclaredAnnotation(Named.class).flatMap(namedAnnotationValue -> namedAnnotationValue.getValue(String.class)); typeName = beanQualifier.orElseGet(() -> { if (candidate instanceof NameResolver) { Optional<String> resolvedName = ((NameResolver) candidate).resolveName(); return resolvedName.orElse(candidate.getBeanType().getSimpleName()); } return candidate.getBeanType().getSimpleName(); }); return typeName.equalsIgnoreCase(name) || typeName.equalsIgnoreCase(name + beanType.getSimpleName()); } ); }