@SuppressWarnings("unchecked") private void initWithCompletionStage(AsyncProducerMetadata metadata, BeanManager beanManager) { Bean<CompletionStage<T>> bean = (Bean<CompletionStage<T>>) beanManager .resolve(beanManager.getBeans(metadata.producerType, metadata.qualifiers.toArray(new Annotation[] {}))); Object possibleStage = beanManager.getReference(bean, metadata.producerType, creationalContext); if (possibleStage instanceof CompletionStage) { ((CompletionStage<T>) possibleStage).whenComplete((result, throwable) -> { if (throwable != null) { failure(throwable); } else { sucess(result); } }); } else { throw new IllegalStateException("The contextual reference of " + bean + " is not a CompletionStage"); } }
@SuppressWarnings("unchecked") private void initWithWorker(InjectionPoint injectionPoint, Vertx vertx, BeanManager beanManager, Type requiredType) { vertx.<T> executeBlocking((f -> { Set<Bean<?>> beans = beanManager.getBeans(requiredType, injectionPoint.getQualifiers().toArray(new Annotation[] {})); if (beans.isEmpty()) { f.fail(BeanManagerLogger.LOG.injectionPointHasUnsatisfiedDependencies(injectionPoint.getQualifiers(), requiredType, "")); return; } Bean<T> bean = (Bean<T>) beanManager.resolve(beans); T beanInstance = (T) beanManager.getReference(bean, requiredType, creationalContext); if (beanManager.isNormalScope(bean.getScope()) && beanInstance instanceof TargetInstanceProxy) { // Initialize normal scoped bean instance eagerly ((TargetInstanceProxy<?>) beanInstance).getTargetInstance(); } f.complete(beanInstance); }), (r) -> { if (r.succeeded()) { sucess(r.result()); } else { failure(r.cause()); } }); }
@SuppressWarnings("unchecked") private void initWithCompletionStage(Handler<Object> completionStage) { Object possibleStage = completionStage.get(); if (possibleStage instanceof CompletionStage) { ((CompletionStage<T>) possibleStage).whenComplete((result, throwable) -> { if (throwable != null) { failure(throwable); } else { sucess(result); } }); } else { throw new IllegalStateException("The contextual reference of " + completionStage.getBean() + " is not a CompletionStage"); } }
@SuppressWarnings("unchecked") private void initWithWorker(Type requiredType, Annotation[] qualifiers, Vertx vertx, BeanManager beanManager) { vertx.<Object> executeBlocking((f -> { WeldInstance<Object> asyncInstance = instance.select(requiredType, qualifiers); if (asyncInstance.isUnsatisfied()) { f.fail(BeanManagerLogger.LOG.injectionPointHasUnsatisfiedDependencies(Arrays.toString(qualifiers), requiredType, "")); return; } else if (asyncInstance.isAmbiguous()) { f.fail(BeanManagerLogger.LOG.injectionPointHasAmbiguousDependencies(Arrays.toString(qualifiers), requiredType, "")); return; } Handler<Object> handler = asyncInstance.getHandler(); Object beanInstance = handler.get(); if (beanManager.isNormalScope(handler.getBean().getScope()) && beanInstance instanceof TargetInstanceProxy) { // Initialize normal scoped bean instance eagerly ((TargetInstanceProxy<?>) beanInstance).getTargetInstance(); } f.complete(beanInstance); }), (r) -> { if (r.succeeded()) { sucess((T) r.result()); } else { failure(r.cause()); } }); }