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/02/24 11:43:10 UTC
svn commit: r915744 - in /openwebbeans/trunk/webbeans-impl/src:
main/java/org/apache/webbeans/component/
main/java/org/apache/webbeans/config/
main/java/org/apache/webbeans/container/
main/java/org/apache/webbeans/decorator/ main/java/org/apache/webbea...
Author: gerdogdu
Date: Wed Feb 24 10:43:09 2010
New Revision: 915744
URL: http://svn.apache.org/viewvc?rev=915744&view=rev
Log:
Update for TCK
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/AbstractOwbBean.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/BeansDeployer.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/BeanManagerImpl.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/InjectionResolver.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/ResolutionUtil.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/decorator/WebBeansDecorator.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/inject/AbstractInjectable.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/util/WebBeansUtil.java
openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/interceptors/lifecycle/LifecycleInterceptor.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=915744&r1=915743&r2=915744&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 Wed Feb 24 10:43:09 2010
@@ -13,6 +13,7 @@
*/
package org.apache.webbeans.component;
+import java.io.Serializable;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.ArrayList;
@@ -667,41 +668,49 @@
*/
@Override
public void validatePassivationDependencies()
- {
- if(isPassivationCapable())
+ {
+ super.validatePassivationDependencies();
+
+ //Check for interceptors and decorators
+ for(Decorator<?> dec : this.decorators)
{
- super.validatePassivationDependencies();
-
- //Check for interceptors and decorators
- for(Decorator<?> dec : this.decorators)
+ WebBeansDecorator<?> decorator = (WebBeansDecorator<?>)dec;
+ if(!decorator.isPassivationCapable())
{
- WebBeansDecorator<?> decorator = (WebBeansDecorator<?>)dec;
- if(!decorator.isPassivationCapable())
+ throw new WebBeansConfigurationException("Passivation bean : " + toString() + " decorators must be passivating capable");
+ }
+ else
+ {
+ decorator.validatePassivationDependencies();
+ }
+ }
+
+ for(InterceptorData interceptorData : this.interceptorStack)
+ {
+ if(interceptorData.isDefinedWithWebBeansInterceptor())
+ {
+ WebBeansInterceptor<?> interceptor = (WebBeansInterceptor<?>)interceptorData.getWebBeansInterceptor();
+ if(!interceptor.isPassivationCapable())
{
- throw new WebBeansConfigurationException("Passivation bean : " + toString() + " decorators must be passivating capable");
+ throw new WebBeansConfigurationException("Passivation bean : " + toString() + " interceptors must be passivating capable");
}
else
{
- decorator.validatePassivationDependencies();
+ interceptor.validatePassivationDependencies();
}
}
-
- for(InterceptorData interceptorData : this.interceptorStack)
+ else
{
- if(interceptorData.isDefinedWithWebBeansInterceptor())
+ Object interceptorInstance = interceptorData.getInterceptorInstance();
+ if(interceptorInstance != null)
{
- WebBeansInterceptor<?> interceptor = (WebBeansInterceptor<?>)interceptorData.getWebBeansInterceptor();
- if(!interceptor.isPassivationCapable())
+ Class<?> interceptorClass = interceptorInstance.getClass();
+ if(!Serializable.class.isAssignableFrom(interceptorClass))
{
throw new WebBeansConfigurationException("Passivation bean : " + toString() + " interceptors must be passivating capable");
- }
- else
- {
- interceptor.validatePassivationDependencies();
- }
+ }
}
}
-
}
}
Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractOwbBean.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractOwbBean.java?rev=915744&r1=915743&r2=915744&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractOwbBean.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractOwbBean.java Wed Feb 24 10:43:09 2010
@@ -25,6 +25,7 @@
import javax.enterprise.context.Dependent;
import javax.enterprise.context.spi.CreationalContext;
import javax.enterprise.inject.CreationException;
+import javax.enterprise.inject.Disposes;
import javax.enterprise.inject.spi.Bean;
import javax.enterprise.inject.spi.BeanManager;
import javax.enterprise.inject.spi.InjectionPoint;
@@ -601,6 +602,10 @@
{
if(!WebBeansUtil.isPassivationCapableDependency(injectionPoint))
{
+ if(injectionPoint.getAnnotated().isAnnotationPresent(Disposes.class))
+ {
+ continue;
+ }
throw new WebBeansConfigurationException("Passivation capable beans must satisfy passivation capable dependencies. " +
"Bean : " + toString() + " does not satisfy.");
}
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=915744&r1=915743&r2=915744&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 Wed Feb 24 10:43:09 2010
@@ -33,6 +33,7 @@
import org.apache.webbeans.WebBeansConstants;
import org.apache.webbeans.component.AbstractInjectionTargetBean;
+import org.apache.webbeans.component.AbstractProducerBean;
import org.apache.webbeans.component.InjectionTargetBean;
import org.apache.webbeans.component.ManagedBean;
import org.apache.webbeans.component.NewBean;
@@ -520,7 +521,19 @@
*/
protected void checkPassivationScope(Bean<?> beanObj)
{
- ((OwbBean<?>)beanObj).validatePassivationDependencies();
+ if(BeanManagerImpl.getManager().isPassivatingScope(beanObj.getScope()))
+ {
+ if(WebBeansUtil.isPassivationCapable(beanObj) == null)
+ {
+ if(!(beanObj instanceof AbstractProducerBean))
+ {
+ throw new WebBeansConfigurationException("Passivation scoped defined bean must be passivation capable, " +
+ "but bean : " + toString() + " is not passivation capable");
+ }
+ }
+
+ ((OwbBean<?>)beanObj).validatePassivationDependencies();
+ }
}
/**
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=915744&r1=915743&r2=915744&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 Wed Feb 24 10:43:09 2010
@@ -58,6 +58,7 @@
import org.apache.webbeans.component.EnterpriseBeanMarker;
import org.apache.webbeans.component.InjectionTargetBean;
import org.apache.webbeans.component.JmsBeanMarker;
+import org.apache.webbeans.component.NewBean;
import org.apache.webbeans.component.OwbBean;
import org.apache.webbeans.component.third.ThirdpartyBeanImpl;
import org.apache.webbeans.config.WebBeansFinder;
@@ -737,7 +738,7 @@
//Check type if bean type is given
if(beanType != null)
{
- if(!ResolutionUtil.checkBeanTypeAssignableToGivenType(bean.getTypes(), beanType))
+ if(!ResolutionUtil.checkBeanTypeAssignableToGivenType(bean.getTypes(), beanType, bean instanceof NewBean))
{
throw new IllegalArgumentException("Given bean type : " + beanType + " is not applicable for the bean instance : " + bean);
}
Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/InjectionResolver.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/InjectionResolver.java?rev=915744&r1=915743&r2=915744&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/InjectionResolver.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/InjectionResolver.java Wed Feb 24 10:43:09 2010
@@ -143,11 +143,11 @@
if(newQualifier.value() == New.class)
{
- beanSet.add(WebBeansUtil.createNewComponent(clazz));
+ beanSet.add(WebBeansUtil.createNewComponent(clazz, type));
}
else
{
- beanSet.add(WebBeansUtil.createNewComponent(newQualifier.value()));
+ beanSet.add(WebBeansUtil.createNewComponent(newQualifier.value(),null));
}
}
@@ -209,11 +209,11 @@
if(newQualifier.value() == New.class)
{
- beanSet.add(WebBeansUtil.createNewComponent(clazz));
+ beanSet.add(WebBeansUtil.createNewComponent(clazz,type));
}
else
{
- beanSet.add(WebBeansUtil.createNewComponent(newQualifier.value()));
+ beanSet.add(WebBeansUtil.createNewComponent(newQualifier.value(),null));
}
}
Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/ResolutionUtil.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/ResolutionUtil.java?rev=915744&r1=915743&r2=915744&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/ResolutionUtil.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/ResolutionUtil.java Wed Feb 24 10:43:09 2010
@@ -36,7 +36,7 @@
}
- public static boolean checkBeanTypeAssignableToGivenType(Set<Type> beanTypes, Type givenType)
+ public static boolean checkBeanTypeAssignableToGivenType(Set<Type> beanTypes, Type givenType, boolean newBean)
{
Iterator<Type> itBeanApiTypes = beanTypes.iterator();
while (itBeanApiTypes.hasNext())
@@ -46,7 +46,19 @@
if(ClassUtil.isAssignable(beanApiType, givenType))
{
return true;
- }
+ }
+ else
+ {
+ //Check for @New
+ if(newBean && ClassUtil.isParametrizedType(givenType))
+ {
+ Class<?> requiredType = ClassUtil.getClass(givenType);
+ if(ClassUtil.isClassAssignable(requiredType, ClassUtil.getClass(beanApiType)))
+ {
+ return true;
+ }
+ }
+ }
}
return false;
Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/decorator/WebBeansDecorator.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/decorator/WebBeansDecorator.java?rev=915744&r1=915743&r2=915744&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/decorator/WebBeansDecorator.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/decorator/WebBeansDecorator.java Wed Feb 24 10:43:09 2010
@@ -468,7 +468,7 @@
@Override
public Set<Type> getDecoratedTypes() {
- return this.wrappedBean.getTypes();
+ return this.decoratedTypes;
}
@Override
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=915744&r1=915743&r2=915744&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 Wed Feb 24 10:43:09 2010
@@ -34,6 +34,7 @@
import org.apache.webbeans.container.BeanManagerImpl;
import org.apache.webbeans.container.InjectionResolver;
import org.apache.webbeans.logger.WebBeansLogger;
+import org.apache.webbeans.util.ClassUtil;
import org.apache.webbeans.util.WebBeansUtil;
/**
@@ -97,7 +98,11 @@
boolean dependentProducer = false;
if(WebBeansUtil.isDependent(injectedBean))
{
- InjectionPointBean.local.set(injectionPoint);
+ if(!InjectionPoint.class.isAssignableFrom(ClassUtil.getClass(injectionPoint.getType())))
+ {
+ InjectionPointBean.local.set(injectionPoint);
+ }
+
if(!injectionPoint.isTransient())
{
if(injectedBean instanceof AbstractProducerBean)
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=915744&r1=915743&r2=915744&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 Wed Feb 24 10:43:09 2010
@@ -564,7 +564,7 @@
* @param clazz impl. class
* @return the new component
*/
- public static <T> NewBean<T> createNewComponent(Class<T> clazz)
+ public static <T> NewBean<T> createNewComponent(Class<T> clazz, Type apiType)
{
Asserts.nullCheckForClass(clazz);
@@ -592,7 +592,15 @@
comp.addQualifier(new NewLiteral(clazz));
comp.setName(null);
- comp.addApiType(clazz);
+ if(apiType == null)
+ {
+ comp.addApiType(clazz);
+ }
+ else
+ {
+ comp.getTypes().add(apiType);
+ }
+
comp.addApiType(Object.class);
return comp;
@@ -1855,7 +1863,14 @@
{
AbstractOwbBean<?> bean = (AbstractOwbBean<?>)it.next();
- if (bean.getTypes().contains(clazz))
+ boolean enterprise = false;
+ if(bean instanceof EnterpriseBeanMarker)
+ {
+ enterprise = true;
+ }
+
+ if (bean.getTypes().contains(clazz) ||
+ (enterprise && bean.getBeanClass().equals(clazz)))
{
if(annotate)
{
Modified: openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/interceptors/lifecycle/LifecycleInterceptor.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/interceptors/lifecycle/LifecycleInterceptor.java?rev=915744&r1=915743&r2=915744&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/interceptors/lifecycle/LifecycleInterceptor.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/interceptors/lifecycle/LifecycleInterceptor.java Wed Feb 24 10:43:09 2010
@@ -13,6 +13,8 @@
*/
package org.apache.webbeans.newtests.interceptors.lifecycle;
+import java.io.Serializable;
+
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import javax.interceptor.Interceptor;
@@ -20,7 +22,7 @@
@LifecycleBinding
@Interceptor
-public class LifecycleInterceptor
+public class LifecycleInterceptor implements Serializable
{
public static boolean POST_CONSTRUCT = false;