You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openwebbeans.apache.org by ge...@apache.org on 2010/03/21 01:45:26 UTC
svn commit: r925707 - in /openwebbeans/trunk:
webbeans-impl/src/main/java/org/apache/webbeans/component/
webbeans-impl/src/main/java/org/apache/webbeans/config/
webbeans-impl/src/main/java/org/apache/webbeans/container/
webbeans-impl/src/main/java/org/...
Author: gerdogdu
Date: Sun Mar 21 00:45:26 2010
New Revision: 925707
URL: http://svn.apache.org/viewvc?rev=925707&view=rev
Log:
Update for TCK
Added:
openwebbeans/trunk/webbeans-tck/webprofile-suite.xml
- copied, changed from r925397, openwebbeans/trunk/webbeans-tck/jsr299-tck-impl-1.0.0-SNAPSHOT-suite.xml
Removed:
openwebbeans/trunk/webbeans-tck/jsr299-tck-impl-1.0.0-SNAPSHOT-suite.xml
Modified:
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractInjectionTargetBean.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/EnterpriseBeanMarker.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/BeansDeployer.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/DefinitionUtil.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/BeanManagerImpl.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/event/NotificationManager.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/inject/OWBInjector.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/ClassUtil.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/WebBeansUtil.java
openwebbeans/trunk/webbeans-porting/pom.xml
openwebbeans/trunk/webbeans-porting/src/main/java/org/apache/webbeans/test/tck/StandaloneContainersImpl.java
openwebbeans/trunk/webbeans-tck/pom.xml
openwebbeans/trunk/webbeans-tck/src/test/resources/META-INF/jboss-test-harness.properties
openwebbeans/trunk/webbeans-tck/src/test/resources/META-INF/openwebbeans/openwebbeans.properties
openwebbeans/trunk/webbeans-tomcat/pom.xml
openwebbeans/trunk/webbeans-web/src/main/java/org/apache/webbeans/web/lifecycle/WebContainerLifecycle.java
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=925707&r1=925706&r2=925707&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 Sun Mar 21 00:45:26 2010
@@ -22,6 +22,7 @@ import java.util.List;
import java.util.Set;
import javax.decorator.Delegate;
+import javax.enterprise.context.Dependent;
import javax.enterprise.context.spi.CreationalContext;
import javax.enterprise.inject.spi.AnnotatedType;
import javax.enterprise.inject.spi.Bean;
@@ -39,11 +40,13 @@ import org.apache.webbeans.exception.Web
import org.apache.webbeans.exception.WebBeansException;
import org.apache.webbeans.inject.InjectableField;
import org.apache.webbeans.inject.InjectableMethods;
+import org.apache.webbeans.inject.OWBInjector;
import org.apache.webbeans.intercept.InterceptorData;
import org.apache.webbeans.intercept.InterceptorType;
import org.apache.webbeans.intercept.InvocationContextImpl;
import org.apache.webbeans.intercept.webbeans.WebBeansInterceptor;
import org.apache.webbeans.logger.WebBeansLogger;
+import org.apache.webbeans.proxy.JavassistProxyFactory;
import org.apache.webbeans.spi.ResourceInjectionService;
import org.apache.webbeans.spi.ServiceLoader;
import org.apache.webbeans.util.ClassUtil;
@@ -148,14 +151,35 @@ public abstract class AbstractInjectionT
* @param creationalContext creational context
* @return bean instance
*/
+ @SuppressWarnings("unchecked")
protected T createDefaultInstance(CreationalContext<T> creationalContext)
{
beforeConstructor();
-
+
+ //Create actual bean instance
T instance = createComponentInstance(creationalContext);
+ //For dependent instance checks
+ T dependentProxy = null;
+ boolean isDependentProxy = false;
+ if(getScope() == Dependent.class)
+ {
+ T result = (T)JavassistProxyFactory.createDependentScopedBeanProxy(this, instance, creationalContext);
+ //Means that Dependent Bean has interceptor/decorator
+ if(JavassistProxyFactory.isProxyInstance(result))
+ {
+ dependentProxy = result;
+ isDependentProxy = true;
+ }
+ }
+ //If not fully initialize instance
if(!isFullyInitialize())
{
+ if(isDependentProxy)
+ {
+ return dependentProxy;
+ }
+
return instance;
}
@@ -170,6 +194,7 @@ public abstract class AbstractInjectionT
cc.push(instance);
}
+ //After constructor
afterConstructor(instance, creationalContext);
//Clear instance from creational context
@@ -181,6 +206,12 @@ public abstract class AbstractInjectionT
cc.setProxyInstance(null);
}
+ //If dependent proxy
+ if(isDependentProxy)
+ {
+ return dependentProxy;
+ }
+
return instance;
}
@@ -704,7 +735,15 @@ public abstract class AbstractInjectionT
if(!Serializable.class.isAssignableFrom(interceptorClass))
{
throw new WebBeansConfigurationException("Passivation bean : " + toString() + " interceptors must be passivating capable");
- }
+ }
+ else
+ {
+ if(!OWBInjector.checkInjectionPointForInterceptorPassivation(interceptorClass))
+ {
+ throw new WebBeansConfigurationException("Passivation bean : " + toString() + " interceptor : " + interceptorClass+ " must have " +
+ "serializable injection points");
+ }
+ }
}
}
}
Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/EnterpriseBeanMarker.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/EnterpriseBeanMarker.java?rev=925707&r1=925706&r2=925707&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/EnterpriseBeanMarker.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/EnterpriseBeanMarker.java Sun Mar 21 00:45:26 2010
@@ -21,5 +21,5 @@ package org.apache.webbeans.component;
*/
public interface EnterpriseBeanMarker extends InterceptedMarker
{
-
+ public boolean isPassivationCapable();
}
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=925707&r1=925706&r2=925707&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 Sun Mar 21 00:45:26 2010
@@ -21,7 +21,9 @@ import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
import java.util.ArrayList;
+import java.util.Stack;
+import javax.enterprise.context.Dependent;
import javax.enterprise.inject.Model;
import javax.enterprise.inject.Specializes;
import javax.enterprise.inject.spi.AnnotatedType;
@@ -34,6 +36,7 @@ import javax.interceptor.Interceptor;
import org.apache.webbeans.WebBeansConstants;
import org.apache.webbeans.component.AbstractInjectionTargetBean;
import org.apache.webbeans.component.AbstractProducerBean;
+import org.apache.webbeans.component.EnterpriseBeanMarker;
import org.apache.webbeans.component.InjectionTargetBean;
import org.apache.webbeans.component.InterceptedMarker;
import org.apache.webbeans.component.ManagedBean;
@@ -44,6 +47,7 @@ import org.apache.webbeans.component.cre
import org.apache.webbeans.component.creation.BeanCreator.MetaDataProvider;
import org.apache.webbeans.config.OWBLogConst;
import org.apache.webbeans.container.BeanManagerImpl;
+import org.apache.webbeans.container.InjectionResolver;
import org.apache.webbeans.decorator.DecoratorsManager;
import org.apache.webbeans.decorator.WebBeansDecorator;
import org.apache.webbeans.deployment.StereoTypeManager;
@@ -315,8 +319,24 @@ public class BeansDeployer
if (beans != null && beans.size() > 0)
{
+ Stack<String> beanNames = new Stack<String>();
for (Bean<?> bean : beans)
{
+ String beanName = null;
+ if((beanName = bean.getName()) != null)
+ {
+ beanNames.push(beanName);
+ }
+
+ if((bean instanceof Decorator) ||
+ (bean instanceof javax.enterprise.inject.spi.Interceptor))
+ {
+ if(!bean.getScope().equals(Dependent.class))
+ {
+ logger.warn("Bean " + bean.toString() + "has not DependentScope. If an interceptor or decorator has any scope other than @Dependent, non-portable behaviour results.");
+ }
+ }
+
if(bean instanceof InjectionTargetBean)
{
//Decorators not applied to interceptors/decorators/@NewBean
@@ -360,10 +380,51 @@ public class BeansDeployer
}
}
}
+
+ //Validate Bean names
+ validateBeanNames(beanNames);
}
}
+ private void validateBeanNames(Stack<String> beanNames)
+ {
+ if(beanNames.size() > 0)
+ {
+ String beanName = beanNames.pop();
+ String part = null;
+ int i = beanName.indexOf('.');
+ if(i != -1)
+ {
+ part = beanName.substring(0,i);
+ }
+
+ for(String other : beanNames)
+ {
+ if(beanName.equals(other))
+ {
+ Set<Bean<?>> beans = InjectionResolver.getInstance().implResolveByName(beanName);
+ if(beans.size() > 1)
+ {
+ throw new WebBeansConfigurationException("There are two different beans with name : " + beanName + " in the deployment archieve");
+ }
+ }
+ else
+ {
+ if(part != null)
+ {
+ if(part.equals(other))
+ {
+ throw new WebBeansConfigurationException("EL name of one bean is of the form x.y, where y is a valid bean EL name, and " +
+ "x is the EL name of the other bean for the bean name : " + beanName);
+ }
+ }
+ }
+ }
+ }
+ }
+
+
/**
* Discovers and deploys classes from class path.
*
@@ -544,7 +605,17 @@ public class BeansDeployer
*/
protected void checkPassivationScope(Bean<?> beanObj)
{
- if(BeanManagerImpl.getManager().isPassivatingScope(beanObj.getScope()))
+ boolean validate = false;
+
+ if(EnterpriseBeanMarker.class.isAssignableFrom(beanObj.getClass()))
+ {
+ EnterpriseBeanMarker marker = (EnterpriseBeanMarker)beanObj;
+ if(marker.isPassivationCapable())
+ {
+ validate = true;
+ }
+ }
+ else if(BeanManagerImpl.getManager().isPassivatingScope(beanObj.getScope()))
{
if(WebBeansUtil.isPassivationCapable(beanObj) == null)
{
@@ -555,12 +626,17 @@ public class BeansDeployer
}
else
{
- ((OwbBean<?>)beanObj).validatePassivationDependencies();
+ validate = true;
}
}
- ((OwbBean<?>)beanObj).validatePassivationDependencies();
+ validate = true;
}
+
+ if(validate)
+ {
+ ((OwbBean<?>)beanObj).validatePassivationDependencies();
+ }
}
/**
Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/DefinitionUtil.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/DefinitionUtil.java?rev=925707&r1=925706&r2=925707&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/DefinitionUtil.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/DefinitionUtil.java Sun Mar 21 00:45:26 2010
@@ -22,6 +22,7 @@ import java.lang.reflect.Modifier;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.lang.reflect.TypeVariable;
+import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
@@ -67,7 +68,9 @@ import org.apache.webbeans.decorator.Web
import org.apache.webbeans.event.EventUtil;
import org.apache.webbeans.event.NotificationManager;
import org.apache.webbeans.exception.WebBeansConfigurationException;
+import org.apache.webbeans.inject.OWBInjector;
import org.apache.webbeans.inject.impl.InjectionPointFactory;
+import org.apache.webbeans.intercept.InterceptorData;
import org.apache.webbeans.intercept.WebBeansInterceptorConfig;
import org.apache.webbeans.intercept.ejb.EJBInterceptorConfig;
import org.apache.webbeans.util.AnnotationUtil;
@@ -140,7 +143,7 @@ public final class DefinitionUtil
for(Type apiType : apiTypes)
{
- if(ClassUtil.getClazz(apiType).equals(type))
+ if(ClassUtil.getClazz(apiType) == type)
{
foundType = apiType;
break;
@@ -1025,6 +1028,22 @@ public final class DefinitionUtil
{
EJBInterceptorConfig.configure(((AbstractOwbBean)bean).getReturnType(), bean.getInterceptorStack());
}
+ else
+ {
+ //Check for injected fields in EJB @Interceptors
+ List<InterceptorData> stack = new ArrayList<InterceptorData>();
+ EJBInterceptorConfig.configure(bean.getBeanClass(), stack);
+ for(InterceptorData data : stack)
+ {
+ if(data.isDefinedInInterceptorClass())
+ {
+ if(!OWBInjector.checkInjectionPointForInterceptorPassivation(data.getInterceptorClass()))
+ {
+ throw new WebBeansConfigurationException("Enterprise bean : " + bean.toString() + " interceptors must have serializable injection points");
+ }
+ }
+ }
+ }
// For every injection target bean
WebBeansInterceptorConfig.configure(bean, bean.getInterceptorStack());
Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/BeanManagerImpl.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/BeanManagerImpl.java?rev=925707&r1=925706&r2=925707&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/BeanManagerImpl.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/BeanManagerImpl.java Sun Mar 21 00:45:26 2010
@@ -816,9 +816,8 @@ public class BeanManagerImpl implements
return instance;
}
-
+ //Get dependent from DependentContex that create contextual instance
instance = context.get((Bean<Object>)bean, (CreationalContext<Object>)creationalContext);
- instance = JavassistProxyFactory.createDependentScopedBeanProxy((AbstractOwbBean<Object>)bean, instance, (CreationalContext<Object>)creationalContext);
}
return instance;
Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/event/NotificationManager.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/event/NotificationManager.java?rev=925707&r1=925706&r2=925707&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/event/NotificationManager.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/event/NotificationManager.java Sun Mar 21 00:45:26 2010
@@ -194,61 +194,64 @@ public final class NotificationManager
Class<?> beanClass = null;
Class<?> observerClass = ClassUtil.getClazz(type);
- if(observerClass.isAssignableFrom(eventType))
+ if(observerClass != null)
{
- //ProcessBean,ProcessAnnotateType, ProcessInjectionTarget
- if(WebBeansUtil.isExtensionBeanEventType(eventType))
+ if(observerClass.isAssignableFrom(eventType))
{
- if(WebBeansUtil.isDefaultExtensionBeanEventType(observerClass))
- {
- GenericBeanEvent genericBeanEvent = (GenericBeanEvent)event;
- beanClass = genericBeanEvent.getBeanClass();
-
- if(ClassUtil.isParametrizedType(type))
- {
- addToMathingWithParametrizedForBeans(type,beanClass,matching);
- }
- else
- {
- addToMatching(type, matching);
+ //ProcessBean,ProcessAnnotateType, ProcessInjectionTarget
+ if(WebBeansUtil.isExtensionBeanEventType(eventType))
+ {
+ if(WebBeansUtil.isDefaultExtensionBeanEventType(observerClass))
+ {
+ GenericBeanEvent genericBeanEvent = (GenericBeanEvent)event;
+ beanClass = genericBeanEvent.getBeanClass();
+
+ if(ClassUtil.isParametrizedType(type))
+ {
+ addToMathingWithParametrizedForBeans(type,beanClass,matching);
+ }
+ else
+ {
+ addToMatching(type, matching);
+ }
}
}
- }
- //ProcessProducer, ProcessProducerMethod, ProcessProducerField,ProcessObserverMEthod
- else if(WebBeansUtil.isExtensionProducerOrObserverEventType(eventType))
- {
- if(WebBeansUtil.isDefaultExtensionProducerOrObserverEventType(observerClass))
+ //ProcessProducer, ProcessProducerMethod, ProcessProducerField,ProcessObserverMEthod
+ else if(WebBeansUtil.isExtensionProducerOrObserverEventType(eventType))
{
-
- GenericProducerObserverEvent genericBeanEvent = (GenericProducerObserverEvent)event;
- beanClass = genericBeanEvent.getBeanClass();
- Class<?> producerOrObserverReturnClass = genericBeanEvent.getProducerOrObserverType();
-
- if(ClassUtil.isParametrizedType(type))
+ if(WebBeansUtil.isDefaultExtensionProducerOrObserverEventType(observerClass))
{
- boolean isObserverMethod = false;
- if(observerClass.equals(ProcessObserverMethod.class))
+
+ GenericProducerObserverEvent genericBeanEvent = (GenericProducerObserverEvent)event;
+ beanClass = genericBeanEvent.getBeanClass();
+ Class<?> producerOrObserverReturnClass = genericBeanEvent.getProducerOrObserverType();
+
+ if(ClassUtil.isParametrizedType(type))
{
- isObserverMethod = true;
+ boolean isObserverMethod = false;
+ if(observerClass.equals(ProcessObserverMethod.class))
+ {
+ isObserverMethod = true;
+ }
+
+ addToMathingWithParametrizedForProducers(isObserverMethod,type, beanClass, producerOrObserverReturnClass, matching);
+ }
+ else
+ {
+ addToMatching(type, matching);
}
-
- addToMathingWithParametrizedForProducers(isObserverMethod,type, beanClass, producerOrObserverReturnClass, matching);
}
- else
- {
+ }
+ //BeforeBeanDiscovery,AfterBeanDiscovery,AfterDeploymentValidation
+ //BeforeShutDown Events
+ else
+ {
+ if(observerClass.isAssignableFrom(eventType))
+ {
addToMatching(type, matching);
}
- }
- }
- //BeforeBeanDiscovery,AfterBeanDiscovery,AfterDeploymentValidation
- //BeforeShutDown Events
- else
- {
- if(observerClass.isAssignableFrom(eventType))
- {
- addToMatching(type, matching);
- }
- }
+ }
+ }
}
}
Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/inject/OWBInjector.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/inject/OWBInjector.java?rev=925707&r1=925706&r2=925707&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/inject/OWBInjector.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/inject/OWBInjector.java Sun Mar 21 00:45:26 2010
@@ -18,16 +18,21 @@
*/
package org.apache.webbeans.inject;
+import java.io.Serializable;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.Set;
import javax.enterprise.inject.spi.AnnotatedType;
+import javax.enterprise.inject.spi.Bean;
import javax.enterprise.inject.spi.BeanManager;
import javax.enterprise.inject.spi.InjectionPoint;
import javax.enterprise.inject.spi.InjectionTarget;
+import javax.inject.Inject;
import org.apache.webbeans.container.BeanManagerImpl;
+import org.apache.webbeans.context.creational.CreationalContextImpl;
+import org.apache.webbeans.util.Asserts;
import org.apache.webbeans.util.ClassUtil;
/**
@@ -39,11 +44,22 @@ import org.apache.webbeans.util.ClassUti
*/
public final class OWBInjector
{
- private OWBInjector()
+ private CreationalContextImpl<?> ownerCreationalContext = null;
+
+ public OWBInjector()
{
}
+ public void destroy()
+ {
+ if(this.ownerCreationalContext != null)
+ {
+ this.ownerCreationalContext.release();
+ this.ownerCreationalContext = null;
+ }
+ }
+
@SuppressWarnings("unchecked")
public static void inject(Object javaEeComponentInstance) throws Exception
{
@@ -56,9 +72,11 @@ public final class OWBInjector
Set<InjectionPoint> injectionPoints = injectionTarget.getInjectionPoints();
if(injectionPoints != null && injectionPoints.size() > 0)
{
+ CreationalContextImpl<?> ownerCreationalContext = (CreationalContextImpl<?>) beanManager.createCreationalContext((Bean<?>)injectionTarget);
+
for(InjectionPoint injectionPoint : injectionPoints)
{
- Object object = beanManager.getInjectableReference(injectionPoint, beanManager.createCreationalContext(injectionPoint.getBean()));
+ Object object = beanManager.getInjectableReference(injectionPoint, ownerCreationalContext);
if(injectionPoint.getMember() instanceof Method)
{
Method method = (Method)injectionPoint.getMember();
@@ -78,4 +96,23 @@ public final class OWBInjector
throw e;
}
}
+
+ public static boolean checkInjectionPointForInterceptorPassivation(Class<?> clazz)
+ {
+ Asserts.nullCheckForClass(clazz);
+ Field[] fields = clazz.getDeclaredFields();
+ for(Field field : fields)
+ {
+ if(field.getAnnotation(Inject.class) != null)
+ {
+ Class<?> type = field.getType();
+ if(!Serializable.class.isAssignableFrom(type))
+ {
+ return false;
+ }
+ }
+ }
+
+ return true;
+ }
}
Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/ClassUtil.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/ClassUtil.java?rev=925707&r1=925706&r2=925707&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/ClassUtil.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/ClassUtil.java Sun Mar 21 00:45:26 2010
@@ -1020,6 +1020,10 @@ public final class ClassUtil
return true;
}
}
+ else if((beanTypeArg instanceof Class) && (ClassUtil.isTypeVariable(requiredTypeArg)))
+ {
+ return checkRequiredTypeIsTypeVariableAndBeanTypeIsClass(beanTypeArg, requiredTypeArg);
+ }
}
return false;
@@ -1134,6 +1138,27 @@ public final class ClassUtil
return false;
}
+
+ public static boolean checkRequiredTypeIsTypeVariableAndBeanTypeIsClass(Type beanTypeArg, Type requiredTypeArg)
+ {
+ Class<?> clazzBeanType = (Class<?>)beanTypeArg;
+
+ TypeVariable<?> tvRequiredTypeArg = (TypeVariable<?>)requiredTypeArg;
+ Type tvBound = tvRequiredTypeArg.getBounds()[0];
+
+ if(tvBound instanceof Class)
+ {
+ Class<?> clazzTvBound = (Class<?>)tvBound;
+
+ if(clazzTvBound.isAssignableFrom(clazzBeanType))
+ {
+ return true;
+ }
+ }
+
+ return false;
+ }
+
public static boolean checkBeanTypeAndRequiredIsTypeVariable(Type beanTypeArg, Type requiredTypeArg)
{
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=925707&r1=925706&r2=925707&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 Sun Mar 21 00:45:26 2010
@@ -1674,6 +1674,12 @@ public final class WebBeansUtil
return;
}
+ //Check types of the beans
+ if(comp.getClass() != superBean.getClass())
+ {
+ throw new DefinitionException("@Specialized Class : " + specializedClass.getName() + " and its super class may be the same type of bean,i.e, ManagedBean, SessionBean etc.");
+ }
+
if(superBean.getName() != null)
{
if(comp.getName() != null)
Modified: openwebbeans/trunk/webbeans-porting/pom.xml
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-porting/pom.xml?rev=925707&r1=925706&r2=925707&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-porting/pom.xml (original)
+++ openwebbeans/trunk/webbeans-porting/pom.xml Sun Mar 21 00:45:26 2010
@@ -48,7 +48,6 @@
<dependency>
<groupId>org.apache.openejb</groupId>
<artifactId>openejb-core</artifactId>
- <optional>true</optional>
</dependency>
<dependency>
Modified: openwebbeans/trunk/webbeans-porting/src/main/java/org/apache/webbeans/test/tck/StandaloneContainersImpl.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-porting/src/main/java/org/apache/webbeans/test/tck/StandaloneContainersImpl.java?rev=925707&r1=925706&r2=925707&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-porting/src/main/java/org/apache/webbeans/test/tck/StandaloneContainersImpl.java (original)
+++ openwebbeans/trunk/webbeans-porting/src/main/java/org/apache/webbeans/test/tck/StandaloneContainersImpl.java Sun Mar 21 00:45:26 2010
@@ -142,6 +142,7 @@ public class StandaloneContainersImpl im
public void undeploy()
{
this.lifeCycle.stopApplication(null);
+ this.lifeCycle = null;
}
public DeploymentException getDeploymentException()
Modified: openwebbeans/trunk/webbeans-tck/pom.xml
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-tck/pom.xml?rev=925707&r1=925706&r2=925707&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-tck/pom.xml (original)
+++ openwebbeans/trunk/webbeans-tck/pom.xml Sun Mar 21 00:45:26 2010
@@ -55,8 +55,8 @@
<version>${webbeans.tck.version}</version>
<exclusions>
<exclusion>
- <artifactId>jsr299-api</artifactId>
- <groupId>org.jboss.webbeans</groupId>
+ <artifactId>cdi-api</artifactId>
+ <groupId>javax.enterprise</groupId>
</exclusion>
</exclusions>
</dependency>
@@ -74,17 +74,7 @@
<artifactId>openwebbeans-ejb</artifactId>
<version>${project.version}</version>
</dependency>
-
- <dependency>
- <groupId>org.apache.geronimo.specs</groupId>
- <artifactId>geronimo-jcdi_1.0_spec</artifactId>
- </dependency>
-
- <dependency>
- <groupId>org.apache.geronimo.specs</groupId>
- <artifactId>geronimo-atinject_1.0_spec</artifactId>
- </dependency>
-
+
<dependency>
<groupId>org.apache.openwebbeans</groupId>
<artifactId>openwebbeans-spi</artifactId>
@@ -326,7 +316,7 @@
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<suiteXmlFiles>
- <suiteXmlFile>jsr299-tck-impl-1.0.0-SNAPSHOT-suite.xml</suiteXmlFile>
+ <suiteXmlFile>standalone-suite.xml</suiteXmlFile>
</suiteXmlFiles>
<systemProperties>
Modified: openwebbeans/trunk/webbeans-tck/src/test/resources/META-INF/jboss-test-harness.properties
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-tck/src/test/resources/META-INF/jboss-test-harness.properties?rev=925707&r1=925706&r2=925707&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-tck/src/test/resources/META-INF/jboss-test-harness.properties (original)
+++ openwebbeans/trunk/webbeans-tck/src/test/resources/META-INF/jboss-test-harness.properties Sun Mar 21 00:45:26 2010
@@ -22,10 +22,10 @@ org.jboss.testharness.spi.StandaloneCont
org.jboss.testharness.spi.Containers=org.apache.webbeans.test.tck.ContainersImpl
org.jboss.jsr299.tck.spi.EL=org.apache.webbeans.test.tck.ELImpl
-org.jboss.testharness.standalone=false
+org.jboss.testharness.standalone=true
#jboss-as.dir=/tmp
#jboss.force.restart=false
org.jboss.testharness.libraryDirectory=target/dependency/lib
-org.jboss.testharness.runIntegrationTests=true
+org.jboss.testharness.runIntegrationTests=false
org.jboss.testharness.api.TestLauncher=org.jboss.testharness.impl.runner.servlet.ServletTestLauncher
Modified: openwebbeans/trunk/webbeans-tck/src/test/resources/META-INF/openwebbeans/openwebbeans.properties
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-tck/src/test/resources/META-INF/openwebbeans/openwebbeans.properties?rev=925707&r1=925706&r2=925707&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-tck/src/test/resources/META-INF/openwebbeans/openwebbeans.properties (original)
+++ openwebbeans/trunk/webbeans-tck/src/test/resources/META-INF/openwebbeans/openwebbeans.properties Sun Mar 21 00:45:26 2010
@@ -36,7 +36,7 @@ org.apache.webbeans.spi.JNDIService=org.
org.apache.webbeans.spi.ScannerService=org.apache.webbeans.test.tck.mock.TCKMetaDataDiscoveryImpl
#Used for Standalone
-#org.apache.webbeans.spi.deployer.useEjbMetaDataDiscoveryService=true
+org.apache.webbeans.spi.deployer.useEjbMetaDataDiscoveryService=true
#Used for WebProfile TCK
-org.apache.webbeans.spi.deployer.useEjbMetaDataDiscoveryService=false
\ No newline at end of file
+#org.apache.webbeans.spi.deployer.useEjbMetaDataDiscoveryService=false
\ No newline at end of file
Copied: openwebbeans/trunk/webbeans-tck/webprofile-suite.xml (from r925397, openwebbeans/trunk/webbeans-tck/jsr299-tck-impl-1.0.0-SNAPSHOT-suite.xml)
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-tck/webprofile-suite.xml?p2=openwebbeans/trunk/webbeans-tck/webprofile-suite.xml&p1=openwebbeans/trunk/webbeans-tck/jsr299-tck-impl-1.0.0-SNAPSHOT-suite.xml&r1=925397&r2=925707&rev=925707&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-tck/jsr299-tck-impl-1.0.0-SNAPSHOT-suite.xml (original)
+++ openwebbeans/trunk/webbeans-tck/webprofile-suite.xml Sun Mar 21 00:45:26 2010
@@ -1,5 +1,20 @@
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
-
+<!--
+
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version
+ 2.0 (the "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0 Unless required by
+ applicable law or agreed to in writing, software distributed under the
+ License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
+ CONDITIONS OF ANY KIND, either express or implied. See the License for
+ the specific language governing permissions and limitations under the
+ License.
+-->
<suite name="JSR-299 TCK" verbose="2" >
<test name="JSR-299 TCK">
<method-selectors>
@@ -8,7 +23,7 @@
<selector-class name="org.jboss.testharness.impl.testng.DisableIntegrationTestsMethodSelector" />
</method-selector>
- <!-- Used for Web Profiles -->
+ <!-- Used for Web Profiles-->
<method-selector>
<selector-class name="org.jboss.jsr299.tck.impl.WebProfileMethodSelector" />
</method-selector>
Modified: openwebbeans/trunk/webbeans-tomcat/pom.xml
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-tomcat/pom.xml?rev=925707&r1=925706&r2=925707&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-tomcat/pom.xml (original)
+++ openwebbeans/trunk/webbeans-tomcat/pom.xml Sun Mar 21 00:45:26 2010
@@ -46,13 +46,11 @@
<dependency>
<groupId>org.apache.geronimo.specs</groupId>
<artifactId>geronimo-jcdi_1.0_spec</artifactId>
- <version>1.0-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.geronimo.specs</groupId>
<artifactId>geronimo-atinject_1.0_spec</artifactId>
- <version>1.0-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
</dependencies>
Modified: openwebbeans/trunk/webbeans-web/src/main/java/org/apache/webbeans/web/lifecycle/WebContainerLifecycle.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-web/src/main/java/org/apache/webbeans/web/lifecycle/WebContainerLifecycle.java?rev=925707&r1=925706&r2=925707&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-web/src/main/java/org/apache/webbeans/web/lifecycle/WebContainerLifecycle.java (original)
+++ openwebbeans/trunk/webbeans-web/src/main/java/org/apache/webbeans/web/lifecycle/WebContainerLifecycle.java Sun Mar 21 00:45:26 2010
@@ -102,7 +102,7 @@ public final class WebContainerLifecycle
logger.debug("Application is configured as JSP. Adding EL Resolver.");
JspApplicationContext applicationCtx = JspFactory.getDefaultFactory().getJspApplicationContext((ServletContext)startupObject);
- applicationCtx.addELResolver(new WebBeansELResolver());
+ applicationCtx.addELResolver(new WebBeansELResolver());
}
}