/** * Implementation of a an observer which checks for EntityManager beans and stores them in {@link #entityManagers} for * later association with corresponding repository beans. * * @param <X> The type. * @param processBean The annotated type as defined by CDI. */ @SuppressWarnings("unchecked") <X> void processBean(@Observes ProcessBean<X> processBean) { Bean<X> bean = processBean.getBean(); for (Type type : bean.getTypes()) { // Check if the bean is an EntityManager. if (type instanceof Class<?> && EntityManager.class.isAssignableFrom((Class<?>) type)) { Set<Annotation> qualifiers = new HashSet<Annotation>(bean.getQualifiers()); if (bean.isAlternative() || !entityManagers.containsKey(qualifiers)) { LOGGER.debug("Discovered '{}' with qualifiers {}.", EntityManager.class.getName(), qualifiers); entityManagers.put(qualifiers, (Bean<EntityManager>) bean); } } } }
if (bean.isAlternative() || !redisUris.containsKey(qualifiers)) { LOGGER.debug(String.format("Discovered '%s' with qualifiers %s.", RedisURI.class.getName(), qualifiers)); redisUris.put(qualifiers, (Bean<RedisURI>) bean); if (bean.isAlternative() || !clientResources.containsKey(qualifiers)) { LOGGER.debug(String.format("Discovered '%s' with qualifiers %s.", ClientResources.class.getName(), qualifiers));
@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)); }
@Override public boolean isAlternative() { return bean.isAlternative(); }
@Override public boolean isAlternative() { return bean.isAlternative(); }
private boolean isAlternativeBean(Class<?> enabledClass, Multimap<Class<?>, Bean<?>> beansByClass) { // check that the class is a bean class of at least one alternative for (Bean<?> bean : beansByClass.get(enabledClass)) { if (bean.isAlternative()) { return true; } } return false; }
private boolean isAlternativeBean(Class<?> enabledClass, Multimap<Class<?>, Bean<?>> beansByClass) { // check that the class is a bean class of at least one alternative for (Bean<?> bean : beansByClass.get(enabledClass)) { if (bean.isAlternative()) { return true; } } return false; }
@Override public boolean isAlternative() { return getBean().isAlternative(); }
static Set<Bean<?>> findAlternativeStereotypeBeans(Class<? extends Annotation> stereotype, Probe probe) { Set<Bean<?>> beans = new HashSet<Bean<?>>(); for (Bean<?> bean : probe.getBeans()) { if (bean.isAlternative() && bean.getStereotypes().contains(stereotype)) { beans.add(bean); } } return beans; }
static Set<Bean<?>> findAlternativeStereotypeBeans(Class<? extends Annotation> stereotype, Probe probe) { Set<Bean<?>> beans = new HashSet<Bean<?>>(); for (Bean<?> bean : probe.getBeans()) { if (bean.isAlternative() && bean.getStereotypes().contains(stereotype)) { beans.add(bean); } } return beans; }
static Set<Bean<?>> findAlternativeStereotypeBeans(Class<? extends Annotation> stereotype, Probe probe) { Set<Bean<?>> beans = new HashSet<Bean<?>>(); for (Bean<?> bean : probe.getBeans()) { if (bean.isAlternative() && bean.getStereotypes().contains(stereotype)) { beans.add(bean); } } return beans; }
static Set<Bean<?>> findAlternativeStereotypeBeans(Class<? extends Annotation> stereotype, Probe probe) { Set<Bean<?>> beans = new HashSet<Bean<?>>(); for (Bean<?> bean : probe.getBeans()) { if (bean.isAlternative() && bean.getStereotypes().contains(stereotype)) { beans.add(bean); } } return beans; }
static Set<Bean<?>> findAlternativeStereotypeBeans(Class<? extends Annotation> stereotype, Probe probe) { Set<Bean<?>> beans = new HashSet<Bean<?>>(); for (Bean<?> bean : probe.getBeans()) { if (bean.isAlternative() && bean.getStereotypes().contains(stereotype)) { beans.add(bean); } } return beans; }
static Bean<?> findAlternativeBean(Class<?> beanClass, Probe probe) { for (Bean<?> bean : probe.getBeans()) { if (bean.isAlternative() && beanClass.equals(bean.getBeanClass())) { return bean; } } return null; }
static Bean<?> findAlternativeBean(Class<?> beanClass, Probe probe) { for (Bean<?> bean : probe.getBeans()) { if (bean.isAlternative() && beanClass.equals(bean.getBeanClass())) { return bean; } } return null; }
static Bean<?> findAlternativeBean(Class<?> beanClass, Probe probe) { for (Bean<?> bean : probe.getBeans()) { if (bean.isAlternative() && beanClass.equals(bean.getBeanClass())) { return bean; } } return null; }
@Override public boolean test(Bean<?> bean) { return testBda(bda, bean) && testEquals(kind, BeanKind.from(bean)) && testContainsIgnoreCase(beanClass, bean.getBeanClass()) && testContainsIgnoreCase(scope, bean.getScope()) && testAnyContains(beanType, bean.getTypes()) && testAnyContains(qualifier, bean.getQualifiers()) && testEquals(isAlternative, bean.isAlternative()) && testAnyContains(stereotypes, bean.getStereotypes()) && testUnused(bean); }
@Override public boolean test(Bean<?> bean) { return testBda(bda, bean) && testEquals(kind, BeanKind.from(bean)) && testContainsIgnoreCase(beanClass, bean.getBeanClass()) && testContainsIgnoreCase(scope, bean.getScope()) && testAnyContains(beanType, bean.getTypes()) && testAnyContains(qualifier, bean.getQualifiers()) && testEquals(isAlternative, bean.isAlternative()) && testAnyContains(stereotypes, bean.getStereotypes()) && testUnused(bean); }
@Override public boolean test(Bean<?> bean) { return testBda(bda, bean) && testEquals(kind, BeanKind.from(bean)) && testContainsIgnoreCase(beanClass, bean.getBeanClass()) && testContainsIgnoreCase(scope, bean.getScope()) && testAnyContains(beanType, bean.getTypes()) && testAnyContains(qualifier, bean.getQualifiers()) && testEquals(isAlternative, bean.isAlternative()) && testAnyContains(stereotypes, bean.getStereotypes()) && testUnused(bean); }
@Override public boolean test(Bean<?> bean) { return testBda(bda, bean) && testEquals(kind, BeanKind.from(bean)) && testContainsIgnoreCase(beanClass, bean.getBeanClass()) && testContainsIgnoreCase(scope, bean.getScope()) && testAnyContains(beanType, bean.getTypes()) && testAnyContains(qualifier, bean.getQualifiers()) && testEquals(isAlternative, bean.isAlternative()) && testAnyContains(stereotypes, bean.getStereotypes()) && testUnused(bean); }