You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by db...@apache.org on 2011/09/19 12:59:32 UTC

svn commit: r1172568 - in /openejb/trunk/sandbox/arquillian-tomee/arquillian-tomee-embedded/src: main/java/org/apache/openejb/arquillian/ test/java/org/apache/openejb/arquillian/

Author: dblevins
Date: Mon Sep 19 10:59:31 2011
New Revision: 1172568

URL: http://svn.apache.org/viewvc?rev=1172568&view=rev
Log:
A bunch more tests

Added:
    openejb/trunk/sandbox/arquillian-tomee/arquillian-tomee-embedded/src/test/java/org/apache/openejb/arquillian/ModuleNameInjectionTest.java
    openejb/trunk/sandbox/arquillian-tomee/arquillian-tomee-embedded/src/test/java/org/apache/openejb/arquillian/SharedEnvironmentTest.java
      - copied, changed from r1167436, openejb/trunk/sandbox/arquillian-tomee/arquillian-tomee-embedded/src/test/java/org/apache/openejb/arquillian/ServletFilterCdiInjectionTest.java
Modified:
    openejb/trunk/sandbox/arquillian-tomee/arquillian-tomee-embedded/src/main/java/org/apache/openejb/arquillian/TomEEContainer.java
    openejb/trunk/sandbox/arquillian-tomee/arquillian-tomee-embedded/src/test/java/org/apache/openejb/arquillian/ServletCdiInjectionTest.java
    openejb/trunk/sandbox/arquillian-tomee/arquillian-tomee-embedded/src/test/java/org/apache/openejb/arquillian/ServletEnvEntryInjectionTest.java
    openejb/trunk/sandbox/arquillian-tomee/arquillian-tomee-embedded/src/test/java/org/apache/openejb/arquillian/ServletResourceEnvEntryInjectionTest.java
    openejb/trunk/sandbox/arquillian-tomee/arquillian-tomee-embedded/src/test/java/org/apache/openejb/arquillian/TestSetup.java

Modified: openejb/trunk/sandbox/arquillian-tomee/arquillian-tomee-embedded/src/main/java/org/apache/openejb/arquillian/TomEEContainer.java
URL: http://svn.apache.org/viewvc/openejb/trunk/sandbox/arquillian-tomee/arquillian-tomee-embedded/src/main/java/org/apache/openejb/arquillian/TomEEContainer.java?rev=1172568&r1=1172567&r2=1172568&view=diff
==============================================================================
--- openejb/trunk/sandbox/arquillian-tomee/arquillian-tomee-embedded/src/main/java/org/apache/openejb/arquillian/TomEEContainer.java (original)
+++ openejb/trunk/sandbox/arquillian-tomee/arquillian-tomee-embedded/src/main/java/org/apache/openejb/arquillian/TomEEContainer.java Mon Sep 19 10:59:31 2011
@@ -30,19 +30,27 @@ import org.jboss.shrinkwrap.api.Archive;
 import org.jboss.shrinkwrap.api.exporter.ZipExporter;
 import org.jboss.shrinkwrap.descriptor.api.Descriptor;
 
-public class TomEEContainer extends Container implements DeployableContainer<TomEEConfiguration> {
+public class TomEEContainer implements DeployableContainer<TomEEConfiguration> {
+
+    private Container container;
+    private TomEEConfiguration configuration;
+
+    public TomEEContainer() {
+        container = new Container();
+    }
 
     public Class<TomEEConfiguration> getConfigurationClass() {
         return TomEEConfiguration.class;
     }
 
     public void setup(TomEEConfiguration configuration) {
-        setup((Configuration)configuration);
+        container.setup((Configuration) configuration);
+        this.configuration = configuration;
     }
 
     public void start() throws LifecycleException {
         try {
-            startInternal();
+            container.start();
 
         } catch (Exception e) {
             e.printStackTrace();
@@ -52,7 +60,7 @@ public class TomEEContainer extends Cont
 
     public void stop() throws LifecycleException {
         try {
-            stopInternal();
+            container.stop();
         } catch (Exception e) {
             throw new LifecycleException("Unable to stop server", e);
         }
@@ -71,7 +79,7 @@ public class TomEEContainer extends Cont
         	archive.as(ZipExporter.class).exportTo(file, true);
 
 
-            deploy(name, file);
+            container.deploy(name, file);
 
             HTTPContext httpContext = new HTTPContext("0.0.0.0", configuration.getHttpPort());
             return new ProtocolMetaData().addContext(httpContext);
@@ -84,7 +92,7 @@ public class TomEEContainer extends Cont
     public void undeploy(Archive<?> archive) throws DeploymentException {
     	try {
             final String name = archive.getName();
-            undeploy(name);
+            container.undeploy(name);
         } catch (Exception e) {
             e.printStackTrace();
             throw new DeploymentException("Unable to undeploy", e);

Added: openejb/trunk/sandbox/arquillian-tomee/arquillian-tomee-embedded/src/test/java/org/apache/openejb/arquillian/ModuleNameInjectionTest.java
URL: http://svn.apache.org/viewvc/openejb/trunk/sandbox/arquillian-tomee/arquillian-tomee-embedded/src/test/java/org/apache/openejb/arquillian/ModuleNameInjectionTest.java?rev=1172568&view=auto
==============================================================================
--- openejb/trunk/sandbox/arquillian-tomee/arquillian-tomee-embedded/src/test/java/org/apache/openejb/arquillian/ModuleNameInjectionTest.java (added)
+++ openejb/trunk/sandbox/arquillian-tomee/arquillian-tomee-embedded/src/test/java/org/apache/openejb/arquillian/ModuleNameInjectionTest.java Mon Sep 19 10:59:31 2011
@@ -0,0 +1,330 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.openejb.arquillian;
+
+import org.jboss.arquillian.api.Deployment;
+import org.jboss.arquillian.junit.Arquillian;
+import org.jboss.shrinkwrap.api.spec.WebArchive;
+import org.jboss.shrinkwrap.descriptor.api.Node;
+import org.jboss.shrinkwrap.descriptor.api.spec.servlet.web.WebAppDescriptor;
+import org.jboss.shrinkwrap.descriptor.spi.NodeProvider;
+import org.junit.Assert;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import javax.annotation.Resource;
+import javax.ejb.EJB;
+import javax.ejb.LocalBean;
+import javax.ejb.Singleton;
+import javax.inject.Inject;
+import javax.servlet.Filter;
+import javax.servlet.FilterChain;
+import javax.servlet.FilterConfig;
+import javax.servlet.ServletException;
+import javax.servlet.ServletRequest;
+import javax.servlet.ServletResponse;
+import java.io.IOException;
+
+@RunWith(Arquillian.class)
+public class ModuleNameInjectionTest extends TestSetup {
+
+    public static final String TEST_NAME = ModuleNameInjectionTest.class.getSimpleName();
+
+    @Test
+    public void testCdi() throws Exception {
+        validateTest("testCdi=true");
+    }
+
+    @Test
+    public void testEjb() throws Exception {
+        validateTest("testEjb=true");
+    }
+
+    @Test
+    public void testFilter() throws Exception {
+        validateTest("testFilter=true");
+    }
+
+    @Deployment(testable = false)
+    public static WebArchive getArchive() {
+        return new ModuleNameInjectionTest().createDeployment(PojoServletFilter.class, Orange.class, Green.class);
+    }
+
+    protected void decorateDescriptor(WebAppDescriptor descriptor) {
+        descriptor.filter(PojoServletFilter.class, "/" + getTestContextName());
+    }
+
+    public static class PojoServletFilter implements Filter, Environment {
+
+        @Resource(name = "returnEmail")
+        private String returnEmail;
+
+        @Resource(name = "connectionPool")
+        private Integer connectionPool;
+
+        @Resource(name = "startCount")
+        private Long startCount;
+
+        @Resource(name = "initSize")
+        private Short initSize;
+
+        @Resource(name = "totalQuantity")
+        private Byte totalQuantity;
+
+        @Resource(name = "enableEmail")
+        private Boolean enableEmail;
+
+        @Resource(name = "optionDefault")
+        private Character optionDefault;
+
+        @Override
+        public String getReturnEmail() {
+            return returnEmail;
+        }
+
+        @Override
+        public Integer getConnectionPool() {
+            return connectionPool;
+        }
+
+        @Override
+        public Long getStartCount() {
+            return startCount;
+        }
+
+        @Override
+        public Short getInitSize() {
+            return initSize;
+        }
+
+        @Override
+        public Byte getTotalQuantity() {
+            return totalQuantity;
+        }
+
+        @Override
+        public Boolean getEnableEmail() {
+            return enableEmail;
+        }
+
+        @Override
+        public Character getOptionDefault() {
+            return optionDefault;
+        }
+
+        @Inject
+        private Green green;
+
+        @EJB
+        private Orange orange;
+
+        public void init(FilterConfig config) {
+        }
+
+        public void destroy() {
+        }
+
+        @Override
+        public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {
+            run(req, resp, this);
+        }
+
+
+        public void testCdi() {
+            assertEnvironment(green);
+        }
+
+        public void testEjb() {
+            assertEnvironment(orange);
+        }
+
+        public void testFilter() {
+            assertEnvironment(this);
+        }
+
+        public void assertEnvironment(Environment actual) {
+            Assert.assertNotNull("component", actual);
+
+            Environment expected = new Green("tomee@apache.org", 20, 200000l, (short) 6, (byte) 5, true, 'X');
+
+            Assert.assertEquals("ReturnEmail", expected.getReturnEmail(), actual.getReturnEmail());
+            Assert.assertEquals("ConnectionPool", expected.getConnectionPool(), actual.getConnectionPool());
+            Assert.assertEquals("StartCount", expected.getStartCount(), actual.getStartCount());
+            Assert.assertEquals("InitSize", expected.getInitSize(), actual.getInitSize());
+            Assert.assertEquals("TotalQuantity", expected.getTotalQuantity(), actual.getTotalQuantity());
+            Assert.assertEquals("EnableEmail", expected.getEnableEmail(), actual.getEnableEmail());
+            Assert.assertEquals("OptionDefault", expected.getOptionDefault(), actual.getOptionDefault());
+        }
+    }
+
+    public static class Green implements Environment {
+
+        @Resource(name = "returnEmail")
+        private String returnEmail;
+
+        @Resource(name = "connectionPool")
+        private Integer connectionPool;
+
+        @Resource(name = "startCount")
+        private Long startCount;
+
+        @Resource(name = "initSize")
+        private Short initSize;
+
+        @Resource(name = "totalQuantity")
+        private Byte totalQuantity;
+
+        @Resource(name = "enableEmail")
+        private Boolean enableEmail;
+
+        @Resource(name = "optionDefault")
+        private Character optionDefault;
+
+        @Inject
+        public Green() {
+        }
+
+        public Green(String returnEmail, Integer connectionPool, Long startCount, Short initSize, Byte totalQuantity, Boolean enableEmail, Character optionDefault) {
+            this.returnEmail = returnEmail;
+            this.connectionPool = connectionPool;
+            this.startCount = startCount;
+            this.initSize = initSize;
+            this.totalQuantity = totalQuantity;
+            this.enableEmail = enableEmail;
+            this.optionDefault = optionDefault;
+        }
+
+        @Override
+        public String getReturnEmail() {
+            return returnEmail;
+        }
+
+        @Override
+        public Integer getConnectionPool() {
+            return connectionPool;
+        }
+
+        @Override
+        public Long getStartCount() {
+            return startCount;
+        }
+
+        @Override
+        public Short getInitSize() {
+            return initSize;
+        }
+
+        @Override
+        public Byte getTotalQuantity() {
+            return totalQuantity;
+        }
+
+        @Override
+        public Boolean getEnableEmail() {
+            return enableEmail;
+        }
+
+        @Override
+        public Character getOptionDefault() {
+            return optionDefault;
+        }
+    }
+
+    @Singleton
+    @LocalBean
+    public static class Orange implements Environment {
+
+        @Resource(name = "returnEmail")
+        private String returnEmail;
+
+        @Resource(name = "connectionPool")
+        private Integer connectionPool;
+
+        @Resource(name = "startCount")
+        private Long startCount;
+
+        @Resource(name = "initSize")
+        private Short initSize;
+
+        @Resource(name = "totalQuantity")
+        private Byte totalQuantity;
+
+        @Resource(name = "enableEmail")
+        private Boolean enableEmail;
+
+        @Resource(name = "optionDefault")
+        private Character optionDefault;
+
+        @Override
+        public String getReturnEmail() {
+            return returnEmail;
+        }
+
+        @Override
+        public Integer getConnectionPool() {
+            return connectionPool;
+        }
+
+        @Override
+        public Long getStartCount() {
+            return startCount;
+        }
+
+        @Override
+        public Short getInitSize() {
+            return initSize;
+        }
+
+        @Override
+        public Byte getTotalQuantity() {
+            return totalQuantity;
+        }
+
+        @Override
+        public Boolean getEnableEmail() {
+            return enableEmail;
+        }
+
+        @Override
+        public Character getOptionDefault() {
+            return optionDefault;
+        }
+    }
+
+
+    /**
+     * @version $Rev$ $Date$
+     */
+    public static interface Environment {
+        String getReturnEmail();
+
+        Integer getConnectionPool();
+
+        Long getStartCount();
+
+        Short getInitSize();
+
+        Byte getTotalQuantity();
+
+        Boolean getEnableEmail();
+
+        Character getOptionDefault();
+    }
+}
+
+
+

Modified: openejb/trunk/sandbox/arquillian-tomee/arquillian-tomee-embedded/src/test/java/org/apache/openejb/arquillian/ServletCdiInjectionTest.java
URL: http://svn.apache.org/viewvc/openejb/trunk/sandbox/arquillian-tomee/arquillian-tomee-embedded/src/test/java/org/apache/openejb/arquillian/ServletCdiInjectionTest.java?rev=1172568&r1=1172567&r2=1172568&view=diff
==============================================================================
--- openejb/trunk/sandbox/arquillian-tomee/arquillian-tomee-embedded/src/test/java/org/apache/openejb/arquillian/ServletCdiInjectionTest.java (original)
+++ openejb/trunk/sandbox/arquillian-tomee/arquillian-tomee-embedded/src/test/java/org/apache/openejb/arquillian/ServletCdiInjectionTest.java Mon Sep 19 10:59:31 2011
@@ -31,11 +31,13 @@ import org.jboss.shrinkwrap.descriptor.s
 import org.junit.Test;
 import org.junit.runner.RunWith;
 
+import javax.annotation.PostConstruct;
 import javax.annotation.Resource;
 import javax.ejb.EJB;
 import javax.ejb.Local;
 import javax.ejb.LocalBean;
 import javax.ejb.Stateless;
+import javax.enterprise.inject.spi.BeanManager;
 import javax.inject.Inject;
 import javax.servlet.ServletException;
 import javax.servlet.http.HttpServlet;
@@ -56,10 +58,15 @@ public class ServletCdiInjectionTest {
 
     @Test
     public void pojoInjectionShouldSucceed() throws Exception {
-        final String expectedOutput = "OpenEJB is on the wheel of a 2011 Lexus IS 350";
-        validateTest(expectedOutput);
+        validateTest("OpenEJB is on the wheel of a 2011 Lexus IS 350");
     }
 
+    @Test
+    public void beanManagerInjectionShouldSucceed() throws Exception {
+        validateTest("beanManager");
+    }
+
+
 //    @Test
     public void testNothing() {
     }
@@ -83,9 +90,17 @@ public class ServletCdiInjectionTest {
 
     public static class PojoServlet extends HttpServlet {
 
+        @Resource
+        private BeanManager beanManager;
+
         @Inject
         private Car car;
 
+        @PostConstruct
+        public void construct() {
+            System.out.println("construct");
+        }
+
         @Override
         protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
             String name = req.getParameter("name");
@@ -96,6 +111,10 @@ public class ServletCdiInjectionTest {
             if (car != null) {
                 resp.getOutputStream().println(car.drive(name));
             }
+
+            if (beanManager != null) {
+                resp.getOutputStream().println("beanManager");
+            }
         }
     }
 

Modified: openejb/trunk/sandbox/arquillian-tomee/arquillian-tomee-embedded/src/test/java/org/apache/openejb/arquillian/ServletEnvEntryInjectionTest.java
URL: http://svn.apache.org/viewvc/openejb/trunk/sandbox/arquillian-tomee/arquillian-tomee-embedded/src/test/java/org/apache/openejb/arquillian/ServletEnvEntryInjectionTest.java?rev=1172568&r1=1172567&r2=1172568&view=diff
==============================================================================
--- openejb/trunk/sandbox/arquillian-tomee/arquillian-tomee-embedded/src/test/java/org/apache/openejb/arquillian/ServletEnvEntryInjectionTest.java (original)
+++ openejb/trunk/sandbox/arquillian-tomee/arquillian-tomee-embedded/src/test/java/org/apache/openejb/arquillian/ServletEnvEntryInjectionTest.java Mon Sep 19 10:59:31 2011
@@ -100,18 +100,24 @@ public class ServletEnvEntryInjectionTes
         validateTest(expectedOutput);
     }
 
-//    @Test
+    @Test
     public void classEnvEntryInjectionShouldSucceed() throws Exception {
         final String expectedOutput = "java.lang.String";
         validateTest(expectedOutput);
     }
 
-//    @Test
+    @Test
     public void enumEnvEntryInjectionShouldSucceed() throws Exception {
         final String expectedOutput = "DefaultCode: OK";
         validateTest(expectedOutput);
     }
 
+    @Test
+    public void lookupEnvEntryInjectionShouldSucceed() throws Exception {
+        final String expectedOutput = "Name:";
+        validateTest(expectedOutput);
+    }
+
     @Deployment(testable = false)
     public static WebArchive createDeployment() {
         WebAppDescriptor descriptor = Descriptors.create(WebAppDescriptor.class)
@@ -126,7 +132,16 @@ public class ServletEnvEntryInjectionTes
         addEnvEntry(descriptor, "totalQuantity", "java.lang.Byte", "5");
         addEnvEntry(descriptor, "optionDefault", "java.lang.Character", "X");
         addEnvEntry(descriptor, "auditWriter", "java.lang.Class", "java.lang.String");
-        addEnvEntry(descriptor, "defaultCode", "java.lang.Enum", "org.apache.openejb.arquillian.ServletPojoInjectionTest$Code.OK");
+        addEnvEntry(descriptor, "defaultCode", Code.class.getName(), "OK");
+
+        Node rootNode = ((NodeProvider) descriptor).getRootNode();
+        Node appNode = rootNode.get("/web-app").iterator().next();
+        appNode.create("/env-entry")
+                .create("env-entry-name").text("name")
+                .parent()
+                .create("lookup-name").text("java:module/ModuleName")
+        ;
+
 
         WebArchive archive = ShrinkWrap.create(WebArchive.class, TEST_NAME + ".war")
                 .addClass(PojoServlet.class)
@@ -165,17 +180,15 @@ public class ServletEnvEntryInjectionTes
         @Resource(name = "optionDefault")
         private Character optionDefault;
 
-        /* TODO: Enable this resource after functionality is fixed
-        @Resource
-        */
+        @Resource(name = "defaultCode")
         private Code defaultCode;
 
-        /* TODO: Enable this resource after functionality is fixed
-                @Resource
-                @SuppressWarnings("unchecked")
-        */
+        @Resource(name = "auditWriter")
+        @SuppressWarnings("unchecked")
         private Class auditWriter;
 
+        @Resource(name = "name")
+        private String name;
 
         @Override
         protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
@@ -206,11 +219,15 @@ public class ServletEnvEntryInjectionTes
                 resp.getOutputStream().println(returnEmail);
             }
             if (auditWriter != null) {
-                resp.getOutputStream().println(auditWriter.getClass().getName());
+                resp.getOutputStream().println(auditWriter.getName());
             }
             if (defaultCode != null) {
                 resp.getOutputStream().println("DefaultCode: " + defaultCode);
             }
+
+            if (this.name != null) {
+                resp.getOutputStream().println("Name: " + this.name);
+            }
         }
     }
 

Modified: openejb/trunk/sandbox/arquillian-tomee/arquillian-tomee-embedded/src/test/java/org/apache/openejb/arquillian/ServletResourceEnvEntryInjectionTest.java
URL: http://svn.apache.org/viewvc/openejb/trunk/sandbox/arquillian-tomee/arquillian-tomee-embedded/src/test/java/org/apache/openejb/arquillian/ServletResourceEnvEntryInjectionTest.java?rev=1172568&r1=1172567&r2=1172568&view=diff
==============================================================================
--- openejb/trunk/sandbox/arquillian-tomee/arquillian-tomee-embedded/src/test/java/org/apache/openejb/arquillian/ServletResourceEnvEntryInjectionTest.java (original)
+++ openejb/trunk/sandbox/arquillian-tomee/arquillian-tomee-embedded/src/test/java/org/apache/openejb/arquillian/ServletResourceEnvEntryInjectionTest.java Mon Sep 19 10:59:31 2011
@@ -16,118 +16,211 @@
  */
 package org.apache.openejb.arquillian;
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.openejb.util.SetAccessible;
 import org.jboss.arquillian.api.Deployment;
 import org.jboss.arquillian.junit.Arquillian;
-import org.jboss.shrinkwrap.api.ShrinkWrap;
-import org.jboss.shrinkwrap.api.asset.StringAsset;
 import org.jboss.shrinkwrap.api.spec.WebArchive;
-import org.jboss.shrinkwrap.descriptor.api.Descriptors;
-import org.jboss.shrinkwrap.descriptor.api.spec.servlet.web.WebAppDescriptor;
+import org.junit.Assert;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 
+import javax.annotation.ManagedBean;
 import javax.annotation.Resource;
+import javax.ejb.Singleton;
+import javax.enterprise.inject.spi.BeanManager;
 import javax.servlet.ServletException;
+import javax.servlet.annotation.WebServlet;
 import javax.servlet.http.HttpServlet;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import javax.transaction.TransactionManager;
 import javax.transaction.TransactionSynchronizationRegistry;
 import javax.transaction.UserTransaction;
-import javax.validation.Valid;
 import javax.validation.Validator;
 import javax.validation.ValidatorFactory;
-import java.io.ByteArrayOutputStream;
 import java.io.IOException;
-import java.io.InputStream;
-import java.net.URL;
+import java.lang.reflect.Field;
 
 import static junit.framework.Assert.assertNotNull;
 import static junit.framework.Assert.assertTrue;
 
 @RunWith(Arquillian.class)
-public class ServletResourceEnvEntryInjectionTest {
+public class ServletResourceEnvEntryInjectionTest extends TestSetup  {
 
     public static final String TEST_NAME = ServletResourceEnvEntryInjectionTest.class.getSimpleName();
 
     @Test
-    public void transactionInjectionShouldSucceed() throws Exception {
-        final String expectedOutput = "Transaction injection successful";
-        validateTest(expectedOutput);
+    public void testRed() throws Exception {
+        validateTest("red", "true");
+    }
+
+    @Test
+    public void testBlue() throws Exception {
+        validateTest("blue", "true");
     }
 
     @Deployment(testable = false)
-    public static WebArchive createDeployment() {
-        WebAppDescriptor descriptor = Descriptors.create(WebAppDescriptor.class)
-                .version("3.0")
-                .servlet(TestServlet.class, "/" + TEST_NAME);
+    public static WebArchive getArchive() {
+        return new ServletResourceEnvEntryInjectionTest().createDeployment(ServletResourceEnvEntryInjectionTest.class, Blue.class, Red.class, Green.class, Orange.class, Purple.class);
+    }
+
+    @WebServlet("/blue")
+    public static class Blue extends HttpServlet {
+
+        @Resource(name = "java:comp/Validator")
+        private Validator validator;
+
+        @Resource(name = "java:comp/ValidatorFactory")
+        private ValidatorFactory validatorFactory;
+
+        @Resource(name = "java:comp/TransactionManager")
+        private TransactionManager transactionManager;
+
+        @Resource(name = "java:comp/TransactionSynchronizationRegistry")
+        private TransactionSynchronizationRegistry transactionSynchronizationRegistry;
+
+        @Resource(name = "java:comp/UserTransaction")
+        private UserTransaction userTransaction;
+
+        @Resource(name = "java:comp/BeanManager")
+        private BeanManager beanManager;
+
+        @Resource(name = "java:app/AppName")
+        private String app;
+
+        @Resource(name = "java:module/ModuleName")
+        private String module;
+
+        @Override
+        protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
+            run(req, resp, this);
+        }
+
+        public void test() throws Exception {
 
-        WebArchive archive = ShrinkWrap.create(WebArchive.class, TEST_NAME + ".war")
-                .addClass(TestServlet.class)
-                .setWebXML(new StringAsset(descriptor.exportAsString()));
+            final Field[] fields = this.getClass().getDeclaredFields();
 
-        System.err.println(descriptor.exportAsString());
+            for (Field field : fields) {
+                SetAccessible.on(field);
+                Assert.assertNotNull(field.getName(), field.get(this));
+            }
+
+            final String name = ServletResourceEnvEntryInjectionTest.class.getSimpleName();
+            Assert.assertEquals("app", name, app);
+            Assert.assertEquals("module", name, module);
+        }
 
-        return archive;
     }
 
-    public static class TestServlet extends HttpServlet {
+
+    @WebServlet("/red")
+    public static class Red  extends HttpServlet {
+
+        @Resource
+        private Validator validator;
+
+        @Resource
+        private ValidatorFactory validatorFactory;
 
         @Resource
-        private UserTransaction transaction;
+        private TransactionManager transactionManager;
 
         @Resource
         private TransactionSynchronizationRegistry transactionSynchronizationRegistry;
 
         @Resource
-        private Validator validator;
+        private UserTransaction userTransaction;
 
         @Resource
-        private ValidatorFactory validatorFactory;
+        private BeanManager beanManager;
 
         @Resource
-        private TransactionManager transactionManager;
+        private Purple purple;
 
         @Override
         protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
-            String name = req.getParameter("name");
-            if (StringUtils.isEmpty(name)) {
-                name = "OpenEJB";
-            }
+            run(req, resp, this);
+        }
+
+        public void test() throws Exception {
+
+            final Field[] fields = this.getClass().getDeclaredFields();
 
-            if (transaction != null) {
-                try {
-                    transaction.begin();
-                    transaction.commit();
-                    resp.getOutputStream().println("Transaction injection successful");
-                } catch (Exception ex) {
-                    ex.printStackTrace();
-                }
+            for (Field field : fields) {
+                SetAccessible.on(field);
+                Assert.assertNotNull(field.getName(), field.get(this));
             }
+
+            purple.test();
         }
+    }
 
+    @Singleton
+    public static class Green {
 
+        public void foo() {}
     }
 
-    private void validateTest(String expectedOutput) throws IOException {
-        final InputStream is = new URL("http://localhost:9080/" + TEST_NAME + "/" + TEST_NAME).openStream();
-        final ByteArrayOutputStream os = new ByteArrayOutputStream();
-
-        int bytesRead = -1;
-        byte[] buffer = new byte[8192];
-        while ((bytesRead = is.read(buffer)) > -1) {
-            os.write(buffer, 0, bytesRead);
-        }
-
-        is.close();
-        os.close();
-
-        String output = new String(os.toByteArray(), "UTF-8");
-        assertNotNull("Response shouldn't be null", output);
-        assertTrue("Output should contain: " + expectedOutput, output.contains(expectedOutput));
+    @WebServlet("/orange")
+    public static class Orange extends HttpServlet {
+
+        @Resource(name = "java:app/some/longer/path/MyValidatorFactory")
+        private ValidatorFactory validatorFactory;
+
+        @Resource(name = "java:app/some/longer/path/MyTransactionManager")
+        private TransactionManager transactionManager;
+
+        @Resource(name = "java:app/some/longer/path/MyTransactionSynchronizationRegistry")
+        private TransactionSynchronizationRegistry transactionSynchronizationRegistry;
+
+        @Resource(name = "java:app/some/longer/path/MyUserTransaction")
+        private UserTransaction userTransaction;
+
+        @Resource(name = "java:app/some/longer/path/MyBeanManager")
+        private BeanManager beanManager;
+
+        @Resource(name = "java:app/AppName")
+        private String app;
+
+        @Override
+        protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
+            run(req, resp, this);
+        }
+
+        public void test() throws Exception {
+
+            assertFields(this);
+
+            Assert.assertEquals("app", "BuiltInEnvironmentEntriesTest", app);
+        }
+
     }
 
+    @ManagedBean
+    public static class Purple {
+
+        @Resource
+        private Validator validator;
+
+        @Resource
+        private ValidatorFactory validatorFactory;
+
+        @Resource
+        private TransactionManager transactionManager;
+
+        @Resource
+        private TransactionSynchronizationRegistry transactionSynchronizationRegistry;
+
+        @Resource
+        private UserTransaction userTransaction;
+
+        @Resource
+        private BeanManager beanManager;
+
+        public void test() throws IllegalAccessException {
+            assertFields(this);
+        }
+    }
 }
 
 

Copied: openejb/trunk/sandbox/arquillian-tomee/arquillian-tomee-embedded/src/test/java/org/apache/openejb/arquillian/SharedEnvironmentTest.java (from r1167436, openejb/trunk/sandbox/arquillian-tomee/arquillian-tomee-embedded/src/test/java/org/apache/openejb/arquillian/ServletFilterCdiInjectionTest.java)
URL: http://svn.apache.org/viewvc/openejb/trunk/sandbox/arquillian-tomee/arquillian-tomee-embedded/src/test/java/org/apache/openejb/arquillian/SharedEnvironmentTest.java?p2=openejb/trunk/sandbox/arquillian-tomee/arquillian-tomee-embedded/src/test/java/org/apache/openejb/arquillian/SharedEnvironmentTest.java&p1=openejb/trunk/sandbox/arquillian-tomee/arquillian-tomee-embedded/src/test/java/org/apache/openejb/arquillian/ServletFilterCdiInjectionTest.java&r1=1167436&r2=1172568&rev=1172568&view=diff
==============================================================================
--- openejb/trunk/sandbox/arquillian-tomee/arquillian-tomee-embedded/src/test/java/org/apache/openejb/arquillian/ServletFilterCdiInjectionTest.java (original)
+++ openejb/trunk/sandbox/arquillian-tomee/arquillian-tomee-embedded/src/test/java/org/apache/openejb/arquillian/SharedEnvironmentTest.java Mon Sep 19 10:59:31 2011
@@ -19,39 +19,139 @@ package org.apache.openejb.arquillian;
 import org.jboss.arquillian.api.Deployment;
 import org.jboss.arquillian.junit.Arquillian;
 import org.jboss.shrinkwrap.api.spec.WebArchive;
+import org.jboss.shrinkwrap.descriptor.api.Node;
 import org.jboss.shrinkwrap.descriptor.api.spec.servlet.web.WebAppDescriptor;
+import org.jboss.shrinkwrap.descriptor.spi.NodeProvider;
 import org.junit.Assert;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 
+import javax.annotation.Resource;
+import javax.ejb.EJB;
+import javax.ejb.LocalBean;
+import javax.ejb.Singleton;
 import javax.inject.Inject;
-import javax.servlet.*;
+import javax.servlet.Filter;
+import javax.servlet.FilterChain;
+import javax.servlet.FilterConfig;
+import javax.servlet.ServletException;
+import javax.servlet.ServletRequest;
+import javax.servlet.ServletResponse;
 import java.io.IOException;
 
 @RunWith(Arquillian.class)
-public class ServletFilterCdiInjectionTest extends TestSetup {
+public class SharedEnvironmentTest extends TestSetup {
 
-    public static final String TEST_NAME = ServletFilterCdiInjectionTest.class.getSimpleName();
+    public static final String TEST_NAME = SharedEnvironmentTest.class.getSimpleName();
 
     @Test
-    public void pojoInjectionShouldSucceed() throws Exception {
-        final String expectedOutput = "testCdi=true";
-        validateTest(expectedOutput);
+    public void testCdi() throws Exception {
+        validateTest("testCdi=true");
+    }
+
+    @Test
+    public void testEjb() throws Exception {
+        validateTest("testEjb=true");
+    }
+
+    @Test
+    public void testFilter() throws Exception {
+        validateTest("testFilter=true");
     }
 
     @Deployment(testable = false)
     public static WebArchive getArchive() {
-        return new ServletFilterCdiInjectionTest().createDeployment(PojoServletFilter.class, Car.class);
+        return new SharedEnvironmentTest().createDeployment(PojoServletFilter.class, Orange.class, Green.class);
     }
 
     protected void decorateDescriptor(WebAppDescriptor descriptor) {
         descriptor.filter(PojoServletFilter.class, "/" + getTestContextName());
+        addEnvEntry(descriptor, "returnEmail", "java.lang.String", "tomee@apache.org");
+        addEnvEntry(descriptor, "connectionPool", "java.lang.Integer", "20");
+        addEnvEntry(descriptor, "startCount", "java.lang.Long", "200000");
+        addEnvEntry(descriptor, "initSize", "java.lang.Short", "6");
+        addEnvEntry(descriptor, "enableEmail", "java.lang.Boolean", "true");
+        addEnvEntry(descriptor, "totalQuantity", "java.lang.Byte", "5");
+        addEnvEntry(descriptor, "optionDefault", "java.lang.Character", "X");
     }
 
-    public static class PojoServletFilter implements Filter {
+
+    private static void addEnvEntry(WebAppDescriptor descriptor, String name, String type, String value) {
+        Node rootNode = ((NodeProvider) descriptor).getRootNode();
+        Node appNode = rootNode.get("/web-app").iterator().next();
+        appNode.create("/env-entry")
+                .create("env-entry-name").text(name)
+                .parent()
+                .create("env-entry-type").text(type)
+                .parent()
+                .create("env-entry-value").text(value)
+        ;
+
+    }
+
+    public static class PojoServletFilter implements Filter, Environment {
+
+        @Resource(name = "returnEmail")
+        private String returnEmail;
+
+        @Resource(name = "connectionPool")
+        private Integer connectionPool;
+
+        @Resource(name = "startCount")
+        private Long startCount;
+
+        @Resource(name = "initSize")
+        private Short initSize;
+
+        @Resource(name = "totalQuantity")
+        private Byte totalQuantity;
+
+        @Resource(name = "enableEmail")
+        private Boolean enableEmail;
+
+        @Resource(name = "optionDefault")
+        private Character optionDefault;
+
+        @Override
+        public String getReturnEmail() {
+            return returnEmail;
+        }
+
+        @Override
+        public Integer getConnectionPool() {
+            return connectionPool;
+        }
+
+        @Override
+        public Long getStartCount() {
+            return startCount;
+        }
+
+        @Override
+        public Short getInitSize() {
+            return initSize;
+        }
+
+        @Override
+        public Byte getTotalQuantity() {
+            return totalQuantity;
+        }
+
+        @Override
+        public Boolean getEnableEmail() {
+            return enableEmail;
+        }
+
+        @Override
+        public Character getOptionDefault() {
+            return optionDefault;
+        }
 
         @Inject
-        private Car car;
+        private Green green;
+
+        @EJB
+        private Orange orange;
 
         public void init(FilterConfig config) {
         }
@@ -64,22 +164,187 @@ public class ServletFilterCdiInjectionTe
             run(req, resp, this);
         }
 
+
         public void testCdi() {
-            Assert.assertNotNull(car);
-            car.drive("test");
+            assertEnvironment(green);
+        }
+
+        public void testEjb() {
+            assertEnvironment(orange);
+        }
+
+        public void testFilter() {
+            assertEnvironment(this);
+        }
+
+        public void assertEnvironment(Environment actual) {
+            Assert.assertNotNull("component", actual);
+
+            Environment expected = new Green("tomee@apache.org", 20, 200000l, (short) 6, (byte) 5, true, 'X');
+
+            Assert.assertEquals("ReturnEmail", expected.getReturnEmail(), actual.getReturnEmail());
+            Assert.assertEquals("ConnectionPool", expected.getConnectionPool(), actual.getConnectionPool());
+            Assert.assertEquals("StartCount", expected.getStartCount(), actual.getStartCount());
+            Assert.assertEquals("InitSize", expected.getInitSize(), actual.getInitSize());
+            Assert.assertEquals("TotalQuantity", expected.getTotalQuantity(), actual.getTotalQuantity());
+            Assert.assertEquals("EnableEmail", expected.getEnableEmail(), actual.getEnableEmail());
+            Assert.assertEquals("OptionDefault", expected.getOptionDefault(), actual.getOptionDefault());
+        }
+    }
+
+    public static class Green implements Environment {
+
+        @Resource(name = "returnEmail")
+        private String returnEmail;
+
+        @Resource(name = "connectionPool")
+        private Integer connectionPool;
+
+        @Resource(name = "startCount")
+        private Long startCount;
+
+        @Resource(name = "initSize")
+        private Short initSize;
+
+        @Resource(name = "totalQuantity")
+        private Byte totalQuantity;
+
+        @Resource(name = "enableEmail")
+        private Boolean enableEmail;
+
+        @Resource(name = "optionDefault")
+        private Character optionDefault;
+
+        @Inject
+        public Green() {
+        }
+
+        public Green(String returnEmail, Integer connectionPool, Long startCount, Short initSize, Byte totalQuantity, Boolean enableEmail, Character optionDefault) {
+            this.returnEmail = returnEmail;
+            this.connectionPool = connectionPool;
+            this.startCount = startCount;
+            this.initSize = initSize;
+            this.totalQuantity = totalQuantity;
+            this.enableEmail = enableEmail;
+            this.optionDefault = optionDefault;
+        }
+
+        @Override
+        public String getReturnEmail() {
+            return returnEmail;
+        }
+
+        @Override
+        public Integer getConnectionPool() {
+            return connectionPool;
+        }
+
+        @Override
+        public Long getStartCount() {
+            return startCount;
+        }
+
+        @Override
+        public Short getInitSize() {
+            return initSize;
+        }
+
+        @Override
+        public Byte getTotalQuantity() {
+            return totalQuantity;
+        }
+
+        @Override
+        public Boolean getEnableEmail() {
+            return enableEmail;
+        }
+
+        @Override
+        public Character getOptionDefault() {
+            return optionDefault;
         }
     }
 
-    public static class Car {
-        private final String make = "Lexus", model = "IS 350";
-        private final int year = 2011;
+    @Singleton
+    @LocalBean
+    public static class Orange implements Environment {
+
+        @Resource(name = "returnEmail")
+        private String returnEmail;
+
+        @Resource(name = "connectionPool")
+        private Integer connectionPool;
+
+        @Resource(name = "startCount")
+        private Long startCount;
+
+        @Resource(name = "initSize")
+        private Short initSize;
 
-        public String drive(String name) {
-            return name + " is on the wheel of a " + year + " " + make + " " + model;
+        @Resource(name = "totalQuantity")
+        private Byte totalQuantity;
+
+        @Resource(name = "enableEmail")
+        private Boolean enableEmail;
+
+        @Resource(name = "optionDefault")
+        private Character optionDefault;
+
+        @Override
+        public String getReturnEmail() {
+            return returnEmail;
+        }
+
+        @Override
+        public Integer getConnectionPool() {
+            return connectionPool;
+        }
+
+        @Override
+        public Long getStartCount() {
+            return startCount;
+        }
+
+        @Override
+        public Short getInitSize() {
+            return initSize;
+        }
+
+        @Override
+        public Byte getTotalQuantity() {
+            return totalQuantity;
+        }
+
+        @Override
+        public Boolean getEnableEmail() {
+            return enableEmail;
+        }
+
+        @Override
+        public Character getOptionDefault() {
+            return optionDefault;
         }
     }
 
 
+    /**
+     * @version $Rev$ $Date$
+     */
+    public static interface Environment {
+        String getReturnEmail();
+
+        Integer getConnectionPool();
+
+        Long getStartCount();
+
+        Short getInitSize();
+
+        Byte getTotalQuantity();
+
+        Boolean getEnableEmail();
+
+        Character getOptionDefault();
+    }
 }
 
 

Modified: openejb/trunk/sandbox/arquillian-tomee/arquillian-tomee-embedded/src/test/java/org/apache/openejb/arquillian/TestSetup.java
URL: http://svn.apache.org/viewvc/openejb/trunk/sandbox/arquillian-tomee/arquillian-tomee-embedded/src/test/java/org/apache/openejb/arquillian/TestSetup.java?rev=1172568&r1=1172567&r2=1172568&view=diff
==============================================================================
--- openejb/trunk/sandbox/arquillian-tomee/arquillian-tomee-embedded/src/test/java/org/apache/openejb/arquillian/TestSetup.java (original)
+++ openejb/trunk/sandbox/arquillian-tomee/arquillian-tomee-embedded/src/test/java/org/apache/openejb/arquillian/TestSetup.java Mon Sep 19 10:59:31 2011
@@ -16,6 +16,7 @@
  */
 package org.apache.openejb.arquillian;
 
+import org.apache.openejb.util.SetAccessible;
 import org.jboss.shrinkwrap.api.ArchivePaths;
 import org.jboss.shrinkwrap.api.ShrinkWrap;
 import org.jboss.shrinkwrap.api.asset.EmptyAsset;
@@ -23,6 +24,7 @@ import org.jboss.shrinkwrap.api.asset.St
 import org.jboss.shrinkwrap.api.spec.WebArchive;
 import org.jboss.shrinkwrap.descriptor.api.Descriptors;
 import org.jboss.shrinkwrap.descriptor.api.spec.servlet.web.WebAppDescriptor;
+import org.junit.Assert;
 
 import javax.servlet.ServletRequest;
 import javax.servlet.ServletResponse;
@@ -30,6 +32,7 @@ import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.PrintWriter;
+import java.lang.reflect.Field;
 import java.lang.reflect.Method;
 import java.net.URL;
 
@@ -38,6 +41,15 @@ import static junit.framework.Assert.ass
 
 public abstract class TestSetup {
 
+    public static void assertFields(Object obj) throws IllegalAccessException {
+        final Field[] fields = obj.getClass().getDeclaredFields();
+
+        for (Field field : fields) {
+            SetAccessible.on(field);
+            Assert.assertNotNull(field.getName(), field.get(obj));
+        }
+    }
+
     public WebArchive createDeployment(Class...archiveClasses) {
         WebAppDescriptor descriptor = Descriptors.create(WebAppDescriptor.class)
                 .version("3.0");
@@ -69,7 +81,11 @@ public abstract class TestSetup {
     }
 
     protected void validateTest(String expectedOutput) throws IOException {
-        final InputStream is = new URL("http://localhost:9080/" + getTestContextName() + "/" + getTestContextName()).openStream();
+        validateTest(getTestContextName(), expectedOutput);
+    }
+
+    protected void validateTest(String servlet, String expectedOutput) throws IOException {
+        final InputStream is = new URL("http://localhost:9080/" + getTestContextName() + "/" + servlet).openStream();
         final ByteArrayOutputStream os = new ByteArrayOutputStream();
 
         int bytesRead = -1;
@@ -83,7 +99,7 @@ public abstract class TestSetup {
 
         String output = new String(os.toByteArray(), "UTF-8");
         assertNotNull("Response shouldn't be null", output);
-        assertTrue("Output should contain: " + expectedOutput, output.contains(expectedOutput));
+        assertTrue("Output should contain: " + expectedOutput + "\n" + output, output.contains(expectedOutput));
     }
 
     public static void run(ServletRequest req, ServletResponse resp, Object obj) throws IOException {
@@ -105,6 +121,10 @@ public abstract class TestSetup {
                     writer.println("true");
                 } catch (Throwable e) {
                     writer.println("false");
+                    writer.println("");
+                    writer.println("STACKTRACE");
+                    writer.println("");
+                    e.printStackTrace(writer);
                 }
             }
         }