You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openwebbeans.apache.org by rm...@apache.org on 2013/04/29 18:18:24 UTC
svn commit: r1477173 - in /openwebbeans/trunk:
webbeans-impl/src/main/java/org/apache/webbeans/intercept/NormalScopedBeanInterceptorHandler.java
webbeans-web/src/test/java/org/apache/webbeans/web/tests/interceptor/SerializationTest.java
Author: rmannibucau
Date: Mon Apr 29 16:18:24 2013
New Revision: 1477173
URL: http://svn.apache.org/r1477173
Log:
OWB-848 serialization of request scoped beans
Added:
openwebbeans/trunk/webbeans-web/src/test/java/org/apache/webbeans/web/tests/interceptor/SerializationTest.java
- copied, changed from r1476613, openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/contexts/SerializationTest.java
Modified:
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/NormalScopedBeanInterceptorHandler.java
Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/NormalScopedBeanInterceptorHandler.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/NormalScopedBeanInterceptorHandler.java?rev=1477173&r1=1477172&r2=1477173&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/NormalScopedBeanInterceptorHandler.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/intercept/NormalScopedBeanInterceptorHandler.java Mon Apr 29 16:18:24 2013
@@ -116,7 +116,7 @@ public class NormalScopedBeanInterceptor
* }
* </pre>
*/
- Object readResolve() throws ObjectStreamException
+ protected Object readResolve() throws ObjectStreamException
{
WebBeansContext webBeansContext = WebBeansContext.getInstance();
this.beanManager = webBeansContext.getBeanManagerImpl();
Copied: openwebbeans/trunk/webbeans-web/src/test/java/org/apache/webbeans/web/tests/interceptor/SerializationTest.java (from r1476613, openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/contexts/SerializationTest.java)
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-web/src/test/java/org/apache/webbeans/web/tests/interceptor/SerializationTest.java?p2=openwebbeans/trunk/webbeans-web/src/test/java/org/apache/webbeans/web/tests/interceptor/SerializationTest.java&p1=openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/contexts/SerializationTest.java&r1=1476613&r2=1477173&rev=1477173&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/test/java/org/apache/webbeans/newtests/contexts/SerializationTest.java (original)
+++ openwebbeans/trunk/webbeans-web/src/test/java/org/apache/webbeans/web/tests/interceptor/SerializationTest.java Mon Apr 29 16:18:24 2013
@@ -16,43 +16,24 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.webbeans.newtests.contexts;
+package org.apache.webbeans.web.tests.interceptor;
-import org.apache.webbeans.config.WebBeansContext;
-import org.apache.webbeans.container.SerializableBean;
-import org.apache.webbeans.newtests.AbstractUnitTest;
-import org.apache.webbeans.newtests.contexts.serialize.AppScopedBean;
-import org.apache.webbeans.newtests.contexts.serialize.SessScopedBean;
-import org.apache.webbeans.newtests.contexts.session.common.PersonalDataBean;
-import org.apache.webbeans.newtests.decorators.multiple.Decorator1;
-import org.apache.webbeans.newtests.decorators.multiple.OutputProvider;
-import org.apache.webbeans.newtests.decorators.multiple.RequestStringBuilder;
-import org.apache.webbeans.newtests.injection.circular.beans.CircularApplicationScopedBean;
-import org.apache.webbeans.newtests.injection.circular.beans.CircularConstructorOrProducerMethodParameterBean;
-import org.apache.webbeans.newtests.injection.circular.beans.CircularDependentScopedBean;
-import org.apache.webbeans.newtests.injection.circular.beans.CircularNormalInConstructor;
-import org.apache.webbeans.proxy.OwbNormalScopeProxy;
-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;
-
+import org.apache.webbeans.newtests.AbstractUnitTest;
+import org.apache.webbeans.web.tests.MockServletContext;
+import org.apache.webbeans.web.tests.MockServletRequest;
import org.junit.Test;
-
-import javax.enterprise.context.SessionScoped;
-import javax.enterprise.context.spi.Context;
-import javax.enterprise.context.spi.CreationalContext;
+import javax.enterprise.context.RequestScoped;
import javax.enterprise.inject.spi.Bean;
import javax.enterprise.inject.spi.BeanManager;
-import java.io.*;
+import javax.servlet.ServletRequestEvent;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Set;
@@ -63,135 +44,29 @@ import java.util.Set;
*/
public class SerializationTest extends AbstractUnitTest
{
-
- @SuppressWarnings("unchecked")
@Test
- public void testCreationalContextSerialization() throws Exception
+ public void testDeserializationOfRequestScopedBean() throws Exception
{
- Collection<Class<?>> classes = new ArrayList<Class<?>>();
+ final MockServletContext mockServletContext = new MockServletContext();
+ final MockServletRequest mockServletRequest = new MockServletRequest();
+ final ServletRequestEvent servletRequestEvent = new ServletRequestEvent(mockServletContext, mockServletRequest);
- // add a few random classes
- classes.add(PersonalDataBean.class);
- classes.add(CircularDependentScopedBean.class);
- classes.add(CircularApplicationScopedBean.class);
+ final Collection<Class<?>> classes = new ArrayList<Class<?>>();
+ classes.add(ReqBean.class);
startContainer(classes);
- BeanManager bm = getBeanManager();
- Set<Bean<?>> beans = getBeanManager().getBeans(PersonalDataBean.class);
- Assert.assertNotNull(beans);
- Assert.assertTrue(beans.size() == 1);
- Bean pdbBean = beans.iterator().next();
- CreationalContext<PersonalDataBean> pdbCreational = bm.createCreationalContext(pdbBean);
- Assert.assertNotNull(pdbCreational);
-
- // oki, now let's serializeBean the CreationalContext
- byte[] serial = serializeObject(pdbCreational);
- CreationalContext<?> cc2 = (CreationalContext<?>) deSerializeObject(serial);
- Assert.assertNotNull(cc2);
- }
-
- @Test
- public void testPersonalDataBean() throws ClassNotFoundException, IOException
- {
- Collection<Class<?>> classes = new ArrayList<Class<?>>();
+ getWebBeansContext().getContextsService().startContext(RequestScoped.class, servletRequestEvent);
- // add a few random classes
- classes.add(PersonalDataBean.class);
- classes.add(OutputProvider.class);
- classes.add(Decorator1.class);
- classes.add(CircularApplicationScopedBean.class);
- classes.add(CircularDependentScopedBean.class);
- classes.add(RequestStringBuilder.class);
- classes.add(CircularConstructorOrProducerMethodParameterBean.class);
- classes.add(CircularDependentScopedBean.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);
+ final BeanManager bm = getBeanManager();
+ final Set<Bean<?>> beans = getBeanManager().getBeans(ReqBean.class);
+ final Bean pdbBean = beans.iterator().next();
+ final ReqBean instance = ReqBean.class.cast(getBeanManager().getReference(pdbBean, ReqBean.class, bm.createCreationalContext(pdbBean)));
+ Assert.assertNotNull(instance);
- startContainer(classes);
+ final Object deserial = deSerializeObject(serializeObject(instance));
+ Assert.assertTrue(ReqBean.class.isInstance(deserial));
- Set<Bean<?>> beans = getBeanManager().getBeans(Object.class);
- Assert.assertNotNull(beans);
- Assert.assertTrue(beans.size() > 7);
-
- WebBeansContext webBeansContext = WebBeansContext.getInstance();
- for (Bean<?> bean : beans)
- {
- String id = null;
- if((id = WebBeansUtil.isPassivationCapable(bean)) != null)
- {
- bean = (Bean<?>) webBeansContext.getSerializableBeanVault().getSerializableBean(bean);
-
- byte[] serial = serializeBean(bean);
- Bean<?> b2 = deSerializeBean(serial);
-
- Assert.assertEquals(((SerializableBean<?>)bean).getBean(), ((SerializableBean<?>)b2).getBean());
-
- }
- }
-
- // and now we are keen and try to serialize the whole passivatable Contexts!
- PersonalDataBean pdb = getInstance(PersonalDataBean.class);
- pdb.business();
-
- // first we need to actually create a few instances
-
- Context sessionContext = webBeansContext.getContextFactory().getStandardContext(SessionScoped.class);
- Assert.assertNotNull(sessionContext);
- byte[] ba = serializeObject(sessionContext);
- Assert.assertNotNull(ba);
- Context sessContext2 = (Context) deSerializeObject(ba);
- Assert.assertNotNull(sessContext2);
- }
-
- @Test
- public void testProxySerialization() throws Exception
- {
- Collection<Class<?>> classes = new ArrayList<Class<?>>();
-
- // add a few random classes
- classes.add(SessScopedBean.class);
- classes.add(AppScopedBean.class);
-
- startContainer(classes);
-
- Set<Bean<?>> beans = getBeanManager().getBeans(SessScopedBean.class);
- Assert.assertNotNull(beans);
- Assert.assertTrue(beans.size() == 1);
-
- @SuppressWarnings("unchecked")
- Bean<SessScopedBean> bean = (Bean<SessScopedBean>) beans.iterator().next();
- CreationalContext<SessScopedBean> ssbCreational = getBeanManager().createCreationalContext(bean);
- Assert.assertNotNull(ssbCreational);
-
- SessScopedBean reference = (SessScopedBean) getBeanManager().getReference(bean, SessScopedBean.class, ssbCreational);
- Assert.assertNotNull(reference);
- Assert.assertTrue(reference instanceof OwbNormalScopeProxy);
-
- reference.getApp().setI(4711);
-
- ByteArrayOutputStream baos = new ByteArrayOutputStream();
- ObjectOutputStream oos = new ObjectOutputStream(baos);
- oos.writeObject(reference);
- byte[] ba = baos.toByteArray();
-
- ByteArrayInputStream bais = new ByteArrayInputStream(ba);
- ObjectInputStream ois = new ObjectInputStream(bais);
- SessScopedBean ssb2 = (SessScopedBean) ois.readObject();
- Assert.assertNotNull(ssb2);
-
- Assert.assertNotNull(ssb2.getApp());
- Assert.assertTrue(ssb2.getApp().getI() == 4711);
- }
-
- private byte[] serializeBean(Bean<?> bean) throws IOException
- {
- return serializeObject(bean);
+ getWebBeansContext().getContextsService().endContext(RequestScoped.class, servletRequestEvent);
}
private byte[] serializeObject(Object o) throws IOException
@@ -201,11 +76,6 @@ public class SerializationTest extends A
oos.writeObject(o);
return baos.toByteArray();
}
-
- private Bean<?> deSerializeBean(byte[] serial) throws IOException, ClassNotFoundException
- {
- return (Bean<?>) deSerializeObject(serial);
- }
private Object deSerializeObject(byte[] serial) throws IOException, ClassNotFoundException
{
@@ -214,4 +84,10 @@ public class SerializationTest extends A
return ois.readObject();
}
+ @RequestScoped
+ public static class ReqBean {
+ public String ok() {
+ return "ok";
+ }
+ }
}