[jboss-svn-commits] JBoss Common SVN: r4078 - in arquillian/trunk: container-openejb/src/main/java/org/jboss/arquillian/openejb and 3 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Mon Mar 1 04:38:59 EST 2010


Author: aslak
Date: 2010-03-01 04:38:59 -0500 (Mon, 01 Mar 2010)
New Revision: 4078

Modified:
   arquillian/trunk/container-openejb/pom.xml
   arquillian/trunk/container-openejb/src/main/java/org/jboss/arquillian/openejb/OpenEJBTestEnricher.java
   arquillian/trunk/container-openejb/src/test/java/org/jboss/arquillian/openejb/OpenEJBIntegrationTestCase.java
   arquillian/trunk/demo-testng/pom.xml
   arquillian/trunk/demo/pom.xml
Log:
ARQ-77 Added initial EJB Injection support, should review


Modified: arquillian/trunk/container-openejb/pom.xml
===================================================================
--- arquillian/trunk/container-openejb/pom.xml	2010-03-01 08:36:29 UTC (rev 4077)
+++ arquillian/trunk/container-openejb/pom.xml	2010-03-01 09:38:59 UTC (rev 4078)
@@ -51,6 +51,12 @@
          <version>${project.version}</version>
       </dependency>
     
+      <dependency>
+         <groupId>org.jboss.arquillian</groupId>
+         <artifactId>arquillian-testenricher-ejb</artifactId>
+         <version>${project.version}</version>
+      </dependency>
+
     <!-- 
     External Projects
      -->

Modified: arquillian/trunk/container-openejb/src/main/java/org/jboss/arquillian/openejb/OpenEJBTestEnricher.java
===================================================================
--- arquillian/trunk/container-openejb/src/main/java/org/jboss/arquillian/openejb/OpenEJBTestEnricher.java	2010-03-01 08:36:29 UTC (rev 4077)
+++ arquillian/trunk/container-openejb/src/main/java/org/jboss/arquillian/openejb/OpenEJBTestEnricher.java	2010-03-01 09:38:59 UTC (rev 4078)
@@ -16,42 +16,63 @@
  */
 package org.jboss.arquillian.openejb;
 
-import java.util.logging.Logger;
+import java.lang.reflect.Field;
+import java.util.Properties;
 
+import javax.naming.Binding;
+import javax.naming.Context;
+import javax.naming.InitialContext;
+import javax.naming.NamingEnumeration;
+
 import org.jboss.arquillian.spi.TestEnricher;
+import org.jboss.arquillian.testenricher.ejb.EJBInjectionEnricher;
 
 /**
  * {@link TestEnricher} implementation specific to the OpenEJB
  * Container
  * 
  * @author <a href="mailto:andrew.rubinger at jboss.org">ALR</a>
+ * @author <a href="mailto:aslak at conduct.no">Aslak Knutsen</a>
  * @version $Revision: $
  */
-public class OpenEJBTestEnricher implements TestEnricher
+public class OpenEJBTestEnricher extends EJBInjectionEnricher 
 {
 
-   //-------------------------------------------------------------------------------------||
-   // Class Members ----------------------------------------------------------------------||
-   //-------------------------------------------------------------------------------------||
+   @Override
+   protected InitialContext createContext() throws Exception
+   {
+      final Properties properties = new Properties();
+      properties.setProperty(Context.INITIAL_CONTEXT_FACTORY, "org.apache.openejb.client.LocalInitialContextFactory");
+      return new InitialContext(properties);
+   }
 
-   /**
-    * Logger
-    */
-   private static final Logger log = Logger.getLogger(OpenEJBTestEnricher.class.getName());
-
-   //-------------------------------------------------------------------------------------||
-   // Required Implementations -----------------------------------------------------------||
-   //-------------------------------------------------------------------------------------||
-
-   /**
-    * {@inheritDoc}
-    * @see org.jboss.arquillian.spi.TestEnricher#enrich(java.lang.Object)
-    */
    @Override
-   public void enrich(final Object testCase)
+   protected Object lookupEJB(Field field) throws Exception 
    {
-      log.fine("Enriching: " + testCase);
-      // NOOP for now
+      InitialContext context = createContext();
+      return lookupRecursive(field, context, context.listBindings("/"));
    }
-
+   
+   protected Object lookupRecursive(Field field, Context context, NamingEnumeration<Binding> contextNames) throws Exception 
+   {
+      while(contextNames.hasMore())
+      {
+         Binding contextName = contextNames.nextElement();
+         Object value = contextName.getObject();
+         if(Context.class.isInstance(value)) 
+         {
+            Context subContext = (Context)value;
+            return lookupRecursive(field, subContext, subContext.listBindings("/"));
+         }
+         else 
+         {
+            value = context.lookup(contextName.getName());
+            if(field.getType().isInstance(value))
+            {
+               return value;
+            }
+         }
+      }
+      throw new RuntimeException("Could not lookup EJB reference for: " + field);
+   }
 }

Modified: arquillian/trunk/container-openejb/src/test/java/org/jboss/arquillian/openejb/OpenEJBIntegrationTestCase.java
===================================================================
--- arquillian/trunk/container-openejb/src/test/java/org/jboss/arquillian/openejb/OpenEJBIntegrationTestCase.java	2010-03-01 08:36:29 UTC (rev 4077)
+++ arquillian/trunk/container-openejb/src/test/java/org/jboss/arquillian/openejb/OpenEJBIntegrationTestCase.java	2010-03-01 09:38:59 UTC (rev 4078)
@@ -16,13 +16,9 @@
  */
 package org.jboss.arquillian.openejb;
 
-import java.util.Properties;
 import java.util.logging.Logger;
 
 import javax.ejb.EJB;
-import javax.naming.Context;
-import javax.naming.InitialContext;
-import javax.naming.NamingException;
 
 import org.jboss.arquillian.api.Deployment;
 import org.jboss.arquillian.junit.Arquillian;
@@ -31,7 +27,6 @@
 import org.jboss.shrinkwrap.api.Archives;
 import org.jboss.shrinkwrap.api.spec.JavaArchive;
 import org.junit.Assert;
-import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 
@@ -76,23 +71,6 @@
    private EchoLocalBusiness bean;
 
    //-------------------------------------------------------------------------------------||
-   // Lifecycle --------------------------------------------------------------------------||
-   //-------------------------------------------------------------------------------------||
-
-   /**
-    * Looks up the EJB proxy in JNDI
-    * @deprecated Once Arquillian supports injection ARQ-77
-    */
-   @Deprecated
-   @Before
-   public void lookupBean() throws NamingException
-   {
-      final Properties properties = new Properties();
-      properties.setProperty(Context.INITIAL_CONTEXT_FACTORY, "org.apache.openejb.client.LocalInitialContextFactory");
-      bean = (EchoLocalBusiness) new InitialContext(properties).lookup(EchoBean.class.getSimpleName() + "Local");
-   }
-
-   //-------------------------------------------------------------------------------------||
    // Tests ------------------------------------------------------------------------------||
    //-------------------------------------------------------------------------------------||
 

Modified: arquillian/trunk/demo/pom.xml
===================================================================
--- arquillian/trunk/demo/pom.xml	2010-03-01 08:36:29 UTC (rev 4077)
+++ arquillian/trunk/demo/pom.xml	2010-03-01 09:38:59 UTC (rev 4078)
@@ -40,10 +40,10 @@
 
    <profiles>
       <profile>
-         <!-- 
-            Added a default profile used during compiling. 
-            The JavaEE API jar can not be on classpath during test execution.
-          -->
+         <!--
+            Added a default profile used during compiling. The JavaEE
+            API jar can not be on classpath during test execution.
+         -->
          <id>default</id>
          <activation>
             <activeByDefault>true</activeByDefault>
@@ -106,6 +106,16 @@
             </dependency>
          </dependencies>
       </profile>
+      <profile>
+         <id>openejb</id>
+         <dependencies>
+            <dependency>
+               <groupId>org.jboss.arquillian</groupId>
+               <artifactId>arquillian-container-openejb</artifactId>
+               <version>${project.version}</version>
+            </dependency>
+         </dependencies>
+      </profile>
    </profiles>
 
    <!-- Dependencies -->

Modified: arquillian/trunk/demo-testng/pom.xml
===================================================================
--- arquillian/trunk/demo-testng/pom.xml	2010-03-01 08:36:29 UTC (rev 4077)
+++ arquillian/trunk/demo-testng/pom.xml	2010-03-01 09:38:59 UTC (rev 4078)
@@ -32,7 +32,7 @@
          <artifactId>maven-surefire-plugin</artifactId>
          <configuration>
            <!-- ARQ-60 -->
-           <skip>true</skip>
+	   <skip>true</skip>
          </configuration>
        </plugin>
      </plugins>
@@ -117,6 +117,16 @@
             </dependency>
          </dependencies>
       </profile>
+      <profile>
+         <id>openejb</id>
+         <dependencies>
+            <dependency>
+               <groupId>org.jboss.arquillian</groupId>
+               <artifactId>arquillian-container-openejb</artifactId>
+               <version>${project.version}</version>
+            </dependency>
+         </dependencies>
+      </profile>
    </profiles>
 
    <!-- Dependencies -->



More information about the jboss-svn-commits mailing list