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 2009/11/03 19:37:08 UTC
svn commit: r832501 - in /incubator/openwebbeans/trunk/webbeans-impl/src:
main/java/org/apache/webbeans/intercept/
main/java/org/apache/webbeans/intercept/webbeans/
main/java/org/apache/webbeans/util/
test/java/org/apache/webbeans/test/servlet/
Author: gerdogdu
Date: Tue Nov 3 18:37:07 2009
New Revision: 832501
URL: http://svn.apache.org/viewvc?rev=832501&view=rev
Log:
Patches for OWB-157,159,160. Thanks to Eric Covener.
Modified:
incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/WebBeansInterceptorConfig.java
incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/webbeans/WebBeansInterceptor.java
incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/WebBeansUtil.java
incubator/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/servlet/TestContext.java
Modified: incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/WebBeansInterceptorConfig.java
URL: http://svn.apache.org/viewvc/incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/WebBeansInterceptorConfig.java?rev=832501&r1=832500&r2=832501&view=diff
==============================================================================
--- incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/WebBeansInterceptorConfig.java (original)
+++ incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/WebBeansInterceptorConfig.java Tue Nov 3 18:37:07 2009
@@ -86,6 +86,7 @@
public static void configure(BaseBean<?> component, List<InterceptorData> stack)
{
Class<?> clazz = component.getReturnType();
+ Set<Interceptor<?>> componentInterceptors = null;
if (AnnotationUtil.hasInterceptorBindingMetaAnnotation(clazz.getDeclaredAnnotations()))
{
@@ -127,14 +128,14 @@
anns = new Annotation[bindingTypeSet.size()];
anns = bindingTypeSet.toArray(anns);
- Set<Interceptor<?>> set = findDeployedWebBeansInterceptor(anns);
+ componentInterceptors = findDeployedWebBeansInterceptor(anns);
// Adding class interceptors
- addComponentInterceptors(set, stack);
+ addComponentInterceptors(componentInterceptors, stack);
}
// Method level interceptors.
- addMethodInterceptors(clazz, stack);
+ addMethodInterceptors(clazz, stack, componentInterceptors);
}
@@ -154,7 +155,7 @@
}
- private static void addMethodInterceptors(Class<?> clazz, List<InterceptorData> stack)
+ private static void addMethodInterceptors(Class<?> clazz, List<InterceptorData> stack, Set<Interceptor<?>> componentInterceptors)
{
Method[] methods = clazz.getDeclaredMethods();
@@ -195,6 +196,12 @@
result = set.toArray(result);
Set<Interceptor<?>> setInterceptors = findDeployedWebBeansInterceptor(result);
+
+ if(componentInterceptors != null)
+ {
+ setInterceptors.removeAll(componentInterceptors);
+ }
+
Iterator<Interceptor<?>> it = setInterceptors.iterator();
while (it.hasNext())
@@ -242,14 +249,14 @@
while (it.hasNext())
{
interceptor = (WebBeansInterceptor<?>) it.next();
-
+
if (interceptor.hasBinding(bindingTypes, listAnnot))
{
set.add(interceptor);
set.addAll(interceptor.getMetaInceptors());
}
}
-
+
return set;
}
}
Modified: incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/webbeans/WebBeansInterceptor.java
URL: http://svn.apache.org/viewvc/incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/webbeans/WebBeansInterceptor.java?rev=832501&r1=832500&r2=832501&view=diff
==============================================================================
--- incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/webbeans/WebBeansInterceptor.java (original)
+++ incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/webbeans/WebBeansInterceptor.java Tue Nov 3 18:37:07 2009
@@ -113,12 +113,12 @@
}
/**
- * Checks whether this interceptor has given binding types with
+ * Checks whether all of this interceptors binding types are present on the bean, with
* {@link NonBinding} member values.
*
- * @param bindingTypes binding types
- * @param annots binding types annots.
- * @return true if binding types exist ow false
+ * @param bindingTypes binding types of bean
+ * @param annots binding types annots of bean
+ * @return true if all binding types of this interceptor exist ow false
*/
public boolean hasBinding(List<Class<? extends Annotation>> bindingTypes, List<Annotation> annots)
{
@@ -135,24 +135,22 @@
return false;
}
- int i = 0;
- for (Class<? extends Annotation> bindingType : bindingTypes)
+ /* This interceptor is enabled if all of its interceptor bindings are present on the bean */
+ for (Class<? extends Annotation> bindingType : this.interceptorBindingSet.keySet())
{
- Annotation target = this.interceptorBindingSet.get(bindingType);
-
- if (target == null)
- {
- return false;
- }
-
- if (!AnnotationUtil.hasAnnotationMember(bindingType, annots.get(i), target))
- {
- return false;
- }
-
- i++;
+ int index = bindingTypes.indexOf(bindingType);
+ if (index < 0)
+ {
+ return false; /* at least one of this interceptors types is not in the beans bindingTypes */
+ }
+
+ if (!AnnotationUtil.hasAnnotationMember(bindingTypes.get(index), annots.get(index), this.interceptorBindingSet.get(bindingType)))
+
+ {
+ return false;
+ }
}
-
+
return true;
}
Modified: incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/WebBeansUtil.java
URL: http://svn.apache.org/viewvc/incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/WebBeansUtil.java?rev=832501&r1=832500&r2=832501&view=diff
==============================================================================
--- incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/WebBeansUtil.java (original)
+++ incubator/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/WebBeansUtil.java Tue Nov 3 18:37:07 2009
@@ -1789,7 +1789,8 @@
if (component != null)
{
- WebBeansInterceptorConfig.configureInterceptorClass((ManagedBean<Object>) component, clazz.getDeclaredAnnotations());
+ WebBeansInterceptorConfig.configureInterceptorClass((ManagedBean<Object>) component,
+ AnnotationUtil.getInterceptorBindingMetaAnnotations(clazz.getDeclaredAnnotations()));
}
}
Modified: incubator/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/servlet/TestContext.java
URL: http://svn.apache.org/viewvc/incubator/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/servlet/TestContext.java?rev=832501&r1=832500&r2=832501&view=diff
==============================================================================
--- incubator/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/servlet/TestContext.java (original)
+++ incubator/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/servlet/TestContext.java Tue Nov 3 18:37:07 2009
@@ -71,6 +71,7 @@
import org.apache.webbeans.test.sterotype.StereoWithSessionScope;
import org.apache.webbeans.test.sterotype.StereoWithSessionScope2;
import org.apache.webbeans.test.unittests.xml.XMLTest;
+import org.apache.webbeans.util.AnnotationUtil;
import org.apache.webbeans.util.WebBeansUtil;
import org.apache.webbeans.xml.WebBeansXMLConfigurator;
import org.apache.webbeans.xml.XMLUtil;
@@ -430,7 +431,8 @@
{
InterceptorUtil.checkInterceptorConditions(clazz);
component = ManagedBeanConfigurator.define(clazz, WebBeansType.INTERCEPTOR);
- WebBeansInterceptorConfig.configureInterceptorClass((ManagedBean<Object>) component, clazz.getDeclaredAnnotations());
+ WebBeansInterceptorConfig.configureInterceptorClass((ManagedBean<Object>) component,
+ AnnotationUtil.getInterceptorBindingMetaAnnotations(clazz.getDeclaredAnnotations()));
}
}