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/04/20 18:56:59 UTC

svn commit: r1588793 - in /tomee/tomee/trunk/container/openejb-junit/src: main/java/org/apache/openejb/junit/jee/ main/java/org/apache/openejb/junit/jee/rule/ test/java/org/apache/openejb/junit/

Author: rmannibucau
Date: Sun Apr 20 16:56:58 2014
New Revision: 1588793

URL: http://svn.apache.org/r1588793
Log:
OPENEJB-2090 EJBContainer junit rules - some helper methods

Added:
    tomee/tomee/trunk/container/openejb-junit/src/main/java/org/apache/openejb/junit/jee/InjectRule.java
      - copied, changed from r1588792, tomee/tomee/trunk/container/openejb-junit/src/main/java/org/apache/openejb/junit/jee/rule/InjectRule.java
    tomee/tomee/trunk/container/openejb-junit/src/test/java/org/apache/openejb/junit/TestResourceEJBContainerRule.java
      - copied, changed from r1588792, tomee/tomee/trunk/container/openejb-junit/src/test/java/org/apache/openejb/junit/TestEJBContainerRule.java
Removed:
    tomee/tomee/trunk/container/openejb-junit/src/main/java/org/apache/openejb/junit/jee/rule/
Modified:
    tomee/tomee/trunk/container/openejb-junit/src/main/java/org/apache/openejb/junit/jee/EJBContainerRule.java
    tomee/tomee/trunk/container/openejb-junit/src/main/java/org/apache/openejb/junit/jee/EJBContainerRunner.java
    tomee/tomee/trunk/container/openejb-junit/src/test/java/org/apache/openejb/junit/TestEJBContainerRule.java
    tomee/tomee/trunk/container/openejb-junit/src/test/java/org/apache/openejb/junit/TestEJBContainerRuleSimpleRule.java

Modified: tomee/tomee/trunk/container/openejb-junit/src/main/java/org/apache/openejb/junit/jee/EJBContainerRule.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-junit/src/main/java/org/apache/openejb/junit/jee/EJBContainerRule.java?rev=1588793&r1=1588792&r2=1588793&view=diff
==============================================================================
--- tomee/tomee/trunk/container/openejb-junit/src/main/java/org/apache/openejb/junit/jee/EJBContainerRule.java (original)
+++ tomee/tomee/trunk/container/openejb-junit/src/main/java/org/apache/openejb/junit/jee/EJBContainerRule.java Sun Apr 20 16:56:58 2014
@@ -17,13 +17,18 @@
 package org.apache.openejb.junit.jee;
 
 import org.apache.openejb.OpenEJBRuntimeException;
+import org.apache.openejb.assembler.classic.Assembler;
 import org.apache.openejb.junit.jee.statement.InjectStatement;
 import org.apache.openejb.junit.jee.statement.ShutingDownStatement;
 import org.apache.openejb.junit.jee.statement.StartingStatement;
+import org.apache.openejb.loader.SystemInstance;
+import org.apache.openejb.spi.ContainerSystem;
 import org.junit.rules.TestRule;
 import org.junit.runner.Description;
 import org.junit.runners.model.Statement;
 
+import javax.naming.NamingException;
+
 // @Rule works but mainly designed for @ClassRule for perf reasons
 public class EJBContainerRule implements TestRule {
     private final Object test;
@@ -56,6 +61,7 @@ public class EJBContainerRule implements
         return new ShutingDownStatement(startingStatement, startingStatement);
     }
 
+    // inject in test class or a class of org.apache.openejb.OpenEjbContainer.Provider.OPENEJB_ADDITIONNAL_CALLERS_KEY list
     public void inject(final Object target) {
         try { // reuse this logic to get @TestResource for free
             new InjectStatement(null, target.getClass(), target, startingStatement).evaluate();
@@ -64,7 +70,19 @@ public class EJBContainerRule implements
         }
     }
 
-    public StartingStatement getStartingStatement() {
+    // helper method to get a resource
+    public <T> T resource(final Class<T> type, final String name) {
+        try {
+            return type.cast(
+                    SystemInstance.get().getComponent(ContainerSystem.class)
+                            .getJNDIContext().lookup("java:" + Assembler.OPENEJB_RESOURCE_JNDI_PREFIX + name));
+        } catch (final NamingException e) {
+            throw new OpenEJBRuntimeException(e);
+        }
+    }
+
+    // internal API to make it easily integrated
+    StartingStatement getStartingStatement() {
         return startingStatement;
     }
 }

Modified: tomee/tomee/trunk/container/openejb-junit/src/main/java/org/apache/openejb/junit/jee/EJBContainerRunner.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-junit/src/main/java/org/apache/openejb/junit/jee/EJBContainerRunner.java?rev=1588793&r1=1588792&r2=1588793&view=diff
==============================================================================
--- tomee/tomee/trunk/container/openejb-junit/src/main/java/org/apache/openejb/junit/jee/EJBContainerRunner.java (original)
+++ tomee/tomee/trunk/container/openejb-junit/src/main/java/org/apache/openejb/junit/jee/EJBContainerRunner.java Sun Apr 20 16:56:58 2014
@@ -16,7 +16,6 @@
  */
 package org.apache.openejb.junit.jee;
 
-import org.apache.openejb.junit.jee.rule.InjectRule;
 import org.apache.openejb.junit.jee.statement.ShutingDownStatement;
 import org.apache.openejb.junit.jee.statement.StartingStatement;
 import org.apache.openejb.junit.jee.transaction.TransactionRule;

Copied: tomee/tomee/trunk/container/openejb-junit/src/main/java/org/apache/openejb/junit/jee/InjectRule.java (from r1588792, tomee/tomee/trunk/container/openejb-junit/src/main/java/org/apache/openejb/junit/jee/rule/InjectRule.java)
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-junit/src/main/java/org/apache/openejb/junit/jee/InjectRule.java?p2=tomee/tomee/trunk/container/openejb-junit/src/main/java/org/apache/openejb/junit/jee/InjectRule.java&p1=tomee/tomee/trunk/container/openejb-junit/src/main/java/org/apache/openejb/junit/jee/rule/InjectRule.java&r1=1588792&r2=1588793&rev=1588793&view=diff
==============================================================================
--- tomee/tomee/trunk/container/openejb-junit/src/main/java/org/apache/openejb/junit/jee/rule/InjectRule.java (original)
+++ tomee/tomee/trunk/container/openejb-junit/src/main/java/org/apache/openejb/junit/jee/InjectRule.java Sun Apr 20 16:56:58 2014
@@ -1,6 +1,5 @@
-package org.apache.openejb.junit.jee.rule;
+package org.apache.openejb.junit.jee;
 
-import org.apache.openejb.junit.jee.EJBContainerRule;
 import org.apache.openejb.junit.jee.statement.InjectStatement;
 import org.apache.openejb.junit.jee.statement.StartingStatement;
 import org.junit.rules.TestRule;

Modified: tomee/tomee/trunk/container/openejb-junit/src/test/java/org/apache/openejb/junit/TestEJBContainerRule.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-junit/src/test/java/org/apache/openejb/junit/TestEJBContainerRule.java?rev=1588793&r1=1588792&r2=1588793&view=diff
==============================================================================
--- tomee/tomee/trunk/container/openejb-junit/src/test/java/org/apache/openejb/junit/TestEJBContainerRule.java (original)
+++ tomee/tomee/trunk/container/openejb-junit/src/test/java/org/apache/openejb/junit/TestEJBContainerRule.java Sun Apr 20 16:56:58 2014
@@ -19,8 +19,7 @@ package org.apache.openejb.junit;
 import org.apache.openejb.junit.ejbs.BasicEjbLocal;
 import org.apache.openejb.junit.jee.EJBContainerRule;
 import org.apache.openejb.junit.jee.config.Properties;
-import org.apache.openejb.junit.jee.config.Property;
-import org.apache.openejb.junit.jee.rule.InjectRule;
+import org.apache.openejb.junit.jee.InjectRule;
 import org.apache.openejb.config.DeploymentFilterable;
 import org.junit.ClassRule;
 import org.junit.Rule;

Modified: tomee/tomee/trunk/container/openejb-junit/src/test/java/org/apache/openejb/junit/TestEJBContainerRuleSimpleRule.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-junit/src/test/java/org/apache/openejb/junit/TestEJBContainerRuleSimpleRule.java?rev=1588793&r1=1588792&r2=1588793&view=diff
==============================================================================
--- tomee/tomee/trunk/container/openejb-junit/src/test/java/org/apache/openejb/junit/TestEJBContainerRuleSimpleRule.java (original)
+++ tomee/tomee/trunk/container/openejb-junit/src/test/java/org/apache/openejb/junit/TestEJBContainerRuleSimpleRule.java Sun Apr 20 16:56:58 2014
@@ -32,7 +32,6 @@ import static org.junit.Assert.assertEqu
 import static org.junit.Assert.assertNotNull;
 
 @Properties({
-        // FallbackPropertyInjector for ejb to test config
         @Property(key = DeploymentFilterable.CLASSPATH_EXCLUDE, value = "jar:.*"),
         @Property(key = DeploymentFilterable.CLASSPATH_INCLUDE, value = ".*openejb-junit.*")
 })

Copied: tomee/tomee/trunk/container/openejb-junit/src/test/java/org/apache/openejb/junit/TestResourceEJBContainerRule.java (from r1588792, tomee/tomee/trunk/container/openejb-junit/src/test/java/org/apache/openejb/junit/TestEJBContainerRule.java)
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-junit/src/test/java/org/apache/openejb/junit/TestResourceEJBContainerRule.java?p2=tomee/tomee/trunk/container/openejb-junit/src/test/java/org/apache/openejb/junit/TestResourceEJBContainerRule.java&p1=tomee/tomee/trunk/container/openejb-junit/src/test/java/org/apache/openejb/junit/TestEJBContainerRule.java&r1=1588792&r2=1588793&rev=1588793&view=diff
==============================================================================
--- tomee/tomee/trunk/container/openejb-junit/src/test/java/org/apache/openejb/junit/TestEJBContainerRule.java (original)
+++ tomee/tomee/trunk/container/openejb-junit/src/test/java/org/apache/openejb/junit/TestResourceEJBContainerRule.java Sun Apr 20 16:56:58 2014
@@ -16,61 +16,32 @@
  */
 package org.apache.openejb.junit;
 
-import org.apache.openejb.junit.ejbs.BasicEjbLocal;
+import org.apache.openejb.config.DeploymentFilterable;
 import org.apache.openejb.junit.jee.EJBContainerRule;
 import org.apache.openejb.junit.jee.config.Properties;
-import org.apache.openejb.junit.jee.config.Property;
-import org.apache.openejb.junit.jee.rule.InjectRule;
-import org.apache.openejb.config.DeploymentFilterable;
 import org.junit.ClassRule;
-import org.junit.Rule;
 import org.junit.Test;
 
-import javax.ejb.EJB;
-import javax.ejb.embeddable.EJBContainer;
-import javax.naming.Context;
+import javax.annotation.Resource;
+import javax.sql.DataSource;
 
 import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
 
 @Properties({
-        // FallbackPropertyInjector for ejb to test config
-        @org.apache.openejb.junit.jee.config.Property(key = DeploymentFilterable.CLASSPATH_EXCLUDE, value = "jar:.*")
+        @org.apache.openejb.junit.jee.config.Property(key = DeploymentFilterable.CLASSPATH_EXCLUDE, value = "jar:.*"),
+        @org.apache.openejb.junit.jee.config.Property(key = DeploymentFilterable.CLASSPATH_INCLUDE, value = ".*openejb-junit.*"),
+        @org.apache.openejb.junit.jee.config.Property(key = "r", value = "new://Resource?type=DataSource")
 })
-public class TestEJBContainerRule {
+public class TestResourceEJBContainerRule {
     @ClassRule
     public static final EJBContainerRule CONTAINER_RULE = new EJBContainerRule();
 
-    @Rule
-    public final InjectRule injectRule = new InjectRule(this, CONTAINER_RULE);
-
-    @org.apache.openejb.junit.jee.resources.TestResource
-    private Context ctx;
-
-    @org.apache.openejb.junit.jee.resources.TestResource
-    private java.util.Properties props;
-
-    @org.apache.openejb.junit.jee.resources.TestResource
-    private EJBContainer container;
-
-    @EJB
-    private BasicEjbLocal ejb;
-
-    private void doChecks() {
-        assertNotNull(ctx);
-        assertNotNull(props);
-        assertNotNull(container);
-        assertNotNull(ejb);
-        assertEquals("a b", ejb.concat("a", "b"));
-    }
-
-    @Test
-    public void checkAllIsFine() {
-        doChecks();
-    }
+    @Resource(name = "r")
+    private DataSource ds;
 
     @Test
-    public void checkAllIsStillFine() {
-        doChecks();
+    public void checkResource() {
+        CONTAINER_RULE.inject(this);
+        assertEquals(ds, CONTAINER_RULE.resource(DataSource.class, "r"));
     }
 }