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/05 13:54:44 UTC

svn commit: r1429274 - in /openwebbeans/trunk: webbeans-ejb/src/main/java/org/apache/webbeans/ejb/common/component/ webbeans-ejb/src/main/java/org/apache/webbeans/ejb/common/util/ webbeans-impl/src/main/java/org/apache/webbeans/component/creation/ webb...

Author: arne
Date: Sat Jan  5 12:54:44 2013
New Revision: 1429274

URL: http://svn.apache.org/viewvc?rev=1429274&view=rev
Log:
OWB-745: Removed BeanCreator.MetaDataProvider

Modified:
    openwebbeans/trunk/webbeans-ejb/src/main/java/org/apache/webbeans/ejb/common/component/EjbBeanCreatorImpl.java
    openwebbeans/trunk/webbeans-ejb/src/main/java/org/apache/webbeans/ejb/common/util/EjbUtility.java
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/AbstractBeanCreator.java
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/AnnotatedTypeBeanCreatorImpl.java
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/BeanCreator.java
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/ManagedBeanCreatorImpl.java
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/BeansDeployer.java
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/corespi/security/ManagedSecurityService.java
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/corespi/security/SimpleSecurityService.java
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/portable/AnnotatedTypeImpl.java
    openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/interceptors/lifecycle/InterceptorExtension.java
    openwebbeans/trunk/webbeans-spi/src/main/java/org/apache/webbeans/spi/SecurityService.java

Modified: openwebbeans/trunk/webbeans-ejb/src/main/java/org/apache/webbeans/ejb/common/component/EjbBeanCreatorImpl.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-ejb/src/main/java/org/apache/webbeans/ejb/common/component/EjbBeanCreatorImpl.java?rev=1429274&r1=1429273&r2=1429274&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-ejb/src/main/java/org/apache/webbeans/ejb/common/component/EjbBeanCreatorImpl.java (original)
+++ openwebbeans/trunk/webbeans-ejb/src/main/java/org/apache/webbeans/ejb/common/component/EjbBeanCreatorImpl.java Sat Jan  5 12:54:44 2013
@@ -19,7 +19,6 @@
 package org.apache.webbeans.ejb.common.component;
 
 import java.lang.reflect.Type;
-import java.util.List;
 import java.util.Set;
 
 import javax.enterprise.inject.spi.ObserverMethod;
@@ -67,32 +66,10 @@ public class EjbBeanCreatorImpl<T> exten
      * {@inheritDoc}
      */
     @Override
-    @SuppressWarnings("unchecked")
     public void defineApiType()
     {
-        if(isDefaultMetaDataProvider())
-        {
-            List<Class<?>> businessLocals = getBean().getBusinessLocalInterfaces();
-            for(Class clazz : businessLocals)
-            {
-                getBean().addApiType(clazz);
-            }
-            
-            getBean().addApiType(Object.class);
-            
-            if (getBean().needsBeanLocalViewAddedToTypes())
-            {
-                for(Class<?> clazz = getBean().getBeanClass(); !clazz.equals(Object.class); clazz = clazz.getSuperclass()) 
-                { 
-                    getBean().addApiType(clazz);    
-                }   
-            }
-        }
-        else
-        {  
-            Set<Type> types = getAnnotatedType().getTypeClosure();
-            getBean().getTypes().addAll(types);
-        }
+        Set<Type> types = getAnnotatedType().getTypeClosure();
+        getBean().getTypes().addAll(types);
     }
     
     

Modified: openwebbeans/trunk/webbeans-ejb/src/main/java/org/apache/webbeans/ejb/common/util/EjbUtility.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-ejb/src/main/java/org/apache/webbeans/ejb/common/util/EjbUtility.java?rev=1429274&r1=1429273&r2=1429274&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-ejb/src/main/java/org/apache/webbeans/ejb/common/util/EjbUtility.java (original)
+++ openwebbeans/trunk/webbeans-ejb/src/main/java/org/apache/webbeans/ejb/common/util/EjbUtility.java Sat Jan  5 12:54:44 2013
@@ -36,7 +36,6 @@ import javax.enterprise.inject.spi.Produ
 
 import org.apache.webbeans.component.ProducerFieldBean;
 import org.apache.webbeans.component.ProducerMethodBean;
-import org.apache.webbeans.component.creation.BeanCreator.MetaDataProvider;
 import org.apache.webbeans.config.WebBeansContext;
 import org.apache.webbeans.container.BeanManagerImpl;
 import org.apache.webbeans.ejb.common.component.BaseEjbBean;
@@ -79,11 +78,6 @@ public final class EjbUtility
             return;
         }
         
-        if(processAnnotatedEvent.isModifiedAnnotatedType())
-        {
-            ejbBeanCreator.setMetaDataProvider(MetaDataProvider.THIRDPARTY);
-        }
-        
         //Define meta-data
         ejbBeanCreator.defineSerializable();
         ejbBeanCreator.defineStereoTypes();

Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/AbstractBeanCreator.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/AbstractBeanCreator.java?rev=1429274&r1=1429273&r2=1429274&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/AbstractBeanCreator.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/AbstractBeanCreator.java Sat Jan  5 12:54:44 2013
@@ -41,9 +41,6 @@ public class AbstractBeanCreator<T> impl
     /**Bean instance*/
     private final AbstractOwbBean<T> bean;    
     
-    /**Default metadata provider*/
-    private MetaDataProvider metadataProvider = MetaDataProvider.DEFAULT;
-    
     /**
      * If annotated type is set by ProcessAnnotatedType event, used this annotated type
      * to define bean instance instead of using class artifacts.
@@ -131,33 +128,6 @@ public class AbstractBeanCreator<T> impl
     {
         definitionUtil.defineStereoTypes(bean, AnnotationUtil.getAnnotationsFromSet(annotatedType.getAnnotations()));
     }
-    
-    /**
-     * {@inheritDoc}
-     */
-    public MetaDataProvider getMetaDataProvider()
-    {
-        return metadataProvider;
-    }
-    
-    /**
-     * {@inheritDoc}
-     */
-    public void setMetaDataProvider(MetaDataProvider metadataProvider)
-    {
-        this.metadataProvider = metadataProvider;
-    }
-    
-    /**
-     * Returns true if metadata provider is default,
-     * false otherwise
-     * 
-     * @return true if metadata provider is default
-     */
-    protected boolean isDefaultMetaDataProvider()
-    {
-        return metadataProvider.equals(MetaDataProvider.DEFAULT);
-    }
 
     /**
      * {@inheritDoc}

Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/AnnotatedTypeBeanCreatorImpl.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/AnnotatedTypeBeanCreatorImpl.java?rev=1429274&r1=1429273&r2=1429274&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/AnnotatedTypeBeanCreatorImpl.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/AnnotatedTypeBeanCreatorImpl.java Sat Jan  5 12:54:44 2013
@@ -37,7 +37,6 @@ public class AnnotatedTypeBeanCreatorImp
     public AnnotatedTypeBeanCreatorImpl(AnnotatedType<T> annotatedType, WebBeansContext context)
     {
         super(annotatedType, context);
-        setMetaDataProvider(MetaDataProvider.THIRDPARTY);
     }
     
     /**

Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/BeanCreator.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/BeanCreator.java?rev=1429274&r1=1429273&r2=1429274&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/BeanCreator.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/BeanCreator.java Sat Jan  5 12:54:44 2013
@@ -33,17 +33,6 @@ import org.apache.webbeans.component.Abs
  */
 public interface BeanCreator<T>
 {
-    /**
-     * MetaDataProvider. 
-     */
-    public enum MetaDataProvider
-    {
-        //Default meta-data is used
-        DEFAULT,
-        //Third party overriden meta-data will be used. 
-        //It is overriden with event ProcessAnnotatedType
-        THIRDPARTY
-    }
     
     /**
      * Check conditions on creating bean instance.
@@ -64,20 +53,6 @@ public interface BeanCreator<T>
      * Define api type.
      */
     public void defineApiType();
-    
-    /**
-     * Returns metadata provider.
-     * 
-     * @return metadata provider
-     */
-    public MetaDataProvider getMetaDataProvider();
-    
-    /**
-     * Sets meta-data provider.
-     * 
-     * @param metadataProvider metadata provider
-     */
-    public void setMetaDataProvider(MetaDataProvider metadataProvider);
         
     /**
      * Define scope type of the bean.

Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/ManagedBeanCreatorImpl.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/ManagedBeanCreatorImpl.java?rev=1429274&r1=1429273&r2=1429274&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/ManagedBeanCreatorImpl.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/creation/ManagedBeanCreatorImpl.java Sat Jan  5 12:54:44 2013
@@ -82,15 +82,7 @@ public class ManagedBeanCreatorImpl<T> e
     @Override
     public void checkCreateConditions()
     {
-        if(isDefaultMetaDataProvider())
-        {
-            webBeansContext.getManagedBeanConfigurator().checkManagedBeanCondition(getBean().getReturnType());
-        }
-        else
-        {
-            webBeansContext.getWebBeansUtil().checkManagedBeanCondition(getAnnotatedType());
-        }
-        
+        webBeansContext.getWebBeansUtil().checkManagedBeanCondition(getAnnotatedType());
         WebBeansUtil.checkGenericType(getBean());
         //Check Unproxiable
         webBeansContext.getWebBeansUtil().checkUnproxiableApiType(getBean(), getBean().getScope());
@@ -102,21 +94,10 @@ public class ManagedBeanCreatorImpl<T> e
      */
     public void defineConstructor()
     {
-        Constructor<T> constructor;
-        if(isDefaultMetaDataProvider())
-        {
-            constructor = webBeansContext.getWebBeansUtil().defineConstructor(getBean().getReturnType());
-            webBeansContext.getDefinitionUtil().addConstructorInjectionPointMetaData(getBean(), constructor);
-        }
-        else
-        {
-           AnnotatedConstructor<T> annotated = WebBeansAnnotatedTypeUtil.getBeanConstructor(getAnnotatedType());
-           constructor = annotated.getJavaMember();
-           webBeansContext.getAnnotatedTypeUtil().addConstructorInjectionPointMetaData(getBean(), annotated);
-        }
-        
+        AnnotatedConstructor<T> annotated = WebBeansAnnotatedTypeUtil.getBeanConstructor(getAnnotatedType());
+        Constructor<T> constructor = annotated.getJavaMember();
+        webBeansContext.getAnnotatedTypeUtil().addConstructorInjectionPointMetaData(getBean(), annotated);
         getBean().setConstructor(constructor);
-        
     }
 
     /**

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=1429274&r1=1429273&r2=1429274&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 Sat Jan  5 12:54:44 2013
@@ -50,7 +50,6 @@ import org.apache.webbeans.component.Inj
 import org.apache.webbeans.component.InterceptedMarker;
 import org.apache.webbeans.component.NewBean;
 import org.apache.webbeans.component.OwbBean;
-import org.apache.webbeans.component.creation.BeanCreator.MetaDataProvider;
 import org.apache.webbeans.component.creation.ManagedBeanCreatorImpl;
 import org.apache.webbeans.container.BeanManagerImpl;
 import org.apache.webbeans.container.InjectableBeanManager;
@@ -838,7 +837,6 @@ public class BeansDeployer
             if(processAnnotatedEvent.isModifiedAnnotatedType())
             {
                 annotationTypeSet = true;
-                managedBeanCreator.setMetaDataProvider(MetaDataProvider.THIRDPARTY);
             }
 
             GProcessInjectionTarget processInjectionTarget = null;

Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/corespi/security/ManagedSecurityService.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/corespi/security/ManagedSecurityService.java?rev=1429274&r1=1429273&r2=1429274&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/corespi/security/ManagedSecurityService.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/corespi/security/ManagedSecurityService.java Sat Jan  5 12:54:44 2013
@@ -55,8 +55,11 @@ public class ManagedSecurityService impl
 
     private static final int METHOD_CLASS_GETDECLAREDFIELDS = 0x06;
 
+    private static final int METHOD_CLASS_GETCONSTRUCTOR = 0x07;
+
     private static final PrivilegedActionGetSystemProperties SYSTEM_PROPERTY_ACTION = new PrivilegedActionGetSystemProperties();
 
+
     public ManagedSecurityService()
     {
         // we need to make sure that only WebBeansContext gets used to create us!
@@ -107,6 +110,17 @@ public class ManagedSecurityService impl
         return (Constructor<T>)obj;
     }
 
+    public <T> Constructor<T> doPrivilegedGetConstructor(Class<T> clazz, Class<?>... parameterTypes)
+    {
+        Object obj = AccessController.doPrivileged(
+                new PrivilegedActionForClass(clazz, parameterTypes, METHOD_CLASS_GETCONSTRUCTOR));
+        if (obj instanceof NoSuchMethodException)
+        {
+            return null;
+        }
+        return (Constructor<T>)obj;
+    }
+
     public <T> Constructor<?>[] doPrivilegedGetDeclaredConstructors(Class<T> clazz)
     {
         Object obj = AccessController.doPrivileged(
@@ -218,7 +232,8 @@ public class ManagedSecurityService impl
                         return clazz.getDeclaredField((String)parameters);
                     case METHOD_CLASS_GETDECLAREDFIELDS:
                         return clazz.getDeclaredFields();
-
+                    case METHOD_CLASS_GETCONSTRUCTOR:
+                        return clazz.getConstructor((Class<?>[])parameters);
                     default:
                         return new WebBeansException("unknown security method: " + method);
                 }

Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/corespi/security/SimpleSecurityService.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/corespi/security/SimpleSecurityService.java?rev=1429274&r1=1429273&r2=1429274&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/corespi/security/SimpleSecurityService.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/corespi/security/SimpleSecurityService.java Sat Jan  5 12:54:44 2013
@@ -56,6 +56,18 @@ public class SimpleSecurityService imple
         }
     }
 
+    public <T> Constructor<T> doPrivilegedGetConstructor(Class<T> clazz, Class<?>... parameterTypes)
+    {
+        try
+        {
+            return clazz.getConstructor(parameterTypes);
+        }
+        catch (NoSuchMethodException e)
+        {
+            return null;
+        }
+    }
+
     public <T> Constructor<?>[] doPrivilegedGetDeclaredConstructors(Class<T> clazz)
     {
         return clazz.getDeclaredConstructors();

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=1429274&r1=1429273&r2=1429274&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  5 12:54:44 2013
@@ -89,6 +89,12 @@ class AnnotatedTypeImpl<X> extends Abstr
                     constructors.add(ac);
                 }
             }
+            if (constructors.isEmpty())
+            {
+                // must be implicit default constructor
+                Constructor<X> constructor = getWebBeansContext().getSecurityService().doPrivilegedGetConstructor(annotatedClass);
+                constructors.add(new AnnotatedConstructorImpl<X>(getWebBeansContext(), constructor, this));
+            }
 
             Field[] decFields = getWebBeansContext().getSecurityService().doPrivilegedGetDeclaredFields(annotatedClass);
             Method[] decMethods = getWebBeansContext().getSecurityService().doPrivilegedGetDeclaredMethods(annotatedClass);

Modified: openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/interceptors/lifecycle/InterceptorExtension.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/interceptors/lifecycle/InterceptorExtension.java?rev=1429274&r1=1429273&r2=1429274&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/interceptors/lifecycle/InterceptorExtension.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/interceptors/lifecycle/InterceptorExtension.java Sat Jan  5 12:54:44 2013
@@ -24,11 +24,14 @@ import javax.enterprise.util.AnnotationL
 import javax.interceptor.Interceptor;
 
 import org.apache.webbeans.config.WebBeansContext;
+import org.apache.webbeans.util.ExceptionUtil;
 
 import java.lang.annotation.Annotation;
+import java.lang.reflect.Constructor;
 import java.lang.reflect.Type;
 import java.util.Collections;
 import java.util.HashSet;
+import java.util.List;
 import java.util.Set;
 
 public class InterceptorExtension implements Extension
@@ -73,7 +76,7 @@ public class InterceptorExtension implem
     public static class AnnotatedTypeImpl<X> implements AnnotatedType<X>
     {
         private Class<X> javaClass;
-        private Set<AnnotatedConstructor<X>>    annotatedConstructors = Collections.EMPTY_SET;
+        private Set<AnnotatedConstructor<X>>    annotatedConstructors = new HashSet<AnnotatedConstructor<X>>();
         private Set<AnnotatedMethod<? super X>> annotatedMethods = Collections.EMPTY_SET;
         private Set<AnnotatedField<? super X>>  annotatedFields = Collections.EMPTY_SET;
         private Set<Type>                       typeClosures  = Collections.EMPTY_SET;
@@ -83,6 +86,7 @@ public class InterceptorExtension implem
         public AnnotatedTypeImpl(Class<X> javaClass)
         {
             this.javaClass = javaClass;
+            this.annotatedConstructors.add(new AnnotatedConstructorImpl<X>(this));
         }
 
         public Set<AnnotatedConstructor<X>> getConstructors()
@@ -169,4 +173,68 @@ public class InterceptorExtension implem
         }
     }
 
+    public static class AnnotatedConstructorImpl<X> implements AnnotatedConstructor<X> {
+
+        private AnnotatedType<X> declaringType;
+        private Constructor<X> javaMember;
+        private List<AnnotatedParameter<X>> parameters = Collections.EMPTY_LIST;
+        private Set<Annotation> annotations = Collections.EMPTY_SET;
+        
+        public AnnotatedConstructorImpl(AnnotatedType<X> declaringType)
+        {
+            try {
+                this.declaringType = declaringType;
+                this.javaMember = declaringType.getJavaClass().getConstructor();
+            } catch (SecurityException e) {
+                ExceptionUtil.throwAsRuntimeException(e);
+            } catch (NoSuchMethodException e) {
+                ExceptionUtil.throwAsRuntimeException(e);
+            }
+        }
+
+        @Override
+        public List<AnnotatedParameter<X>> getParameters() {
+            return parameters;
+        }
+
+        @Override
+        public boolean isStatic() {
+            return false;
+        }
+
+        @Override
+        public AnnotatedType<X> getDeclaringType() {
+            return declaringType;
+        }
+
+        @Override
+        public Type getBaseType() {
+            return javaMember.getDeclaringClass();
+        }
+
+        @Override
+        public Set<Type> getTypeClosure() {
+            return declaringType.getTypeClosure();
+        }
+
+        @Override
+        public <T extends Annotation> T getAnnotation(Class<T> annotationType) {
+            return null;
+        }
+
+        @Override
+        public Set<Annotation> getAnnotations() {
+            return annotations;
+        }
+
+        @Override
+        public boolean isAnnotationPresent(Class<? extends Annotation> annotationType) {
+            return false;
+        }
+
+        @Override
+        public Constructor<X> getJavaMember() {
+            return javaMember;
+        }
+    }
 }

Modified: openwebbeans/trunk/webbeans-spi/src/main/java/org/apache/webbeans/spi/SecurityService.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-spi/src/main/java/org/apache/webbeans/spi/SecurityService.java?rev=1429274&r1=1429273&r2=1429274&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-spi/src/main/java/org/apache/webbeans/spi/SecurityService.java (original)
+++ openwebbeans/trunk/webbeans-spi/src/main/java/org/apache/webbeans/spi/SecurityService.java Sat Jan  5 12:54:44 2013
@@ -53,6 +53,11 @@ public interface SecurityService
     public <T> Constructor<T> doPrivilegedGetDeclaredConstructor(Class<T> clazz, Class<?>... parameterTypes);
 
     /**
+     * @see Class#getDeclaredConstructor(Class[])
+     */
+    public <T> Constructor<T> doPrivilegedGetConstructor(Class<T> clazz, Class<?>... parameterTypes);
+
+    /**
      * @see Class#getDeclaredConstructors()
      */
     public <T> Constructor<?>[] doPrivilegedGetDeclaredConstructors(Class<T> clazz);