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);