Author: rmannibucau
Date: Fri Apr 12 12:28:39 2013
New Revision: 1467251

URL: http://svn.apache.org/r1467251
Log:
OWB-824 OWB-825 auto interception through @Interceptors + AT for Annotated 
field event

Modified:
    
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/BeansDeployer.java
    
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/InterceptorResolutionService.java

Modified: 
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/BeansDeployer.java
URL: 
http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/BeansDeployer.java?rev=1467251&r1=1467250&r2=1467251&view=diff
==============================================================================
--- 
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/BeansDeployer.java
 (original)
+++ 
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/BeansDeployer.java
 Fri Apr 12 12:28:39 2013
@@ -927,7 +927,10 @@ public class BeansDeployer
                     webBeansContext.getWebBeansUtil().inspectErrorStack("There 
are errors that are added by ProcessProducer event observers for"
                             + " ProducerFields. Look at logs for further 
details");
 
-                    annotatedFields.put(producerField, null);
+                    annotatedFields.put(producerField,
+                            
webBeansContext.getAnnotatedElementFactory().newAnnotatedField(
+                                producerField.getCreatorField(),
+                                
webBeansContext.getAnnotatedElementFactory().newAnnotatedType(producerField.getBeanClass())));
                 }
 
                 Map<ObserverMethod<?>,AnnotatedMethod<?>> observerMethodsMap =

Modified: 
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/InterceptorResolutionService.java
URL: 
http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/InterceptorResolutionService.java?rev=1467251&r1=1467250&r2=1467251&view=diff
==============================================================================
--- 
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/InterceptorResolutionService.java
 (original)
+++ 
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/InterceptorResolutionService.java
 Fri Apr 12 12:28:39 2013
@@ -95,7 +95,7 @@ public class InterceptorResolutionServic
         // pick up EJB-style interceptors from a class level
         List<Interceptor<?>> classLevelEjbInterceptors = new 
ArrayList<Interceptor<?>>();
 
-        collectEjbInterceptors(classLevelEjbInterceptors, annotatedType, 
false);
+        collectEjbInterceptors(classLevelEjbInterceptors, annotatedType, 
false, beanTypes);
 
         // pick up the decorators
         List<Decorator<?>> decorators = 
beanManager.resolveDecorators(beanTypes, AnnotationUtil.asArray(qualifiers));
@@ -264,7 +264,7 @@ public class InterceptorResolutionServic
         }
     }
 
-    private <T> void collectEjbInterceptors(List<Interceptor<?>> 
ejbInterceptors, Annotated annotated, boolean unproxyable)
+    private <T> void collectEjbInterceptors(List<Interceptor<?>> 
ejbInterceptors, Annotated annotated, boolean unproxyable, Set<Type> types)
     {
         Interceptors interceptorsAnnot = 
annotated.getAnnotation(Interceptors.class);
         if (interceptorsAnnot != null)
@@ -274,8 +274,18 @@ public class InterceptorResolutionServic
                 throw new WebBeansConfigurationException(annotated + " is not 
proxyable, but an Interceptor got defined on it!");
             }
 
+            if (types == null)
+            {
+                types = Collections.emptySet();
+            }
+
             for (Class interceptorClass : interceptorsAnnot.value())
             {
+                if (types.contains(interceptorClass)) // don't create another 
bean for it
+                {
+                    continue;
+                }
+
                 Interceptor ejbInterceptor = 
webBeansContext.getInterceptorsManager().getEjbInterceptorForClass(interceptorClass);
                 ejbInterceptors.add(ejbInterceptor);
             }
@@ -301,7 +311,7 @@ public class InterceptorResolutionServic
             }
         }
 
-        collectEjbInterceptors(methodInterceptors, annotatedMethod, 
unproxyable);
+        collectEjbInterceptors(methodInterceptors, annotatedMethod, 
unproxyable, 
Collections.<Type>singleton(annotatedMethod.getJavaMember().getDeclaringClass()));
         allUsedEjbInterceptors.addAll(methodInterceptors);
 
         if (methodInterceptors.size() > 0)


Reply via email to