@Inject public CdiInterceptorWrapper(BeanManager beanManager) { // get the original interceptor from the bean manager directly // to avoid CDI bootstrap issues caused by wrong extension ordering final Set<Bean<?>> interceptorBeans = beanManager.getBeans(ValidationInterceptor.class); final Bean<?> interceptorBean = beanManager.resolve(interceptorBeans); this.interceptor = (ValidationInterceptor) beanManager.getReference( interceptorBean, ValidationInterceptor.class, beanManager.createCreationalContext(interceptorBean)); }
@SuppressWarnings("unchecked") private static <T> T getReference(BeanManager bm, Type type, Bean<?> bean) { return (T) bm.getReference(bean, type, bm.createCreationalContext(bean)); }
@Override @SuppressWarnings("unchecked") public <T> List<T> getAllInstances(Type contractOrImpl) { List<T> result = new ArrayList<>(); for (Bean<?> bean : beanManager.getBeans(contractOrImpl)) { CreationalContext<?> ctx = beanManager.createCreationalContext(bean); Object reference = beanManager.getReference(bean, contractOrImpl, ctx); result.add((T) reference); } return result; }
@SuppressWarnings("unchecked") private static <T> T getContextualReference(BeanManager bm, Set<Bean<?>> beans, Class<?> type) { if (beans == null || beans.size() == 0) { return null; } // if we would resolve to multiple beans then BeanManager#resolve would throw an AmbiguousResolutionException Bean<?> bean = bm.resolve(beans); if (bean == null) { return null; } else { CreationalContext<?> creationalContext = bm.createCreationalContext(bean); // if we obtain a contextual reference to a @Dependent scope bean, make sure it is released if(isDependentScoped(bean)) { releaseOnContextClose(creationalContext, bean); } return (T) bm.getReference(bean, type, creationalContext); } }
public Object value(Class<?> type, CreationalContext<?> ctx, BeanManager manager) { if (bean == null) { bean = manager.resolve(manager.getBeans(type, literal)); } return manager.getReference(bean, type, ctx); }
final Bean<BoundSessionContext> sessionContextBean = (Bean<BoundSessionContext>) manager.resolve(manager .getBeans(BoundSessionContext.class, BoundLiteral.INSTANCE)); CreationalContext<?> ctx = manager.createCreationalContext(sessionContextBean); final BoundSessionContext sessionContext = (BoundSessionContext) manager.getReference(sessionContextBean, BoundSessionContext.class, ctx); sessionContext.associate(sessionContexts.get()); sessionContext.activate(); final Bean<BoundRequestContext> requestContextBean = (Bean<BoundRequestContext>) manager.resolve(manager .getBeans(BoundRequestContext.class, BoundLiteral.INSTANCE)); ctx = manager.createCreationalContext(requestContextBean); final BoundRequestContext requestContext = (BoundRequestContext) manager.getReference(requestContextBean, BoundRequestContext.class, ctx); requestContext.associate(requestContexts.get()); .resolve(manager.getBeans(BoundConversationContext.class, BoundLiteral.INSTANCE)); ctx = manager.createCreationalContext(conversationContextBean); final BoundConversationContext conversationContext = (BoundConversationContext) manager.getReference( conversationContextBean, BoundConversationContext.class, ctx); BoundRequest request = new MutableBoundRequest(requestContexts.get(), sessionContexts.get());
@SuppressWarnings("unchecked") private <T> T getInstanceInternal(Type contractOrImpl, Annotation... qualifiers) { Set<Bean<?>> beans = beanManager.getBeans(contractOrImpl, qualifiers); if (beans.isEmpty()) { return null; } Bean<?> bean = beans.iterator().next(); CreationalContext<?> ctx = beanManager.createCreationalContext(bean); return (T) beanManager.getReference(bean, contractOrImpl, ctx); }
private static <T> T resolveInstance(BeanManager bm, Set<Bean<?>> beans, Type type) { Bean<?> bean = bm.resolve(beans); CreationalContext<?> cc = bm.createCreationalContext(bean); T dao = (T) bm.getReference(bean, type, cc); return dao; }
/** * Returns the current injection point. */ public static InjectionPoint getCurrentInjectionPoint(BeanManager beanManager, CreationalContext<?> creationalContext) { Bean<? extends Object> bean = beanManager.resolve(beanManager.getBeans(InjectionPoint.class)); InjectionPoint injectionPoint = (InjectionPoint) beanManager.getReference(bean, InjectionPoint.class, creationalContext); if (injectionPoint == null) { // It's broken in some Weld versions. Below is a work around. bean = beanManager.resolve(beanManager.getBeans(InjectionPointGenerator.class)); injectionPoint = (InjectionPoint) beanManager.getInjectableReference(bean.getInjectionPoints().iterator().next(), creationalContext); } return injectionPoint; }
/** * Obtain a bean reference of given type from the bean manager. * * @param clazz type of the bean to get reference to. * @param bean the {@link Bean} object representing the managed bean. * @param beanManager bean manager used to obtain an instance of the requested bean. * @param <T> type of the bean to be returned. * @return a bean reference or {@code null} if a bean instance cannot be found. */ static <T> T getBeanReference(final Class<T> clazz, final Bean bean, final BeanManager beanManager) { final CreationalContext<?> creationalContext = beanManager.createCreationalContext(bean); final Object result = beanManager.getReference(bean, clazz, creationalContext); return clazz.cast(result); }
final Bean<BoundSessionContext> sessionContextBean = (Bean<BoundSessionContext>) manager.resolve(manager.getBeans( BoundSessionContext.class, BoundLiteral.INSTANCE)); CreationalContext<?> ctx = manager.createCreationalContext(sessionContextBean); final BoundSessionContext sessionContext = (BoundSessionContext) manager.getReference(sessionContextBean, BoundSessionContext.class, ctx); sessionContext.invalidate(); sessionContext.dissociate(sessionContexts.get()); final Bean<BoundRequestContext> requestContextBean = (Bean<BoundRequestContext>) manager.resolve(manager.getBeans( BoundRequestContext.class, BoundLiteral.INSTANCE)); ctx = manager.createCreationalContext(requestContextBean); final BoundRequestContext requestContext = (BoundRequestContext) manager.getReference(requestContextBean, BoundRequestContext.class, ctx); requestContext.invalidate(); .resolve(manager.getBeans(BoundConversationContext.class, BoundLiteral.INSTANCE)); ctx = manager.createCreationalContext(conversationContextBean); final BoundConversationContext conversationContext = (BoundConversationContext) manager.getReference( conversationContextBean, BoundConversationContext.class, ctx); conversationContext.invalidate();
private static Supplier<?> getSupplier(BeanManager beanManager, ParameterizedType supplierType) { Set<Bean<?>> beans = beanManager.getBeans(supplierType); if (beans.isEmpty()) { return null; } Bean<?> bean = beans.iterator().next(); CreationalContext<?> ctx = beanManager.createCreationalContext(bean); return (Supplier<?>) beanManager.getReference(bean, supplierType, ctx); }
@SuppressWarnings("unchecked") private static <T> T getContextualReference(Class<T> type, BeanManager beanManager, Set<Bean<?>> beans) { Object beanReference = null; Bean<?> bean = beanManager.resolve(beans); if (bean != null) { beanReference = beanManager.getReference(bean, type, beanManager.createCreationalContext(bean)); } return (T) beanReference; }
/** * Returns the current injection point. */ public static InjectionPoint getCurrentInjectionPoint(BeanManager beanManager, CreationalContext<?> creationalContext) { Bean<? extends Object> bean = beanManager.resolve(beanManager.getBeans(InjectionPoint.class)); InjectionPoint injectionPoint = (InjectionPoint) beanManager.getReference(bean, InjectionPoint.class, creationalContext); if (injectionPoint == null) { // It's broken in some Weld versions. Below is a work around. bean = beanManager.resolve(beanManager.getBeans(InjectionPointGenerator.class)); injectionPoint = (InjectionPoint) beanManager.getInjectableReference(bean.getInjectionPoints().iterator().next(), creationalContext); } return injectionPoint; }
/** * Returns an instance of the given {@link Bean} from the container. * * @param <S> the actual class type of the {@link Bean}. * @param bean the {@link Bean} defining the instance to create. * @param type the expected component type of the instance created from the {@link Bean}. * @return an instance of the given {@link Bean}. * @see javax.enterprise.inject.spi.BeanManager#getReference(Bean, Type, CreationalContext) * @see javax.enterprise.inject.spi.Bean * @see java.lang.reflect.Type */ @SuppressWarnings("unchecked") protected <S> S getDependencyInstance(Bean<S> bean, Type type) { return (S) beanManager.getReference(bean, type, beanManager.createCreationalContext(bean)); }
/** * Lookup ResteasyCdiExtension instance that was instantiated during CDI bootstrap * * @return ResteasyCdiExtension instance */ private ResteasyCdiExtension lookupResteasyCdiExtension() { Set<Bean<?>> beans = manager.getBeans(ResteasyCdiExtension.class); Bean<?> bean = manager.resolve(beans); if (bean == null) { throw new IllegalStateException(Messages.MESSAGES.unableToObtainResteasyCdiExtension()); } CreationalContext<?> context = manager.createCreationalContext(bean); return (ResteasyCdiExtension) manager.getReference(bean, ResteasyCdiExtension.class, context); } }
private <T> T getReference(Class<T> clazz, BeanManager beanManager) { Set<Bean<?>> beans = beanManager.getBeans(clazz, new AnnotationLiteral<Default>() {}); Iterator<Bean<?>> i = beans.iterator(); if (!i.hasNext()) { return null; } Bean<?> bean = i.next(); CreationalContext<?> context = beanManager.createCreationalContext(bean); return (T) beanManager.getReference(bean, clazz, context); }
@SuppressWarnings("unchecked") private static <T> T getContextualReference(Class<T> type, BeanManager beanManager, Set<Bean<?>> beans) { Object beanReference = null; Bean<?> bean = beanManager.resolve(beans); if (bean != null) { beanReference = beanManager.getReference(bean, type, beanManager.createCreationalContext(bean)); } return (T) beanReference; }
protected Object getReceiver(CreationalContext<T> creationalContext) { Bean<?> declaringBean = getBeanManager().resolve(getBeanManager().getBeans(getDeclaringBeanType(), declaringBeanQualifiers)); return getBeanManager().getReference(declaringBean, declaringBean.getBeanClass(), creationalContext); } }
@Override public RedisClient create(CreationalContext<RedisClient> creationalContext) { CreationalContext<RedisURI> uriCreationalContext = beanManager.createCreationalContext(redisURIBean); RedisURI redisURI = (RedisURI) beanManager.getReference(redisURIBean, RedisURI.class, uriCreationalContext); if (clientResourcesBean != null) { ClientResources clientResources = (ClientResources) beanManager.getReference(clientResourcesBean, ClientResources.class, uriCreationalContext); return RedisClient.create(clientResources, redisURI); } return RedisClient.create(redisURI); }