Author: arne
Date: Mon Jun 30 15:33:43 2014
New Revision: 1606787
URL: http://svn.apache.org/r1606787
Log:
OWB-982: Moved filtering of methods to AnnotatedElementFactory
Modified:
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/annotation/AnnotationManager.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/BeanAttributesBuilder.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/CdiInterceptorBeanBuilder.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/DecoratorBeanBuilder.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/InterceptorBeanBuilder.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/MethodProducerFactory.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/ObserverMethodsBuilder.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/ProducerMethodBeanBuilder.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/ProducerMethodBeansBuilder.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/inject/impl/InjectionPointFactory.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/InterceptorResolutionService.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/InterceptorUtil.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/AnnotatedElementFactory.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/AnnotatedTypeImpl.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/InjectionTargetImpl.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/WebBeansUtil.java
Modified:
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/annotation/AnnotationManager.java
URL:
http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/annotation/AnnotationManager.java?rev=1606787&r1=1606786&r2=1606787&view=diff
==============================================================================
---
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/annotation/AnnotationManager.java
(original)
+++
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/annotation/AnnotationManager.java
Mon Jun 30 15:33:43 2014
@@ -790,7 +790,7 @@ public final class AnnotationManager
@SuppressWarnings("unchecked")
public <X> Method getDisposalWithGivenAnnotatedMethod(AnnotatedType<X>
annotatedType, Type beanType, Annotation[] qualifiers)
{
- Set<AnnotatedMethod<? super X>> annotatedMethods =
annotatedType.getMethods();
+ Set<AnnotatedMethod<? super X>> annotatedMethods =
webBeansContext.getAnnotatedElementFactory().getFilteredAnnotatedMethods(annotatedType);
if(annotatedMethods != null)
{
Modified:
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/BeanAttributesBuilder.java
URL:
http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/BeanAttributesBuilder.java?rev=1606787&r1=1606786&r2=1606787&view=diff
==============================================================================
---
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/BeanAttributesBuilder.java
(original)
+++
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/BeanAttributesBuilder.java
Mon Jun 30 15:33:43 2014
@@ -726,7 +726,7 @@ public abstract class BeanAttributesBuil
protected AnnotatedMethod<? super M> getSuperAnnotated()
{
AnnotatedMethod<M> thisMethod = getAnnotated();
- for (AnnotatedMethod<? super M> superMethod:
getSuperType().getMethods())
+ for (AnnotatedMethod<? super M> superMethod:
webBeansContext.getAnnotatedElementFactory().getFilteredAnnotatedMethods(getSuperType()))
{
List<AnnotatedParameter<M>> thisParameters =
thisMethod.getParameters();
if
(thisMethod.getJavaMember().getName().equals(superMethod.getJavaMember().getName())
Modified:
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/CdiInterceptorBeanBuilder.java
URL:
http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/CdiInterceptorBeanBuilder.java?rev=1606787&r1=1606786&r2=1606787&view=diff
==============================================================================
---
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/CdiInterceptorBeanBuilder.java
(original)
+++
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/CdiInterceptorBeanBuilder.java
Mon Jun 30 15:33:43 2014
@@ -57,7 +57,7 @@ public class CdiInterceptorBeanBuilder<T
validateNoProducerMethod(annotatedType);
// make sure that CDI interceptors do not have a Disposes method
- validateNoDisposerWithoutProducer(annotatedType.getMethods(),
Collections.EMPTY_SET);
+
validateNoDisposerWithoutProducer(webBeansContext.getAnnotatedElementFactory().getFilteredAnnotatedMethods(annotatedType),
Collections.EMPTY_SET);
}
@Override
Modified:
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/DecoratorBeanBuilder.java
URL:
http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/DecoratorBeanBuilder.java?rev=1606787&r1=1606786&r2=1606787&view=diff
==============================================================================
---
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/DecoratorBeanBuilder.java
(original)
+++
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/DecoratorBeanBuilder.java
Mon Jun 30 15:33:43 2014
@@ -135,7 +135,7 @@ public class DecoratorBeanBuilder<T> ext
validateNoProducerMethod(annotatedType);
// make sure that CDI Decorator do not have a Disposes method
- validateNoDisposerWithoutProducer(annotatedType.getMethods(),
Collections.EMPTY_SET);
+
validateNoDisposerWithoutProducer(webBeansContext.getAnnotatedElementFactory().getFilteredAnnotatedMethods(annotatedType),
Collections.EMPTY_SET);
}
@@ -248,7 +248,7 @@ public class DecoratorBeanBuilder<T> ext
return;
}
collectPostConstructMethods(type.getSuperclass(),
postConstructMethods);
- for (AnnotatedMethod<?> annotatedMethod: annotatedType.getMethods())
+ for (AnnotatedMethod<?> annotatedMethod:
webBeansContext.getAnnotatedElementFactory().getFilteredAnnotatedMethods(annotatedType))
{
if (annotatedMethod.getJavaMember().getDeclaringClass() == type
&& annotatedMethod.isAnnotationPresent(PostConstruct.class)
@@ -273,7 +273,7 @@ public class DecoratorBeanBuilder<T> ext
return;
}
collectPreDestroyMethods(type.getSuperclass(), preDestroyMethods);
- for (AnnotatedMethod<?> annotatedMethod: annotatedType.getMethods())
+ for (AnnotatedMethod<?> annotatedMethod:
webBeansContext.getAnnotatedElementFactory().getFilteredAnnotatedMethods(annotatedType))
{
if (annotatedMethod.getJavaMember().getDeclaringClass() == type
&& annotatedMethod.isAnnotationPresent(PreDestroy.class)
Modified:
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/InterceptorBeanBuilder.java
URL:
http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/InterceptorBeanBuilder.java?rev=1606787&r1=1606786&r2=1606787&view=diff
==============================================================================
---
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/InterceptorBeanBuilder.java
(original)
+++
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/InterceptorBeanBuilder.java
Mon Jun 30 15:33:43 2014
@@ -94,7 +94,7 @@ public abstract class InterceptorBeanBui
protected void checkInterceptorConditions()
{
- Set<AnnotatedMethod<? super T>> methods = annotatedType.getMethods();
+ Set<AnnotatedMethod<? super T>> methods =
webBeansContext.getAnnotatedElementFactory().getFilteredAnnotatedMethods(annotatedType);
for(AnnotatedMethod<?> method : methods)
{
for (AnnotatedParameter<?> parameter : method.getParameters())
@@ -143,7 +143,7 @@ public abstract class InterceptorBeanBui
boolean interceptorFound = false;
- Set<AnnotatedMethod<? super T>> methods = annotatedType.getMethods();
+ Set<AnnotatedMethod<? super T>> methods =
webBeansContext.getAnnotatedElementFactory().getFilteredAnnotatedMethods(annotatedType);
for (Class clazz : classHierarchy)
{
Modified:
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/MethodProducerFactory.java
URL:
http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/MethodProducerFactory.java?rev=1606787&r1=1606786&r2=1606787&view=diff
==============================================================================
---
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/MethodProducerFactory.java
(original)
+++
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/MethodProducerFactory.java
Mon Jun 30 15:33:43 2014
@@ -89,7 +89,8 @@ public class MethodProducerFactory<P> im
producerQualifiersWithoutNamed.add(qualifier);
}
}
- Set<AnnotatedMethod<? super P>> annotatedMethods =
(Set<AnnotatedMethod<? super
P>>)(Set<?>)producerMethod.getDeclaringType().getMethods();
+ Set<AnnotatedMethod<? super P>> annotatedMethods
+ = (Set<AnnotatedMethod<? super
P>>)(Set<?>)webBeansContext.getAnnotatedElementFactory().getFilteredAnnotatedMethods(producerMethod.getDeclaringType());
for (AnnotatedMethod<? super P> annotatedMethod : annotatedMethods)
{
if
(annotatedMethod.getDeclaringType().equals(producerMethod.getDeclaringType()))
Modified:
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/ObserverMethodsBuilder.java
URL:
http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/ObserverMethodsBuilder.java?rev=1606787&r1=1606786&r2=1606787&view=diff
==============================================================================
---
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/ObserverMethodsBuilder.java
(original)
+++
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/ObserverMethodsBuilder.java
Mon Jun 30 15:33:43 2014
@@ -68,7 +68,7 @@ public class ObserverMethodsBuilder<T, I
public Set<ObserverMethod<?>> defineObserverMethods(AbstractOwbBean<T>
bean)
{
Set<ObserverMethod<?>> definedObservers = new
HashSet<ObserverMethod<?>>();
- for (AnnotatedMethod<?> annotatedMethod : annotatedType.getMethods())
+ for (AnnotatedMethod<?> annotatedMethod :
webBeansContext.getAnnotatedElementFactory().getFilteredAnnotatedMethods(annotatedType))
{
List<AnnotatedParameter<?>> parameters =
(List<AnnotatedParameter<?>>)(List<?>)annotatedMethod.getParameters();
AnnotatedParameter<?> observesParameter = null;
Modified:
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/ProducerMethodBeanBuilder.java
URL:
http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/ProducerMethodBeanBuilder.java?rev=1606787&r1=1606786&r2=1606787&view=diff
==============================================================================
---
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/ProducerMethodBeanBuilder.java
(original)
+++
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/ProducerMethodBeanBuilder.java
Mon Jun 30 15:33:43 2014
@@ -73,36 +73,6 @@ public class ProducerMethodBeanBuilder<T
bean.setSpecializedBean(true);
}
- //X TODO arne: this should get implemented or removed if not needed anymore
- protected AnnotatedMethod<?> getSuperAnnotated()
- {
- AnnotatedMethod<?> thisMethod = annotatedMember;
- for (AnnotatedMethod<?> superMethod: getSuperType().getMethods())
- {
- List<AnnotatedParameter<?>> thisParameters =
(List<AnnotatedParameter<?>>)(List<?>)thisMethod.getParameters();
- if
(thisMethod.getJavaMember().getName().equals(superMethod.getJavaMember().getName())
- && thisMethod.getBaseType().equals(superMethod.getBaseType())
- && thisParameters.size() == superMethod.getParameters().size())
- {
- List<AnnotatedParameter<?>> superParameters =
(List<AnnotatedParameter<?>>)(List<?>)superMethod.getParameters();
- boolean match = true;
- for (int i = 0; i < thisParameters.size(); i++)
- {
- if
(!thisParameters.get(i).getBaseType().equals(superParameters.get(i).getBaseType()))
- {
- match = false;
- break;
- }
- }
- if (match)
- {
- return superMethod;
- }
- }
- }
- return null;
- }
-
@Override
protected <P> ProducerMethodBean<T> createBean(InjectionTargetBean<P>
parent, Class<T> beanClass)
{
Modified:
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/ProducerMethodBeansBuilder.java
URL:
http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/ProducerMethodBeansBuilder.java?rev=1606787&r1=1606786&r2=1606787&view=diff
==============================================================================
---
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/ProducerMethodBeansBuilder.java
(original)
+++
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/ProducerMethodBeansBuilder.java
Mon Jun 30 15:33:43 2014
@@ -64,7 +64,7 @@ public class ProducerMethodBeansBuilder<
public Set<ProducerMethodBean<?>>
defineProducerMethods(InjectionTargetBean<T> bean)
{
Set<ProducerMethodBean<?>> producerBeans = new
HashSet<ProducerMethodBean<?>>();
- Set<AnnotatedMethod<? super T>> annotatedMethods =
annotatedType.getMethods();
+ Set<AnnotatedMethod<? super T>> annotatedMethods =
webBeansContext.getAnnotatedElementFactory().getFilteredAnnotatedMethods(annotatedType);
for(AnnotatedMethod<? super T> annotatedMethod: annotatedMethods)
{
Modified:
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/inject/impl/InjectionPointFactory.java
URL:
http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/inject/impl/InjectionPointFactory.java?rev=1606787&r1=1606786&r2=1606787&view=diff
==============================================================================
---
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/inject/impl/InjectionPointFactory.java
(original)
+++
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/inject/impl/InjectionPointFactory.java
Mon Jun 30 15:33:43 2014
@@ -92,7 +92,7 @@ public class InjectionPointFactory
injectionPoints.add(buildInjectionPoint(owner, field));
}
}
- for (AnnotatedMethod<? super X> method: annotatedType.getMethods())
+ for (AnnotatedMethod<? super X> method:
webBeansContext.getAnnotatedElementFactory().getFilteredAnnotatedMethods(annotatedType))
{
if (method.isAnnotationPresent(Inject.class) &&
!Modifier.isStatic(method.getJavaMember().getModifiers()))
{
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=1606787&r1=1606786&r2=1606787&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
Mon Jun 30 15:33:43 2014
@@ -649,7 +649,7 @@ public class InterceptorResolutionServic
List<AnnotatedMethod> interceptableAnnotatedMethods = new
ArrayList<AnnotatedMethod>();
- Set<AnnotatedMethod> annotatedMethods = annotatedType.getMethods();
+ Set<AnnotatedMethod> annotatedMethods =
(Set<AnnotatedMethod>)webBeansContext.getAnnotatedElementFactory().getFilteredAnnotatedMethods(annotatedType);
for (Method interceptableMethod : interceptableMethods)
{
for (AnnotatedMethod<?> annotatedMethod : annotatedMethods)
Modified:
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/InterceptorUtil.java
URL:
http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/InterceptorUtil.java?rev=1606787&r1=1606786&r2=1606787&view=diff
==============================================================================
---
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/InterceptorUtil.java
(original)
+++
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/InterceptorUtil.java
Mon Jun 30 15:33:43 2014
@@ -67,7 +67,7 @@ public final class InterceptorUtil
List<Class> classes =
getReverseClassHierarchy(annotatedType.getJavaClass());
for (Class clazz : classes)
{
- for (AnnotatedMethod<?> annotatedMethod :
annotatedType.getMethods())
+ for (AnnotatedMethod<?> annotatedMethod :
webBeansContext.getAnnotatedElementFactory().getFilteredAnnotatedMethods(annotatedType))
{
if (annotatedMethod.getJavaMember().getDeclaringClass() !=
clazz)
{
Modified:
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/AnnotatedElementFactory.java
URL:
http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/AnnotatedElementFactory.java?rev=1606787&r1=1606786&r2=1606787&view=diff
==============================================================================
---
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/AnnotatedElementFactory.java
(original)
+++
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/AnnotatedElementFactory.java
Mon Jun 30 15:33:43 2014
@@ -21,6 +21,9 @@ package org.apache.webbeans.portable;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
import java.util.logging.Level;
@@ -35,6 +38,7 @@ import org.apache.webbeans.config.OWBLog
import org.apache.webbeans.config.WebBeansContext;
import org.apache.webbeans.logger.WebBeansLoggerFacade;
import org.apache.webbeans.util.Asserts;
+import org.apache.webbeans.util.ClassUtil;
/**
* Factory for {@link javax.enterprise.inject.spi.Annotated} elements.
@@ -73,6 +77,10 @@ public final class AnnotatedElementFacto
private ConcurrentMap<Field, AnnotatedField<?>> annotatedFieldCache =
new ConcurrentHashMap<Field, AnnotatedField<?>>();
+ //Cache of AnnotatedMethod
+ private ConcurrentMap<AnnotatedType<?>, Set<AnnotatedMethod<?>>>
annotatedMethodsOfTypeCache =
+ new ConcurrentHashMap<AnnotatedType<?>, Set<AnnotatedMethod<?>>>();
+
private WebBeansContext webBeansContext;
/**
@@ -306,6 +314,36 @@ public final class AnnotatedElementFacto
}
/**
+ * Returns the {@link AnnotatedMethod}s of the specified {@link
AnnotatedType},
+ * filtering out the overridden methods.
+ */
+ public <T> Set<AnnotatedMethod<? super T>>
getFilteredAnnotatedMethods(AnnotatedType<T> annotatedType)
+ {
+ Asserts.assertNotNull(annotatedType, "annotatedType is null");
+
+ Set<AnnotatedMethod<?>> methods =
annotatedMethodsOfTypeCache.get(annotatedType);
+ if (methods != null)
+ {
+ return cast(methods);
+ }
+ methods = Collections.unmodifiableSet(getFilteredMethods(
+ annotatedType.getJavaClass(),
+ (Set<AnnotatedMethod<?>>)(Set<?>)annotatedType.getMethods(),
+ new HashSet<AnnotatedMethod<?>>()));
+ Set<AnnotatedMethod<?>> old =
annotatedMethodsOfTypeCache.putIfAbsent(annotatedType, methods);
+ if (old != null)
+ {
+ return cast(old);
+ }
+ return cast(methods);
+ }
+
+ private <T> Set<AnnotatedMethod<? super T>> cast(Set<AnnotatedMethod<?>>
methods)
+ {
+ return (Set<AnnotatedMethod<? super T>>)(Set<?>)methods;
+ }
+
+ /**
* Clear caches.
*/
public void clear()
@@ -315,8 +353,37 @@ public final class AnnotatedElementFacto
annotatedConstructorCache.clear();
annotatedFieldCache.clear();
annotatedMethodCache.clear();
+ annotatedMethodsOfTypeCache.clear();
}
+ private Set<? extends AnnotatedMethod<?>> getFilteredMethods(Class<?>
type, Set<AnnotatedMethod<?>> allMethods, Set<AnnotatedMethod<?>>
filteredMethods)
+ {
+ if (type == null)
+ {
+ return filteredMethods;
+ }
+ for (AnnotatedMethod<?> annotatedMethod: allMethods)
+ {
+ if (annotatedMethod.getJavaMember().getDeclaringClass() == type &&
!isOverridden(annotatedMethod, filteredMethods))
+ {
+ filteredMethods.add(annotatedMethod);
+ }
+ }
+ return getFilteredMethods(type.getSuperclass(), allMethods,
filteredMethods);
+ }
+
+ private boolean isOverridden(AnnotatedMethod<?> superclassMethod,
Set<AnnotatedMethod<?>> methods)
+ {
+ for (AnnotatedMethod<?> subclassMethod : methods)
+ {
+ if (ClassUtil.isOverridden(subclassMethod.getJavaMember(),
superclassMethod.getJavaMember()))
+ {
+ return true;
+ }
+ }
+ return false;
+ }
+
private <T> ConcurrentMap<String, AnnotatedType<T>>
getAnnotatedTypeCache(Class<T> type)
{
ConcurrentMap<String, AnnotatedType<?>> annotatedTypes =
annotatedTypeCache.get(type);
Modified:
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/AnnotatedTypeImpl.java
URL:
http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/AnnotatedTypeImpl.java?rev=1606787&r1=1606786&r2=1606787&view=diff
==============================================================================
---
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/AnnotatedTypeImpl.java
(original)
+++
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/AnnotatedTypeImpl.java
Mon Jun 30 15:33:43 2014
@@ -29,18 +29,13 @@ import java.util.HashSet;
import java.util.List;
import java.util.Set;
-import javax.annotation.PostConstruct;
-import javax.annotation.PreDestroy;
import javax.enterprise.inject.spi.AnnotatedConstructor;
import javax.enterprise.inject.spi.AnnotatedField;
import javax.enterprise.inject.spi.AnnotatedMethod;
import javax.enterprise.inject.spi.AnnotatedType;
import javax.enterprise.inject.spi.BeanManager;
-import javax.interceptor.AroundConstruct;
-import javax.interceptor.AroundInvoke;
import org.apache.webbeans.config.WebBeansContext;
-import org.apache.webbeans.util.ClassUtil;
/**
* Implementation of the {@link AnnotatedType} interface.
@@ -260,42 +255,10 @@ class AnnotatedTypeImpl<X>
}
for (AnnotatedMethod<? super X> method :
supertype.getMethods())
{
- if (!isOverridden(method))
- {
- methods.add(new
AnnotatedMethodImpl<X>(getWebBeansContext(), method.getJavaMember(),
AnnotatedTypeImpl.this));
- }
+ methods.add(new
AnnotatedMethodImpl<X>(getWebBeansContext(), method.getJavaMember(),
AnnotatedTypeImpl.this));
}
}
}
-
- private boolean isOverridden(AnnotatedMethod<? super X>
superclassMethod)
- {
- for (AnnotatedMethod<? super X> subclassMethod : methods)
- {
- if (ClassUtil.isOverridden(subclassMethod.getJavaMember(),
superclassMethod.getJavaMember()))
- {
- final Set<Annotation> superAnnotations =
superclassMethod.getAnnotations();
- final Set<Annotation> subAnnotations =
subclassMethod.getAnnotations();
- // check that's not a deactivation of
interceptors/lifecycle
- // before checking that's the exact same method
- // TODO: same for EJBs?
- for (final Annotation a : superAnnotations)
- {
- final Class<? extends Annotation> annotationType =
a.annotationType();
- if (annotationType == AroundConstruct.class ||
annotationType == AroundInvoke.class
- || annotationType == PostConstruct.class ||
annotationType == PreDestroy.class)
- {
- if (!subAnnotations.contains(a))
- {
- return true;
- }
- }
- }
- return subAnnotations.equals(superAnnotations);
- }
- }
- return false;
- }
}
}
Modified:
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/InjectionTargetImpl.java
URL:
http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/InjectionTargetImpl.java?rev=1606787&r1=1606786&r2=1606787&view=diff
==============================================================================
---
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/InjectionTargetImpl.java
(original)
+++
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/InjectionTargetImpl.java
Mon Jun 30 15:33:43 2014
@@ -249,7 +249,7 @@ public class InjectionTargetImpl<T> exte
*/
private void injectInitializerMethods(Class<?> declaringType, T instance,
CreationalContextImpl<T> context)
{
- for (AnnotatedMethod<? super T> method : annotatedType.getMethods())
+ for (AnnotatedMethod<? super T> method :
webBeansContext.getAnnotatedElementFactory().getFilteredAnnotatedMethods(annotatedType))
{
if (method.getDeclaringType().getJavaClass().equals(declaringType)
&& method.isAnnotationPresent(Inject.class) && method.getParameters().isEmpty())
{
Modified:
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/WebBeansUtil.java
URL:
http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/WebBeansUtil.java?rev=1606787&r1=1606786&r2=1606787&view=diff
==============================================================================
---
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/WebBeansUtil.java
(original)
+++
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/WebBeansUtil.java
Mon Jun 30 15:33:43 2014
@@ -1470,7 +1470,7 @@ public final class WebBeansUtil
throw new WebBeansConfigurationException("Final managed bean class
with name : " + clazz.getName() + " can not define any InterceptorBindings");
}
- Set<AnnotatedMethod<? super X>> methods = type.getMethods();
+ Set<AnnotatedMethod<? super X>> methods =
webBeansContext.getAnnotatedElementFactory().getFilteredAnnotatedMethods(type);
for(AnnotatedMethod<? super X> methodA : methods)
{
Method method = methodA.getJavaMember();