Return-Path: X-Original-To: apmail-openwebbeans-commits-archive@www.apache.org Delivered-To: apmail-openwebbeans-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id BC72AF717 for ; Mon, 29 Apr 2013 16:18:51 +0000 (UTC) Received: (qmail 80907 invoked by uid 500); 29 Apr 2013 16:18:50 -0000 Delivered-To: apmail-openwebbeans-commits-archive@openwebbeans.apache.org Received: (qmail 80505 invoked by uid 500); 29 Apr 2013 16:18:50 -0000 Mailing-List: contact commits-help@openwebbeans.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@openwebbeans.apache.org Delivered-To: mailing list commits@openwebbeans.apache.org Received: (qmail 80283 invoked by uid 99); 29 Apr 2013 16:18:50 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 29 Apr 2013 16:18:50 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 29 Apr 2013 16:18:46 +0000 Received: from eris.apache.org (localhost [127.0.0.1]) by eris.apache.org (Postfix) with ESMTP id 135B623888E4; Mon, 29 Apr 2013 16:18:25 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: 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 Date: Mon, 29 Apr 2013 16:18:24 -0000 To: commits@openwebbeans.apache.org From: rmannibucau@apache.org X-Mailer: svnmailer-1.0.8-patched Message-Id: <20130429161825.135B623888E4@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org 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 * } * */ - 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> classes = new ArrayList>(); + 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> classes = new ArrayList>(); + classes.add(ReqBean.class); startContainer(classes); - BeanManager bm = getBeanManager(); - Set> beans = getBeanManager().getBeans(PersonalDataBean.class); - Assert.assertNotNull(beans); - Assert.assertTrue(beans.size() == 1); - Bean pdbBean = beans.iterator().next(); - CreationalContext 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> classes = new ArrayList>(); + 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> 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> 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> classes = new ArrayList>(); - - // add a few random classes - classes.add(SessScopedBean.class); - classes.add(AppScopedBean.class); - - startContainer(classes); - - Set> beans = getBeanManager().getBeans(SessScopedBean.class); - Assert.assertNotNull(beans); - Assert.assertTrue(beans.size() == 1); - - @SuppressWarnings("unchecked") - Bean bean = (Bean) beans.iterator().next(); - CreationalContext 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"; + } + } }