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/01/15 23:02:36 UTC

svn commit: r899827 - in /openwebbeans/trunk: ./ samples/ejb-sample/ samples/ejb-telephone/ samples/guess/ samples/jms-sample/ samples/reservation/ webbeans-impl/ webbeans-impl/src/main/java/org/apache/webbeans/component/ webbeans-impl/src/main/java/or...

Author: gerdogdu
Date: Fri Jan 15 22:02:34 2010
New Revision: 899827

URL: http://svn.apache.org/viewvc?rev=899827&view=rev
Log:
[OWB-233,OWB-234] Circular Dependent Between Beans, update spec versions

Added:
    openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/injection/
    openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/injection/circular/
    openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/injection/circular/beans/
    openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/injection/circular/beans/CircularApplicationScopedBean.java   (with props)
    openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/injection/circular/beans/CircularDependenScopeBean.java   (with props)
    openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/injection/circular/tests/
    openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/injection/circular/tests/CircularInjectionTest.java   (with props)
Modified:
    openwebbeans/trunk/pom.xml
    openwebbeans/trunk/samples/ejb-sample/pom.xml
    openwebbeans/trunk/samples/ejb-telephone/pom.xml
    openwebbeans/trunk/samples/guess/pom.xml
    openwebbeans/trunk/samples/jms-sample/pom.xml
    openwebbeans/trunk/samples/reservation/pom.xml
    openwebbeans/trunk/webbeans-impl/pom.xml
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractBean.java
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractInjectionTargetBean.java
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/BeanManagerImpl.java
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/context/AbstractContext.java
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/context/creational/CreationalContextImpl.java
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/inject/AbstractInjectable.java
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/proxy/JavassistProxyFactory.java
    openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/WebBeansUtil.java
    openwebbeans/trunk/webbeans-resource/pom.xml
    openwebbeans/trunk/webbeans-tck/jsr299-tck-impl-1.0.0-SNAPSHOT-suite.xml

Modified: openwebbeans/trunk/pom.xml
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/pom.xml?rev=899827&r1=899826&r2=899827&view=diff
==============================================================================
--- openwebbeans/trunk/pom.xml (original)
+++ openwebbeans/trunk/pom.xml Fri Jan 15 22:02:34 2010
@@ -480,6 +480,12 @@
 				<groupId>net.sf.scannotation</groupId>
 				<artifactId>scannotation</artifactId>
 				<version>1.0.2</version>
+				<exclusions>
+                                  <exclusion>
+  				  <groupId>javassist</groupId>
+				  <artifactId>javassist</artifactId>
+                                  </exclusion>
+				</exclusions>
 			</dependency>
 
 			<dependency>
@@ -504,7 +510,7 @@
 			<dependency>
 			    <groupId>org.apache.geronimo.specs</groupId>
 			    <artifactId>geronimo-interceptor_1.1_spec</artifactId>
-			    <version>1.0.0-EA1-SNAPSHOT</version>
+			    <version>1.0.0-SNAPSHOT</version>
 			</dependency>
 
 			<dependency>
@@ -521,7 +527,7 @@
 
 			<dependency>
 				<groupId>org.apache.geronimo.specs</groupId>
-				<artifactId>geronimo-cdi_1.0_spec</artifactId>
+				<artifactId>geronimo-jcdi_1.0_spec</artifactId>
 				<version>${geronimo_cdi.version}</version>
 			</dependency>
 

Modified: openwebbeans/trunk/samples/ejb-sample/pom.xml
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/samples/ejb-sample/pom.xml?rev=899827&r1=899826&r2=899827&view=diff
==============================================================================
--- openwebbeans/trunk/samples/ejb-sample/pom.xml (original)
+++ openwebbeans/trunk/samples/ejb-sample/pom.xml Fri Jan 15 22:02:34 2010
@@ -66,7 +66,7 @@
 
          <dependency>
                  <groupId>org.apache.geronimo.specs</groupId>
-                 <artifactId>geronimo-cdi_1.0_spec</artifactId>
+                 <artifactId>geronimo-jcdi_1.0_spec</artifactId>
                  <version>${geronimo_cdi.version}</version>
                  <scope>provided</scope>
          </dependency>

Modified: openwebbeans/trunk/samples/ejb-telephone/pom.xml
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/samples/ejb-telephone/pom.xml?rev=899827&r1=899826&r2=899827&view=diff
==============================================================================
--- openwebbeans/trunk/samples/ejb-telephone/pom.xml (original)
+++ openwebbeans/trunk/samples/ejb-telephone/pom.xml Fri Jan 15 22:02:34 2010
@@ -59,7 +59,7 @@
 
          <dependency>
                  <groupId>org.apache.geronimo.specs</groupId>
-                 <artifactId>geronimo-cdi_1.0_spec</artifactId>
+                 <artifactId>geronimo-jcdi_1.0_spec</artifactId>
                  <version>${geronimo_cdi.version}</version>
                  <scope>provided</scope>
          </dependency>

Modified: openwebbeans/trunk/samples/guess/pom.xml
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/samples/guess/pom.xml?rev=899827&r1=899826&r2=899827&view=diff
==============================================================================
--- openwebbeans/trunk/samples/guess/pom.xml (original)
+++ openwebbeans/trunk/samples/guess/pom.xml Fri Jan 15 22:02:34 2010
@@ -49,7 +49,7 @@
 		
          <dependency>
             <groupId>org.apache.geronimo.specs</groupId>
-            <artifactId>geronimo-cdi_1.0_spec</artifactId>
+            <artifactId>geronimo-jcdi_1.0_spec</artifactId>
             <version>${geronimo_cdi.version}</version>
             <scope>provided</scope>
          </dependency>

Modified: openwebbeans/trunk/samples/jms-sample/pom.xml
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/samples/jms-sample/pom.xml?rev=899827&r1=899826&r2=899827&view=diff
==============================================================================
--- openwebbeans/trunk/samples/jms-sample/pom.xml (original)
+++ openwebbeans/trunk/samples/jms-sample/pom.xml Fri Jan 15 22:02:34 2010
@@ -55,7 +55,7 @@
 
          <dependency>
                  <groupId>org.apache.geronimo.specs</groupId>
-                 <artifactId>geronimo-cdi_1.0_spec</artifactId>
+                 <artifactId>geronimo-jcdi_1.0_spec</artifactId>
                  <version>${geronimo_cdi.version}</version>
                  <scope>provided</scope>
          </dependency>

Modified: openwebbeans/trunk/samples/reservation/pom.xml
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/samples/reservation/pom.xml?rev=899827&r1=899826&r2=899827&view=diff
==============================================================================
--- openwebbeans/trunk/samples/reservation/pom.xml (original)
+++ openwebbeans/trunk/samples/reservation/pom.xml Fri Jan 15 22:02:34 2010
@@ -55,7 +55,7 @@
 		
          <dependency>
                  <groupId>org.apache.geronimo.specs</groupId>
-                 <artifactId>geronimo-cdi_1.0_spec</artifactId>
+                 <artifactId>geronimo-jcdi_1.0_spec</artifactId>
                  <version>${geronimo_cdi.version}</version>
                  <scope>provided</scope>
          </dependency>

Modified: openwebbeans/trunk/webbeans-impl/pom.xml
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/pom.xml?rev=899827&r1=899826&r2=899827&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/pom.xml (original)
+++ openwebbeans/trunk/webbeans-impl/pom.xml Fri Jan 15 22:02:34 2010
@@ -77,7 +77,7 @@
 		</dependency>
 		<dependency>
 			<groupId>org.apache.geronimo.specs</groupId>
-			<artifactId>geronimo-cdi_1.0_spec</artifactId>
+			<artifactId>geronimo-jcdi_1.0_spec</artifactId>
 		</dependency>
                 <dependency>
                         <groupId>org.apache.geronimo.specs</groupId>

Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractBean.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractBean.java?rev=899827&r1=899826&r2=899827&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractBean.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractBean.java Fri Jan 15 22:02:34 2010
@@ -413,18 +413,22 @@
         dependent.setDependentOwnerInjectionPoint(injectionPoint);        
         
         @SuppressWarnings("unchecked")
-        CreationalContext<Object> dependentCreational = CreationalContextFactory.getInstance().getCreationalContext(dependentComponent);
+        CreationalContextImpl<Object> dependentCreational = (CreationalContextImpl<Object>)CreationalContextFactory.getInstance().getCreationalContext(dependentComponent);
+        
+        if(creational instanceof CreationalContextImpl)
+        {
+            dependentCreational.setOwnerCreational((CreationalContextImpl<?>)creational);   
+        }
         
         //Get dependent instance
-        object = BeanManagerImpl.getManager().getReference(dependentComponent, injectionPoint.getType(), dependentCreational);
+        object = BeanManagerImpl.getManager().getReference(dependent, injectionPoint.getType(), dependentCreational);
         
         if(creational instanceof CreationalContextImpl)
         {
             CreationalContextImpl<?> cc = (CreationalContextImpl<?>)creational;
             
             //Put this into the dependent map
-            cc.addDependent(dependent, object, dependentCreational);
-    
+            cc.addDependent(dependent, object, dependentCreational);    
         }
         
         return object;

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=899827&r1=899826&r2=899827&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 Fri Jan 15 22:02:34 2010
@@ -126,20 +126,29 @@
         beforeConstructor();
 
         T instance = createComponentInstance(creationalContext);
-        
-        if(creationalContext != null)
+                
+        //Push instance into creational context, this is necessary because
+        //Context objects look for instance in the interceptors. If we do not
+        //push instance into cretional context, circular exception occurs.
+        //Context instance first look into creational context object whether
+        //Or not it exist.
+        if(creationalContext instanceof CreationalContextImpl)
         {
-            creationalContext.push(instance);   
+            CreationalContextImpl<T> cc = (CreationalContextImpl<T>)creationalContext;
+            cc.push(instance);
         }
         
         afterConstructor(instance, creationalContext);
         
+        //Clear instance from creational context
         if(creationalContext instanceof CreationalContextImpl)
         {
-            CreationalContextImpl<T> impl = (CreationalContextImpl<T>)creationalContext;
-            impl.remove();
+            CreationalContextImpl<?> cc = (CreationalContextImpl<?>)creationalContext;
+            cc.remove();
+            
+            cc.setProxyInstance(null);
         }
-
+        
         return instance;
     }
 

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=899827&r1=899826&r2=899827&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 Fri Jan 15 22:02:34 2010
@@ -612,21 +612,29 @@
         //Find the injection point Bean
         Bean<?> bean = injectionResolver.getInjectionPointBean(injectionPoint);
         
+        boolean isImpl = false;
         if(creationalContext != null && (creationalContext instanceof CreationalContextImpl))
         {
-            CreationalContextImpl<?> creationalContextImpl = (CreationalContextImpl<?>)creationalContext;
-            
-            if(creationalContextImpl.getBean().equals(bean))
-            {
-                instance = creationalContextImpl.get();   
-            }            
-            
+            CreationalContextImpl<?> creationalContextImpl = (CreationalContextImpl<?>)creationalContext;            
+            instance = WebBeansUtil.getObjectFromCreationalContext(bean, creationalContextImpl);
+            isImpl = true;
         }
                 
         if(instance == null)
         {
+            CreationalContextImpl<?> injectedCreational = (CreationalContextImpl<?>)createCreationalContext(bean);
+            
+            if(injectionPoint.getBean().getScope() != Dependent.class)
+            {
+                if(isImpl)
+                {
+                    injectedCreational.setOwnerCreational((CreationalContextImpl<?>)creationalContext);
+                }
+   
+            }
+            
             //Creating a new creational context for target bean instance
-            instance = getReference(bean, injectionPoint.getType(), creationalContext);
+            instance = getReference(bean, injectionPoint.getType(), injectedCreational);
         }
         
         return instance;
@@ -705,7 +713,14 @@
                 else
                 {
                     instance = JavassistProxyFactory.createNormalScopedBeanProxy(bean,creationalContext);
-                    this.proxyMap.put(bean, instance);                    
+                    this.proxyMap.put(bean, instance);     
+                    
+                    //push this proxy instance into creational context
+                    if(creationalContext instanceof CreationalContextImpl)
+                    {
+                        CreationalContextImpl<Object> temp = (CreationalContextImpl<Object>)creationalContext;
+                        temp.setProxyInstance(instance);
+                    }
                 }
             }            
         }

Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/context/AbstractContext.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/context/AbstractContext.java?rev=899827&r1=899826&r2=899827&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/context/AbstractContext.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/context/AbstractContext.java Fri Jan 15 22:02:34 2010
@@ -30,6 +30,7 @@
 import javax.enterprise.context.spi.Contextual;
 import javax.enterprise.context.spi.CreationalContext;
 
+import org.apache.webbeans.context.creational.CreationalContextImpl;
 import org.apache.webbeans.context.type.ContextTypes;
 
 /**
@@ -173,7 +174,21 @@
             
             else
             {
-                instance = component.create(creationalContext);
+                //Check for incomplete instance, putting for circular references
+                if(creationalContext instanceof CreationalContextImpl)
+                {
+                    CreationalContextImpl<?> cc = (CreationalContextImpl<?>)creationalContext;
+                    if(cc.get() != null)
+                    {
+                        instance = (T)cc.get();
+                    }
+                }
+                
+                if(instance == null)
+                {
+                    instance = component.create(creationalContext);    
+                }
+                
 
                 if (instance != null)
                 {

Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/context/creational/CreationalContextImpl.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/context/creational/CreationalContextImpl.java?rev=899827&r1=899826&r2=899827&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/context/creational/CreationalContextImpl.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/context/creational/CreationalContextImpl.java Fri Jan 15 22:02:34 2010
@@ -31,11 +31,15 @@
 {
     private Object incompleteInstance = null;
     
+    private Object proxyInstance = null;
+    
     /**Contextual bean dependent instances*/
     private Map<Object, DependentCreationalContext<?>> dependentObjects = new WeakHashMap<Object, DependentCreationalContext<?>>();
      
     private Contextual<T> contextual = null;
     
+    private CreationalContextImpl<?> ownerCreational = null;
+    
     private static class DependentCreationalContext<S>
     {
         private CreationalContext<S> creationalContext;
@@ -104,6 +108,15 @@
         
     }
     
+    public void setProxyInstance(Object proxyInstance)
+    {
+        this.proxyInstance = proxyInstance;
+    }
+    
+    public Object getProxyInstance()
+    {
+        return this.proxyInstance;
+    }
     
     /**
      * Adds given dependent instance to the map.
@@ -178,4 +191,22 @@
         return this.contextual;
     }
 
+
+    /**
+     * @return the ownerCreational
+     */
+    public CreationalContextImpl<?> getOwnerCreational()
+    {
+        return ownerCreational;
+    }
+
+
+    /**
+     * @param ownerCreational the ownerCreational to set
+     */
+    public void setOwnerCreational(CreationalContextImpl<?> ownerCreational)
+    {
+        this.ownerCreational = ownerCreational;
+    }
+
 }
\ No newline at end of file

Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/inject/AbstractInjectable.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/inject/AbstractInjectable.java?rev=899827&r1=899826&r2=899827&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/inject/AbstractInjectable.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/inject/AbstractInjectable.java Fri Jan 15 22:02:34 2010
@@ -23,6 +23,7 @@
 import javax.enterprise.context.spi.CreationalContext;
 import javax.enterprise.inject.Instance;
 import javax.enterprise.inject.spi.Bean;
+import javax.enterprise.inject.spi.BeanManager;
 import javax.enterprise.inject.spi.InjectionPoint;
 
 import org.apache.webbeans.component.AbstractBean;
@@ -115,7 +116,10 @@
                 if(this.creationalContext instanceof CreationalContext)
                 {
                     CreationalContextImpl<?> cc = (CreationalContextImpl<?>)this.creationalContext;
-                    cc.addDependent((Bean<Object>)injectedBean, injected, BeanManagerImpl.getManager().createCreationalContext((Bean<Object>)injectedBean));                    
+                    CreationalContextImpl<Object> dependentCc = (CreationalContextImpl<Object>)BeanManagerImpl.getManager().createCreationalContext((Bean<Object>)injectedBean);
+                    dependentCc.setOwnerCreational(cc);
+                    
+                    cc.addDependent((Bean<Object>)injectedBean, injected, dependentCc);                    
                 }
             }
         }
@@ -173,7 +177,8 @@
      */
     private Object injectForComponent(InjectionPoint injectionPoint)
     {
-        Object object = BeanManagerImpl.getManager().getInstanceToInject(injectionPoint,this.creationalContext);
+        BeanManager manager = BeanManagerImpl.getManager();
+        Object object = manager.getInjectableReference(injectionPoint, this.creationalContext);
                 
         return object;
     }

Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/proxy/JavassistProxyFactory.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/proxy/JavassistProxyFactory.java?rev=899827&r1=899826&r2=899827&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/proxy/JavassistProxyFactory.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/proxy/JavassistProxyFactory.java Fri Jan 15 22:02:34 2010
@@ -17,6 +17,7 @@
 import java.lang.annotation.Annotation;
 import java.lang.reflect.Type;
 import java.util.HashSet;
+import java.util.Iterator;
 import java.util.List;
 import java.util.Set;
 
@@ -76,6 +77,31 @@
             return actualInstance;
         }
         
+        boolean notInInterceptorClassAndLifecycle = false;
+        if(!interceptors.isEmpty())
+        {
+            Iterator<InterceptorData> its = interceptors.iterator();
+            while(its.hasNext())
+            {
+                InterceptorData id = its.next();
+                if(!id.isDefinedInInterceptorClass() && id.isLifecycleInterceptor())
+                {
+                    continue;
+                }
+                else
+                {
+                    notInInterceptorClassAndLifecycle = true;
+                    break;
+                }
+            }
+        }
+        
+        //No need to return proxy
+        if(!notInInterceptorClassAndLifecycle && decorators.isEmpty())
+        {
+            return actualInstance;
+        }
+        
         try
         {
             ProxyFactory fact = createProxyFactory(bean);

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=899827&r1=899826&r2=899827&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 Fri Jan 15 22:02:34 2010
@@ -99,6 +99,7 @@
 import org.apache.webbeans.config.ManagedBeanConfigurator;
 import org.apache.webbeans.container.BeanManagerImpl;
 import org.apache.webbeans.container.ExternalScope;
+import org.apache.webbeans.context.creational.CreationalContextImpl;
 import org.apache.webbeans.conversation.ConversationImpl;
 import org.apache.webbeans.decorator.DecoratorUtil;
 import org.apache.webbeans.decorator.DecoratorsManager;
@@ -2140,4 +2141,26 @@
             producer.setEnabled(parent.isEnabled());            
         }
     }
+    
+    public static Object getObjectFromCreationalContext(Bean<?> bean,CreationalContextImpl<?> cc)
+    {
+        if(cc == null)
+        {
+            throw new IllegalArgumentException("Creational context is null");
+        }
+        
+        if(cc.getBean().equals(bean))
+        {
+            return cc.getProxyInstance();   
+        }            
+        else
+        {
+            if(cc.getOwnerCreational() != null)
+            {
+                return getObjectFromCreationalContext(bean, cc.getOwnerCreational());   
+            }
+        }
+        
+        return null;
+    }
 }
\ No newline at end of file

Added: openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/injection/circular/beans/CircularApplicationScopedBean.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/injection/circular/beans/CircularApplicationScopedBean.java?rev=899827&view=auto
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/injection/circular/beans/CircularApplicationScopedBean.java (added)
+++ openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/injection/circular/beans/CircularApplicationScopedBean.java Fri Jan 15 22:02:34 2010
@@ -0,0 +1,46 @@
+/*
+ * 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.
+ */
+package org.apache.webbeans.newtests.injection.circular.beans;
+
+import javax.annotation.PostConstruct;
+import javax.enterprise.context.ApplicationScoped;
+import javax.inject.Inject;
+import javax.inject.Named;
+
+@ApplicationScoped
+@Named(value="org.apache.webbeans.newtests.injection.circular.beans.CircularApplicationScopedBean")
+public class CircularApplicationScopedBean
+{
+    private @Inject CircularDependenScopeBean dependent;
+    
+    public static boolean success = false;
+    
+    public void hello()
+    {
+        
+    }
+    
+    @PostConstruct
+    public void postConstruct()
+    {
+        dependent.hello();
+        success = true;
+    }
+
+}

Propchange: openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/injection/circular/beans/CircularApplicationScopedBean.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/injection/circular/beans/CircularDependenScopeBean.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/injection/circular/beans/CircularDependenScopeBean.java?rev=899827&view=auto
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/injection/circular/beans/CircularDependenScopeBean.java (added)
+++ openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/injection/circular/beans/CircularDependenScopeBean.java Fri Jan 15 22:02:34 2010
@@ -0,0 +1,46 @@
+/*
+ * 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.
+ */
+package org.apache.webbeans.newtests.injection.circular.beans;
+
+import javax.annotation.PostConstruct;
+import javax.enterprise.context.Dependent;
+import javax.inject.Inject;
+import javax.inject.Named;
+
+@Dependent
+@Named(value="org.apache.webbeans.newtests.injection.circular.beans.CircularDependenScopeBean")
+public class CircularDependenScopeBean
+{
+    @Inject CircularApplicationScopedBean app;
+    
+    public static boolean success = false;
+    
+    
+    public void hello()
+    {
+        
+    }
+    
+    @PostConstruct
+    public void postConstruct()
+    {
+        app.hello();
+        success = true;
+    }
+}

Propchange: openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/injection/circular/beans/CircularDependenScopeBean.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/injection/circular/tests/CircularInjectionTest.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/injection/circular/tests/CircularInjectionTest.java?rev=899827&view=auto
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/injection/circular/tests/CircularInjectionTest.java (added)
+++ openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/injection/circular/tests/CircularInjectionTest.java Fri Jan 15 22:02:34 2010
@@ -0,0 +1,101 @@
+/*
+ * 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.
+ */
+package org.apache.webbeans.newtests.injection.circular.tests;
+
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Set;
+
+import javax.enterprise.context.spi.CreationalContext;
+import javax.enterprise.inject.spi.Bean;
+
+import junit.framework.Assert;
+
+import org.apache.webbeans.newtests.AbstractUnitTest;
+import org.apache.webbeans.newtests.injection.circular.beans.CircularApplicationScopedBean;
+import org.apache.webbeans.newtests.injection.circular.beans.CircularDependenScopeBean;
+import org.junit.Test;
+
+public class CircularInjectionTest extends AbstractUnitTest
+{
+    public CircularInjectionTest()
+    {
+        
+    }
+    
+    @Test
+    @SuppressWarnings("unchecked")
+    public void testOneNormalOneDependent()
+    {
+        Collection<URL> beanXmls = new ArrayList<URL>();
+        
+        Collection<Class<?>> beanClasses = new ArrayList<Class<?>>();
+        beanClasses.add(CircularDependenScopeBean.class);
+        beanClasses.add(CircularApplicationScopedBean.class);
+        
+        startContainer(beanClasses, beanXmls);        
+        
+        Set<Bean<?>> beans = getBeanManager().getBeans("org.apache.webbeans.newtests.injection.circular.beans.CircularApplicationScopedBean");
+        Assert.assertNotNull(beans);        
+        
+        Bean<CircularApplicationScopedBean> dependentBean = (Bean<CircularApplicationScopedBean>)beans.iterator().next();        
+        CreationalContext<CircularApplicationScopedBean> ctx = getBeanManager().createCreationalContext(dependentBean);
+        
+        Object reference = getBeanManager().getReference(dependentBean, CircularApplicationScopedBean.class, ctx);
+        
+        Assert.assertTrue(reference instanceof CircularApplicationScopedBean);
+        
+        CircularApplicationScopedBean beanInstance = (CircularApplicationScopedBean)reference;
+        beanInstance.hello();
+        
+        Assert.assertTrue(CircularDependenScopeBean.success);
+        Assert.assertTrue(CircularApplicationScopedBean.success);
+        
+        shutDownContainer();
+    }
+    
+    @Test
+    @SuppressWarnings("unchecked")
+    public void testOneDependentOneNormal()
+    {
+        Collection<URL> beanXmls = new ArrayList<URL>();
+        
+        Collection<Class<?>> beanClasses = new ArrayList<Class<?>>();
+        beanClasses.add(CircularDependenScopeBean.class);
+        beanClasses.add(CircularApplicationScopedBean.class);
+        
+        startContainer(beanClasses, beanXmls);        
+        
+        Set<Bean<?>> beans = getBeanManager().getBeans("org.apache.webbeans.newtests.injection.circular.beans.CircularDependenScopeBean");
+        Assert.assertNotNull(beans);        
+        
+        Bean<CircularDependenScopeBean> dependentBean = (Bean<CircularDependenScopeBean>)beans.iterator().next();        
+        CreationalContext<CircularDependenScopeBean> ctx = getBeanManager().createCreationalContext(dependentBean);
+        
+        Object reference = getBeanManager().getReference(dependentBean, CircularDependenScopeBean.class, ctx);
+        
+        Assert.assertTrue(reference instanceof CircularDependenScopeBean);
+                
+        Assert.assertTrue(CircularDependenScopeBean.success);
+        Assert.assertTrue(CircularApplicationScopedBean.success);
+        
+        shutDownContainer();
+    }
+}

Propchange: openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/injection/circular/tests/CircularInjectionTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: openwebbeans/trunk/webbeans-resource/pom.xml
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-resource/pom.xml?rev=899827&r1=899826&r2=899827&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-resource/pom.xml (original)
+++ openwebbeans/trunk/webbeans-resource/pom.xml Fri Jan 15 22:02:34 2010
@@ -30,7 +30,7 @@
 	<dependencies>
                 <dependency>
                         <groupId>org.apache.geronimo.specs</groupId>
-                        <artifactId>geronimo-cdi_1.0_spec</artifactId>
+                        <artifactId>geronimo-jcdi_1.0_spec</artifactId>
                         <scope>provided</scope>
                 </dependency>
 		

Modified: openwebbeans/trunk/webbeans-tck/jsr299-tck-impl-1.0.0-SNAPSHOT-suite.xml
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-tck/jsr299-tck-impl-1.0.0-SNAPSHOT-suite.xml?rev=899827&r1=899826&r2=899827&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-tck/jsr299-tck-impl-1.0.0-SNAPSHOT-suite.xml (original)
+++ openwebbeans/trunk/webbeans-tck/jsr299-tck-impl-1.0.0-SNAPSHOT-suite.xml Fri Jan 15 22:02:34 2010
@@ -19,18 +19,8 @@
          </run>
       </groups>
       
-     <classes>
-    <class name="org.jboss.jsr299.tck.tests.lookup.circular.CircularDependencyTest">
-      <methods>
-        <exclude name="testCircularInjectionOnOneDependentAndOneNormalBean"/>
-        <exclude name="testCircularInjectionOnTwoNormalBeans"/>
-        <exclude name="testCircularInjectionOnOneNormalAndOneDependentBean"/>
-      </methods>
-    </class>
-  </classes>
  
-      <packages>
-         
+      <packages>         
          <package name="org.jboss.jsr299.tck.tests.*"></package>
       </packages>
    </test>