/** * Creates a new extension bean. * * @param <T> extension service class * @param clazz impl. class * @return a new extension service bean */ public <T> ExtensionBean<T> createExtensionComponent(Class<T> clazz) { Asserts.nullCheckForClass(clazz); ExtensionBeanBuilder<T> extensionBeanBuilder = new ExtensionBeanBuilder<>(webBeansContext, clazz); ExtensionBean<T> bean = extensionBeanBuilder.getBean(); new ObserverMethodsBuilder<>(webBeansContext, extensionBeanBuilder.getAnnotatedType()).defineObserverMethods(bean); return bean; }
checkObserverMethodConditions(ownerBean, observesParameter);
/** * {@inheritDoc} */ public Set<ObserverMethod<?>> defineObserverMethods(AbstractOwbBean<T> ownerBean) { Set<ObserverMethod<?>> definedObservers = new HashSet<>(); for (AnnotatedMethod<?> annotatedMethod : webBeansContext.getAnnotatedElementFactory().getFilteredAnnotatedMethods(annotatedType)) { ObserverMethod<?> observerMethod = defineObserverMethod(ownerBean, annotatedMethod); if (observerMethod != null) { definedObservers.add(observerMethod); } } if (!definedObservers.isEmpty()) { for (InjectionPoint ip : ownerBean.getInjectionPoints()) { Set<Annotation> qualifiers = ip.getQualifiers(); if (EventMetadata.class == ip.getType() && qualifiers != null && ip.getQualifiers().size() == 1 && Default.class == qualifiers.iterator().next().annotationType()) { throw new WebBeansConfigurationException(ip + " is not an observer parameter"); } } } return definedObservers; }
/** * This method will be used in {@link AfterBeanDiscovery#addBean(javax.enterprise.inject.spi.Bean)}} */ public <T> ManagedBean<T> defineManagedBeanWithoutFireEvents(AnnotatedType<T> type) { BeanAttributesImpl<T> beanAttributes = BeanAttributesBuilder.forContext(webBeansContext).newBeanAttibutes(type).build(); ManagedBeanBuilder<T, ManagedBean<T>> managedBeanCreator = new ManagedBeanBuilder<>(webBeansContext, type, beanAttributes, false); //Check for Enabled via Alternative setInjectionTargetBeanEnableFlag(managedBeanCreator.getBean()); ManagedBean<T> managedBean = managedBeanCreator.getBean(); new ProducerMethodBeansBuilder(managedBean.getWebBeansContext(), managedBean.getAnnotatedType()).defineProducerMethods( managedBean, new ProducerFieldBeansBuilder(managedBean.getWebBeansContext(), managedBean.getAnnotatedType()).defineProducerFields(managedBean)); new ObserverMethodsBuilder<>(webBeansContext, managedBean.getAnnotatedType()).defineObserverMethods(managedBean); if (managedBean.getProducer() instanceof AbstractProducer) { AbstractProducer<T> producer = (AbstractProducer<T>)managedBean.getProducer(); producer.defineInterceptorStack(managedBean, managedBean.getAnnotatedType(), webBeansContext); } return managedBean; }
if(bean.isEnabled()) observerMethods = new ObserverMethodsBuilder<>(webBeansContext, beanAnnotatedType).defineObserverMethods(bean);
observerMethods = new ObserverMethodsBuilder<T>(webBeansContext, bean.getAnnotatedType()).defineObserverMethods(bean); } else { observerMethods = new HashSet<>();
observerMethods = new ObserverMethodsBuilder<T, InjectionTargetBean<T>>(webBeansContext, bean.getAnnotatedType()).defineObserverMethods(bean); } else { observerMethods = new HashSet<ObserverMethod<?>>();