DefaultProducerMethod(Bean<T> originalBean, Type declaringBeanType, Set<Type> beanTypes, Set<Annotation> qualifiers, Set<Annotation> declaringBeanQualifiers, AnnotatedMethod<X> method, AnnotatedMethod<X> disposerMethod, BeanManager beanManager) { super(originalBean, declaringBeanType, beanTypes, qualifiers, declaringBeanQualifiers, beanManager); this.producerMethod = new InjectableMethod<X>(method, this, beanManager); if (disposerMethod != null) { this.disposerMethod = new InjectableMethod<X>(disposerMethod, this, beanManager); } else { this.disposerMethod = null; } }
@Override protected T getValue(Object receiver, CreationalContext<T> creationalContext) { return producerMethod.invoke(receiver, creationalContext); }
for (int i = 0; i < getParameters().size(); i++) ParameterValue value = new ParameterValue(i, getParameters().get(i), getBeanManager()); parameterValues.add(redefinition.redefineParameterValue(value)); parameterValues.add(getBeanManager().getInjectableReference(getParameters().get(i), creationalContext));
@Override protected T getValue(Object receiver, CreationalContext<T> creationalContext) { return producerMethod.invoke(receiver, creationalContext); }
private <X> InjectableMethod<X> createInjectableMethod(AnnotatedMethod<X> handlerMethod, Bean<?> bean, BeanManager manager) { return new InjectableMethod<X>(handlerMethod, bean, manager); }
return invoke(receiver, creationalContext, null);
GenericObserverMethod(ObserverMethod<T> originalObserverMethod, AnnotatedMethod<X> observerMethod, Annotation declaringBeanQualifier, Set<Annotation> qualifiers, Set<Annotation> declaringBeanQualifiers, Bean<?> genericBean, BeanManager beanManager) { this.originalObserverMethod = originalObserverMethod; this.observerMethod = new InjectableMethod<X>(observerMethod, genericBean, beanManager); this.beanManager = beanManager; this.declaringBeanType = originalObserverMethod.getBeanClass(); this.qualifiers = qualifiers; Set<Annotation> filteredDeclaringBeanQualifiers = new HashSet<Annotation>(declaringBeanQualifiers); filteredDeclaringBeanQualifiers.remove(AnyLiteral.INSTANCE); this.declaringBeanQualifiers = filteredDeclaringBeanQualifiers.toArray(EMPTY_ANNOTATION_ARRAY); }
@Override public void destroy(T instance, CreationalContext<T> creationalContext) { if (disposerMethod != null) { disposerMethod.invoke(getReceiver(creationalContext), creationalContext); } }
DefaultObserverMethod(ObserverMethod<T> originalObserverMethod, AnnotatedMethod<X> observerMethod, Set<Annotation> declaringBeanQualifiers, Set<Annotation> qualifiers, Bean<?> defaultBean, BeanManager beanManager) { this.originalObserverMethod = originalObserverMethod; this.observerMethod = new InjectableMethod<X>(observerMethod, defaultBean, beanManager); this.beanManager = beanManager; this.declaringBeanQualifiers = declaringBeanQualifiers.toArray(EMPTY_QUALIFIER_ARRAY); this.declaringBeanType = originalObserverMethod.getBeanClass(); this.qualifiers = qualifiers; }
@Override public void destroy(T instance, CreationalContext<T> creationalContext) { if (disposerMethod != null) { try { disposerMethod.invoke(getReceiver(creationalContext), creationalContext); } finally { creationalContext.release(); } } }
GenericProducerMethod(Bean<T> originalBean, GenericIdentifier identifier, AnnotatedMethod<X> method, AnnotatedMethod<X> disposerMethod, final Set<Annotation> qualifiers, final Set<Annotation> genericBeanQualifiers, Class<? extends Annotation> scopeOverride, boolean alternative, Class<?> declaringBeanClass, BeanManager beanManager) { super(originalBean, identifier, qualifiers, genericBeanQualifiers, scopeOverride, Annotateds.createCallableId(method), alternative, declaringBeanClass, beanManager); List<InjectionPoint> injectionPoints = createInjectionPoints(method, this, beanManager); List<InjectionPoint> wrappedInjectionPoints = new ArrayList<InjectionPoint>(); for (InjectionPoint injectionPoint : injectionPoints) { wrappedInjectionPoints.add(wrapInjectionPoint(injectionPoint, genericBeanQualifiers)); } this.producerMethod = new InjectableMethod<X>(method, wrappedInjectionPoints, beanManager); if (disposerMethod != null) { injectionPoints = createInjectionPoints(disposerMethod, this, beanManager); wrappedInjectionPoints = new ArrayList<InjectionPoint>(); for (InjectionPoint injectionPoint : injectionPoints) { wrappedInjectionPoints.add(wrapInjectionPoint(injectionPoint, genericBeanQualifiers)); } this.disposerMethod = new InjectableMethod<X>(disposerMethod, wrappedInjectionPoints, beanManager); } else { this.disposerMethod = null; } }
observerMethod.invoke(instance, creationalContext, new ParameterValueRedefiner()
observerMethod.invoke(instance, creationalContext, new ParameterValueRedefiner()
/** * {@inheritDoc} */ public void notify(final CaughtException<T> event, final BeanManager bm) { CreationalContext<?> ctx = null; try { ctx = bm.createCreationalContext(null); Object handlerInstance = bm.getReference(getBean(bm), this.beanClass, ctx); InjectableMethod<?> im = createInjectableMethod(this.handler, getBean(bm), bm); im.invoke(handlerInstance, ctx, new OutboundParameterValueRedefiner(event, bm, this)); } finally { if (ctx != null) { ctx.release(); } } }