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 };
+ }
+ }
+
+}