[weld-commits] Weld SVN: r5748 - core/trunk/impl/src/main/java/org/jboss/weld/bootstrap.
weld-commits at lists.jboss.org
weld-commits at lists.jboss.org
Thu Feb 4 17:03:27 EST 2010
Author: pete.muir at jboss.org
Date: 2010-02-04 17:03:26 -0500 (Thu, 04 Feb 2010)
New Revision: 5748
Modified:
core/trunk/impl/src/main/java/org/jboss/weld/bootstrap/Validator.java
Log:
only validate enabled decorators
Modified: core/trunk/impl/src/main/java/org/jboss/weld/bootstrap/Validator.java
===================================================================
--- core/trunk/impl/src/main/java/org/jboss/weld/bootstrap/Validator.java 2010-02-04 21:22:55 UTC (rev 5747)
+++ core/trunk/impl/src/main/java/org/jboss/weld/bootstrap/Validator.java 2010-02-04 22:03:26 UTC (rev 5748)
@@ -259,7 +259,7 @@
Annotation[] bindings = ij.getQualifiers().toArray(new Annotation[0]);
WeldAnnotated<?, ?> annotatedItem = ResolvableWeldClass.of(ij.getType(), bindings, beanManager);
Set<?> resolvedBeans = beanManager.getBeanResolver().resolve(beanManager.getInjectableBeans(ij));
- if (resolvedBeans.isEmpty())
+ if (!isInjectionPointSatisfied(ij, resolvedBeans, beanManager))
{
throw new DeploymentException(INJECTION_POINT_HAS_UNSATISFIED_DEPENDENCIES, ij, Arrays.toString(bindings));
}
@@ -267,19 +267,23 @@
{
throw new DeploymentException(INJECTION_POINT_HAS_AMBIGUOUS_DEPENDENCIES, ij, Arrays.toString(bindings) + "; Possible dependencies: " + resolvedBeans);
}
- Bean<?> resolvedBean = (Bean<?>) resolvedBeans.iterator().next();
- if (beanManager.getServices().get(MetaAnnotationStore.class).getScopeModel(resolvedBean.getScope()).isNormal() && !Proxies.isTypeProxyable(ij.getType()))
+ // Account for the case this is disabled decorator
+ if (!resolvedBeans.isEmpty())
{
- throw new UnproxyableResolutionException(INJECTION_POINT_HAS_NON_PROXYABLE_DEPENDENCIES, ij);
+ Bean<?> resolvedBean = (Bean<?>) resolvedBeans.iterator().next();
+ if (beanManager.getServices().get(MetaAnnotationStore.class).getScopeModel(resolvedBean.getScope()).isNormal() && !Proxies.isTypeProxyable(ij.getType()))
+ {
+ throw new UnproxyableResolutionException(INJECTION_POINT_HAS_NON_PROXYABLE_DEPENDENCIES, ij);
+ }
+ if (annotatedItem.isPrimitive() && resolvedBean.isNullable())
+ {
+ throw new NullableDependencyException(INJECTION_POINT_HAS_NULLABLE_DEPENDENCIES, ij);
+ }
+ if (ij.getBean() != null && Beans.isPassivatingScope(ij.getBean(), beanManager) && (!ij.isTransient()) && !Beans.isPassivationCapableBean(resolvedBean))
+ {
+ validateInjectionPointPassivationCapable(ij, resolvedBean, beanManager);
+ }
}
- if (annotatedItem.isPrimitive() && resolvedBean.isNullable())
- {
- throw new NullableDependencyException(INJECTION_POINT_HAS_NULLABLE_DEPENDENCIES, ij);
- }
- if (ij.getBean() != null && Beans.isPassivatingScope(ij.getBean(), beanManager) && (!ij.isTransient()) && !Beans.isPassivationCapableBean(resolvedBean))
- {
- validateInjectionPointPassivationCapable(ij, resolvedBean, beanManager);
- }
}
public void validateInjectionPointPassivationCapable(InjectionPoint ij, Bean<?> resolvedBean, BeanManagerImpl beanManager)
@@ -461,6 +465,25 @@
}
}
+
+ private static boolean isInjectionPointSatisfied(InjectionPoint ij, Set<?> resolvedBeans, BeanManagerImpl beanManager)
+ {
+ if (ij.getBean() instanceof Decorator<?>)
+ {
+ if (beanManager.getEnabledDecoratorClasses().contains(ij.getBean().getBeanClass()))
+ {
+ return resolvedBeans.size() > 0;
+ }
+ else
+ {
+ return true;
+ }
+ }
+ else
+ {
+ return resolvedBeans.size() > 0;
+ }
+ }
public void cleanup()
{
More information about the weld-commits
mailing list