Repository: tomee Updated Branches: refs/heads/master 983a67ed5 -> b0a1ee2ac
seems our begin/end wb listener is no more useful and breaks tomcat listener ordering - did it change? - starting to reverse it Project: http://git-wip-us.apache.org/repos/asf/tomee/repo Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/b0a1ee2a Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/b0a1ee2a Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/b0a1ee2a Branch: refs/heads/master Commit: b0a1ee2acb294adc3d164903ad8be4641ccd0bd4 Parents: 983a67e Author: Romain Manni-Bucau <[email protected]> Authored: Thu Mar 19 16:42:19 2015 +0100 Committer: Romain Manni-Bucau <[email protected]> Committed: Thu Mar 19 16:42:19 2015 +0100 ---------------------------------------------------------------------- .../server/httpd/BeginWebBeansListener.java | 110 ++++++++++++++-- .../server/httpd/EndWebBeansListener.java | 128 +------------------ .../openejb/server/httpd/HttpRequestImpl.java | 18 ++- .../server/httpd/WebBeansListenerHelper.java | 50 ++++++++ tck/cdi-embedded/src/test/resources/failing.xml | 8 +- tck/cdi-embedded/src/test/resources/passing.xml | 4 + tck/cdi-tomee/pom.xml | 24 +++- tck/cdi-tomee/src/test/resources/failing.xml | 35 ++++- 8 files changed, 231 insertions(+), 146 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/tomee/blob/b0a1ee2a/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/BeginWebBeansListener.java ---------------------------------------------------------------------- diff --git a/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/BeginWebBeansListener.java b/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/BeginWebBeansListener.java index d324d4f..e151a90 100644 --- a/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/BeginWebBeansListener.java +++ b/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/BeginWebBeansListener.java @@ -16,6 +16,7 @@ */ package org.apache.openejb.server.httpd; +import org.apache.openejb.cdi.CdiAppContextsService; import org.apache.openejb.cdi.OpenEJBLifecycle; import org.apache.openejb.cdi.ThreadSingletonServiceImpl; import org.apache.openejb.cdi.WebappWebBeansContext; @@ -23,16 +24,22 @@ import org.apache.openejb.util.LogCategory; import org.apache.openejb.util.Logger; import org.apache.webbeans.config.OWBLogConst; import org.apache.webbeans.config.WebBeansContext; +import org.apache.webbeans.context.ConversationContext; +import org.apache.webbeans.conversation.ConversationManager; +import org.apache.webbeans.el.ELContextStore; +import org.apache.webbeans.spi.ContextsService; import org.apache.webbeans.spi.FailOverService; import org.apache.webbeans.util.WebBeansUtil; +import java.util.Map; +import javax.enterprise.context.Conversation; import javax.enterprise.context.RequestScoped; import javax.enterprise.context.SessionScoped; -import javax.enterprise.context.spi.Context; import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; import javax.servlet.ServletRequestEvent; import javax.servlet.ServletRequestListener; +import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSessionActivationListener; import javax.servlet.http.HttpSessionEvent; import javax.servlet.http.HttpSessionListener; @@ -50,6 +57,7 @@ public class BeginWebBeansListener implements ServletContextListener, ServletReq private static final Logger logger = Logger.getInstance(LogCategory.OPENEJB_CDI, BeginWebBeansListener.class); protected FailOverService failoverService; + private final CdiAppContextsService contextsService; /** * Manages the container lifecycle @@ -63,7 +71,8 @@ public class BeginWebBeansListener implements ServletContextListener, ServletReq */ public BeginWebBeansListener(final WebBeansContext webBeansContext) { this.webBeansContext = webBeansContext; - this.failoverService = this.webBeansContext.getService(FailOverService.class); + this.failoverService = webBeansContext != null ? this.webBeansContext.getService(FailOverService.class) : null; + this.contextsService = webBeansContext != null ? CdiAppContextsService.class.cast(webBeansContext.getService(ContextsService.class)) : null; this.contextKey = "org.apache.tomee.catalina.WebBeansListener@" + webBeansContext.hashCode(); } @@ -72,7 +81,49 @@ public class BeginWebBeansListener implements ServletContextListener, ServletReq */ @Override public void requestDestroyed(final ServletRequestEvent event) { - // no-op + if (webBeansContext == null) { + return; + } + + if (logger.isDebugEnabled()) { + logger.debug("Destroying a request : [{0}]", event == null ? "null" : event.getServletRequest().getRemoteAddr()); + } + + final Object oldContext; + if (event != null) { + oldContext = event.getServletRequest().getAttribute(contextKey); + } else { + oldContext = null; + } + + try { + if (event != null + && failoverService != null + && failoverService.isSupportFailOver()) { + Object request = event.getServletRequest(); + if (request instanceof HttpServletRequest) { + HttpServletRequest httpRequest = (HttpServletRequest) request; + javax.servlet.http.HttpSession session = httpRequest.getSession(false); + if (session != null) { + failoverService.sessionIsIdle(session); + } + } + } + + // clean up the EL caches after each request + final ELContextStore elStore = ELContextStore.getInstance(false); + if (elStore != null) { + elStore.destroyELContextStore(); + } + + webBeansContext.getContextsService().endContext(RequestScoped.class, event); + if (webBeansContext instanceof WebappWebBeansContext) { // end after child + ((WebappWebBeansContext) webBeansContext).getParent().getContextsService().endContext(RequestScoped.class, event); + } + } finally { + contextsService.removeThreadLocals(); + ThreadSingletonServiceImpl.enter((WebBeansContext) oldContext); + } } /** @@ -128,20 +179,42 @@ public class BeginWebBeansListener implements ServletContextListener, ServletReq */ @Override public void sessionDestroyed(final HttpSessionEvent event) { - ensureRequestScope(); - } + if (webBeansContext == null) { + return; + } + + if (logger.isDebugEnabled()) { + logger.debug("Destroying a session with session id : [{0}]", event.getSession().getId()); + } + + // ensure session ThreadLocal is set + webBeansContext.getContextsService().startContext(SessionScoped.class, event.getSession()); + + if (WebappWebBeansContext.class.isInstance(webBeansContext)) { // end after child + WebappWebBeansContext.class.cast(webBeansContext).getParent().getContextsService().endContext(SessionScoped.class, event.getSession()); + } - private void ensureRequestScope() { - final Context reqCtx = webBeansContext.getContextsService().getCurrentContext(RequestScoped.class); - if (reqCtx == null || !webBeansContext.getContextsService().getCurrentContext(RequestScoped.class).isActive()) { - requestInitialized(null); - EndWebBeansListener.FAKE_REQUEST.set(true); + final CdiAppContextsService appContextsService = CdiAppContextsService.class.cast(webBeansContext.getContextsService()); + if (appContextsService.getRequestContext(false) != null) { + final String id = event.getSession().getId(); // capture it eagerly! + appContextsService.pushRequestReleasable(new Runnable() { + @Override + public void run() { + doDestroyConversations(id); + } + }); + } else { + doDestroyConversations(event.getSession().getId()); } + + webBeansContext.getContextsService().endContext(SessionScoped.class, event.getSession()); + + WebBeansListenerHelper.destroyFakedRequest(this); } @Override public void sessionWillPassivate(final HttpSessionEvent event) { - ensureRequestScope(); + WebBeansListenerHelper.ensureRequestScope(contextsService, this); } @Override @@ -158,11 +231,22 @@ public class BeginWebBeansListener implements ServletContextListener, ServletReq } catch (final Exception e) { logger.warning(e.getMessage(), e); } - ensureRequestScope(); + WebBeansListenerHelper.ensureRequestScope(contextsService, this); } @Override public void contextDestroyed(final ServletContextEvent servletContextEvent) { - ensureRequestScope(); + WebBeansListenerHelper.destroyFakedRequest(this); + } + + private void doDestroyConversations(final String id) { + final ConversationManager conversationManager = webBeansContext.getConversationManager(); + final Map<Conversation, ConversationContext> cc = conversationManager.getAndRemoveConversationMapWithSessionId(id); + for (final Map.Entry<Conversation, ConversationContext> c : cc.entrySet()) { + if (c != null) { + c.getValue().destroy(); + webBeansContext.getBeanManagerImpl().fireEvent(c.getKey().getId(), CdiAppContextsService.DestroyedLiteral.CONVERSATION); + } + } } } http://git-wip-us.apache.org/repos/asf/tomee/blob/b0a1ee2a/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/EndWebBeansListener.java ---------------------------------------------------------------------- diff --git a/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/EndWebBeansListener.java b/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/EndWebBeansListener.java index dda5c9f..acfc7fd 100644 --- a/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/EndWebBeansListener.java +++ b/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/EndWebBeansListener.java @@ -17,29 +17,17 @@ package org.apache.openejb.server.httpd; import org.apache.openejb.cdi.CdiAppContextsService; -import org.apache.openejb.cdi.ThreadSingletonServiceImpl; -import org.apache.openejb.cdi.WebappWebBeansContext; -import org.apache.openejb.util.LogCategory; -import org.apache.openejb.util.Logger; import org.apache.webbeans.config.WebBeansContext; -import org.apache.webbeans.context.ConversationContext; -import org.apache.webbeans.conversation.ConversationManager; -import org.apache.webbeans.el.ELContextStore; import org.apache.webbeans.spi.ContextsService; import org.apache.webbeans.spi.FailOverService; -import javax.enterprise.context.Conversation; -import javax.enterprise.context.RequestScoped; -import javax.enterprise.context.SessionScoped; import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; import javax.servlet.ServletRequestEvent; import javax.servlet.ServletRequestListener; -import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSessionActivationListener; import javax.servlet.http.HttpSessionEvent; import javax.servlet.http.HttpSessionListener; -import java.util.Map; /** * @version $Rev$ $Date$ @@ -48,15 +36,6 @@ import java.util.Map; */ public class EndWebBeansListener implements ServletContextListener, ServletRequestListener, HttpSessionListener, HttpSessionActivationListener { - static final ThreadLocal<Boolean> FAKE_REQUEST = new ThreadLocal<Boolean>(); - - private final String contextKey; - - /** - * Logger instance - */ - private static final Logger logger = Logger.getInstance(LogCategory.OPENEJB_CDI, EndWebBeansListener.class); - protected FailOverService failoverService; /** @@ -75,9 +54,7 @@ public class EndWebBeansListener implements ServletContextListener, ServletReque if (webBeansContext != null) { this.failoverService = this.webBeansContext.getService(FailOverService.class); this.contextsService = CdiAppContextsService.class.cast(webBeansContext.getService(ContextsService.class)); - this.contextKey = "org.apache.tomee.catalina.WebBeansListener@" + webBeansContext.hashCode(); } else { - this.contextKey = "notused"; this.contextsService = null; } } @@ -87,49 +64,7 @@ public class EndWebBeansListener implements ServletContextListener, ServletReque */ @Override public void requestDestroyed(ServletRequestEvent event) { - if (webBeansContext == null) { - return; - } - - if (logger.isDebugEnabled()) { - logger.debug("Destroying a request : [{0}]", event == null ? "null" : event.getServletRequest().getRemoteAddr()); - } - - final Object oldContext; - if (event != null) { - oldContext = event.getServletRequest().getAttribute(contextKey); - } else { - oldContext = null; - } - - try { - if (event != null - && failoverService != null - && failoverService.isSupportFailOver()) { - Object request = event.getServletRequest(); - if (request instanceof HttpServletRequest) { - HttpServletRequest httpRequest = (HttpServletRequest) request; - javax.servlet.http.HttpSession session = httpRequest.getSession(false); - if (session != null) { - failoverService.sessionIsIdle(session); - } - } - } - - // clean up the EL caches after each request - final ELContextStore elStore = ELContextStore.getInstance(false); - if (elStore != null) { - elStore.destroyELContextStore(); - } - - webBeansContext.getContextsService().endContext(RequestScoped.class, event); - if (webBeansContext instanceof WebappWebBeansContext) { // end after child - ((WebappWebBeansContext) webBeansContext).getParent().getContextsService().endContext(RequestScoped.class, event); - } - } finally { - contextsService.removeThreadLocals(); - ThreadSingletonServiceImpl.enter((WebBeansContext) oldContext); - } + // no-op } /** @@ -155,62 +90,9 @@ public class EndWebBeansListener implements ServletContextListener, ServletReque */ @Override public void sessionDestroyed(final HttpSessionEvent event) { - if (webBeansContext == null) { - return; - } - - if (logger.isDebugEnabled()) { - logger.debug("Destroying a session with session id : [{0}]", event.getSession().getId()); - } - - // ensure session ThreadLocal is set - webBeansContext.getContextsService().startContext(SessionScoped.class, event.getSession()); - - if (WebappWebBeansContext.class.isInstance(webBeansContext)) { // end after child - WebappWebBeansContext.class.cast(webBeansContext).getParent().getContextsService().endContext(SessionScoped.class, event.getSession()); - } - - final CdiAppContextsService appContextsService = CdiAppContextsService.class.cast(webBeansContext.getContextsService()); - if (appContextsService.getRequestContext(false) != null) { - final String id = event.getSession().getId(); // capture it eagerly! - appContextsService.pushRequestReleasable(new Runnable() { - @Override - public void run() { - doDestroyConversations(id); - } - }); - } else { - doDestroyConversations(event.getSession().getId()); - } - - webBeansContext.getContextsService().endContext(SessionScoped.class, event.getSession()); - - destroyFakedRequest(); - } - - private void doDestroyConversations(final String id) { - final ConversationManager conversationManager = webBeansContext.getConversationManager(); - final Map<Conversation, ConversationContext> cc = conversationManager.getAndRemoveConversationMapWithSessionId(id); - for (final Map.Entry<Conversation, ConversationContext> c : cc.entrySet()) { - if (c != null) { - c.getValue().destroy(); - webBeansContext.getBeanManagerImpl().fireEvent(c.getKey().getId(), CdiAppContextsService.DestroyedLiteral.CONVERSATION); - } - } + WebBeansListenerHelper.ensureRequestScope(contextsService, this); } - private void destroyFakedRequest() { - final Boolean faked = FAKE_REQUEST.get(); - try { - if (faked != null && faked) { - requestDestroyed(null); - } - } finally { - FAKE_REQUEST.remove(); - } - } - - @Override public void sessionWillPassivate(HttpSessionEvent event) { if (webBeansContext == null) { @@ -220,7 +102,7 @@ public class EndWebBeansListener implements ServletContextListener, ServletReque if (failoverService != null && failoverService.isSupportPassivation()) { failoverService.sessionWillPassivate(event.getSession()); } - destroyFakedRequest(); + WebBeansListenerHelper.destroyFakedRequest(this); } @Override @@ -230,11 +112,11 @@ public class EndWebBeansListener implements ServletContextListener, ServletReque @Override public void contextInitialized(ServletContextEvent servletContextEvent) { - destroyFakedRequest(); + WebBeansListenerHelper.destroyFakedRequest(this); } @Override public void contextDestroyed(ServletContextEvent servletContextEvent) { - destroyFakedRequest(); + WebBeansListenerHelper.ensureRequestScope(contextsService, this); } } http://git-wip-us.apache.org/repos/asf/tomee/blob/b0a1ee2a/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpRequestImpl.java ---------------------------------------------------------------------- diff --git a/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpRequestImpl.java b/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpRequestImpl.java index 804648d..11702a0 100644 --- a/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpRequestImpl.java +++ b/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/HttpRequestImpl.java @@ -123,8 +123,8 @@ public class HttpRequestImpl implements HttpRequest { SESSIONS.remove(session.getId()); session.invalidate(); - if (data.request != null && data.request.end != null) { - data.request.end.sessionDestroyed(new HttpSessionEvent(session)); + if (data.request != null && data.request.begin != null) { + data.request.begin.sessionDestroyed(new HttpSessionEvent(session)); } } } @@ -933,7 +933,7 @@ public class HttpRequestImpl implements HttpRequest { session = impl; if (begin != null) { begin.sessionCreated(new HttpSessionEvent(session)); - session = new SessionInvalidateListener(session, end); + session = new SessionInvalidateListener(session, begin); } impl.callListeners(); // can call req.getSession() so do it after affectation + do it after cdi init @@ -1241,22 +1241,26 @@ public class HttpRequestImpl implements HttpRequest { } public void destroy() { + final boolean openejbRequestDestroyed = getAttribute("openejb_requestDestroyed") == null; if (listeners != null && !listeners.isEmpty()) { + if (begin != null && end != null && openejbRequestDestroyed) { + end.requestDestroyed(new ServletRequestEvent(getServletContext(), this)); + } final ServletRequestEvent event = new ServletRequestEvent(getServletContext(), this); for (final ServletRequestListener listener : listeners) { listener.requestDestroyed(event); } } - if (end != null && getAttribute("openejb_requestDestroyed") == null) { + if (begin != null && openejbRequestDestroyed) { setAttribute("openejb_requestDestroyed", "ok"); - end.requestDestroyed(new ServletRequestEvent(getServletContext(), this)); + begin.requestDestroyed(new ServletRequestEvent(getServletContext(), this)); } } protected static class SessionInvalidateListener extends ServletSessionAdapter { - private final EndWebBeansListener listener; + private final BeginWebBeansListener listener; - public SessionInvalidateListener(final javax.servlet.http.HttpSession session, final EndWebBeansListener end) { + public SessionInvalidateListener(final javax.servlet.http.HttpSession session, final BeginWebBeansListener end) { super(session); listener = end; } http://git-wip-us.apache.org/repos/asf/tomee/blob/b0a1ee2a/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/WebBeansListenerHelper.java ---------------------------------------------------------------------- diff --git a/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/WebBeansListenerHelper.java b/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/WebBeansListenerHelper.java new file mode 100644 index 0000000..db0578c --- /dev/null +++ b/server/openejb-http/src/main/java/org/apache/openejb/server/httpd/WebBeansListenerHelper.java @@ -0,0 +1,50 @@ +/** + * 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.server.httpd; + +import org.apache.webbeans.spi.ContextsService; + +import javax.enterprise.context.RequestScoped; +import javax.enterprise.context.spi.Context; +import javax.servlet.ServletRequestListener; + +public final class WebBeansListenerHelper { + private static final ThreadLocal<Boolean> FAKE_REQUEST = new ThreadLocal<Boolean>(); + + public static void destroyFakedRequest(final ServletRequestListener listener) { + final Boolean faked = FAKE_REQUEST.get(); + try { + if (faked != null && faked) { + listener.requestDestroyed(null); + } + } finally { + FAKE_REQUEST.remove(); + } + } + + public static void ensureRequestScope(final ContextsService cs, final ServletRequestListener listener) { + final Context reqCtx = cs.getCurrentContext(RequestScoped.class); + if (reqCtx == null || !cs.getCurrentContext(RequestScoped.class).isActive()) { + listener.requestInitialized(null); + FAKE_REQUEST.set(true); + } + } + + private WebBeansListenerHelper() { + // no-op + } +} http://git-wip-us.apache.org/repos/asf/tomee/blob/b0a1ee2a/tck/cdi-embedded/src/test/resources/failing.xml ---------------------------------------------------------------------- diff --git a/tck/cdi-embedded/src/test/resources/failing.xml b/tck/cdi-embedded/src/test/resources/failing.xml index 9cad804..cef795e 100644 --- a/tck/cdi-embedded/src/test/resources/failing.xml +++ b/tck/cdi-embedded/src/test/resources/failing.xml @@ -31,7 +31,13 @@ -Dopenejb.embedded.try-jsp=true --> <classes> - <class name="org.jboss.cdi.tck.tests.inheritance.specialization.enterprise.EnterpriseBeanSpecializationTest" /> + <!-- + InvalidatingSessionDestroysConversationTest>Arquillian.run:164->testInvalidatingSessionDestroysConversation:63 expected [true] but found [false] + DestroyConversationNotAssociatedWithCurrentRequestEventTest>Arquillian.run:164->testLifecycleEventFired:70 expected [true] but found [false] + SessionContextTest>Arquillian.run:164->testSessionContextDestroyedWhenHttpSessionInvalidated:129 expected [ActionSequence [name=default, data=[org.jboss.cdi.tck.tests.context.session.IntrospectServlet, org.jboss.cdi.tck.tests.context.session.IntrospectHttpSessionListener, org.jboss.cdi.tck.tests.context.session.IntrospectFilter, org.jboss.cdi.tck.tests.context.session.IntrospectServletRequestListener, org.jboss.cdi.tck.tests.context.session.SimpleSessionBean]]] but found [ActionSequence [name=default, data=[org.jboss.cdi.tck.tests.context.session.IntrospectServlet, org.jboss.cdi.tck.tests.context.session.IntrospectHttpSessionListener, org.jboss.cdi.tck.tests.context.session.IntrospectFilter, org.jboss.cdi.tck.tests.context.session.IntrospectServletRequestListener]]] + SessionScopeEventTest>Arquillian.run:164->test:84 expected [true] but found [false] +--> + <class name="org.jboss.cdi.tck.tests.context.conversation.InvalidatingSessionDestroysConversationTest" /> </classes> </test> </suite> http://git-wip-us.apache.org/repos/asf/tomee/blob/b0a1ee2a/tck/cdi-embedded/src/test/resources/passing.xml ---------------------------------------------------------------------- diff --git a/tck/cdi-embedded/src/test/resources/passing.xml b/tck/cdi-embedded/src/test/resources/passing.xml index ad14e73..0be9578 100644 --- a/tck/cdi-embedded/src/test/resources/passing.xml +++ b/tck/cdi-embedded/src/test/resources/passing.xml @@ -306,6 +306,10 @@ <exclude name=".*" /> </methods> </class> + <!-- this one depends too much of embedded environment to be reliable on a regular basis in embedded mode --> + <class name="org.jboss.cdi.tck.tests.context.request.event.remote.RequestScopeEventRemoteTest"> + <methods><exclude name=".*" /></methods> + </class> </classes> </test> </suite> http://git-wip-us.apache.org/repos/asf/tomee/blob/b0a1ee2a/tck/cdi-tomee/pom.xml ---------------------------------------------------------------------- diff --git a/tck/cdi-tomee/pom.xml b/tck/cdi-tomee/pom.xml index e231488..07321fc 100644 --- a/tck/cdi-tomee/pom.xml +++ b/tck/cdi-tomee/pom.xml @@ -27,6 +27,10 @@ <artifactId>cdi-tomee</artifactId> <name>OpenEJB :: TCK :: CDI TomEE</name> + <properties> + <suite.name>passing</suite.name> + </properties> + <dependencies> <dependency> <groupId>org.apache.myfaces.core</groupId> @@ -124,6 +128,24 @@ <version>${jcs.version}</version> <scope>test</scope> </dependency> + <dependency> + <groupId>org.apache.openejb</groupId> + <artifactId>tomee-catalina</artifactId> + <version>${tomee.version}</version> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.apache.tomcat</groupId> + <artifactId>tomcat-catalina</artifactId> + <version>${tomcat.version}</version> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.apache.openejb</groupId> + <artifactId>openejb-http</artifactId> + <version>${openejb.version}</version> + <scope>test</scope> + </dependency> </dependencies> <build> @@ -165,7 +187,7 @@ <useFile>false</useFile> <disableXmlReport>true</disableXmlReport> <suiteXmlFiles> - <suiteXmlFile>src/test/resources/passing.xml</suiteXmlFile> + <suiteXmlFile>src/test/resources/${suite.name}.xml</suiteXmlFile> </suiteXmlFiles> <properties> <property> http://git-wip-us.apache.org/repos/asf/tomee/blob/b0a1ee2a/tck/cdi-tomee/src/test/resources/failing.xml ---------------------------------------------------------------------- diff --git a/tck/cdi-tomee/src/test/resources/failing.xml b/tck/cdi-tomee/src/test/resources/failing.xml index 01f0c82..9f512c0 100644 --- a/tck/cdi-tomee/src/test/resources/failing.xml +++ b/tck/cdi-tomee/src/test/resources/failing.xml @@ -23,7 +23,40 @@ --> <test name="CDI TCK"> <classes> - <class name="org.jboss.cdi.tck.tests.lookup.modules.specialization.alternative.Specialization06Test" /> + <!-- + AlterableContextTest>Arquillian.run:164->testRequestScopedComponent:66->testComponent:104 foo expected [null] but found [foo] + ConversationDeterminationTest>Arquillian.run:164->testConversationDetermination:78 expected [true] but found [false] + ConversationFilterTest>Arquillian.run:164->testConversationBusy:133 expected [BusyConversationException] but found [500] + DataSourcePassivationDependencyTest>Arquillian.run:164->testDataSource:68 » IllegalProduct + RequestContextTest>Arquillian.run:164->testRequestScopeActiveDuringServiceMethod:62 » FailingHttpStatusCode + RequestContextTest>Arquillian.run:164->testRequestScopeActiveDuringServletFilter:73 » FailingHttpStatusCode + RequestContextTest>Arquillian.run:164->testRequestScopeIsDestroyedAfterServletRequest:89 » FailingHttpStatusCode + RequestContextAsyncListenerTest>Arquillian.run:164->testRequestContextActiveOnComplete:65 expected [true] but found [false] + RequestContextAsyncListenerTest>Arquillian.run:164->testRequestContextActiveOnError:93 expected [true] but found [false] + RequestContextAsyncListenerTest>Arquillian.run:164->testRequestContextActiveOnStartAsync:102 expected [true] but found [false] + RequestContextAsyncListenerTest>Arquillian.run:164->testRequestContextActiveOnTimeout:83 expected [true] but found [false] + RequestContextTest>Arquillian.run:164->testRequestScopeActiveDuringWebServiceInvocation:72 » WebService + SessionContextTest>Arquillian.run:164->testSessionContextDestroyedWhenHttpSessionInvalidated:129 expected [ActionSequence [name=default, data=[org.jboss.cdi.tck.tests.context.session.IntrospectServlet, org.jboss.cdi.tck.tests.context.session.IntrospectHttpSessionListener, org.jboss.cdi.tck.tests.context.session.IntrospectFilter, org.jboss.cdi.tck.tests.context.session.IntrospectServletRequestListener, org.jboss.cdi.tck.tests.context.session.SimpleSessionBean]]] but found [ActionSequence [name=default, data=[org.jboss.cdi.tck.tests.context.session.IntrospectServlet, org.jboss.cdi.tck.tests.context.session.IntrospectHttpSessionListener, org.jboss.cdi.tck.tests.context.session.IntrospectFilter, org.jboss.cdi.tck.tests.context.session.SimpleSessionBean, org.jboss.cdi.tck.tests.context.session.IntrospectServletRequestListener]]] + SessionContextListenerShutdownTest>Arquillian.run:164->testApplicationContextDestroyed:108 expected [true] but found [false] + EnterpriseBeanDiscoveryTest>Arquillian.run:164->testExplicitBeanArchiveEmptyDescriptor:133->assertDiscoveredAndAvailable:172 expected [true] but found [false] + EnterpriseBeanDiscoveryTest>Arquillian.run:164->testExplicitBeanArchiveLegacyDescriptor:140->assertDiscoveredAndAvailable:172 expected [true] but found [false] + EnterpriseBeanDiscoveryTest>Arquillian.run:164->testExplicitBeanArchiveModeAll:126->assertDiscoveredAndAvailable:172 expected [true] but found [false] + EnterpriseBeanDiscoveryTest>Arquillian.run:164->testImplicitBeanArchiveModeAnnotated:154->assertDiscoveredAndAvailable:172 expected [true] but found [false] + EnterpriseBeanDiscoveryTest>Arquillian.run:164->testImplicitBeanArchiveNoDescriptor:147->assertDiscoveredAndAvailable:170->AbstractTest.getContextualReference:157 » UnsatisfiedResolution + EnterpriseBeanDiscoveryTest>Arquillian.run:164->testNoBeanArchiveModeNone:160->assertNotDiscoveredAndNotAvailable:178 expected [true] but found [false] + MultiWebModuleWithExtensionTest>Arquillian.run:164 » IllegalState Error launch... + InstalledLibraryWarTest>Arquillian.arquillianBeforeClass:109 » Deployment Unab... + DeploymentTest>Arquillian.arquillianBeforeClass:109 » Deployment Unable to dep... + ResourceDefinitionWithDifferentTypeTest>Arquillian.arquillianBeforeClass:109 » Runtime + ResourceDefinitionWithDifferentTypeTest>Arquillian.arquillianBeforeClass:109 » Runtime + ResourceDefinitionWithDifferentTypeTest>Arquillian.arquillianBeforeClass:109 » Runtime + DestroyingNormalScopedInstanceTest>Arquillian.run:164->testRequestScopedComponent:71->testComponent:146 foo expected [null] but found [foo] + InterModuleELResolutionTest>Arquillian.run:164->testEnabledManagedBeanAvailableForELResolution:62 » PropertyNotFound + DisabledProducerFieldInjectionNotAvailableTest>Arquillian.arquillianBeforeClass:109 » Runtime + DisabledProducerMethodInjectionNotAvailableTest>Arquillian.arquillianBeforeClass:109 » Runtime + DisabledSessionBeanInjectionNotAvailableTest>Arquillian.arquillianBeforeClass:109 » Runtime + --> + <class name="org.jboss.cdi.tck.tests.context.request.RequestContextTest" /> </classes> </test> </suite>
