Author: djencks
Date: Sat Jun 11 20:00:52 2011
New Revision: 1134736

URL: http://svn.apache.org/viewvc?rev=1134736&view=rev
Log:
CDI-TCK-215 generic type parameter value may depend on the kind of event we are 
considering

Modified:
    
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/BeanTypeSetResolver.java
    
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/event/NotificationManager.java
    
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ProcessSessionBeanImpl.java
    
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/generics/GProcessAnnotatedType.java
    
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/generics/GProcessBean.java
    
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/generics/GProcessInjectionTarget.java
    
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/generics/GProcessManagedBean.java
    
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/generics/GProcessSessionBean.java
    
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/generics/GenericBeanEvent.java

Modified: 
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/BeanTypeSetResolver.java
URL: 
http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/BeanTypeSetResolver.java?rev=1134736&r1=1134735&r2=1134736&view=diff
==============================================================================
--- 
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/BeanTypeSetResolver.java
 (original)
+++ 
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/BeanTypeSetResolver.java
 Sat Jun 11 20:00:52 2011
@@ -44,7 +44,7 @@ public class BeanTypeSetResolver
      */
     public void startConfiguration()
     {
-        if(this.beanType == Object.class)
+        if(this.beanType == Object.class || (beanType instanceof Class && 
((Class)beanType).isSynthetic()))
         {
             return;
         }

Modified: 
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/event/NotificationManager.java
URL: 
http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/event/NotificationManager.java?rev=1134736&r1=1134735&r2=1134736&view=diff
==============================================================================
--- 
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/event/NotificationManager.java
 (original)
+++ 
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/event/NotificationManager.java
 Sat Jun 11 20:00:52 2011
@@ -202,7 +202,7 @@ public final class NotificationManager
                         
if(WebBeansUtil.isDefaultExtensionBeanEventType(observerClass))
                         {                
                             GenericBeanEvent genericBeanEvent = 
(GenericBeanEvent)event;
-                            beanClass = genericBeanEvent.getBeanClass();
+                            beanClass = 
genericBeanEvent.getBeanClassFor(observerClass);
                             
                             if(ClassUtil.isParametrizedType(type))
                             {

Modified: 
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ProcessSessionBeanImpl.java
URL: 
http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ProcessSessionBeanImpl.java?rev=1134736&r1=1134735&r2=1134736&view=diff
==============================================================================
--- 
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ProcessSessionBeanImpl.java
 (original)
+++ 
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ProcessSessionBeanImpl.java
 Sat Jun 11 20:00:52 2011
@@ -30,7 +30,7 @@ import javax.enterprise.inject.spi.Sessi
  *
  * @param <X> ejb class info
  */
-public class ProcessSessionBeanImpl<X> extends ProcessBeanImpl<Object> 
implements ProcessSessionBean<Object>
+public class ProcessSessionBeanImpl<X> extends ProcessBeanImpl<Object> 
implements ProcessSessionBean<X>
 {
     /**Session bean annotated type*/
     private final AnnotatedType<Object> annotatedBeanClass;

Modified: 
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/generics/GProcessAnnotatedType.java
URL: 
http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/generics/GProcessAnnotatedType.java?rev=1134736&r1=1134735&r2=1134736&view=diff
==============================================================================
--- 
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/generics/GProcessAnnotatedType.java
 (original)
+++ 
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/generics/GProcessAnnotatedType.java
 Sat Jun 11 20:00:52 2011
@@ -31,7 +31,7 @@ public class GProcessAnnotatedType exten
     }
 
     @Override
-    public Class<?> getBeanClass()
+    public Class<?> getBeanClassFor(Class<?> eventClass)
     {
         return getAnnotatedType().getJavaClass();
     }

Modified: 
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/generics/GProcessBean.java
URL: 
http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/generics/GProcessBean.java?rev=1134736&r1=1134735&r2=1134736&view=diff
==============================================================================
--- 
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/generics/GProcessBean.java
 (original)
+++ 
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/generics/GProcessBean.java
 Sat Jun 11 20:00:52 2011
@@ -32,7 +32,7 @@ public class GProcessBean extends Proces
     }
 
     @Override
-    public Class<?> getBeanClass()
+    public Class<?> getBeanClassFor(Class<?> eventClass)
     {
         return getBean().getBeanClass();
     }

Modified: 
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/generics/GProcessInjectionTarget.java
URL: 
http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/generics/GProcessInjectionTarget.java?rev=1134736&r1=1134735&r2=1134736&view=diff
==============================================================================
--- 
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/generics/GProcessInjectionTarget.java
 (original)
+++ 
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/generics/GProcessInjectionTarget.java
 Sat Jun 11 20:00:52 2011
@@ -32,7 +32,7 @@ public class GProcessInjectionTarget ext
     }
 
     @Override
-    public Class<?> getBeanClass()
+    public Class<?> getBeanClassFor(Class<?> eventClass)
     {
         return getAnnotatedType().getJavaClass();
     }

Modified: 
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/generics/GProcessManagedBean.java
URL: 
http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/generics/GProcessManagedBean.java?rev=1134736&r1=1134735&r2=1134736&view=diff
==============================================================================
--- 
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/generics/GProcessManagedBean.java
 (original)
+++ 
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/generics/GProcessManagedBean.java
 Sat Jun 11 20:00:52 2011
@@ -32,7 +32,7 @@ public class GProcessManagedBean extends
     }
 
     @Override
-    public Class<?> getBeanClass()
+    public Class<?> getBeanClassFor(Class<?> eventClass)
     {
         return getBean().getBeanClass();
     }

Modified: 
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/generics/GProcessSessionBean.java
URL: 
http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/generics/GProcessSessionBean.java?rev=1134736&r1=1134735&r2=1134736&view=diff
==============================================================================
--- 
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/generics/GProcessSessionBean.java
 (original)
+++ 
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/generics/GProcessSessionBean.java
 Sat Jun 11 20:00:52 2011
@@ -20,6 +20,7 @@ package org.apache.webbeans.portable.eve
 
 import javax.enterprise.inject.spi.AnnotatedType;
 import javax.enterprise.inject.spi.Bean;
+import javax.enterprise.inject.spi.ProcessSessionBean;
 import javax.enterprise.inject.spi.SessionBeanType;
 
 import org.apache.webbeans.portable.events.ProcessSessionBeanImpl;
@@ -32,9 +33,27 @@ public class GProcessSessionBean extends
         super(bean, annotatedType, name, type);
     }
 
+    /**
+     * This is an exceptional case due to the definition
+     * ProcessSessionBean<X>  extends ProcessManagedBean<Object>
+     *
+     * If we are thinking of this event as a ProcessSessionBean then the bean 
class is X
+     * but if we are thinking of it as a ProcessManagedBean or superclass then 
the bean class
+     * is Object.  See https://issues.jboss.org/browse/CDITCK-215
+     *
+     * @param eventClass the class of event we are treating this event as
+     * @return X.class or Object.class
+     */
     @Override
-    public Class<?> getBeanClass()
+    public Class<?> getBeanClassFor(Class<?> eventClass)
     {
-        return getBean().getBeanClass();
+        if (ProcessSessionBean.class.isAssignableFrom(eventClass))
+        {
+            return getBean().getBeanClass();
+        }
+        else
+        {
+            return Object.class;
+        }
     }
 }

Modified: 
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/generics/GenericBeanEvent.java
URL: 
http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/generics/GenericBeanEvent.java?rev=1134736&r1=1134735&r2=1134736&view=diff
==============================================================================
--- 
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/generics/GenericBeanEvent.java
 (original)
+++ 
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/generics/GenericBeanEvent.java
 Sat Jun 11 20:00:52 2011
@@ -20,5 +20,13 @@ package org.apache.webbeans.portable.eve
 
 public interface GenericBeanEvent
 {
-    public Class<?> getBeanClass();    
+
+    /**
+     * If this is a Foo<X> event and we are considering it as a Bar<Y> event,
+     * returns the generic type of Foo as a Bar.  Normally this is X, but in 
at least one case
+     * (ProcessSessionBean) the generic type is different.
+     * @param eventClass the class of event we are treating this event as
+     * @return the generic type parameter of this event considered as an 
"eventClass"
+     */
+    public Class<?> getBeanClassFor(Class<?> eventClass);
 }


Reply via email to