public List<InterceptorMetadata<?>> getAroundInvokes(Method method) { if (method == null) { return Collections.emptyList(); } List<InterceptorMetadata<?>> applicableInterceptors = new ArrayList<InterceptorMetadata<?>>(); MethodMetadata methodMetadata = new MethodMetadataImpl(method); InterceptorBindingMetaData methodApplicableInterceptorBinding = this.methodLevelInterceptorBindings.get(methodMetadata); if (methodApplicableInterceptorBinding == null) { applicableInterceptors.addAll(this.classLevelInterceptors); } else { if (!methodApplicableInterceptorBinding.isExcludeClassInterceptors()) { applicableInterceptors.addAll(this.classLevelInterceptors); } applicableInterceptors.addAll(methodApplicableInterceptorBinding.getInterceptors()); } applicableInterceptors.addAll(this.aroundInvokes); return applicableInterceptors; }
@Override public void process(ManagedBeanMetaDataImpl managedBean, T annotatedElement) { Interceptors interceptors = annotatedElement.getAnnotation(Interceptors.class); if (interceptors == null) { return; } List<InterceptorMetadata<?>> interceptorsMetadata = new ArrayList<InterceptorMetadata<?>>(); for (Class<?> interceptor : interceptors.value()) { InterceptorMetadata<?> interceptorMetaData = new DefaultMetadataCachingReader().getInterceptorMetadata(interceptor); interceptorsMetadata.add(interceptorMetaData); } InterceptorBindingMetaData interceptorBinding = new InterceptorBindingMetaData(interceptorsMetadata); if (annotatedElement instanceof Method) { Method method = (Method) annotatedElement; MethodMetadata methodMetadata = new MethodMetadataImpl(method); interceptorBinding.setMethod(methodMetadata); } ExcludeClassInterceptors excludeClass = finder.getAnnotation(annotatedElement, ExcludeClassInterceptors.class); interceptorBinding.setExcludeClassInterceptors(excludeClass != null); ExcludeDefaultInterceptors excludeDefaults = finder.getAnnotation(annotatedElement, ExcludeDefaultInterceptors.class); interceptorBinding.setExcludeDefaultInterceptors(excludeDefaults != null); managedBean.addInterceptorBinding(interceptorBinding); }