You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openwebbeans.apache.org by ar...@apache.org on 2013/01/12 21:44:40 UTC

svn commit: r1432510 - in /openwebbeans/trunk: webbeans-ejb/src/main/java/org/apache/webbeans/ejb/common/component/ webbeans-impl/src/main/java/org/apache/webbeans/annotation/ webbeans-impl/src/main/java/org/apache/webbeans/component/ webbeans-impl/src...

Author: arne
Date: Sat Jan 12 20:44:40 2013
New Revision: 1432510

URL: http://svn.apache.org/viewvc?rev=1432510&view=rev
Log:
OWB-748: Fixed Annotation inheritance and removed IBeanInheritedMetaData

Removed:
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/inheritance/
    openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/test/unittests/inheritance/
Modified:
    openwebbeans/trunk/webbeans-ejb/src/main/java/org/apache/webbeans/ejb/common/component/BaseEjbBean.java
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/annotation/AnnotationManager.java
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractInjectionTargetBean.java
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/InjectionTargetBean.java
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ManagedBean.java
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/AbstractBeanBuilder.java
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/AbstractInjectionTargetBeanBuilder.java
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/WebBeansInterceptorConfig.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/AnnotationUtil.java

Modified: openwebbeans/trunk/webbeans-ejb/src/main/java/org/apache/webbeans/ejb/common/component/BaseEjbBean.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-ejb/src/main/java/org/apache/webbeans/ejb/common/component/BaseEjbBean.java?rev=1432510&r1=1432509&r2=1432510&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-ejb/src/main/java/org/apache/webbeans/ejb/common/component/BaseEjbBean.java (original)
+++ openwebbeans/trunk/webbeans-ejb/src/main/java/org/apache/webbeans/ejb/common/component/BaseEjbBean.java Sat Jan 12 20:44:40 2013
@@ -61,9 +61,6 @@ public abstract class BaseEjbBean<T> ext
         
         //type of the ejb
         this.ejbType = type;
-        
-        //Setting inherited meta data instance
-        setInheritedMetaData();
     }
 
 

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=1432510&r1=1432509&r2=1432510&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 Sat Jan 12 20:44:40 2013
@@ -79,6 +79,18 @@ public final class AnnotationManager
         beanManagerImpl = context.getBeanManagerImpl();
     }
 
+    public Annotation getDeclaredScopeAnnotation(Class<?> beanClass)
+    {
+        for (Annotation annotation : beanClass.getDeclaredAnnotations())
+        {
+            if (beanManagerImpl.isScope(annotation.annotationType()))
+            {
+                return annotation;
+            }
+        }
+        return null;
+    }
+
     /**
      * Returns true if the annotation is defined in xml or annotated with
      * {@link javax.interceptor.InterceptorBinding} or an InterceptorBinding
@@ -403,9 +415,33 @@ public final class AnnotationManager
      */
     public boolean isStereoTypeAnnotation(Class<? extends Annotation> clazz)
     {
+        return isStereoTypeAnnotation(clazz, new HashSet<Class<? extends Annotation>>());
+    }
+    
+    private boolean isStereoTypeAnnotation(Class<? extends Annotation> clazz, Set<Class<? extends Annotation>> checkedAnnotations)
+    {
         Asserts.nullCheckForClass(clazz);
 
-        return clazz.isAnnotationPresent(Stereotype.class);
+        if (clazz.isAnnotationPresent(Stereotype.class))
+        {
+            return true;
+        }
+        else
+        {
+            for (Annotation annotation: clazz.getAnnotations())
+            {
+                if (checkedAnnotations.contains(annotation.annotationType()))
+                {
+                    continue;
+                }
+                checkedAnnotations.add(annotation.annotationType());
+                if (isStereoTypeAnnotation(annotation.annotationType(), checkedAnnotations))
+                {
+                    return true;
+                }
+            }
+        }
+        return false;
     }
 
     public boolean hasStereoTypeMetaAnnotation(Set<Class<? extends Annotation>> anns)

Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractInjectionTargetBean.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractInjectionTargetBean.java?rev=1432510&r1=1432509&r2=1432510&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractInjectionTargetBean.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractInjectionTargetBean.java Sat Jan 12 20:44:40 2013
@@ -31,8 +31,6 @@ import javax.enterprise.inject.spi.Decor
 
 import org.apache.webbeans.config.OWBLogConst;
 import org.apache.webbeans.config.WebBeansContext;
-import org.apache.webbeans.config.inheritance.BeanInheritedMetaData;
-import org.apache.webbeans.config.inheritance.IBeanInheritedMetaData;
 import org.apache.webbeans.decorator.WebBeansDecorator;
 import org.apache.webbeans.exception.WebBeansConfigurationException;
 import org.apache.webbeans.exception.WebBeansException;
@@ -71,9 +69,6 @@ public abstract class AbstractInjectionT
      */
     protected List<Decorator<?>> decorators = new ArrayList<Decorator<?>>();
     
-    /**Bean inherited meta data*/
-    protected IBeanInheritedMetaData inheritedMetaData;    
-    
     /**
      * Creates a new observer owner component.
      * 
@@ -329,22 +324,6 @@ public abstract class AbstractInjectionT
     /**
      * {@inheritDoc}
      */
-    public IBeanInheritedMetaData getInheritedMetaData()
-    {
-        return inheritedMetaData;
-    }
-    
-    /**
-     * Sets inherited meta data.
-     */
-    protected void setInheritedMetaData()
-    {
-        inheritedMetaData = new BeanInheritedMetaData<T>(this);
-    }
-
-    /**
-     * {@inheritDoc}
-     */
     public AnnotatedType<T> getAnnotatedType()
     {
         return annotatedType;

Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/InjectionTargetBean.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/InjectionTargetBean.java?rev=1432510&r1=1432509&r2=1432510&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/InjectionTargetBean.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/InjectionTargetBean.java Sat Jan 12 20:44:40 2013
@@ -24,7 +24,6 @@ import javax.enterprise.context.spi.Crea
 import javax.enterprise.inject.spi.AnnotatedType;
 import javax.enterprise.inject.spi.Decorator;
 
-import org.apache.webbeans.config.inheritance.IBeanInheritedMetaData;
 import org.apache.webbeans.intercept.InterceptorData;
 
 /**
@@ -45,12 +44,6 @@ public interface InjectionTargetBean<T> 
     public void injectResources(T instance, CreationalContext<T> creationalContext);
 
     /**
-     * Gets inherited meta data.
-     * @return inherited meta data
-     */
-    public IBeanInheritedMetaData getInheritedMetaData();
-    
-    /**
      * Gets interceptor stack of bean instance.
      * @return interceptor stack
      */

Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ManagedBean.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ManagedBean.java?rev=1432510&r1=1432509&r2=1432510&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ManagedBean.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ManagedBean.java Sat Jan 12 20:44:40 2013
@@ -60,9 +60,6 @@ public class ManagedBean<T> extends Abst
     public ManagedBean(WebBeansContext webBeansContext, Class<T> returnType, WebBeansType type, AnnotatedType<T> annotatedType)
     {
         super(webBeansContext, type, returnType, annotatedType);
-        
-        //Setting inherited meta data instance
-        setInheritedMetaData();
     }
     
     /**

Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/AbstractBeanBuilder.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/AbstractBeanBuilder.java?rev=1432510&r1=1432509&r2=1432510&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/AbstractBeanBuilder.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/AbstractBeanBuilder.java Sat Jan 12 20:44:40 2013
@@ -314,8 +314,6 @@ public abstract class AbstractBeanBuilde
             }
         }
         
-        defineInheritedQualifiers(qualifiers);
-
         // No-binding annotation
         if (qualifiers.size() == 0 )
         {
@@ -343,23 +341,6 @@ public abstract class AbstractBeanBuilde
         injectionPoints.add(member);
     }
 
-    protected void defineInheritedQualifiers(Set<Annotation> qualifiers)
-    {
-        // hook for subclasses
-    }
-    
-    protected void defineInheritedStereotypes(Set<Class<? extends Annotation>> stereotypes)
-    {
-        // hook for subclasses
-    }
-    
-    protected Class<? extends Annotation> defineInheritedScope()
-    {
-        // hook for subclasses
-        return null;
-    }
-
-
     /**
      * Returns true if any binding exist
      * 
@@ -372,6 +353,11 @@ public abstract class AbstractBeanBuilde
 
     public void defineScopeType(String errorMessage)
     {
+        defineScopeType(null, errorMessage);
+    }
+
+    protected void defineScopeType(Class<?> declaringClass, String errorMessage)
+    {
         Annotation[] annotations = AnnotationUtil.asArray(annotated.getAnnotations());
         boolean found = false;
 
@@ -379,6 +365,10 @@ public abstract class AbstractBeanBuilde
         
         for (Annotation annotation : annotations)
         {   
+            if (declaringClass != null && AnnotationUtil.getDeclaringClass(annotation, declaringClass) != null && !AnnotationUtil.isDeclaringClass(declaringClass, annotation))
+            {
+                continue;
+            }
             Class<? extends Annotation> annotationType = annotation.annotationType();
             
             /*Normal scope*/
@@ -438,17 +428,18 @@ public abstract class AbstractBeanBuilde
             }
         }
 
-        if (!found)
+        if (!found && declaringClass != null && !hasDeclaredNonInheritedScope(declaringClass))
+        {
+            defineScopeType(declaringClass.getSuperclass(), errorMessage);
+        }
+        else if (!found)
         {
             defineDefaultScopeType(errorMessage);
         }
     }
 
-
     private void defineDefaultScopeType(String exceptionMessage)
     {
-        scope = defineInheritedScope();
-        
         if (scope == null)
         {
             Set<Class<? extends Annotation>> stereos = stereotypes;
@@ -504,6 +495,11 @@ public abstract class AbstractBeanBuilde
         }
     }
 
+    private boolean hasDeclaredNonInheritedScope(Class<?> type)
+    {
+        return webBeansContext.getAnnotationManager().getDeclaredScopeAnnotation(type) != null;
+    }
+
     /**
      * Checks the unproxiable condition.
      * @throws WebBeansConfigurationException if bean is not proxied by the container
@@ -596,7 +592,6 @@ public abstract class AbstractBeanBuilde
                 stereotypes.add(stereo.annotationType());
             }
         }
-        defineInheritedStereotypes(stereotypes);
     }
 
     protected <X> void addFieldInjectionPointMetaData(OwbBean<T> bean, AnnotatedField<X> annotField)

Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/AbstractInjectionTargetBeanBuilder.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/AbstractInjectionTargetBeanBuilder.java?rev=1432510&r1=1432509&r2=1432510&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/AbstractInjectionTargetBeanBuilder.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/AbstractInjectionTargetBeanBuilder.java Sat Jan 12 20:44:40 2013
@@ -54,7 +54,6 @@ import org.apache.webbeans.component.Pro
 import org.apache.webbeans.component.ProducerMethodBean;
 import org.apache.webbeans.component.ResourceBean;
 import org.apache.webbeans.config.WebBeansContext;
-import org.apache.webbeans.config.inheritance.IBeanInheritedMetaData;
 import org.apache.webbeans.container.InjectionResolver;
 import org.apache.webbeans.exception.WebBeansConfigurationException;
 import org.apache.webbeans.spi.api.ResourceReference;
@@ -273,6 +272,11 @@ public abstract class AbstractInjectionT
         }        
     }
 
+    public void defineScopeType(String errorMessage)
+    {
+        defineScopeType(getAnnotated().getJavaClass(), errorMessage);
+    }
+
     /**
      * {@inheritDoc}
      */
@@ -697,78 +701,6 @@ public abstract class AbstractInjectionT
     }
 
     @Override
-    protected void defineInheritedQualifiers(Set<Annotation> qualifiers)
-    {
-        // Adding inherited qualifiers
-        IBeanInheritedMetaData inheritedMetaData = getBean().getInheritedMetaData();
-        
-        if (inheritedMetaData != null)
-        {
-            Set<Annotation> inheritedTypes = inheritedMetaData.getInheritedQualifiers();
-            for (Annotation inherited : inheritedTypes)
-            {
-                boolean found = false;
-                for (Annotation existQualifier : qualifiers)
-                {
-                    if (existQualifier.annotationType().equals(inherited.annotationType()))
-                    {
-                        found = true;
-                        break;
-                    }
-                }
-                if (!found)
-                {
-                    qualifiers.add(inherited);
-                }
-            }
-        }
-    }
-
-    @Override
-    protected void defineInheritedStereotypes(Set<Class<? extends Annotation>> stereotypes)
-    {
-        // Adding inherited qualifiers
-        IBeanInheritedMetaData inheritedMetaData = getBean().getInheritedMetaData();
-        
-        if (inheritedMetaData != null)
-        {
-            Set<Annotation> inheritedTypes = inheritedMetaData.getInheritedStereoTypes();        
-            for (Annotation inherited : inheritedTypes)
-            {
-                Set<Class<? extends Annotation>> qualifiers = stereotypes;
-                boolean found = false;
-                for (Class<? extends Annotation> existQualifier : qualifiers)
-                {
-                    if (existQualifier.equals(inherited.annotationType()))
-                    {
-                        found = true;
-                        break;
-                    }
-                }
-                if (!found)
-                {
-                    stereotypes.add(inherited.annotationType());
-                }
-            }
-        }
-    }
-    
-    @Override
-    protected Class<? extends Annotation> defineInheritedScope()
-    {
-        IBeanInheritedMetaData metaData = getBean().getInheritedMetaData();
-        if (metaData != null)
-        {
-            Annotation inheritedScope = metaData.getInheritedScopeType();
-            if (inheritedScope != null)
-            {
-                return inheritedScope.annotationType();
-            }
-        }
-        return null;
-    }
-
-    @Override
     protected Class<?> getBeanType()
     {
         return getAnnotated().getJavaClass();

Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/WebBeansInterceptorConfig.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/WebBeansInterceptorConfig.java?rev=1432510&r1=1432509&r2=1432510&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/WebBeansInterceptorConfig.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/WebBeansInterceptorConfig.java Sat Jan 12 20:44:40 2013
@@ -23,7 +23,6 @@ import org.apache.webbeans.component.Abs
 import org.apache.webbeans.component.EnterpriseBeanMarker;
 import org.apache.webbeans.config.OWBLogConst;
 import org.apache.webbeans.config.WebBeansContext;
-import org.apache.webbeans.config.inheritance.IBeanInheritedMetaData;
 import org.apache.webbeans.exception.WebBeansConfigurationException;
 import org.apache.webbeans.intercept.webbeans.WebBeansInterceptorBeanPleaseRemove;
 import org.apache.webbeans.logger.WebBeansLoggerFacade;
@@ -46,7 +45,6 @@ import javax.interceptor.AroundInvoke;
 import java.lang.annotation.Annotation;
 import java.lang.reflect.Method;
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.Collections;
 import java.util.HashSet;
 import java.util.Iterator;
@@ -205,49 +203,6 @@ public final class WebBeansInterceptorCo
         Annotation[] anns;
         Set<Interceptor<?>> componentInterceptors = null;
 
-        // Look for inherited binding types, keeping in mind that
-        // IBeanInheritedMetaData knows nothing of the transitive
-        // relationships of Interceptor Bindings or Stereotypes. We must resolve
-        // these here.
-        IBeanInheritedMetaData metadata = component.getInheritedMetaData();
-        if (metadata != null)
-        {
-            Set<Annotation> inheritedBindingTypes = metadata.getInheritedInterceptorBindings();
-            if (!inheritedBindingTypes.isEmpty())
-            {
-                Annotation[] inheritedAnns = new Annotation[inheritedBindingTypes.size()];
-                inheritedAnns = inheritedBindingTypes.toArray(inheritedAnns);
-                anns = annotationManager.getInterceptorBindingMetaAnnotations(inheritedAnns);
-                bindingTypeSet.addAll(Arrays.asList(anns));
-            }
-
-            // Retrieve inherited stereotypes, check for meta-annotations, and
-            // find the ultimate set of bindings
-            Set<Annotation> inheritedStereotypes = metadata.getInheritedStereoTypes();
-
-            if (!inheritedStereotypes.isEmpty())
-            {
-                // We need AnnotationUtil to resolve the transitive relationship
-                // of stereotypes we've found
-                Annotation[] inherited = new Annotation[inheritedStereotypes.size()];
-                inherited = inheritedStereotypes.toArray(inherited);
-                Annotation[] transitiveStereotypes = annotationManager.getStereotypeMetaAnnotations(inherited);
-
-                for (Annotation stereo : transitiveStereotypes)
-                {
-                    if (annotationManager.hasInterceptorBindingMetaAnnotation(stereo.annotationType().getDeclaredAnnotations()))
-                    {
-                        Annotation[] steroInterceptorBindings =
-                            annotationManager.getInterceptorBindingMetaAnnotations(stereo.annotationType().getDeclaredAnnotations());
-                        for (Annotation ann : steroInterceptorBindings)
-                        {
-                            bindingTypeSet.add(ann);
-                        }
-                    }
-                }
-            }
-        }
-
         anns = bindingTypeSet.toArray(new Annotation[bindingTypeSet.size()]);
 
         //Spec Section 9.5.2

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=1432510&r1=1432509&r2=1432510&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 Sat Jan 12 20:44:40 2013
@@ -18,14 +18,15 @@
  */
 package org.apache.webbeans.portable;
 
-import org.apache.webbeans.config.WebBeansContext;
-import org.apache.webbeans.util.ClassUtil;
-
+import java.lang.annotation.Annotation;
+import java.lang.annotation.Inherited;
 import java.lang.reflect.Constructor;
 import java.lang.reflect.Field;
 import java.lang.reflect.Method;
+import java.util.ArrayList;
 import java.util.Collections;
 import java.util.HashSet;
+import java.util.List;
 import java.util.Set;
 
 import javax.enterprise.inject.spi.AnnotatedConstructor;
@@ -33,6 +34,9 @@ import javax.enterprise.inject.spi.Annot
 import javax.enterprise.inject.spi.AnnotatedMethod;
 import javax.enterprise.inject.spi.AnnotatedType;
 
+import org.apache.webbeans.config.WebBeansContext;
+import org.apache.webbeans.util.ClassUtil;
+
 /**
  * Implementation of the {@link AnnotatedType} interface.
  * 
@@ -68,7 +72,29 @@ class AnnotatedTypeImpl<X> extends Abstr
         this.supertype = supertype;
         this.annotatedClass = annotatedClass;     
         
-        setAnnotations(annotatedClass.getDeclaredAnnotations());
+        if (supertype == null)
+        {
+            setAnnotations(annotatedClass.getDeclaredAnnotations());
+        }
+        else
+        {
+            Set<Class<? extends Annotation>> annotationTypes = new HashSet<Class<? extends Annotation>>();
+            List<Annotation> annotations = new ArrayList<Annotation>();
+            for (Annotation annotation: annotatedClass.getDeclaredAnnotations())
+            {
+                annotations.add(annotation);
+                annotationTypes.add(annotation.annotationType());
+            }
+            for (Annotation annotation: supertype.getAnnotations())
+            {
+                if (annotation.annotationType().isAnnotationPresent(Inherited.class) && !annotationTypes.contains(annotation.annotationType()))
+                {
+                    annotations.add(annotation);
+                    annotationTypes.add(annotation.annotationType());
+                }
+            }
+            setAnnotations(annotations.toArray(new Annotation[annotations.size()]));
+        }
     }
 
     private synchronized void init()

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=1432510&r1=1432509&r2=1432510&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 Sat Jan 12 20:44:40 2013
@@ -179,7 +179,7 @@ public class InjectionTargetImpl<T> exte
 
     private Constructor<T> getDefaultConstructor()
     {
-        return context.getSecurityService().doPrivilegedGetConstructor(type.getJavaClass());
+        return context.getWebBeansUtil().getNoArgConstructor(type.getJavaClass());
     }
     
     private boolean isProducerMethod(InjectionPoint injectionPoint)

Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/AnnotationUtil.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/AnnotationUtil.java?rev=1432510&r1=1432509&r2=1432510&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/AnnotationUtil.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/AnnotationUtil.java Sat Jan 12 20:44:40 2013
@@ -53,6 +53,38 @@ public final class AnnotationUtil
     }
 
     /**
+     * Checks, if the given class declares the specified annotation
+     */
+    public static boolean isDeclaringClass(Class<?> declaringClass, Annotation declaredAnnotation)
+    {
+        for (Annotation annotation: declaringClass.getDeclaredAnnotations())
+        {
+            if (annotation.equals(declaredAnnotation))
+            {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    /**
+     * Returns the declaring class for the specified annotation, using the specified type hierarchy.
+     */
+    public static Class<?> getDeclaringClass(Annotation declaredAnnotation, Class<?> typeHierarchy)
+    {
+        if (typeHierarchy == null)
+        {
+            return null;
+        }
+        if (isDeclaringClass(typeHierarchy, declaredAnnotation))
+        {
+            return typeHierarchy;
+        }
+        return getDeclaringClass(declaredAnnotation, typeHierarchy.getSuperclass());
+    }
+
+
+    /**
      * Check given annotation exist on the method.
      * 
      * @param method method