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)