[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