You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openwebbeans.apache.org by rm...@apache.org on 2014/09/07 21:17:34 UTC

svn commit: r1623110 - in /openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans: component/PassivationBeanWrapper.java component/creation/ManagedBeanBuilder.java util/WebBeansUtil.java

Author: rmannibucau
Date: Sun Sep  7 19:17:34 2014
New Revision: 1623110

URL: http://svn.apache.org/r1623110
Log:
ensure @Inject Bean<X> are done in X

Modified:
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/PassivationBeanWrapper.java
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/ManagedBeanBuilder.java
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/WebBeansUtil.java

Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/PassivationBeanWrapper.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/PassivationBeanWrapper.java?rev=1623110&r1=1623109&r2=1623110&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/PassivationBeanWrapper.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/PassivationBeanWrapper.java Sun Sep  7 19:17:34 2014
@@ -22,7 +22,8 @@ import org.apache.webbeans.config.WebBea
 
 import java.io.ObjectStreamException;
 
-public class PassivationBeanWrapper {
+public class PassivationBeanWrapper
+{
     private static final long serialVersionUID = 1L;
 
     private final String passivationId;

Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/ManagedBeanBuilder.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/ManagedBeanBuilder.java?rev=1623110&r1=1623109&r2=1623110&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/ManagedBeanBuilder.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/ManagedBeanBuilder.java Sun Sep  7 19:17:34 2014
@@ -63,6 +63,7 @@ public class ManagedBeanBuilder<T, M ext
         bean.setEnabled(webBeansContext.getWebBeansUtil().isBeanEnabled(annotatedType, bean.getStereotypes()));
         webBeansContext.getWebBeansUtil().checkManagedBeanCondition(annotatedType);
         WebBeansUtil.checkGenericType(annotatedType.getJavaClass(), beanAttributes.getScope());
+        webBeansContext.getWebBeansUtil().validateBeanInjection(bean);
         webBeansContext.getDeploymentValidationService().validateProxyable(bean);
         return bean;
     }

Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/WebBeansUtil.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/WebBeansUtil.java?rev=1623110&r1=1623109&r2=1623110&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/WebBeansUtil.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/WebBeansUtil.java Sun Sep  7 19:17:34 2014
@@ -1766,6 +1766,30 @@ public final class WebBeansUtil
         return beanAttributes;
     }
 
+    public void validateBeanInjection(final Bean<?> bean)
+    {
+        for (final InjectionPoint injectionPoint : bean.getInjectionPoints())
+        {
+            final Type type = injectionPoint.getType();
+            if (type instanceof ParameterizedType)
+            {
+                final Bean injectionPointBean = injectionPoint.getBean();
+                ParameterizedType pt = (ParameterizedType) type;
+
+                if (pt.getRawType() == Bean.class)
+                {
+                    final Class<?> beanClass = AbstractOwbBean.class.isInstance(injectionPointBean) ?
+                            AbstractOwbBean.class.cast(injectionPointBean).getReturnType() : injectionPointBean.getBeanClass();
+                    final Type beanType = pt.getActualTypeArguments()[0];
+                    if (!GenericsUtil.isAssignableFrom(false, beanClass, beanType))
+                    {
+                        throw new DefinitionException("@Inject Bean<X> can only be done in X, found " + beanType + " and " + beanClass);
+                    }
+                }
+            }
+        }
+    }
+
     private static final class EventCacheKey
     {
         private final Type event;