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