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"/>