You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by rm...@apache.org on 2014/05/21 20:25:33 UTC

svn commit: r1596641 - in /tomee/tomee/trunk/container/openejb-core/src: main/java/org/apache/openejb/OpenEjbContainer.java test/java/org/apache/openejb/OpenEjbContainerNoRestartTest.java

Author: rmannibucau
Date: Wed May 21 18:25:32 2014
New Revision: 1596641

URL: http://svn.apache.org/r1596641
Log:
OPENEJB-2095 test for single EJBContainer jvm feature

Added:
    tomee/tomee/trunk/container/openejb-core/src/test/java/org/apache/openejb/OpenEjbContainerNoRestartTest.java
      - copied, changed from r1596614, tomee/tomee/trunk/container/openejb-core/src/test/java/org/apache/openejb/OpenEjbContainerTest.java
Modified:
    tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/OpenEjbContainer.java

Modified: tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/OpenEjbContainer.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/OpenEjbContainer.java?rev=1596641&r1=1596640&r2=1596641&view=diff
==============================================================================
--- tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/OpenEjbContainer.java (original)
+++ tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/OpenEjbContainer.java Wed May 21 18:25:32 2014
@@ -153,7 +153,11 @@ public final class OpenEjbContainer exte
         return OPENEJB_EJBCONTAINER_CLOSE_SINGLE.equals(SystemInstance.get().getProperty(OPENEJB_EJBCONTAINER_CLOSE, "by-invocation"));
     }
 
-    private void doClose() {
+    private synchronized void doClose() {
+        if (instance == null) {
+            return;
+        }
+
         if (serviceManager != null) {
             serviceManager.stop();
         }
@@ -341,7 +345,9 @@ public final class OpenEjbContainer exte
                     Runtime.getRuntime().addShutdownHook(new Thread() {
                         @Override
                         public void run() {
-                            instance.doClose();
+                            if (instance != null) {
+                                instance.doClose();
+                            }
                         }
                     });
                 }

Copied: tomee/tomee/trunk/container/openejb-core/src/test/java/org/apache/openejb/OpenEjbContainerNoRestartTest.java (from r1596614, tomee/tomee/trunk/container/openejb-core/src/test/java/org/apache/openejb/OpenEjbContainerTest.java)
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/test/java/org/apache/openejb/OpenEjbContainerNoRestartTest.java?p2=tomee/tomee/trunk/container/openejb-core/src/test/java/org/apache/openejb/OpenEjbContainerNoRestartTest.java&p1=tomee/tomee/trunk/container/openejb-core/src/test/java/org/apache/openejb/OpenEjbContainerTest.java&r1=1596614&r2=1596641&rev=1596641&view=diff
==============================================================================
--- tomee/tomee/trunk/container/openejb-core/src/test/java/org/apache/openejb/OpenEjbContainerTest.java (original)
+++ tomee/tomee/trunk/container/openejb-core/src/test/java/org/apache/openejb/OpenEjbContainerNoRestartTest.java Wed May 21 18:25:32 2014
@@ -16,79 +16,47 @@
  */
 package org.apache.openejb;
 
-import junit.framework.TestCase;
 import org.apache.openejb.jee.EjbJar;
-import org.apache.openejb.jee.SingletonBean;
+import org.apache.openejb.loader.SystemInstance;
+import org.apache.openejb.util.reflection.Reflections;
+import org.junit.Test;
 
-import javax.ejb.EJB;
 import javax.ejb.embeddable.EJBContainer;
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * @version $Rev$ $Date$
- */
-public class OpenEjbContainerTest extends TestCase {
-
-    @EJB
-    private Widget widget;
-
-    public void testInject() throws Exception {
-
-        Map<String, Object> map = new HashMap<String, Object>();
-
-
-        final EjbJar ejbJar = new EjbJar();
-        ejbJar.addEnterpriseBean(new SingletonBean(Widget.class));
-        map.put(EJBContainer.MODULES, ejbJar);
-
-        OpenEjbContainer openEjbContainer = (OpenEjbContainer) EJBContainer.createEJBContainer(map);
-
-        Injector.inject(this);
-
-        assertNotNull(widget);
-
-        widget = null;
-
-        openEjbContainer.getContext().bind("inject", this);
-
-        openEjbContainer.close();
-    }
-
-    public void testStartContainerFromInnerClass() throws Exception {
-        new SomeInnerClass().startTheContainer();
-    }
-
-    public static class Widget {
+import java.util.Properties;
 
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotSame;
+import static org.junit.Assert.assertSame;
+import static org.junit.Assert.assertTrue;
+
+public class OpenEjbContainerNoRestartTest {
+    @Test
+    public void normalRestart() throws Exception {
+        final EJBContainer container1 = EJBContainer.createEJBContainer(new Properties() {{
+            put(EJBContainer.MODULES, new EjbJar());
+        }});
+        container1.close();
+        final EJBContainer container2 = EJBContainer.createEJBContainer(new Properties() {{
+            put(EJBContainer.MODULES, new EjbJar());
+        }});
+        container2.close();
+        assertNotSame(container1, container2);
     }
 
-    public static final class SomeInnerClass {
-        @EJB
-        private Widget widget;
-
-        public void startTheContainer() throws Exception {
-            Map<String, Object> map = new HashMap<String, Object>();
-
-
-            final EjbJar ejbJar = new EjbJar();
-            ejbJar.addEnterpriseBean(new SingletonBean(Widget.class));
-            map.put(EJBContainer.MODULES, ejbJar);
-
-            OpenEjbContainer openEjbContainer = (OpenEjbContainer) EJBContainer.createEJBContainer(map);
-
-            try {
-                Injector.inject(this);
-
-                assertNotNull(widget);
-
-                widget = null;
-
-                openEjbContainer.getContext().bind("inject", this);
-            } finally {
-                openEjbContainer.close();
-            }
-
-        }
+    @Test
+    public void noRestart() throws Exception {
+        final EJBContainer container1 = EJBContainer.createEJBContainer(new Properties() {{
+            put(EJBContainer.MODULES, new EjbJar());
+            put(OpenEjbContainer.OPENEJB_EJBCONTAINER_CLOSE, OpenEjbContainer.OPENEJB_EJBCONTAINER_CLOSE_SINGLE);
+        }});
+        container1.close();
+        final EJBContainer container2 = EJBContainer.createEJBContainer(new Properties() {{
+            put(EJBContainer.MODULES, new EjbJar());
+        }});
+        container2.close();
+        assertTrue(SystemInstance.isInitialized());
+        assertSame(container1, container2);
+        Reflections.invokeByReflection(container2, "doClose", new Class<?>[0], null);
+        assertFalse(SystemInstance.isInitialized());
     }
 }