@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)); }
private static Bean<?> getBean(final String ref, final BeanManager beanManager) { if (beanManager == null) { return null; } BatchLogger.LOGGER.tracef("Looking up bean reference for '%s'", ref); final Set<Bean<?>> beans = beanManager.getBeans(ref); final Bean<?> bean = beanManager.resolve(beans); if (bean != null) { BatchLogger.LOGGER.tracef("Found bean '%s' for reference '%s'", bean, ref); } else { BatchLogger.LOGGER.tracef("No bean found for reference '%s;'", ref); } return bean; }
this.creationalContext = beanManager.createCreationalContext( null ); Set<Bean<?>> beans = beanManager.getBeans( beanType, new NamedBeanQualifier( beanName ) ); this.bean = (Bean<B>) beanManager.resolve( beans ); this.beanInstance = bean.create( 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); }
@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); } }
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());
/** * 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; }
BeanManager beanManager = (BeanManager) new InitialContext().lookup("java:comp/BeanManager"); Bean<UserDAO> userDAObean = (Bean<UserDAO>) beanManager.resolve(beanManager.getBeans(UserDAO.class)); CreationalContext<?> creationalContext = beanManager.createCreationalContext(null); UserDAO userDAO = userDAObean.create(creationalContext);
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; }
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();
/** * 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; }
@Inject BeanManager beanManager; //inject bean manager into the class void someMethod() { Set<Bean<E>> possibleBeans = beanManager.getBeans("aBeanName"); Bean<E> bean = (Bean<E>) beanManager.resolve(possibleBeans); E instance = beanManager.getContext(bean.getScope()).get(bean, beanManager.createCreationalContext(bean)); }
@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; }
/** * 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); } }
/** * 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; }
@Override public Object call() throws Exception { Bean<R> bean = (Bean<R>) manager.resolve(manager.getBeans(actualType, Annotations.getQualifiersFrom(actualType))); context = manager.createCreationalContext(bean); Object delegate = manager.getInjectableReference(injectionPoint, context); return Proxies.enhance(loader, delegate, new ClassLoaderInterceptor(loader, delegate)); } };
@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; }
@Override public CompletionStage<Object> construct(boolean unwrapAsync) { Set<Bean<?>> beans = manager.getBeans(type); if (beans.size() > 1) { Set<Bean<?>> modifiableBeans = new HashSet<Bean<?>>(); modifiableBeans.addAll(beans); // Ambiguous dependency may occur if a resource has subclasses // Therefore we remove those beans for (Iterator<Bean<?>> iterator = modifiableBeans.iterator(); iterator.hasNext();) { Bean<?> bean = iterator.next(); if (!bean.getBeanClass().equals(type) && !bean.isAlternative()) { // remove Beans that have clazz in their type closure but not as a base class iterator.remove(); } } beans = modifiableBeans; } if (LogMessages.LOGGER.isDebugEnabled()) //keep this check for performance reasons, as toString() is expensive on CDI Bean { LogMessages.LOGGER.debug(Messages.MESSAGES.beansFound(type, beans)); } Bean<?> bean = manager.resolve(beans); CreationalContext<?> context = manager.createCreationalContext(bean); return CompletableFuture.completedFuture(manager.getReference(bean, type, context)); }
public <T> T getBean(final Class<T> type) { // ATM we recommand getting it once but if needed we can cache it in a concurrent map final BeanManager manager = getBeanManager(); final Bean<?> bean = manager.resolve(manager.getBeans(type)); if (!manager.isNormalScope(bean.getScope()) && !type.isAnnotationPresent(Singleton.class)) { throw new IllegalArgumentException("Only normal scoped instances or singleton EJB can use getBean()"); } return type.cast(manager.getReference(bean, type, null)); }
@Override public Object call() throws Exception { Bean<R> bean = (Bean<R>) manager.resolve(manager.getBeans(actualType, ServiceRegistryImpl.getQualifiersFrom(actualType))); context = manager.createCreationalContext(bean); Object delegate = manager.getInjectableReference(injectionPoint, context); return Proxies.enhance(addon.getClassLoader(), delegate, new ClassLoaderInterceptor(addon.getClassLoader(), delegate)); } };