@Override protected void defineNullable() { defineNullable(!getAnnotated().getJavaMember().getReturnType().isPrimitive()); }
@Override protected AnnotatedMethod<? super M> getSuperAnnotated() { AnnotatedMethod<M> thisMethod = getAnnotated(); for (AnnotatedMethod<? super M> superMethod: webBeansContext.getAnnotatedElementFactory().getFilteredAnnotatedMethods(getSuperType())) { List<AnnotatedParameter<M>> thisParameters = thisMethod.getParameters(); if (thisMethod.getJavaMember().getName().equals(superMethod.getJavaMember().getName()) && thisMethod.getBaseType().equals(superMethod.getBaseType()) && thisParameters.size() == superMethod.getParameters().size()) { List<AnnotatedParameter<?>> superParameters = (List<AnnotatedParameter<?>>)(List<?>)superMethod.getParameters(); boolean match = true; for (int i = 0; i < thisParameters.size(); i++) { if (!thisParameters.get(i).getBaseType().equals(superParameters.get(i).getBaseType())) { match = false; break; } } if (match) { return superMethod; } } } return null; } }
@Override protected void defineName() { if (getAnnotated().isAnnotationPresent(Specializes.class)) { AnnotatedMethod<? super M> superAnnotated = getSuperAnnotated(); defineName(superAnnotated, () -> getProducerDefaultName(superAnnotated)); } if (name == null) { defineName(getAnnotated(), () -> getProducerDefaultName(getAnnotated())); } else { // TODO XXX We have to check stereotypes here, too if (getAnnotated().isAnnotationPresent(Named.class)) { throw new WebBeansConfigurationException("@Specialized Producer method : " + getAnnotated().getJavaMember().getName() + " may not explicitly declare a bean name"); } } }
public <T> BeanAttributesBuilder<T, AnnotatedMethod<T>> newBeanAttibutes(AnnotatedMethod<T> annotatedMethod) { return new AnnotatedMethodBeanAttributesBuilder<>(webBeansContext, annotatedMethod); } }
@Override protected void defineScope() { defineScope("Annotated producer method : " + getAnnotated().getJavaMember() + "must declare default @Scope annotation"); }