You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openwebbeans.apache.org by ge...@apache.org on 2011/01/09 22:39:13 UTC
svn commit: r1057038 - in
/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans:
event/NotificationManager.java portable/events/ProcessProducerFieldImpl.java
portable/events/ProcessProducerMethodImpl.java
Author: gerdogdu
Date: Sun Jan 9 21:39:12 2011
New Revision: 1057038
URL: http://svn.apache.org/viewvc?rev=1057038&view=rev
Log:
[OWB-493] ProcessProducerMethod and ProcessProducerField type parameters are reversed in filtering (?)
Modified:
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/ProcessProducerFieldImpl.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ProcessProducerMethodImpl.java
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=1057038&r1=1057037&r2=1057038&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 Sun Jan 9 21:39:12 2011
@@ -37,7 +37,7 @@ import javax.enterprise.event.Reception;
import javax.enterprise.event.TransactionPhase;
import javax.enterprise.inject.spi.AnnotatedMethod;
import javax.enterprise.inject.spi.ObserverMethod;
-import javax.enterprise.inject.spi.ProcessObserverMethod;
+import javax.enterprise.inject.spi.ProcessProducer;
import javax.enterprise.util.TypeLiteral;
import org.apache.webbeans.annotation.AnyLiteral;
import org.apache.webbeans.component.InjectionTargetBean;
@@ -222,16 +222,16 @@ public final class NotificationManager
Class<?> producerOrObserverReturnClass = genericBeanEvent.getProducerOrObserverType();
if(WebBeansUtil.isDefaultExtensionProducerOrObserverEventType(observerClass))
- {
+ {
+ boolean processProducerEvent = false;
+ if(observerClass.equals(ProcessProducer.class))
+ {
+ processProducerEvent = true;
+ }
+
if(ClassUtil.isParametrizedType(type))
{
- boolean isObserverMethod = false;
- if(observerClass.equals(ProcessObserverMethod.class))
- {
- isObserverMethod = true;
- }
-
- addToMathingWithParametrizedForProducers(isObserverMethod,type, beanClass, producerOrObserverReturnClass, matching);
+ addToMatchingWithParametrizedForProducers(processProducerEvent,type, beanClass, producerOrObserverReturnClass, matching);
}
else
{
@@ -266,6 +266,15 @@ public final class NotificationManager
return matching;
}
+ /**
+ * Returns true if fired event class is assignable with
+ * given observer type argument.
+ * @param beanClass fired event class.
+ * @param observerTypeActualArg actual type argument,
+ * such as in case ProcessProducerField<Book> is Book.class
+ * @return true if fired event class is assignable with
+ * given observer type argument.
+ */
private boolean checkEventTypeParameterForExtensions(Class<?> beanClass, Type observerTypeActualArg)
{
if(ClassUtil.isTypeVariable(observerTypeActualArg))
@@ -333,7 +342,16 @@ public final class NotificationManager
}
- private <T> void addToMathingWithParametrizedForProducers(boolean isObserverMethod,Type type, Class<?> beanClass,
+ /**
+ * Add to matching.
+ * @param <T> generic observer method parameter type
+ * fired event because of observer method or not
+ * @param type one of observer method parameter base type
+ * @param beanClass observer method owner bean class
+ * @param producerOrObserverReturnClass observer even normal class
+ * @param matching set of observer method that match the given type
+ */
+ private <T> void addToMatchingWithParametrizedForProducers(boolean processProducer, Type type, Class<?> beanClass,
Class<?> producerOrObserverReturnClass, Set<ObserverMethod<? super T>> matching )
{
ParameterizedType pt = (ParameterizedType)type;
@@ -348,16 +366,21 @@ public final class NotificationManager
}
}
else
- {
- Type beanClassArg = actualArgs[0];
- Type returnClassArg = actualArgs[1];
+ {
+ //Bean class argument
+ //For observer related event, observer owner bean class.
+ Type beanClassArg = actualArgs[1];
- if(isObserverMethod)
+ //Event payload
+ Type returnClassArg = actualArgs[0];
+
+ //For ProcessProducer<BeanClass, Event Class>
+ if(processProducer)
{
- beanClassArg = actualArgs[1];
- returnClassArg = actualArgs[0];
+ beanClassArg = actualArgs[0];
+ returnClassArg = actualArgs[1];
}
-
+
if(checkEventTypeParameterForExtensions(beanClass, beanClassArg) &&
checkEventTypeParameterForExtensions(producerOrObserverReturnClass, returnClassArg))
{
Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ProcessProducerFieldImpl.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ProcessProducerFieldImpl.java?rev=1057038&r1=1057037&r2=1057038&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ProcessProducerFieldImpl.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ProcessProducerFieldImpl.java Sun Jan 9 21:39:12 2011
@@ -28,8 +28,8 @@ import org.apache.webbeans.component.Pro
*
* @version $Rev$ $Date$
*
- * @param <X> declared bean class
- * @param <T> producer return type info
+ * @param <X> producer field return type
+ * @param <T> producer field bean class type
*/
public class ProcessProducerFieldImpl<X,T> extends ProcessBeanImpl<T> implements ProcessProducerField<X, T>
{
Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ProcessProducerMethodImpl.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ProcessProducerMethodImpl.java?rev=1057038&r1=1057037&r2=1057038&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ProcessProducerMethodImpl.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/events/ProcessProducerMethodImpl.java Sun Jan 9 21:39:12 2011
@@ -29,8 +29,8 @@ import org.apache.webbeans.component.Pro
*
* @version $Rev$ $Date$
*
- * @param <X> declared bean class
- * @param <T> producer return type
+ * @param <X> producer method return type
+ * @param <T> producer method bean class
*/
public class ProcessProducerMethodImpl<X,T> extends ProcessBeanImpl<T> implements ProcessProducerMethod<X, T>
{