You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openwebbeans.apache.org by st...@apache.org on 2010/02/22 03:19:28 UTC
svn commit: r912465 - in /openwebbeans/trunk/webbeans-impl/src:
main/java/org/apache/webbeans/component/
main/java/org/apache/webbeans/container/
main/java/org/apache/webbeans/intercept/
main/java/org/apache/webbeans/util/ test/java/org/apache/webbeans...
Author: struberg
Date: Mon Feb 22 02:19:27 2010
New Revision: 912465
URL: http://svn.apache.org/viewvc?rev=912465&view=rev
Log:
OWB-6 store information for all Beans in the passivationBeans list.
This is needed since we also need to serialise proxies of NormalScoped
Beans which are not passivating. Imagine an @ApplicationScoped userService
gets injected into a @ViewScoped ListModel.
Modified:
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractOwbBean.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractProducerBean.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ConversationBean.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ManagedBean.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/NewBean.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/OwbBean.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ProducerMethodBean.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/BeanManagerImpl.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/InterceptorHandler.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/contexts/SerializationTest.java
openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/injection/circular/beans/CircularDependenScopeBean.java
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=912465&r1=912464&r2=912465&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 Mon Feb 22 02:19:27 2010
@@ -207,7 +207,7 @@
/**
* TODO there are probably other infos which must get added to make the id unique!
- * If not, it will crash in {@link BeanManagerImpl#addPassivationCapableBean(javax.enterprise.inject.spi.Bean)}
+ * If not, it will crash in {@link BeanManagerImpl#addPassivationInfo(javax.enterprise.inject.spi.Bean)}
* anyway.
*
* {@inheritDoc}
@@ -579,4 +579,10 @@
{
return this.logger;
}
+
+ @Override
+ public boolean isDependent() {
+ return false;
+ }
+
}
Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractProducerBean.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractProducerBean.java?rev=912465&r1=912464&r2=912465&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractProducerBean.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractProducerBean.java Mon Feb 22 02:19:27 2010
@@ -17,6 +17,7 @@
import java.lang.annotation.Annotation;
import java.util.Set;
+import javax.enterprise.context.Dependent;
import javax.enterprise.context.spi.CreationalContext;
import javax.enterprise.inject.spi.Bean;
import javax.enterprise.inject.spi.InjectionPoint;
@@ -218,5 +219,13 @@
return false;
}
+ /**
+ * look at a Dependent scope annotation.
+ */
+ @Override
+ public boolean isDependent() {
+ return getScope().equals(Dependent.class);
+ }
+
}
\ No newline at end of file
Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ConversationBean.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ConversationBean.java?rev=912465&r1=912464&r2=912465&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ConversationBean.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ConversationBean.java Mon Feb 22 02:19:27 2010
@@ -85,4 +85,5 @@
instance = null;
}
}
+
}
Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ManagedBean.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ManagedBean.java?rev=912465&r1=912464&r2=912465&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ManagedBean.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ManagedBean.java Mon Feb 22 02:19:27 2010
@@ -16,6 +16,7 @@
import java.io.Serializable;
import java.lang.reflect.Constructor;
+import javax.enterprise.context.Dependent;
import javax.enterprise.context.spi.CreationalContext;
import javax.enterprise.inject.spi.Bean;
import javax.enterprise.inject.spi.Decorator;
@@ -114,5 +115,12 @@
return false;
}
+ /**
+ * look at a Dependent scope annotation.
+ */
+ @Override
+ public boolean isDependent() {
+ return getScope().equals(Dependent.class);
+ }
}
\ No newline at end of file
Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/NewBean.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/NewBean.java?rev=912465&r1=912464&r2=912465&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/NewBean.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/NewBean.java Mon Feb 22 02:19:27 2010
@@ -54,4 +54,12 @@
return definedType;
}
+ /**
+ * always true for New qualifier
+ */
+ @Override
+ public boolean isDependent() {
+ return true;
+ }
+
}
Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/OwbBean.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/OwbBean.java?rev=912465&r1=912464&r2=912465&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/OwbBean.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/OwbBean.java Mon Feb 22 02:19:27 2010
@@ -172,4 +172,11 @@
*/
public boolean isPassivationCapable();
+ /**
+ * This determines if this bean is really a dependent bean,
+ * and as such always creats a freshl instance for each
+ * InjectionPoint. A BeanManagerBean is e.g. not a dependent bean.
+ * @return <code>true</code> if this is a dependent bean
+ */
+ public boolean isDependent();
}
\ No newline at end of file
Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ProducerMethodBean.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ProducerMethodBean.java?rev=912465&r1=912464&r2=912465&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ProducerMethodBean.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ProducerMethodBean.java Mon Feb 22 02:19:27 2010
@@ -42,6 +42,13 @@
protected Method disposalMethod;
/**
+ * This string will be used for passivating the Bean.
+ * It will be created on the first use.
+ * @see #getId()
+ */
+ private String passivatingId = null;
+
+ /**
* Creates a new instance.
*
* @param parent parent bean
@@ -96,6 +103,16 @@
this.disposalMethod = disposalMethod;
}
+ public String getId()
+ {
+ if (passivatingId == null)
+ {
+ String id = super.getId();
+
+ passivatingId = id + "#" + creatorMethod.toGenericString();
+ }
+ return passivatingId;
+ }
/**
* Gets actual type arguments.
*
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=912465&r1=912464&r2=912465&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 Mon Feb 22 02:19:27 2010
@@ -56,6 +56,7 @@
import org.apache.webbeans.component.EnterpriseBeanMarker;
import org.apache.webbeans.component.InjectionTargetBean;
import org.apache.webbeans.component.JmsBeanMarker;
+import org.apache.webbeans.component.OwbBean;
import org.apache.webbeans.component.third.ThirdpartyBeanImpl;
import org.apache.webbeans.config.WebBeansFinder;
import org.apache.webbeans.context.ContextFactory;
@@ -137,10 +138,10 @@
private List<AnnotatedType<?>> additionalAnnotatedTypes = new CopyOnWriteArrayList<AnnotatedType<?>>();
/**
- * This map stores all {@link PassivationCapable} beans along with their unique id.
- * This is used for serialization.
+ * This map stores all beans along with their unique {@link PassivationCapable} id.
+ * This is used as a reference for serialization.
*/
- private ConcurrentHashMap<String, Bean<?>> passivationCapableBeans = new ConcurrentHashMap<String, Bean<?>>();
+ private ConcurrentHashMap<String, Bean<?>> passivationBeans = new ConcurrentHashMap<String, Bean<?>>();
/**
* The parent Manager this child is depending from.
@@ -287,13 +288,13 @@
if(newBean instanceof AbstractOwbBean)
{
this.deploymentBeans.add(newBean);
- addPassivationCapableBean(newBean);
+ addPassivationInfo((OwbBean)newBean);
}
else
{
ThirdpartyBeanImpl<?> bean = new ThirdpartyBeanImpl(newBean);
this.deploymentBeans.add(bean);
- addPassivationCapableBean(bean);
+ addPassivationInfo(bean);
}
@@ -301,20 +302,20 @@
}
/**
- * Check if the bean is PassivationCapable and add it to the id store.
+ * Check if the bean is has a passivation id and add it to the id store.
*
* @param bean
* @throws DefinitionException if the id is not unique.
*/
- protected void addPassivationCapableBean(Bean<?> bean) throws DefinitionException
+ protected void addPassivationInfo(OwbBean<?> bean) throws DefinitionException
{
- String id = null;
- if((id=WebBeansUtil.isPassivationCapable(bean)) != null)
+ String id = bean.getId();
+ if(id != null)
{
- Bean<?> oldBean = passivationCapableBeans.putIfAbsent(id, bean);
+ Bean<?> oldBean = passivationBeans.putIfAbsent(id, bean);
if (oldBean != null)
{
- throw new DefinitionException("PassivationCapable bean id is not unique: " + id);
+ throw new DefinitionException("PassivationCapable bean id is not unique: " + id + " bean:" + bean);
}
}
@@ -662,8 +663,7 @@
instance = getReference(injectedBean, injectionPoint.getType(), injectedCreational);
// add this dependent into bean dependent list
- // only if the member is not static and not already a proxy
- if (!WebBeansUtil.isStaticInjection(injectionPoint) && !JavassistProxyFactory.isProxyInstance(instance))
+ if (!WebBeansUtil.isStaticInjection(injectionPoint))
{
ownerCreationalContextImpl.addDependent(injectedBean, instance, injectedCreational);
}
@@ -710,7 +710,7 @@
@Override
public Bean<?> getPassivationCapableBean(String id)
{
- return passivationCapableBeans.get(id);
+ return passivationBeans.get(id);
}
/**
Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/InterceptorHandler.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/InterceptorHandler.java?rev=912465&r1=912464&r2=912465&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/InterceptorHandler.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/InterceptorHandler.java Mon Feb 22 02:19:27 2010
@@ -373,21 +373,25 @@
private void writeObject(ObjectOutputStream s) throws IOException
{
s.writeLong(serialVersionUID);
- if(WebBeansUtil.isPassivationCapable(this.bean) != null)
+ // we have to write the ids for all beans, not only PassivationCapable
+ // since this gets serialized along with the Bean proxy.
+ String passivationId = this.bean.getId();
+ if (passivationId!= null)
{
- s.writeUTF(this.bean.getId());
+ s.writeObject(passivationId);
}
else
{
+ s.writeObject(null);
logger.warn("Trying to serialize not passivated capable bean proxy : " + this.bean);
}
}
private void readObject(ObjectInputStream s) throws IOException, ClassNotFoundException
{
- if( s.readLong() == serialVersionUID)
+ if(s.readLong() == serialVersionUID)
{
- String passivationId = s.readUTF();
+ String passivationId = (String) s.readObject();
if (passivationId != null)
{
this.bean = (OwbBean<?>)BeanManagerImpl.getManager().getPassivationCapableBean(passivationId);
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=912465&r1=912464&r2=912465&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 Mon Feb 22 02:19:27 2010
@@ -2540,12 +2540,7 @@
public static boolean isDependent(Bean<?> bean)
{
- if(bean.getScope().equals(Dependent.class))
- {
- return true;
- }
-
- return false;
+ return ((OwbBean) bean).isDependent();
}
public static void inspectErrorStack(String logMessage)
Modified: openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/contexts/SerializationTest.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/contexts/SerializationTest.java?rev=912465&r1=912464&r2=912465&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/contexts/SerializationTest.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/contexts/SerializationTest.java Mon Feb 22 02:19:27 2010
@@ -32,6 +32,13 @@
import org.apache.webbeans.newtests.injection.circular.beans.CircularConstructorOrProducerMethodParameterBean;
import org.apache.webbeans.newtests.injection.circular.beans.CircularDependenScopeBean;
import org.apache.webbeans.newtests.injection.circular.beans.CircularNormalInConstructor;
+import org.apache.webbeans.test.component.CheckWithCheckPayment;
+import org.apache.webbeans.test.component.CheckWithMoneyPayment;
+import org.apache.webbeans.test.component.IPayment;
+import org.apache.webbeans.test.component.PaymentProcessorComponent;
+import org.apache.webbeans.test.component.event.normal.ComponentWithObserves1;
+import org.apache.webbeans.test.component.event.normal.ComponentWithObserves2;
+import org.apache.webbeans.test.component.event.normal.TransactionalInterceptor;
import org.apache.webbeans.util.WebBeansUtil;
import junit.framework.Assert;
@@ -91,6 +98,13 @@
classes.add(CircularConstructorOrProducerMethodParameterBean.class);
classes.add(CircularDependenScopeBean.class);
classes.add(CircularNormalInConstructor.class);
+ classes.add(TransactionalInterceptor.class);
+ classes.add(ComponentWithObserves1.class);
+ classes.add(ComponentWithObserves2.class);
+ classes.add(PaymentProcessorComponent.class);
+ classes.add(IPayment.class);
+ classes.add(CheckWithCheckPayment.class);
+ classes.add(CheckWithMoneyPayment.class);
startContainer(classes);
Modified: 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=912465&r1=912464&r2=912465&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/injection/circular/beans/CircularDependenScopeBean.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/injection/circular/beans/CircularDependenScopeBean.java Mon Feb 22 02:19:27 2010
@@ -23,6 +23,8 @@
import javax.inject.Inject;
import javax.inject.Named;
+import org.apache.webbeans.test.component.event.normal.Transactional;
+
@Dependent
@Named(value="org.apache.webbeans.newtests.injection.circular.beans.CircularDependenScopeBean")
public class CircularDependenScopeBean
@@ -32,6 +34,7 @@
public static boolean success = false;
+ @Transactional
public void hello()
{
AW: svn commit: r912465 - in /openwebbeans/trunk/webbeans-impl/src: main/java/org/apache/webbeans/component/ main/java/org/apache/webbeans/container/ main/java/org/apache/webbeans/intercept/ main/java/org/apache/webbeans/util/ test/java/org/apache/webbeans...
Posted by Mark Struberg <st...@yahoo.de>.
It was a long walk, but finally after this commit, the CODI @ViewScoped works in a real world application with lots of bean and interceptors :)
Of course only after patching javassist currently...
LieGrue,
strub
--- struberg@apache.org <st...@apache.org> schrieb am Mo, 22.2.2010:
> Von: struberg@apache.org <st...@apache.org>
> Betreff: svn commit: r912465 - in /openwebbeans/trunk/webbeans-impl/src: main/java/org/apache/webbeans/component/ main/java/org/apache/webbeans/container/ main/java/org/apache/webbeans/intercept/ main/java/org/apache/webbeans/util/ test/java/org/apache/webbeans...
> An: commits@openwebbeans.apache.org
> Datum: Montag, 22. Februar, 2010 03:19 Uhr
> Author: struberg
> Date: Mon Feb 22 02:19:27 2010
> New Revision: 912465
>
> URL: http://svn.apache.org/viewvc?rev=912465&view=rev
> Log:
> OWB-6 store information for all Beans in the
> passivationBeans list.
>
> This is needed since we also need to serialise proxies of
> NormalScoped
> Beans which are not passivating. Imagine an
> @ApplicationScoped userService
> gets injected into a @ViewScoped ListModel.
>
>
> Modified:
>
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractOwbBean.java
>
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractProducerBean.java
>
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ConversationBean.java
>
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ManagedBean.java
>
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/NewBean.java
>
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/OwbBean.java
>
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ProducerMethodBean.java
>
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/container/BeanManagerImpl.java
>
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/InterceptorHandler.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/contexts/SerializationTest.java
>
> openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/injection/circular/beans/CircularDependenScopeBean.java
>
> 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=912465&r1=912464&r2=912465&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
> Mon Feb 22 02:19:27 2010
> @@ -207,7 +207,7 @@
>
> /**
> * TODO there are probably other infos
> which must get added to make the id unique!
> - * If not, it will crash in {@link
> BeanManagerImpl#addPassivationCapableBean(javax.enterprise.inject.spi.Bean)}
> + * If not, it will crash in {@link
> BeanManagerImpl#addPassivationInfo(javax.enterprise.inject.spi.Bean)}
> * anyway.
> *
> * {@inheritDoc}
> @@ -579,4 +579,10 @@
> {
> return this.logger;
> }
> +
> + @Override
> + public boolean isDependent() {
> + return false;
> + }
> +
> }
>
> Modified:
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractProducerBean.java
> URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractProducerBean.java?rev=912465&r1=912464&r2=912465&view=diff
> ==============================================================================
> ---
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractProducerBean.java
> (original)
> +++
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/AbstractProducerBean.java
> Mon Feb 22 02:19:27 2010
> @@ -17,6 +17,7 @@
> import java.lang.annotation.Annotation;
> import java.util.Set;
>
> +import javax.enterprise.context.Dependent;
> import javax.enterprise.context.spi.CreationalContext;
> import javax.enterprise.inject.spi.Bean;
> import javax.enterprise.inject.spi.InjectionPoint;
> @@ -218,5 +219,13 @@
> return false;
> }
>
> + /**
> + * look at a Dependent scope
> annotation.
> + */
> + @Override
> + public boolean isDependent() {
> + return
> getScope().equals(Dependent.class);
> + }
> +
>
> }
> \ No newline at end of file
>
> Modified:
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ConversationBean.java
> URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ConversationBean.java?rev=912465&r1=912464&r2=912465&view=diff
> ==============================================================================
> ---
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ConversationBean.java
> (original)
> +++
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ConversationBean.java
> Mon Feb 22 02:19:27 2010
> @@ -85,4 +85,5 @@
>
> instance = null;
> }
> }
> +
> }
>
> Modified:
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ManagedBean.java
> URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ManagedBean.java?rev=912465&r1=912464&r2=912465&view=diff
> ==============================================================================
> ---
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ManagedBean.java
> (original)
> +++
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ManagedBean.java
> Mon Feb 22 02:19:27 2010
> @@ -16,6 +16,7 @@
> import java.io.Serializable;
> import java.lang.reflect.Constructor;
>
> +import javax.enterprise.context.Dependent;
> import javax.enterprise.context.spi.CreationalContext;
> import javax.enterprise.inject.spi.Bean;
> import javax.enterprise.inject.spi.Decorator;
> @@ -114,5 +115,12 @@
> return false;
> }
>
> + /**
> + * look at a Dependent scope
> annotation.
> + */
> + @Override
> + public boolean isDependent() {
> + return
> getScope().equals(Dependent.class);
> + }
>
> }
> \ No newline at end of file
>
> Modified:
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/NewBean.java
> URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/NewBean.java?rev=912465&r1=912464&r2=912465&view=diff
> ==============================================================================
> ---
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/NewBean.java
> (original)
> +++
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/NewBean.java
> Mon Feb 22 02:19:27 2010
> @@ -54,4 +54,12 @@
> return definedType;
> }
>
> + /**
> + * always true for New qualifier
> + */
> + @Override
> + public boolean isDependent() {
> + return true;
> + }
> +
> }
>
> Modified:
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/OwbBean.java
> URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/OwbBean.java?rev=912465&r1=912464&r2=912465&view=diff
> ==============================================================================
> ---
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/OwbBean.java
> (original)
> +++
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/OwbBean.java
> Mon Feb 22 02:19:27 2010
> @@ -172,4 +172,11 @@
> */
> public boolean
> isPassivationCapable();
>
> + /**
> + * This determines if this bean is
> really a dependent bean,
> + * and as such always creats a
> freshl instance for each
> + * InjectionPoint. A
> BeanManagerBean is e.g. not a dependent bean.
> + * @return
> <code>true</code> if this is a dependent bean
> + */
> + public boolean isDependent();
> }
> \ No newline at end of file
>
> Modified:
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ProducerMethodBean.java
> URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ProducerMethodBean.java?rev=912465&r1=912464&r2=912465&view=diff
> ==============================================================================
> ---
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ProducerMethodBean.java
> (original)
> +++
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/component/ProducerMethodBean.java
> Mon Feb 22 02:19:27 2010
> @@ -42,6 +42,13 @@
> protected Method disposalMethod;
>
> /**
> + * This string will be used for
> passivating the Bean.
> + * It will be created on the first
> use.
> + * @see #getId()
> + */
> + private String passivatingId = null;
> +
> + /**
> * Creates a new instance.
> *
> * @param parent parent bean
> @@ -96,6 +103,16 @@
> this.disposalMethod
> = disposalMethod;
> }
>
> + public String getId()
> + {
> + if (passivatingId == null)
> + {
> + String id =
> super.getId();
> +
> + passivatingId =
> id + "#" + creatorMethod.toGenericString();
> + }
> + return passivatingId;
> + }
> /**
> * Gets actual type arguments.
> *
>
> 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=912465&r1=912464&r2=912465&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
> Mon Feb 22 02:19:27 2010
> @@ -56,6 +56,7 @@
> import
> org.apache.webbeans.component.EnterpriseBeanMarker;
> import org.apache.webbeans.component.InjectionTargetBean;
> import org.apache.webbeans.component.JmsBeanMarker;
> +import org.apache.webbeans.component.OwbBean;
> import
> org.apache.webbeans.component.third.ThirdpartyBeanImpl;
> import org.apache.webbeans.config.WebBeansFinder;
> import org.apache.webbeans.context.ContextFactory;
> @@ -137,10 +138,10 @@
> private
> List<AnnotatedType<?>> additionalAnnotatedTypes
> = new CopyOnWriteArrayList<AnnotatedType<?>>();
>
> /**
> - * This map stores all {@link
> PassivationCapable} beans along with their unique id.
> - * This is used for
> serialization.
> + * This map stores all beans along
> with their unique {@link PassivationCapable} id.
> + * This is used as a reference for
> serialization.
> */
> - private ConcurrentHashMap<String,
> Bean<?>> passivationCapableBeans = new
> ConcurrentHashMap<String, Bean<?>>();
> + private ConcurrentHashMap<String,
> Bean<?>> passivationBeans = new
> ConcurrentHashMap<String, Bean<?>>();
>
> /**
> * The parent Manager this child is
> depending from.
> @@ -287,13 +288,13 @@
> if(newBean
> instanceof AbstractOwbBean)
> {
>
> this.deploymentBeans.add(newBean);
> -
> addPassivationCapableBean(newBean);
> +
> addPassivationInfo((OwbBean)newBean);
> }
> else
> {
>
> ThirdpartyBeanImpl<?> bean = new
> ThirdpartyBeanImpl(newBean);
>
> this.deploymentBeans.add(bean);
> -
> addPassivationCapableBean(bean);
> +
> addPassivationInfo(bean);
> }
>
>
> @@ -301,20 +302,20 @@
> }
>
> /**
> - * Check if the bean is
> PassivationCapable and add it to the id store.
> + * Check if the bean is has a
> passivation id and add it to the id store.
> *
> * @param bean
> * @throws DefinitionException if the
> id is not unique.
> */
> - protected void
> addPassivationCapableBean(Bean<?> bean) throws
> DefinitionException
> + protected void
> addPassivationInfo(OwbBean<?> bean) throws
> DefinitionException
> {
> - String id = null;
> -
> if((id=WebBeansUtil.isPassivationCapable(bean)) != null)
> + String id = bean.getId();
> + if(id != null)
> {
> - Bean<?>
> oldBean = passivationCapableBeans.putIfAbsent(id, bean);
> + Bean<?>
> oldBean = passivationBeans.putIfAbsent(id, bean);
> if
> (oldBean != null)
> {
> -
> throw new DefinitionException("PassivationCapable bean id is
> not unique: " + id);
> +
> throw new DefinitionException("PassivationCapable bean id is
> not unique: " + id + " bean:" + bean);
> }
>
> }
>
> @@ -662,8 +663,7 @@
>
> instance = getReference(injectedBean,
> injectionPoint.getType(), injectedCreational);
>
> // add
> this dependent into bean dependent list
> - // only if the
> member is not static and not already a proxy
> - if
> (!WebBeansUtil.isStaticInjection(injectionPoint) &&
> !JavassistProxyFactory.isProxyInstance(instance))
> + if
> (!WebBeansUtil.isStaticInjection(injectionPoint))
> {
>
> ownerCreationalContextImpl.addDependent(injectedBean,
> instance, injectedCreational);
> }
> @@ -710,7 +710,7 @@
> @Override
> public Bean<?>
> getPassivationCapableBean(String id)
> {
> - return
> passivationCapableBeans.get(id);
> + return
> passivationBeans.get(id);
> }
>
> /**
>
> Modified:
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/InterceptorHandler.java
> URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/InterceptorHandler.java?rev=912465&r1=912464&r2=912465&view=diff
> ==============================================================================
> ---
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/InterceptorHandler.java
> (original)
> +++
> openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/InterceptorHandler.java
> Mon Feb 22 02:19:27 2010
> @@ -373,21 +373,25 @@
> private void
> writeObject(ObjectOutputStream s) throws IOException
> {
>
> s.writeLong(serialVersionUID);
> -
> if(WebBeansUtil.isPassivationCapable(this.bean) != null)
> + // we have to write the ids
> for all beans, not only PassivationCapable
> + // since this gets serialized
> along with the Bean proxy.
> + String passivationId =
> this.bean.getId();
> + if (passivationId!= null)
> {
> -
> s.writeUTF(this.bean.getId());
> +
> s.writeObject(passivationId);
> }
> else
> {
> +
> s.writeObject(null);
>
> logger.warn("Trying to serialize not
> passivated capable bean proxy : " + this.bean);
> }
> }
>
> private void
> readObject(ObjectInputStream s) throws IOException,
> ClassNotFoundException
> {
> - if( s.readLong() ==
> serialVersionUID)
> + if(s.readLong() ==
> serialVersionUID)
> {
> - String
> passivationId = s.readUTF();
> + String
> passivationId = (String) s.readObject();
> if
> (passivationId != null)
> {
>
> this.bean =
> (OwbBean<?>)BeanManagerImpl.getManager().getPassivationCapableBean(passivationId);
>
> 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=912465&r1=912464&r2=912465&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
> Mon Feb 22 02:19:27 2010
> @@ -2540,12 +2540,7 @@
>
> public static boolean
> isDependent(Bean<?> bean)
> {
> -
> if(bean.getScope().equals(Dependent.class))
> - {
> - return true;
> - }
> -
> - return false;
> + return ((OwbBean)
> bean).isDependent();
> }
>
> public static void
> inspectErrorStack(String logMessage)
>
> Modified:
> openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/contexts/SerializationTest.java
> URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/contexts/SerializationTest.java?rev=912465&r1=912464&r2=912465&view=diff
> ==============================================================================
> ---
> openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/contexts/SerializationTest.java
> (original)
> +++
> openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/contexts/SerializationTest.java
> Mon Feb 22 02:19:27 2010
> @@ -32,6 +32,13 @@
> import
> org.apache.webbeans.newtests.injection.circular.beans.CircularConstructorOrProducerMethodParameterBean;
> import
> org.apache.webbeans.newtests.injection.circular.beans.CircularDependenScopeBean;
> import
> org.apache.webbeans.newtests.injection.circular.beans.CircularNormalInConstructor;
> +import
> org.apache.webbeans.test.component.CheckWithCheckPayment;
> +import
> org.apache.webbeans.test.component.CheckWithMoneyPayment;
> +import org.apache.webbeans.test.component.IPayment;
> +import
> org.apache.webbeans.test.component.PaymentProcessorComponent;
> +import
> org.apache.webbeans.test.component.event.normal.ComponentWithObserves1;
> +import
> org.apache.webbeans.test.component.event.normal.ComponentWithObserves2;
> +import
> org.apache.webbeans.test.component.event.normal.TransactionalInterceptor;
> import org.apache.webbeans.util.WebBeansUtil;
>
> import junit.framework.Assert;
> @@ -91,6 +98,13 @@
>
> classes.add(CircularConstructorOrProducerMethodParameterBean.class);
>
> classes.add(CircularDependenScopeBean.class);
>
> classes.add(CircularNormalInConstructor.class);
> +
> classes.add(TransactionalInterceptor.class);
> +
> classes.add(ComponentWithObserves1.class);
> +
> classes.add(ComponentWithObserves2.class);
> +
> classes.add(PaymentProcessorComponent.class);
> + classes.add(IPayment.class);
> +
> classes.add(CheckWithCheckPayment.class);
> +
> classes.add(CheckWithMoneyPayment.class);
>
>
> startContainer(classes);
>
>
> Modified:
> 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=912465&r1=912464&r2=912465&view=diff
> ==============================================================================
> ---
> openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/injection/circular/beans/CircularDependenScopeBean.java
> (original)
> +++
> openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/injection/circular/beans/CircularDependenScopeBean.java
> Mon Feb 22 02:19:27 2010
> @@ -23,6 +23,8 @@
> import javax.inject.Inject;
> import javax.inject.Named;
>
> +import
> org.apache.webbeans.test.component.event.normal.Transactional;
> +
> @Dependent
>
> @Named(value="org.apache.webbeans.newtests.injection.circular.beans.CircularDependenScopeBean")
> public class CircularDependenScopeBean
> @@ -32,6 +34,7 @@
> public static boolean success =
> false;
>
>
> + @Transactional
> public void hello()
> {
>
>
>
>
__________________________________________________
Do You Yahoo!?
Sie sind Spam leid? Yahoo! Mail verfügt über einen herausragenden Schutz gegen Massenmails.
http://mail.yahoo.com