You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by jl...@apache.org on 2016/12/03 16:56:03 UTC

[09/50] tomee git commit: Adding test

Adding test


Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/a1d37600
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/a1d37600
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/a1d37600

Branch: refs/heads/tomee-1.7.x
Commit: a1d376003d378c0fed85d2f9c0bffba29c9beb24
Parents: 4923fa0
Author: Jonathan Gallimore <jo...@jrg.me.uk>
Authored: Fri May 13 15:31:17 2016 +0100
Committer: Jonathan Gallimore <jo...@jrg.me.uk>
Committed: Fri May 13 15:48:14 2016 +0100

----------------------------------------------------------------------
 .../core/ivm/EjbObjectInputStreamTest.java      | 201 +++++++++++++++++++
 1 file changed, 201 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/a1d37600/container/openejb-core/src/test/java/org/apache/openejb/core/ivm/EjbObjectInputStreamTest.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/test/java/org/apache/openejb/core/ivm/EjbObjectInputStreamTest.java b/container/openejb-core/src/test/java/org/apache/openejb/core/ivm/EjbObjectInputStreamTest.java
new file mode 100644
index 0000000..6bf7e92
--- /dev/null
+++ b/container/openejb-core/src/test/java/org/apache/openejb/core/ivm/EjbObjectInputStreamTest.java
@@ -0,0 +1,201 @@
+package org.apache.openejb.core.ivm;
+
+import org.apache.openejb.OpenEJB;
+import org.apache.openejb.assembler.classic.AppInfo;
+import org.apache.openejb.assembler.classic.Assembler;
+import org.apache.openejb.assembler.classic.ProxyFactoryInfo;
+import org.apache.openejb.assembler.classic.SecurityServiceInfo;
+import org.apache.openejb.assembler.classic.StatelessSessionContainerInfo;
+import org.apache.openejb.assembler.classic.TransactionServiceInfo;
+import org.apache.openejb.config.AppModule;
+import org.apache.openejb.config.ConfigurationFactory;
+import org.apache.openejb.config.EjbModule;
+import org.apache.openejb.core.LocalInitialContextFactory;
+import org.apache.openejb.jee.EjbJar;
+import org.apache.openejb.jee.StatelessBean;
+import org.apache.openejb.loader.SystemInstance;
+import org.apache.openejb.spi.ContainerSystem;
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.Test;
+
+import javax.ejb.Remote;
+import javax.ejb.Stateless;
+import javax.naming.Context;
+import javax.naming.InitialContext;
+import java.util.Properties;
+
+import static org.junit.Assert.assertEquals;
+
+public class EjbObjectInputStreamTest {
+
+    private InitialContext context;
+    private Assembler assembler;
+    private ConfigurationFactory config;
+    private String oldWhitelist;
+    private String oldBlacklist;
+
+    @Before
+    public void setUp() throws Exception {
+        oldWhitelist = System.getProperty("tomee.serialization.class.whitelist");
+        oldBlacklist = System.getProperty("tomee.serialization.class.blacklist");
+
+        System.setProperty("tomee.serialization.class.whitelist", "org.apache.openejb.,java.lang.SecurityException,java.lang.RuntimeException,java.lang.Exception,"
+                + "java.lang.Throwable,java.lang.StackTraceElement,java.util.Collections,java.util.ArrayList,java.util.Properties,java.util.Hashtable,java.util.HashSet,"
+                + "java.net.URI,java.util.TreeSet,java.util.LinkedHashSet,java.lang.String");
+
+        System.setProperty("tomee.serialization.class.blacklist", "-");
+
+        config = new ConfigurationFactory();
+        assembler = new Assembler();
+
+        assembler.createProxyFactory(config.configureService(ProxyFactoryInfo.class));
+        assembler.createTransactionManager(config.configureService(TransactionServiceInfo.class));
+        assembler.createSecurityService(config.configureService(SecurityServiceInfo.class));
+        assembler.createContainer(config.configureService(StatelessSessionContainerInfo.class));
+
+        final Properties props = new Properties();
+        props.setProperty(Context.INITIAL_CONTEXT_FACTORY, LocalInitialContextFactory.class.getName());
+        context = new InitialContext(props);
+    }
+
+    @After
+    public void tearDown() throws Exception {
+        for (final AppInfo appInfo : assembler.getDeployedApplications()) {
+            assembler.destroyApplication(appInfo.path);
+        }
+        SystemInstance.get().setComponent(Assembler.class, null);
+        SystemInstance.get().setComponent(ContainerSystem.class, null);
+
+        if (oldWhitelist != null) {
+            System.setProperty("tomee.serialization.class.whitelist", oldWhitelist);
+        }
+
+        if (oldWhitelist != null) {
+            System.setProperty("tomee.serialization.class.blacklist", oldBlacklist);
+        }
+    }
+
+    @AfterClass
+    public static void afterClass() throws Exception {
+        OpenEJB.destroy();
+    }
+
+    @Test
+    public void testShouldAllowPrimitiveArraysToBeSerialized() throws Exception {
+        final EjbJar ejbJar = new EjbJar();
+        final StatelessBean statelessBean = new StatelessBean(TestBean.class);
+        ejbJar.addEnterpriseBean(statelessBean);
+
+        final AppModule app = new AppModule(this.getClass().getClassLoader(), "Test");
+        final EjbModule ejbModule = new EjbModule(ejbJar);
+        ejbModule.setModuleId("EjbModule");
+        app.getEjbModules().add(ejbModule);
+        assembler.createApplication(config.configureApplication(app));
+
+        final TestRemote testBean = (TestRemote) context.lookup("TestBeanRemote");
+        assertEquals('J', testBean.getChar());
+        assertEquals("Hello", new String(testBean.getCharArray()));
+        assertEquals("test", new String(testBean.getCharArrayArray()[0]));
+        assertEquals("run", new String(testBean.getCharArrayArray()[1]));
+        assertEquals(1, testBean.getIntArray()[0]);
+        assertEquals(2, testBean.getIntArray()[1]);
+        assertEquals(true, testBean.getBooleanArray()[0]);
+        assertEquals(false, testBean.getBooleanArray()[1]);
+        assertEquals(0xD, testBean.getByteArray()[0]);
+        assertEquals(0xE, testBean.getByteArray()[1]);
+        assertEquals(0xA, testBean.getByteArray()[2]);
+        assertEquals(0xD, testBean.getByteArray()[3]);
+        assertEquals(0xB, testBean.getByteArray()[4]);
+        assertEquals(0xE, testBean.getByteArray()[5]);
+        assertEquals(0xE, testBean.getByteArray()[6]);
+        assertEquals(0xF, testBean.getByteArray()[7]);
+        assertEquals(1, testBean.getShortArray()[0]);
+        assertEquals(2, testBean.getShortArray()[1]);
+        assertEquals(1.1f, testBean.getFloatArray()[0], 0.001);
+        assertEquals(2.2f, testBean.getFloatArray()[1], 0.001);
+        assertEquals(5L, testBean.getLongArray()[0]);
+        assertEquals(6L, testBean.getLongArray()[1]);
+        assertEquals(1.1, testBean.getDoubleArray()[0], 0.001);
+        assertEquals(2.2, testBean.getDoubleArray()[1], 0.001);
+    }
+
+    public interface TestRemote {
+        char[] getCharArray();
+
+        char[][] getCharArrayArray();
+
+        char getChar();
+
+        int[] getIntArray();
+
+        boolean[] getBooleanArray();
+
+        byte[] getByteArray();
+
+        short[] getShortArray();
+
+        float[] getFloatArray();
+
+        long[] getLongArray();
+
+        double[] getDoubleArray();
+    }
+
+    @Stateless
+    @Remote(TestRemote.class)
+    public static class TestBean implements TestRemote {
+
+        @Override
+        public char[] getCharArray() {
+            return "Hello".toCharArray();
+        }
+
+        @Override
+        public char[][] getCharArrayArray() {
+            return new char[] [] { new char[] { 't', 'e', 's', 't' }, new char[] { 'r', 'u', 'n' }};
+        }
+
+        @Override
+        public char getChar() {
+            return 'J';
+        }
+
+        @Override
+        public int[] getIntArray() {
+            return new int[] { 1, 2 };
+        }
+
+        @Override
+        public boolean[] getBooleanArray() {
+            return new boolean[] { true, false };
+        }
+
+        @Override
+        public byte[] getByteArray() {
+            return new byte[] { 0xD, 0xE, 0xA, 0xD, 0xB, 0xE, 0xE, 0xF };
+        }
+
+        @Override
+        public short[] getShortArray() {
+            return new short[] { 1, 2 };
+        }
+
+        @Override
+        public float[] getFloatArray() {
+            return new float[] { 1.1f, 2.2f };
+        }
+
+        @Override
+        public long[] getLongArray() {
+            return new long[] { 5L, 6L };
+        }
+
+        @Override
+        public double[] getDoubleArray() {
+            return new double[] { 1.1, 2.2 };
+        }
+    }
+
+}