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/07/07 05:31:24 UTC

svn commit: r1143640 - in /openejb/trunk/openejb3: container/openejb-core/src/main/java/org/apache/openejb/cdi/ container/openejb-core/src/main/java/org/apache/openejb/junit/ container/openejb-core/src/test/java/org/apache/openejb/cdi/ container/openej...

Author: dblevins
Date: Thu Jul  7 03:31:23 2011
New Revision: 1143640

URL: http://svn.apache.org/viewvc?rev=1143640&view=rev
Log:
OPENEJB-1600: EJB Specialization
OPENEJB-1581: InjectionTarget replacement for EJBs
OPENEJB-1585: @Stateful beans removed when Context is destroyed	(request scoped)

Added:
    openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/cdi/RequestScopedThreadContextListener.java
    openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/cdi/SpecializationTest.java
    openejb/trunk/openejb3/tck/cdi-embedded/src/test/java/org/apache/openejb/tck/cdi/embedded/RequestScopeTestListener.java
Modified:
    openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiAppContextsService.java
    openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiBuilder.java
    openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiInterceptor.java
    openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiResourceInjectionService.java
    openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/junit/ApplicationComposer.java
    openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/Application.java
    openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/NamedModule.java
    openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/oejb3/OpenejbJar.java
    openejb/trunk/openejb3/tck/cdi-embedded/src/test/java/org/apache/openejb/tck/cdi/embedded/BeansImpl.java
    openejb/trunk/openejb3/tck/cdi-embedded/src/test/java/org/apache/openejb/tck/cdi/embedded/Report.java
    openejb/trunk/openejb3/tck/cdi-embedded/src/test/resources/all-failing.xml
    openejb/trunk/openejb3/tck/cdi-embedded/src/test/resources/failing.xml
    openejb/trunk/openejb3/tck/cdi-embedded/src/test/resources/passing.xml

Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiAppContextsService.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiAppContextsService.java?rev=1143640&r1=1143639&r2=1143640&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiAppContextsService.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiAppContextsService.java Thu Jul  7 03:31:23 2011
@@ -16,6 +16,7 @@
  */
 package org.apache.openejb.cdi;
 
+import org.apache.openejb.core.ThreadContext;
 import org.apache.openejb.util.LogCategory;
 import org.apache.openejb.util.Logger;
 import org.apache.webbeans.context.AbstractContextsService;
@@ -34,6 +35,12 @@ import javax.enterprise.context.SessionS
 import javax.enterprise.context.spi.Context;
 import javax.inject.Singleton;
 import java.lang.annotation.Annotation;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
 
 public class CdiAppContextsService extends AbstractContextsService implements ContextsService {
 
@@ -131,6 +138,7 @@ public class CdiAppContextsService exten
             requestContext.set(context);
         }
         return context;
+//        return ThreadContext.getThreadContext().get(RequestContext.class);
     }
 
     private Context getSessionContext() {

Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiBuilder.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiBuilder.java?rev=1143640&r1=1143639&r2=1143640&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiBuilder.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiBuilder.java Thu Jul  7 03:31:23 2011
@@ -39,6 +39,7 @@ public class CdiBuilder {
 
     public void build(AppInfo appInfo, AppContext appContext, List<BeanContext> allDeployments) {
 
+        ThreadContext.addThreadContextListener(new RequestScopedThreadContextListener());
         ThreadSingletonService singletonService = SystemInstance.get().getComponent(ThreadSingletonService.class);
         logger.info("existing thread singleton service in SystemInstance() " + singletonService);
         //TODO hack for tests.  Currently initialized in OpenEJB line 90.  cf alternative in AccessTimeoutTest which would

Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiInterceptor.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiInterceptor.java?rev=1143640&r1=1143639&r2=1143640&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiInterceptor.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiInterceptor.java Thu Jul  7 03:31:23 2011
@@ -68,7 +68,7 @@ public class CdiInterceptor implements S
         };
 
 //        callable = new ScopeActivator(callable, ApplicationScoped.class);
-        callable = new ScopeActivator(callable, RequestScoped.class);
+//        callable = new ScopeActivator(callable, RequestScoped.class);
         return callable.call();
     }
 

Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiResourceInjectionService.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiResourceInjectionService.java?rev=1143640&r1=1143639&r2=1143640&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiResourceInjectionService.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiResourceInjectionService.java Thu Jul  7 03:31:23 2011
@@ -146,6 +146,7 @@ public class CdiResourceInjectionService
                 receipe.allow(Option.NAMED_PARAMETERS);
 
                 fillInjectionProperties(receipe, entry.getKey().getInjections(), managedBeanInstance.getClass(), entry.getValue());
+                receipe.create();
                 return;
             }
         }

Added: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/cdi/RequestScopedThreadContextListener.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/cdi/RequestScopedThreadContextListener.java?rev=1143640&view=auto
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/cdi/RequestScopedThreadContextListener.java (added)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/cdi/RequestScopedThreadContextListener.java Thu Jul  7 03:31:23 2011
@@ -0,0 +1,72 @@
+/**
+ * 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.cdi;
+
+import org.apache.openejb.core.ThreadContext;
+import org.apache.openejb.core.ThreadContextListener;
+import org.apache.webbeans.context.RequestContext;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class RequestScopedThreadContextListener implements ThreadContextListener {
+
+
+    @Override
+    public void contextEntered(ThreadContext oldContext, ThreadContext newContext) {
+        Request request = getRequestData(oldContext);
+
+        if (request == null) {
+            request = new Request(newContext);
+        }
+
+        request.propogate(newContext);
+    }
+
+    @Override
+    public void contextExited(ThreadContext exitedContext, ThreadContext reenteredContext) {
+        final Request request = getRequestData(exitedContext);
+
+        if (request.start == exitedContext) request.complete();
+    }
+
+    private Request getRequestData(ThreadContext threadContext) {
+        if (threadContext == null) return null;
+        return threadContext.get(Request.class);
+    }
+
+
+    private static class Request {
+        private final ThreadContext start;
+        private final RequestContext context;
+
+        public Request(ThreadContext start) {
+            this.start = start;
+            this.context = new RequestContext();
+            this.context.setActive(true);
+        }
+
+        public void propogate(ThreadContext threadContext) {
+            threadContext.set(Request.class, this);
+            threadContext.set(RequestContext.class, context);
+        }
+
+        public void complete() {
+            context.destroy();
+        }
+    }
+}

Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/junit/ApplicationComposer.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/junit/ApplicationComposer.java?rev=1143640&r1=1143639&r2=1143640&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/junit/ApplicationComposer.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/junit/ApplicationComposer.java Thu Jul  7 03:31:23 2011
@@ -23,6 +23,7 @@ import org.apache.openejb.assembler.clas
 import org.apache.openejb.assembler.classic.Assembler;
 import org.apache.openejb.cdi.OWBInjector;
 import org.apache.openejb.config.AppModule;
+import org.apache.openejb.config.ClientModule;
 import org.apache.openejb.config.ConfigurationFactory;
 import org.apache.openejb.config.ConnectorModule;
 import org.apache.openejb.config.EjbModule;
@@ -31,11 +32,13 @@ import org.apache.openejb.core.Operation
 import org.apache.openejb.core.ThreadContext;
 import org.apache.openejb.core.ivm.naming.InitContextFactory;
 import org.apache.openejb.jee.Application;
+import org.apache.openejb.jee.ApplicationClient;
 import org.apache.openejb.jee.Beans;
 import org.apache.openejb.jee.Connector;
 import org.apache.openejb.jee.EjbJar;
 import org.apache.openejb.jee.EnterpriseBean;
 import org.apache.openejb.jee.ManagedBean;
+import org.apache.openejb.jee.NamedModule;
 import org.apache.openejb.jee.TransactionType;
 import org.apache.openejb.jee.jpa.unit.Persistence;
 import org.apache.openejb.jee.jpa.unit.PersistenceUnit;
@@ -44,6 +47,8 @@ import org.apache.openejb.jee.oejb3.Open
 import org.apache.openejb.loader.SystemInstance;
 import org.apache.openejb.spi.ContainerSystem;
 import org.apache.openejb.util.Join;
+import org.apache.xbean.finder.AnnotationFinder;
+import org.apache.xbean.finder.archive.ClassesArchive;
 import org.junit.rules.MethodRule;
 import org.junit.runners.BlockJUnit4ClassRunner;
 import org.junit.runners.model.FrameworkMethod;
@@ -89,7 +94,7 @@ public class ApplicationComposer extends
 
         int appModules = 0;
         int modules = 0;
-        Class[] moduleTypes = {EjbJar.class, EnterpriseBean.class, Persistence.class, PersistenceUnit.class, Connector.class, Beans.class, Application.class};
+        Class[] moduleTypes = {EjbJar.class, EnterpriseBean.class, Persistence.class, PersistenceUnit.class, Connector.class, Beans.class, Application.class, Class[].class};
         for (FrameworkMethod method : testClass.getAnnotatedMethods(Module.class)) {
 
             modules++;
@@ -179,22 +184,25 @@ public class ApplicationComposer extends
                 if (obj instanceof EjbJar) {
 
                     final EjbJar ejbJar = (EjbJar) obj;
+                    setId(ejbJar, method);
                     appModule.getEjbModules().add(new EjbModule(ejbJar));
 
                 } else if (obj instanceof EnterpriseBean) {
 
                     final EnterpriseBean bean = (EnterpriseBean) obj;
-                    final EjbJar ejbJar = new EjbJar();
+                    final EjbJar ejbJar = new EjbJar(method.getName());
                     ejbJar.addEnterpriseBean(bean);
                     appModule.getEjbModules().add(new EjbModule(ejbJar));
 
                 } else if (obj instanceof Application) {
 
                     application = (Application) obj;
+                    setId(application, method);
 
                 } else if (obj instanceof Connector) {
 
                     final Connector connector = (Connector) obj;
+                    setId(connector, method);
                     appModule.getConnectorModules().add(new ConnectorModule(connector));
 
                 } else if (obj instanceof Persistence) {
@@ -210,9 +218,17 @@ public class ApplicationComposer extends
                 } else if (obj instanceof Beans) {
 
                     final Beans beans = (Beans) obj;
-                    final EjbModule ejbModule = new EjbModule(new EjbJar());
+                    final EjbModule ejbModule = new EjbModule(new EjbJar(method.getName()));
                     ejbModule.setBeans(beans);
                     appModule.getEjbModules().add(ejbModule);
+
+                } else if (obj instanceof Class[]) {
+
+                    final Class[] beans = (Class[]) obj;
+                    final EjbModule ejbModule = new EjbModule(new EjbJar(method.getName()));
+                    ejbModule.setFinder(new AnnotationFinder(new ClassesArchive(beans)).link());
+                    ejbModule.setBeans(new Beans());
+                    appModule.getEjbModules().add(ejbModule);
                 }
             }
 
@@ -295,5 +311,16 @@ public class ApplicationComposer extends
                 SystemInstance.reset();
             }
         }
+
+        private <Module extends NamedModule> Module setId(Module module, FrameworkMethod method) {
+            return setId(module, method.getName());
+        }
+
+        private <Module extends NamedModule> Module setId(Module module, String name) {
+            if (module.getModuleName() != null) return module;
+            if (module.getId() != null) return module;
+            module.setId(name);
+            return module;
+        }
     }
 }

Added: openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/cdi/SpecializationTest.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/cdi/SpecializationTest.java?rev=1143640&view=auto
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/cdi/SpecializationTest.java (added)
+++ openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/cdi/SpecializationTest.java Thu Jul  7 03:31:23 2011
@@ -0,0 +1,63 @@
+/**
+ * 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.cdi;
+
+import junit.framework.TestCase;
+import org.apache.openejb.junit.ApplicationComposer;
+import org.apache.openejb.junit.Module;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import javax.enterprise.inject.Specializes;
+import javax.enterprise.inject.spi.Bean;
+import javax.enterprise.inject.spi.BeanManager;
+import javax.inject.Inject;
+import java.util.Set;
+
+/**
+ * @version $Rev$ $Date$
+ */
+@RunWith(ApplicationComposer.class)
+public class SpecializationTest extends TestCase {
+
+    @Inject
+    private BeanManager manager;
+
+    @Test
+    public void test() throws Exception {
+        final Set<Bean<?>> beans = manager.getBeans(Color.class);
+        assertEquals(1, beans.size());
+    }
+
+    @Module
+    public Class[] getBeans() {
+        return new Class[]{RedBean.class, CrimsonBean.class};
+    }
+
+    public static interface Color {
+    }
+
+    //    @Stateful
+    public static class RedBean implements Color {
+    }
+
+    @Specializes
+//    @Stateful
+    public static class CrimsonBean extends RedBean implements Color {
+    }
+
+}

Modified: openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/Application.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/Application.java?rev=1143640&r1=1143639&r2=1143640&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/Application.java (original)
+++ openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/Application.java Thu Jul  7 03:31:23 2011
@@ -167,6 +167,11 @@ public class Application implements Jndi
         return getApplicationName();
     }
 
+    @Override
+    public void setModuleName(String name) {
+        setApplicationName(name);
+    }
+
     @XmlElement(name = "description", required = true)
     public Text[] getDescriptions() {
         return description.toArray();

Modified: openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/NamedModule.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/NamedModule.java?rev=1143640&r1=1143639&r2=1143640&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/NamedModule.java (original)
+++ openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/NamedModule.java Thu Jul  7 03:31:23 2011
@@ -21,6 +21,8 @@ package org.apache.openejb.jee;
  */
 public interface NamedModule {
 
+    void setId(String id);
+    void setModuleName(String name);
     String getId();
     String getModuleName();
 }

Modified: openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/oejb3/OpenejbJar.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/oejb3/OpenejbJar.java?rev=1143640&r1=1143639&r2=1143640&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/oejb3/OpenejbJar.java (original)
+++ openejb/trunk/openejb3/container/openejb-jee/src/main/java/org/apache/openejb/jee/oejb3/OpenejbJar.java Thu Jul  7 03:31:23 2011
@@ -76,7 +76,12 @@ public class OpenejbJar implements Named
 
     @Override
     public String getId() {
-        return null;
+        return getModuleName();
+    }
+
+    @Override
+    public void setId(String id) {
+        setModuleName(id);
     }
 
     @Override
@@ -84,6 +89,7 @@ public class OpenejbJar implements Named
         return moduleName;
     }
 
+    @Override
     public void setModuleName(String moduleName) {
         this.moduleName = moduleName;
     }

Modified: openejb/trunk/openejb3/tck/cdi-embedded/src/test/java/org/apache/openejb/tck/cdi/embedded/BeansImpl.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/tck/cdi-embedded/src/test/java/org/apache/openejb/tck/cdi/embedded/BeansImpl.java?rev=1143640&r1=1143639&r2=1143640&view=diff
==============================================================================
--- openejb/trunk/openejb3/tck/cdi-embedded/src/test/java/org/apache/openejb/tck/cdi/embedded/BeansImpl.java (original)
+++ openejb/trunk/openejb3/tck/cdi-embedded/src/test/java/org/apache/openejb/tck/cdi/embedded/BeansImpl.java Thu Jul  7 03:31:23 2011
@@ -16,6 +16,8 @@
  */
 package org.apache.openejb.tck.cdi.embedded;
 
+import org.apache.openejb.core.ivm.IntraVmProxy;
+
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
@@ -29,7 +31,7 @@ public class BeansImpl implements org.jb
 
     public boolean isProxy(Object instance) {
         System.out.println("isProxy: " + instance);
-        return instance.getClass().getName().contains("$$");
+        return instance instanceof IntraVmProxy || instance.getClass().getName().contains("$$");
     }
 
     @Override

Modified: openejb/trunk/openejb3/tck/cdi-embedded/src/test/java/org/apache/openejb/tck/cdi/embedded/Report.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/tck/cdi-embedded/src/test/java/org/apache/openejb/tck/cdi/embedded/Report.java?rev=1143640&r1=1143639&r2=1143640&view=diff
==============================================================================
--- openejb/trunk/openejb3/tck/cdi-embedded/src/test/java/org/apache/openejb/tck/cdi/embedded/Report.java (original)
+++ openejb/trunk/openejb3/tck/cdi-embedded/src/test/java/org/apache/openejb/tck/cdi/embedded/Report.java Thu Jul  7 03:31:23 2011
@@ -85,13 +85,17 @@ public class Report {
         final File report = new File(file.getParentFile(), file.getName().replaceAll(".xml$", "-passing.xml"));
         final PrintStream out = new PrintStream(new FileOutputStream(report));
 
-        out.println("<suite name=\"CDI TCK\" verbose=\"0\">");
-        out.println("  <test name=\"CDI TCK\">");
-        out.println("    <packages>\n" +
+        out.println("" +
+                "<suite name=\"CDI TCK\" verbose=\"0\">\n" +
+                "  <listeners>\n" +
+                "    <listener class-name=\"org.apache.openejb.tck.cdi.embedded.RequestScopeTestListener\" />\n" +
+                "  </listeners>\n" +
+                "  <test name=\"CDI TCK\">" +
+                "    <packages>\n" +
                 "        <package name=\"org.jboss.jsr299.tck.tests.*\"/>\n" +
                 "        <package name=\"org.jboss.jsr299.tck.interceptors.tests.*\"/>\n" +
-                "    </packages>");
-        out.println("    <classes>");
+                "    </packages>\n" +
+                "    <classes>");
 
         for (TestClass testClass : classes) {
 

Added: openejb/trunk/openejb3/tck/cdi-embedded/src/test/java/org/apache/openejb/tck/cdi/embedded/RequestScopeTestListener.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/tck/cdi-embedded/src/test/java/org/apache/openejb/tck/cdi/embedded/RequestScopeTestListener.java?rev=1143640&view=auto
==============================================================================
--- openejb/trunk/openejb3/tck/cdi-embedded/src/test/java/org/apache/openejb/tck/cdi/embedded/RequestScopeTestListener.java (added)
+++ openejb/trunk/openejb3/tck/cdi-embedded/src/test/java/org/apache/openejb/tck/cdi/embedded/RequestScopeTestListener.java Thu Jul  7 03:31:23 2011
@@ -0,0 +1,89 @@
+/**
+ * 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.tck.cdi.embedded;
+
+import org.apache.openejb.BeanContext;
+import org.apache.openejb.BeanType;
+import org.apache.openejb.core.ThreadContext;
+import org.apache.openejb.loader.SystemInstance;
+import org.apache.openejb.spi.ContainerSystem;
+import org.testng.ITestContext;
+import org.testng.ITestListener;
+import org.testng.ITestResult;
+
+public class RequestScopeTestListener implements ITestListener {
+
+    private boolean entered = false;
+    private ThreadContext oldContext;
+
+    @Override
+    public void onTestStart(ITestResult iTestResult) {
+        entered = true;
+        final ContainerSystem containerSystem = SystemInstance.get().getComponent(ContainerSystem.class);
+
+        if (containerSystem == null) return;
+
+        BeanContext context = null;
+        for (BeanContext beanContext : containerSystem.deployments()) {
+            BeanType beanType = BeanType.MANAGED;
+            if (beanContext.getComponentType() == beanType) {
+                context = beanContext;
+                break;
+            }
+        }
+
+        if (context == null) return;
+
+        ThreadContext newContext = new ThreadContext(context, null);
+        oldContext = ThreadContext.enter(newContext);
+
+    }
+
+    @Override
+    public void onTestSuccess(ITestResult iTestResult) {
+        exit();
+    }
+
+    private void exit() {
+        try {
+            ThreadContext.exit(oldContext);
+        } catch (Exception e) {
+        }
+    }
+
+    @Override
+    public void onTestFailure(ITestResult iTestResult) {
+        exit();
+    }
+
+    @Override
+    public void onTestSkipped(ITestResult iTestResult) {
+        exit();
+    }
+
+    @Override
+    public void onTestFailedButWithinSuccessPercentage(ITestResult iTestResult) {
+    }
+
+    @Override
+    public void onStart(ITestContext iTestContext) {
+    }
+
+    @Override
+    public void onFinish(ITestContext iTestContext) {
+    }
+}

Modified: openejb/trunk/openejb3/tck/cdi-embedded/src/test/resources/all-failing.xml
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/tck/cdi-embedded/src/test/resources/all-failing.xml?rev=1143640&r1=1143639&r2=1143640&view=diff
==============================================================================
--- openejb/trunk/openejb3/tck/cdi-embedded/src/test/resources/all-failing.xml (original)
+++ openejb/trunk/openejb3/tck/cdi-embedded/src/test/resources/all-failing.xml Thu Jul  7 03:31:23 2011
@@ -1,4 +1,7 @@
 <suite name="CDI TCK" verbose="0">
+  <listeners>
+    <listener class-name="org.apache.openejb.tck.cdi.embedded.RequestScopeTestListener" />
+  </listeners>
   <test name="CDI TCK">
     <!--<packages>-->
         <!--<package name="org.jboss.jsr299.tck.tests.*"/>-->

Modified: openejb/trunk/openejb3/tck/cdi-embedded/src/test/resources/failing.xml
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/tck/cdi-embedded/src/test/resources/failing.xml?rev=1143640&r1=1143639&r2=1143640&view=diff
==============================================================================
--- openejb/trunk/openejb3/tck/cdi-embedded/src/test/resources/failing.xml (original)
+++ openejb/trunk/openejb3/tck/cdi-embedded/src/test/resources/failing.xml Thu Jul  7 03:31:23 2011
@@ -1,21 +1,28 @@
 <suite name="CDI TCK" verbose="0">
+  <listeners>
+    <listener class-name="org.apache.openejb.tck.cdi.embedded.RequestScopeTestListener" />
+  </listeners>
   <test name="CDI TCK">
     <!--<packages>-->
         <!--<package name="org.jboss.jsr299.tck.tests.*"/>-->
         <!--<package name="org.jboss.jsr299.tck.interceptors.tests.*"/>-->
     <!--</packages>-->
     <classes>
-      <class name="org.jboss.jsr299.tck.tests.context.dependent.ejb.DependentContextEjbTest"/>
-      <class name="org.jboss.jsr299.tck.tests.context.passivating.broken.dependentScopedProducerFieldReturnsNonSerializableObjectForInjectionIntoStatefulSessionBean.EnterpriseBeanWithIllegalDependencyTest"/>
-      <class name="org.jboss.jsr299.tck.tests.context.passivating.broken.dependentScopedProducerMethodReturnsNonSerializableObjectForInjectionIntoStatefulSessionBean.EnterpriseBeanWithIllegalDependencyTest"/>
-      <class name="org.jboss.jsr299.tck.tests.context.request.ejb.EJBRequestContextTest"/>
-      <class name="org.jboss.jsr299.tck.tests.extensions.producer.ProducerTest"/>
-      <class name="org.jboss.jsr299.tck.tests.implementation.builtin.BuiltInBeansTest"/>
-      <class name="org.jboss.jsr299.tck.tests.implementation.enterprise.lifecycle.EnterpriseBeanLifecycleTest"/>
+      <!--<class name="org.jboss.jsr299.tck.tests.context.dependent.ejb.DependentContextEjbTest"/>-->
+      <!--<class name="org.jboss.jsr299.tck.tests.context.passivating.broken.dependentScopedProducerFieldReturnsNonSerializableObjectForInjectionIntoStatefulSessionBean.EnterpriseBeanWithIllegalDependencyTest"/>-->
+      <!--<class name="org.jboss.jsr299.tck.tests.context.passivating.broken.dependentScopedProducerMethodReturnsNonSerializableObjectForInjectionIntoStatefulSessionBean.EnterpriseBeanWithIllegalDependencyTest"/>-->
+      <!--<class name="org.jboss.jsr299.tck.tests.context.request.ejb.EJBRequestContextTest"/>-->
+      <!--<class name="org.jboss.jsr299.tck.tests.extensions.producer.ProducerTest"/>-->
+      <!--<class name="org.jboss.jsr299.tck.tests.implementation.builtin.BuiltInBeansTest"/>-->
+      <!--<class name="org.jboss.jsr299.tck.tests.implementation.enterprise.lifecycle.EnterpriseBeanLifecycleTest">-->
+        <!--<methods>-->
+          <!--<exclude name="testCreateSFSB"/>-->
+        <!--</methods>-->
+      <!--</class>-->
       <class name="org.jboss.jsr299.tck.tests.implementation.producer.method.definition.enterprise.EnterpriseProducerMethodDefinitionTest"/>
-      <class name="org.jboss.jsr299.tck.tests.implementation.simple.resource.ejb.EjbInjectionTest"/>
-      <class name="org.jboss.jsr299.tck.tests.interceptors.definition.enterprise.nonContextualReference.SessionBeanInterceptorOnNonContextualEjbReferenceTest"/>
-      <class name="org.jboss.jsr299.tck.tests.lookup.injection.non.contextual.ws.InjectionIntoWebServiceEndPointTest"/>
+      <!--<class name="org.jboss.jsr299.tck.tests.implementation.simple.resource.ejb.EjbInjectionTest"/>-->
+      <!--<class name="org.jboss.jsr299.tck.tests.interceptors.definition.enterprise.nonContextualReference.SessionBeanInterceptorOnNonContextualEjbReferenceTest"/>-->
+      <!--<class name="org.jboss.jsr299.tck.tests.lookup.injection.non.contextual.ws.InjectionIntoWebServiceEndPointTest"/>-->
     </classes>
   </test>
 </suite>

Modified: openejb/trunk/openejb3/tck/cdi-embedded/src/test/resources/passing.xml
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/tck/cdi-embedded/src/test/resources/passing.xml?rev=1143640&r1=1143639&r2=1143640&view=diff
==============================================================================
--- openejb/trunk/openejb3/tck/cdi-embedded/src/test/resources/passing.xml (original)
+++ openejb/trunk/openejb3/tck/cdi-embedded/src/test/resources/passing.xml Thu Jul  7 03:31:23 2011
@@ -1,10 +1,16 @@
 <suite name="CDI TCK" verbose="0">
+
+  <listeners>
+    <listener class-name="org.apache.openejb.tck.cdi.embedded.RequestScopeTestListener" />
+  </listeners>
+
   <test name="CDI TCK">
     <packages>
         <package name="org.jboss.jsr299.tck.tests.*"/>
         <package name="org.jboss.jsr299.tck.interceptors.tests.*"/>
     </packages>
     <classes>
+      <class name="org.jboss.jsr299.tck.tests.context.DestroyForSameCreationalContext2Test"/>
       <class name="org.jboss.jsr299.tck.tests.context.application.ApplicationContextTest">
         <methods>
           <exclude name="testApplicationContextSharedBetweenServletRequests"/>