Romain, PLEASE create JIRAs for such tasks. We totally loose oversight 
otherwise.

LieGrue,
strub





> On Friday, 19 December 2014, 16:21, "[email protected]" 
> <[email protected]> wrote:
> > Author: rmannibucau
> Date: Fri Dec 19 15:21:49 2014
> New Revision: 1646768
> 
> URL: http://svn.apache.org/r1646768
> Log:
> rewriting @AroundConstruct selection to ensure to use a single constructor 
> and 
> avoid to use an aggregated view - including proxy oriented constructors
> 
> Modified:
>     
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/InterceptorResolutionService.java
> 
> 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=1646768&r1=1646767&r2=1646768&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 Dec 19 15:21:49 2014
> @@ -269,67 +269,53 @@ public class InterceptorResolutionServic
> 
>             
> allUsedCdiInterceptors.addAll(beanManagerImpl.resolveInterceptors(InterceptionType.POST_CONSTRUCT,
>  
> interceptorBindings));
>             
> allUsedCdiInterceptors.addAll(beanManagerImpl.resolveInterceptors(InterceptionType.PRE_DESTROY,
>  
> interceptorBindings));
> +        }
> 
> -            if (!annotatedType.getConstructors().isEmpty())
> +        AnnotatedConstructor<?> constructorToUse = null;
> +        if (!annotatedType.getConstructors().isEmpty()) // avoid to use 
> class 
> annotations for not used constructors
> +        {
> +            for (final AnnotatedConstructor<?> c : 
> annotatedType.getConstructors())
>              {
> -                for (final AnnotatedConstructor<?> c : 
> annotatedType.getConstructors())
> +                if (constructorToUse == null && 
> c.getParameters().isEmpty())
>                  {
> -                    final Set<Annotation> constructorAnnot = 
> webBeansContext.getAnnotationManager().getInterceptorAnnotations(c.getAnnotations());
> -                    if (constructorAnnot.isEmpty())
> -                    {
> -                        
> allUsedCdiInterceptors.addAll(beanManagerImpl.resolveInterceptors(InterceptionType.AROUND_CONSTRUCT,
>  
> interceptorBindings));
> -                    }
> -                    else
> -                    {
> -                        constructorAnnot.addAll(classInterceptorBindings);
> -                        
> allUsedCdiInterceptors.addAll(beanManagerImpl.resolveInterceptors(InterceptionType.AROUND_CONSTRUCT,
>  
> AnnotationUtil.asArray(constructorAnnot)));
> -                    }
> +                    constructorToUse = c;
> +                }
> +                else if (c.getAnnotation(Inject.class) != null)
> +                {
> +                    constructorToUse = c;
> +                    break;
>                  }
> -            }
> -            else
> -            {
> -                
> allUsedCdiInterceptors.addAll(beanManagerImpl.resolveInterceptors(InterceptionType.AROUND_CONSTRUCT,
>  
> interceptorBindings));
>              }
>          }
> -
> -        if (!annotatedType.getConstructors().isEmpty())
> +        if (constructorToUse != null)
>          {
> -            for (final AnnotatedConstructor<?> c : 
> annotatedType.getConstructors())
> +            final Set<Annotation> constructorAnnot = 
> webBeansContext.getAnnotationManager().getInterceptorAnnotations(constructorToUse.getAnnotations());
> +            for (final Annotation classA : classInterceptorBindings)
>              {
> -                final Set<Annotation> constructorAnnot = 
> webBeansContext.getAnnotationManager().getInterceptorAnnotations(c.getAnnotations());
> -                if (constructorAnnot.isEmpty())
> +                boolean overriden = false;
> +                for (final Annotation consA : constructorAnnot)
>                  {
> -                    if (interceptorBindings != null)
> +                    if (classA.annotationType() == consA.annotationType())
>                      {
> -                        
> allUsedConstructorCdiInterceptors.addAll(beanManagerImpl.resolveInterceptors(InterceptionType.AROUND_CONSTRUCT,
>  
> interceptorBindings));
> +                        overriden = true;
> +                        break;
>                      }
>                  }
> -                else
> +                if (!overriden)
>                  {
> -                    for (final Annotation classA : classInterceptorBindings)
> -                    {
> -                        boolean overriden = false;
> -                        for (final Annotation consA : constructorAnnot)
> -                        {
> -                            if (classA.annotationType() == 
> consA.annotationType())
> -                            {
> -                                overriden = true;
> -                                break;
> -                            }
> -                        }
> -                        if (!overriden)
> -                        {
> -                            constructorAnnot.add(classA);
> -                        }
> -                    }
> -                    
> allUsedConstructorCdiInterceptors.addAll(beanManagerImpl.resolveInterceptors(InterceptionType.AROUND_CONSTRUCT,
>  
> AnnotationUtil.asArray(constructorAnnot)));
> +                    constructorAnnot.add(classA);
>                  }
>              }
> +            if (!constructorAnnot.isEmpty())
> +            {
> +                
> allUsedConstructorCdiInterceptors.addAll(beanManagerImpl.resolveInterceptors(InterceptionType.AROUND_CONSTRUCT,
>  
> AnnotationUtil.asArray(constructorAnnot)));
> +            }
>          }
>          else if (interceptorBindings != null)
>          {
>             
> allUsedConstructorCdiInterceptors.addAll(beanManagerImpl.resolveInterceptors(InterceptionType.AROUND_CONSTRUCT,
>  
> interceptorBindings));
>          }
> +        allUsedCdiInterceptors.addAll(allUsedConstructorCdiInterceptors);
>      }
> 
>      /**
> @@ -389,7 +375,7 @@ public class InterceptorResolutionServic
>          }
>      }
> 
> -    private <T> void 
> collectEjbInterceptors(List<Interceptor<?>> ejbInterceptors, 
> Annotated annotated, boolean unproxyable, Set<Type> types)
> +    private void collectEjbInterceptors(List<Interceptor<?>> 
> ejbInterceptors, Annotated annotated, boolean unproxyable, Set<Type> 
> types)
>      {
>          Interceptors interceptorsAnnot = 
> annotated.getAnnotation(Interceptors.class);
>          if (interceptorsAnnot != null)
> 

Reply via email to