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);
}