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>