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 2011/10/16 14:49:10 UTC

svn commit: r1184813 - in /openejb/trunk/openejb: assembly/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/ container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/ container/openejb-core/src/main/java/org/apache/openejb/...

Author: rmannibucau
Date: Sun Oct 16 12:49:09 2011
New Revision: 1184813

URL: http://svn.apache.org/viewvc?rev=1184813&view=rev
Log:
adding some bindings for EmbeddedTomEEContainer

Added:
    openejb/trunk/openejb/examples/webapps/rest-example/src/test/
    openejb/trunk/openejb/examples/webapps/rest-example/src/test/java/
    openejb/trunk/openejb/examples/webapps/rest-example/src/test/java/org/
    openejb/trunk/openejb/examples/webapps/rest-example/src/test/java/org/superbiz/
    openejb/trunk/openejb/examples/webapps/rest-example/src/test/java/org/superbiz/rest/
    openejb/trunk/openejb/examples/webapps/rest-example/src/test/java/org/superbiz/rest/dao/
    openejb/trunk/openejb/examples/webapps/rest-example/src/test/java/org/superbiz/rest/dao/UserDaoTest.java
    openejb/trunk/openejb/examples/webapps/rest-example/src/test/java/org/superbiz/rest/dao/UserServiceTest.java
Modified:
    openejb/trunk/openejb/assembly/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/EmbeddedTomEEContainer.java
    openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
    openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/ContextUtil.java
    openejb/trunk/openejb/examples/webapps/rest-example/pom.xml

Modified: openejb/trunk/openejb/assembly/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/EmbeddedTomEEContainer.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/assembly/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/EmbeddedTomEEContainer.java?rev=1184813&r1=1184812&r2=1184813&view=diff
==============================================================================
--- openejb/trunk/openejb/assembly/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/EmbeddedTomEEContainer.java (original)
+++ openejb/trunk/openejb/assembly/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/EmbeddedTomEEContainer.java Sun Oct 16 12:49:09 2011
@@ -1,5 +1,6 @@
 package org.apache.tomee.embedded;
 
+import org.apache.geronimo.osgi.locator.ProviderLocator;
 import org.apache.openejb.OpenEJBException;
 import org.apache.openejb.util.Exceptions;
 import org.apache.openejb.util.NetworkUtil;
@@ -46,7 +47,15 @@ public class EmbeddedTomEEContainer exte
     public static class EmbeddedTomEEContainerProvider implements EJBContainerProvider {
         @Override public EJBContainer createEJBContainer(Map<?, ?> properties) {
             Object provider = properties.get(EJBContainer.PROVIDER);
-            if (provider != null && !provider.equals(EmbeddedTomEEContainer.class) && !provider.equals(EmbeddedTomEEContainer.class.getName())) {
+            int ejbContainerProviders = 1;
+            try {
+                ejbContainerProviders = ProviderLocator.getServices(EJBContainerProvider.class.getName(), EJBContainer.class, Thread.currentThread().getContextClassLoader()).size();
+            } catch (Exception e) {
+                 // no-op
+            }
+
+            if ((provider == null && ejbContainerProviders > 1)
+                    || (!provider.equals(EmbeddedTomEEContainer.class) && !provider.equals(EmbeddedTomEEContainer.class.getName()))) {
                 return null;
             }
 

Modified: openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java?rev=1184813&r1=1184812&r2=1184813&view=diff
==============================================================================
--- openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java (original)
+++ openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java Sun Oct 16 12:49:09 2011
@@ -826,15 +826,14 @@ public class Assembler extends Assembler
             // bind all global values on global context
             for (Map.Entry<String, Object> value : appContext.getBindings().entrySet()) {
                 String path = value.getKey();
-                if (path.startsWith("global")) {
-                    path = "java:" + path;
-                }
-                if (!path.startsWith("java:global")) {
+                if (!path.startsWith("global")) {
                     continue;
                 }
 
-                ContextUtil.mkdirs(containerSystemContext, path);
-                containerSystemContext.rebind(path, value);
+                // a bit weird but just to be consistent if user doesn't lookup directly the resource
+                Context lastContext = ContextUtil.mkdirs(containerSystemContext, path);
+                lastContext.bind(path.substring(path.lastIndexOf("/") + 1, path.length()), value.getValue());
+                containerSystemContext.rebind(path, value.getValue());
             }
 
 
@@ -868,7 +867,7 @@ public class Assembler extends Assembler
             services.put(ContextsService.class, new CdiAppContextsService(true));
             services.put(ResourceInjectionService.class, new CdiResourceInjectionService());
             services.put(ScannerService.class, new CdiScanner());
-            services.put(ELAdaptor.class, (ELAdaptor) new CustomELAdapter(appContext));
+            services.put(ELAdaptor.class, new CustomELAdapter(appContext));
             final Properties properties = new Properties();
             properties.setProperty(org.apache.webbeans.spi.SecurityService.class.getName(), ManagedSecurityService.class.getName());
             webBeansContext = new WebBeansContext(services, properties);

Modified: openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/ContextUtil.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/ContextUtil.java?rev=1184813&r1=1184812&r2=1184813&view=diff
==============================================================================
--- openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/ContextUtil.java (original)
+++ openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/util/ContextUtil.java Sun Oct 16 12:49:09 2011
@@ -11,22 +11,26 @@ public class ContextUtil {
         // no-op
     }
 
-    public static void mkdirs(Context context, String key) {
+    public static Context mkdirs(Context context, String key) {
         final String[] parts = key.split("/");
 
         int i = 0;
+        Context lastContext = context;
         for (String part : parts) {
-            if (++i == parts.length) return;
+            if (++i == parts.length) {
+                return lastContext;
+            }
 
             try {
-                context = context.createSubcontext(part);
+                lastContext = lastContext.createSubcontext(part);
             } catch (NamingException e) {
                 try {
-                    context = (Context) context.lookup(part);
+                    lastContext = (Context) lastContext.lookup(part);
                 } catch (NamingException e1) {
-                    return;
+                    return lastContext;
                 }
             }
         }
+        return lastContext;
     }
 }

Modified: openejb/trunk/openejb/examples/webapps/rest-example/pom.xml
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/examples/webapps/rest-example/pom.xml?rev=1184813&r1=1184812&r2=1184813&view=diff
==============================================================================
--- openejb/trunk/openejb/examples/webapps/rest-example/pom.xml (original)
+++ openejb/trunk/openejb/examples/webapps/rest-example/pom.xml Sun Oct 16 12:49:09 2011
@@ -26,6 +26,7 @@
   <properties>
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
     <openejb.version>4.0.0-beta-2-SNAPSHOT</openejb.version>
+    <tomee.version>1.0.0-beta-2-SNAPSHOT</tomee.version>
   </properties>
   <repositories>
     <repository>
@@ -131,6 +132,18 @@
       <version>4.8.1</version>
       <scope>test</scope>
     </dependency>
+    <dependency>
+      <groupId>org.apache.openejb</groupId>
+      <artifactId>tomee-embedded</artifactId>
+      <version>${tomee.version}</version>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>commons-io</groupId>
+      <artifactId>commons-io</artifactId>
+      <version>2.0.1</version>
+      <scope>test</scope>
+    </dependency>
   </dependencies>
   <!--
   This section allows you to configure where to publish libraries for sharing.

Added: openejb/trunk/openejb/examples/webapps/rest-example/src/test/java/org/superbiz/rest/dao/UserDaoTest.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/examples/webapps/rest-example/src/test/java/org/superbiz/rest/dao/UserDaoTest.java?rev=1184813&view=auto
==============================================================================
--- openejb/trunk/openejb/examples/webapps/rest-example/src/test/java/org/superbiz/rest/dao/UserDaoTest.java (added)
+++ openejb/trunk/openejb/examples/webapps/rest-example/src/test/java/org/superbiz/rest/dao/UserDaoTest.java Sun Oct 16 12:49:09 2011
@@ -0,0 +1,34 @@
+package org.superbiz.rest.dao;
+
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.superbiz.rest.model.User;
+
+import javax.ejb.embeddable.EJBContainer;
+import javax.naming.NamingException;
+
+import static junit.framework.Assert.assertNotNull;
+
+/**
+ * @author rmannibucau
+ */
+public class UserDaoTest {
+    private static EJBContainer container;
+
+    @BeforeClass public static void start() {
+        container = EJBContainer.createEJBContainer();
+    }
+
+    @AfterClass public static void stop() {
+        if (container != null) {
+            container.close();
+        }
+    }
+
+    @Test public void create() throws NamingException {
+        UserDAO dao = (UserDAO) container.getContext().lookup("java:global/rest-example/UserDAO");
+        User user = dao.create("foo", "dummy", "foo@bar.org");
+        assertNotNull(dao.find(user.getId()));
+    }
+}

Added: openejb/trunk/openejb/examples/webapps/rest-example/src/test/java/org/superbiz/rest/dao/UserServiceTest.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/examples/webapps/rest-example/src/test/java/org/superbiz/rest/dao/UserServiceTest.java?rev=1184813&view=auto
==============================================================================
--- openejb/trunk/openejb/examples/webapps/rest-example/src/test/java/org/superbiz/rest/dao/UserServiceTest.java (added)
+++ openejb/trunk/openejb/examples/webapps/rest-example/src/test/java/org/superbiz/rest/dao/UserServiceTest.java Sun Oct 16 12:49:09 2011
@@ -0,0 +1,63 @@
+package org.superbiz.rest.dao;
+
+import org.apache.commons.io.FileUtils;
+import org.apache.commons.io.filefilter.TrueFileFilter;
+import org.apache.tomee.embedded.EmbeddedTomEEContainer;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.superbiz.rest.model.User;
+
+import javax.ejb.embeddable.EJBContainer;
+import javax.naming.NamingException;
+import java.io.File;
+import java.io.IOException;
+import java.util.Properties;
+
+import static junit.framework.Assert.assertNotNull;
+
+/**
+ * @author rmannibucau
+ */
+public class UserServiceTest {
+    private static EJBContainer container;
+    private static File webApp;
+
+    @BeforeClass public static void start() throws IOException {
+        webApp = createWebApp();
+        Properties p = new Properties();
+        p.setProperty(EJBContainer.APP_NAME, "test");
+        p.setProperty(EJBContainer.PROVIDER, EmbeddedTomEEContainer.class.getName()); // need web feature
+        p.setProperty(EJBContainer.MODULES, webApp.getAbsolutePath());
+        p.setProperty(EmbeddedTomEEContainer.TOMEE_EJBCONTAINER_HTTP_PORT, "-1"); // random port
+        container = EJBContainer.createEJBContainer(p);
+    }
+
+    @AfterClass public static void stop() {
+        if (container != null) {
+            container.close();
+        }
+        if (webApp != null) {
+            if (!webApp.delete()) {
+                webApp.deleteOnExit();
+            }
+        }
+    }
+
+    @Test public void create() throws NamingException {
+        UserDAO dao = (UserDAO) container.getContext().lookup("java:global/" + webApp.getName() + "/UserDAO");
+        User user = dao.create("foo", "dummy", "foo@dummy.org");
+        assertNotNull(dao.find(user.getId()));
+    }
+
+    private static File createWebApp() throws IOException {
+        File file = new File(System.getProperty("java.io.tmpdir") + "/tomee-" + Math.random());
+        if (!file.mkdirs() && !file.exists()) {
+            throw new RuntimeException("can't create " + file.getAbsolutePath());
+        }
+
+        FileUtils.copyDirectory(new File("target/classes"), new File(file, "WEB-INF/classes"), TrueFileFilter.INSTANCE);
+
+        return file;
+    }
+}