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 2012/11/13 17:25:56 UTC

svn commit: r1408825 - /openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/ClassUtil.java

Author: rmannibucau
Date: Tue Nov 13 16:25:55 2012
New Revision: 1408825

URL: http://svn.apache.org/viewvc?rev=1408825&view=rev
Log:
OWB-720 trying to get generic type from superclass to get a better matching on injection points

Modified:
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/ClassUtil.java

Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/ClassUtil.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/ClassUtil.java?rev=1408825&r1=1408824&r2=1408825&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/ClassUtil.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/ClassUtil.java Tue Nov 13 16:25:55 2012
@@ -18,6 +18,14 @@
  */
 package org.apache.webbeans.util;
 
+import org.apache.webbeans.config.BeanTypeSetResolver;
+import org.apache.webbeans.config.WebBeansContext;
+import org.apache.webbeans.exception.WebBeansException;
+import org.apache.webbeans.logger.WebBeansLoggerFacade;
+
+import javax.enterprise.event.Event;
+import javax.enterprise.inject.spi.InjectionPoint;
+import javax.inject.Provider;
 import java.lang.reflect.Field;
 import java.lang.reflect.GenericArrayType;
 import java.lang.reflect.Method;
@@ -37,15 +45,6 @@ import java.util.Set;
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
-import javax.enterprise.event.Event;
-import javax.enterprise.inject.spi.InjectionPoint;
-import javax.inject.Provider;
-
-import org.apache.webbeans.config.BeanTypeSetResolver;
-import org.apache.webbeans.config.WebBeansContext;
-import org.apache.webbeans.exception.WebBeansException;
-import org.apache.webbeans.logger.WebBeansLoggerFacade;
-
 /**
  * Utility classes with respect to the class operations.
  *
@@ -603,19 +602,39 @@ public final class ClassUtil
         //Bean type is class and required type is parametrized
         else if(beanType instanceof Class && requiredType instanceof ParameterizedType)
         {
-            Class<?> clazzBeanType = (Class<?>)beanType;
-            ParameterizedType ptReq = (ParameterizedType)requiredType;
-            Class<?> clazzReqType = (Class<?>)ptReq.getRawType();
-            
+            final Class<?> clazzBeanType = (Class<?>)beanType;
+            final ParameterizedType ptReq = (ParameterizedType)requiredType;
+            final Class<?> clazzReqType = (Class<?>)ptReq.getRawType();
+            final Type genericSuperClass = clazzBeanType.getGenericSuperclass();
+
             if(Provider.class.isAssignableFrom(clazzReqType) ||
                     Event.class.isAssignableFrom(clazzReqType))
             {
                 if(isClassAssignable(clazzReqType, clazzBeanType))
                 {
                     return true;
-                }    
+                }
             }
-                        
+            else if (genericSuperClass instanceof ParameterizedType)
+            {
+                final Type[] params = ((ParameterizedType) genericSuperClass).getActualTypeArguments();
+                final Type[] requiredParams = ((ParameterizedType) requiredType).getActualTypeArguments();
+                if (params.length != requiredParams.length)
+                {
+                    return false;
+                }
+
+                for (int i = 0; i < params.length; i++)
+                {
+                    if (!isAssignable(params[i], requiredParams[i]))
+                    {
+                        return false;
+                    }
+                }
+
+                return isClassAssignable(clazzReqType, clazzBeanType);
+            }
+
             return false;
         }
         else



Re: svn commit: r1408825 - /openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/ClassUtil.java

Posted by Romain Manni-Bucau <rm...@gmail.com>.
Oops sorry, will take care next time
Le 14 nov. 2012 00:01, "Mark Struberg" <st...@yahoo.de> a écrit :

> change is fine but please turn off ANY reformatting in ASF projects!
>
> This is really a general note and not only you ;)
>
> The import order you are using might be slightly different than the one
> from another committer. And then we end up with changing those lines back
> and forth over and over again...
>
>
> And folks, please also make sure that you never commit tabs!
>
> LieGrue,
> strub
>
>
>
> ----- Original Message -----
> > From: "rmannibucau@apache.org" <rm...@apache.org>
> > To: commits@openwebbeans.apache.org
> > Cc:
> > Sent: Tuesday, November 13, 2012 5:25 PM
> > Subject: svn commit: r1408825 -
> /openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/ClassUtil.java
> >
> > Author: rmannibucau
> > Date: Tue Nov 13 16:25:55 2012
> > New Revision: 1408825
> >
> > URL: http://svn.apache.org/viewvc?rev=1408825&view=rev
> > Log:
> > OWB-720 trying to get generic type from superclass to get a better
> matching on
> > injection points
> >
> > Modified:
> >
> >
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/ClassUtil.java
> >
> > Modified:
> >
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/ClassUtil.java
> > URL:
> >
> http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/ClassUtil.java?rev=1408825&r1=1408824&r2=1408825&view=diff
> >
> ==============================================================================
> > ---
> >
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/ClassUtil.java
> > (original)
> > +++
> >
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/ClassUtil.java
> > Tue Nov 13 16:25:55 2012
> > @@ -18,6 +18,14 @@
> >   */
> > package org.apache.webbeans.util;
> >
> > +import org.apache.webbeans.config.BeanTypeSetResolver;
> > +import org.apache.webbeans.config.WebBeansContext;
> > +import org.apache.webbeans.exception.WebBeansException;
> > +import org.apache.webbeans.logger.WebBeansLoggerFacade;
> > +
> > +import javax.enterprise.event.Event;
> > +import javax.enterprise.inject.spi.InjectionPoint;
> > +import javax.inject.Provider;
> > import java.lang.reflect.Field;
> > import java.lang.reflect.GenericArrayType;
> > import java.lang.reflect.Method;
> > @@ -37,15 +45,6 @@ import java.util.Set;
> > import java.util.logging.Level;
> > import java.util.logging.Logger;
> >
> > -import javax.enterprise.event.Event;
> > -import javax.enterprise.inject.spi.InjectionPoint;
> > -import javax.inject.Provider;
> > -
> > -import org.apache.webbeans.config.BeanTypeSetResolver;
> > -import org.apache.webbeans.config.WebBeansContext;
> > -import org.apache.webbeans.exception.WebBeansException;
> > -import org.apache.webbeans.logger.WebBeansLoggerFacade;
> > -
> > /**
> >   * Utility classes with respect to the class operations.
> >   *
> > @@ -603,19 +602,39 @@ public final class ClassUtil
> >          //Bean type is class and required type is parametrized
> >          else if(beanType instanceof Class && requiredType instanceof
> > ParameterizedType)
> >          {
> > -            Class<?> clazzBeanType = (Class<?>)beanType;
> > -            ParameterizedType ptReq = (ParameterizedType)requiredType;
> > -            Class<?> clazzReqType = (Class<?>)ptReq.getRawType();
> > -
> > +            final Class<?> clazzBeanType = (Class<?>)beanType;
> > +            final ParameterizedType ptReq =
> (ParameterizedType)requiredType;
> > +            final Class<?> clazzReqType =
> > (Class<?>)ptReq.getRawType();
> > +            final Type genericSuperClass =
> > clazzBeanType.getGenericSuperclass();
> > +
> >              if(Provider.class.isAssignableFrom(clazzReqType) ||
> >                      Event.class.isAssignableFrom(clazzReqType))
> >              {
> >                  if(isClassAssignable(clazzReqType, clazzBeanType))
> >                  {
> >                      return true;
> > -                }
> > +                }
> >              }
> > -
> > +            else if (genericSuperClass instanceof ParameterizedType)
> > +            {
> > +                final Type[] params = ((ParameterizedType)
> > genericSuperClass).getActualTypeArguments();
> > +                final Type[] requiredParams = ((ParameterizedType)
> > requiredType).getActualTypeArguments();
> > +                if (params.length != requiredParams.length)
> > +                {
> > +                    return false;
> > +                }
> > +
> > +                for (int i = 0; i < params.length; i++)
> > +                {
> > +                    if (!isAssignable(params[i], requiredParams[i]))
> > +                    {
> > +                        return false;
> > +                    }
> > +                }
> > +
> > +                return isClassAssignable(clazzReqType, clazzBeanType);
> > +            }
> > +
> >              return false;
> >          }
> >          else
> >
>

Re: svn commit: r1408825 - /openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/ClassUtil.java

Posted by Mark Struberg <st...@yahoo.de>.
change is fine but please turn off ANY reformatting in ASF projects!

This is really a general note and not only you ;)

The import order you are using might be slightly different than the one from another committer. And then we end up with changing those lines back and forth over and over again...


And folks, please also make sure that you never commit tabs!

LieGrue,
strub



----- Original Message -----
> From: "rmannibucau@apache.org" <rm...@apache.org>
> To: commits@openwebbeans.apache.org
> Cc: 
> Sent: Tuesday, November 13, 2012 5:25 PM
> Subject: svn commit: r1408825 - /openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/ClassUtil.java
> 
> Author: rmannibucau
> Date: Tue Nov 13 16:25:55 2012
> New Revision: 1408825
> 
> URL: http://svn.apache.org/viewvc?rev=1408825&view=rev
> Log:
> OWB-720 trying to get generic type from superclass to get a better matching on 
> injection points
> 
> Modified:
>     
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/ClassUtil.java
> 
> Modified: 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/ClassUtil.java
> URL: 
> http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/ClassUtil.java?rev=1408825&r1=1408824&r2=1408825&view=diff
> ==============================================================================
> --- 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/ClassUtil.java 
> (original)
> +++ 
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/ClassUtil.java 
> Tue Nov 13 16:25:55 2012
> @@ -18,6 +18,14 @@
>   */
> package org.apache.webbeans.util;
> 
> +import org.apache.webbeans.config.BeanTypeSetResolver;
> +import org.apache.webbeans.config.WebBeansContext;
> +import org.apache.webbeans.exception.WebBeansException;
> +import org.apache.webbeans.logger.WebBeansLoggerFacade;
> +
> +import javax.enterprise.event.Event;
> +import javax.enterprise.inject.spi.InjectionPoint;
> +import javax.inject.Provider;
> import java.lang.reflect.Field;
> import java.lang.reflect.GenericArrayType;
> import java.lang.reflect.Method;
> @@ -37,15 +45,6 @@ import java.util.Set;
> import java.util.logging.Level;
> import java.util.logging.Logger;
> 
> -import javax.enterprise.event.Event;
> -import javax.enterprise.inject.spi.InjectionPoint;
> -import javax.inject.Provider;
> -
> -import org.apache.webbeans.config.BeanTypeSetResolver;
> -import org.apache.webbeans.config.WebBeansContext;
> -import org.apache.webbeans.exception.WebBeansException;
> -import org.apache.webbeans.logger.WebBeansLoggerFacade;
> -
> /**
>   * Utility classes with respect to the class operations.
>   *
> @@ -603,19 +602,39 @@ public final class ClassUtil
>          //Bean type is class and required type is parametrized
>          else if(beanType instanceof Class && requiredType instanceof 
> ParameterizedType)
>          {
> -            Class<?> clazzBeanType = (Class<?>)beanType;
> -            ParameterizedType ptReq = (ParameterizedType)requiredType;
> -            Class<?> clazzReqType = (Class<?>)ptReq.getRawType();
> -            
> +            final Class<?> clazzBeanType = (Class<?>)beanType;
> +            final ParameterizedType ptReq = (ParameterizedType)requiredType;
> +            final Class<?> clazzReqType = 
> (Class<?>)ptReq.getRawType();
> +            final Type genericSuperClass = 
> clazzBeanType.getGenericSuperclass();
> +
>              if(Provider.class.isAssignableFrom(clazzReqType) ||
>                      Event.class.isAssignableFrom(clazzReqType))
>              {
>                  if(isClassAssignable(clazzReqType, clazzBeanType))
>                  {
>                      return true;
> -                }    
> +                }
>              }
> -                        
> +            else if (genericSuperClass instanceof ParameterizedType)
> +            {
> +                final Type[] params = ((ParameterizedType) 
> genericSuperClass).getActualTypeArguments();
> +                final Type[] requiredParams = ((ParameterizedType) 
> requiredType).getActualTypeArguments();
> +                if (params.length != requiredParams.length)
> +                {
> +                    return false;
> +                }
> +
> +                for (int i = 0; i < params.length; i++)
> +                {
> +                    if (!isAssignable(params[i], requiredParams[i]))
> +                    {
> +                        return false;
> +                    }
> +                }
> +
> +                return isClassAssignable(clazzReqType, clazzBeanType);
> +            }
> +
>              return false;
>          }
>          else
>