/** * @param annotation * @param store * @return a new qualifier instance for the given annotation */ public static QualifierInstance of(Annotation annotation, MetaAnnotationStore store) { Class<? extends Annotation> annotationType = annotation.annotationType(); if (Any.class == annotationType) { return ANY; } else if (Default.class == annotationType) { return DEFAULT; } else if (Named.class == annotationType) { Named named = (Named) annotation; return new QualifierInstance(annotationType, ImmutableMap.of("value", named.value())); } else { return new QualifierInstance(annotationType, createValues(annotation, store)); } }
public static boolean areInterceptorBindingsEquivalent(Annotation qualifier1, Annotation qualifier2, MetaAnnotationStore store) { checkInterceptorBinding(qualifier1, store); checkInterceptorBinding(qualifier2, store); QualifierInstance q1 = QualifierInstance.of(qualifier1, store); QualifierInstance q2 = QualifierInstance.of(qualifier2, store); return q1.equals(q2); }
public Set<QualifierInstance> extractInterceptorBindingsForQualifierInstance(Iterable<QualifierInstance> annotations) { Set<QualifierInstance> foundInterceptionBindingTypes = new HashSet<QualifierInstance>(); for (QualifierInstance annotation : annotations) { if (isInterceptorBinding(annotation.getAnnotationClass())) { foundInterceptionBindingTypes.add(annotation); } } return foundInterceptionBindingTypes; }
public static int getQualifierHashCode(Annotation qualifier, MetaAnnotationStore store) { checkQualifier(qualifier, store); return QualifierInstance.of(qualifier, store).hashCode(); }
public static boolean areQualifiersEquivalent(Annotation qualifier1, Annotation qualifier2, MetaAnnotationStore store) { checkQualifier(qualifier1, store); checkQualifier(qualifier2, store); QualifierInstance q1 = QualifierInstance.of(qualifier1, store); QualifierInstance q2 = QualifierInstance.of(qualifier2, store); return q1.equals(q2); }
@Override protected boolean matches(Resolvable resolvable, T bean) { AssignabilityRules rules = null; if (resolvable.isDelegate()) { rules = DelegateInjectionPointAssignabilityRules.instance(); } else { rules = BeanTypeAssignabilityRules.instance(); } return rules.matches(resolvable.getTypes(), bean.getTypes()) && Beans.containsAllQualifiers(resolvable.getQualifiers(), QualifierInstance.of(bean, store)); }
public static boolean containsAllInterceptionBindings(Set<Annotation> expectedBindings, Set<QualifierInstance> existingBindings, BeanManagerImpl manager) { final Set<QualifierInstance> expected = manager.extractInterceptorBindingsForQualifierInstance(QualifierInstance.of(expectedBindings, manager.getServices().get(MetaAnnotationStore.class))); return manager.extractInterceptorBindingsForQualifierInstance(existingBindings).containsAll(expected); }
public static int getInterceptorBindingHashCode(Annotation qualifier, MetaAnnotationStore store) { checkInterceptorBinding(qualifier, store); return QualifierInstance.of(qualifier, store).hashCode(); }
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; }
@Override public QualifierInstance apply(Annotation key) { return QualifierInstance.of(key, metaAnnotationStore); }
return new QualifierInstance(qualifierAnnotationClass, Collections.unmodifiableMap(values));
protected void checkQualifier(Annotation qualifier, final QualifierInstance qualifierInstance, Class<? extends Annotation> annotationType) { if (!store.getBindingTypeModel(annotationType).isValid()) { throw BeanManagerLogger.LOG.invalidQualifier(qualifierInstance); } if (!annotationType.isAnnotationPresent(Repeatable.class)) { for (QualifierInstance checkedQualifier : qualifierInstances) { if (annotationType.equals(checkedQualifier.getAnnotationClass())) { throw BeanManagerLogger.LOG.duplicateQualifiers(qualifierInstances); } } } }
@Override protected boolean matches(Resolvable resolvable, T bean) { AssignabilityRules rules = null; if (resolvable.isDelegate()) { rules = DelegateInjectionPointAssignabilityRules.instance(); } else { rules = BeanTypeAssignabilityRules.instance(); } return rules.matches(resolvable.getTypes(), bean.getTypes()) && Beans.containsAllQualifiers(resolvable.getQualifiers(), QualifierInstance.of(bean, store)); }
public static boolean containsAllInterceptionBindings(Set<Annotation> expectedBindings, Set<QualifierInstance> existingBindings, BeanManagerImpl manager) { final Set<QualifierInstance> expected = manager.extractInterceptorBindingsForQualifierInstance(QualifierInstance.of(expectedBindings, manager.getServices().get(MetaAnnotationStore.class))); return expected.isEmpty() ? false : manager.extractInterceptorBindingsForQualifierInstance(existingBindings).containsAll(expected); }
public static boolean areQualifiersEquivalent(Annotation qualifier1, Annotation qualifier2, MetaAnnotationStore store) { checkQualifier(qualifier1, store); checkQualifier(qualifier2, store); QualifierInstance q1 = QualifierInstance.of(qualifier1, store); QualifierInstance q2 = QualifierInstance.of(qualifier2, store); return q1.equals(q2); }
public static int getQualifierHashCode(Annotation qualifier, MetaAnnotationStore store) { checkQualifier(qualifier, store); return QualifierInstance.of(qualifier, store).hashCode(); }
public static int getInterceptorBindingHashCode(Annotation qualifier, MetaAnnotationStore store) { checkInterceptorBinding(qualifier, store); return QualifierInstance.of(qualifier, store).hashCode(); }
private ResolvableBuilder addQualifier(Annotation qualifier, InjectionPoint injectionPoint) { QualifierInstance qualifierInstance = QualifierInstance.of(qualifier, store); final Class<? extends Annotation> annotationType = qualifierInstance.getAnnotationClass(); } else if (newQualifier.value().equals(New.class)) { qualifier = New.Literal.of(rawType); qualifierInstance = QualifierInstance.of(qualifier, store); qualifierInstance = QualifierInstance.of(named, store);
@Override public QualifierInstance apply(Annotation key) { return QualifierInstance.of(key, metaAnnotationStore); }
return new QualifierInstance(qualifierAnnotationClass, Collections.unmodifiableMap(values));