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;
+ }
+}