Index: tests/src/test/java/org/jboss/weld/test/tomcat/lookup/CatFilter.java
===================================================================
--- tests/src/test/java/org/jboss/weld/test/tomcat/lookup/CatFilter.java Mon Mar 01 16:34:18 CET 2010
+++ tests/src/test/java/org/jboss/weld/test/tomcat/lookup/CatFilter.java Mon Mar 01 16:34:18 CET 2010
@@ -0,0 +1,32 @@
+package org.jboss.weld.test.tomcat.lookup;
+
+import javax.inject.Inject;
+import javax.servlet.*;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+
+public class CatFilter implements Filter
+{
+
+ @Inject Sewer sewer;
+
+ public void init(FilterConfig filterConfig) throws ServletException
+ {
+ isSewerNameOk();
+ }
+
+ public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException
+ {
+ ((HttpServletResponse)response).setStatus(isSewerNameOk() ? HttpServletResponse.SC_OK : HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
+ }
+
+ public void destroy()
+ {
+ isSewerNameOk();
+ }
+
+ private boolean isSewerNameOk() throws NullPointerException
+ {
+ return Sewer.NAME.equals(sewer.getName());
+ }
+}
Index: tests/src/test/resources/org/jboss/weld/test/tomcat/lookup/web-filter-injection.xml
===================================================================
--- tests/src/test/resources/org/jboss/weld/test/tomcat/lookup/web-filter-injection.xml Mon Mar 01 16:02:50 CET 2010
+++ tests/src/test/resources/org/jboss/weld/test/tomcat/lookup/web-filter-injection.xml Mon Mar 01 16:02:50 CET 2010
@@ -0,0 +1,28 @@
+
+
+
+
+ JBoss Test Harness
+
+
+ org.jboss.testharness.impl.runner.servlet.HarnessServletListener
+
+
+
+ org.jboss.weld.environment.servlet.Listener
+
+
+
+ Cat Filter
+ org.jboss.weld.test.tomcat.lookup.CatFilter
+
+
+
+ Cat Filter
+ /cat
+
+
+
Index: tests/src/test/java/org/jboss/weld/test/tomcat/lookup/BatServlet.java
===================================================================
--- tests/src/test/java/org/jboss/weld/test/tomcat/lookup/BatServlet.java Mon Mar 01 16:45:57 CET 2010
+++ tests/src/test/java/org/jboss/weld/test/tomcat/lookup/BatServlet.java Mon Mar 01 16:45:57 CET 2010
@@ -0,0 +1,26 @@
+package org.jboss.weld.test.tomcat.lookup;
+
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+
+public class BatServlet extends HttpServlet
+{
+ @Override
+ protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException
+ {
+ resp.setStatus(getStatus(req));
+ }
+
+ private int getStatus(HttpServletRequest req)
+ {
+ return req.getAttribute(BatListener.BAT_ATTRIBUTE_NAME) == Boolean.TRUE &&
+ req.getSession().getAttribute(BatListener.BAT_ATTRIBUTE_NAME) == Boolean.TRUE &&
+ req.getSession().getServletContext().getAttribute(BatListener.BAT_ATTRIBUTE_NAME) == Boolean.TRUE
+ ? HttpServletResponse.SC_OK
+ : HttpServletResponse.SC_INTERNAL_SERVER_ERROR;
+ }
+
+}
Index: tests/src/test/resources/org/jboss/weld/test/tomcat/lookup/web-listener-injection.xml
===================================================================
--- tests/src/test/resources/org/jboss/weld/test/tomcat/lookup/web-listener-injection.xml Mon Mar 01 16:34:19 CET 2010
+++ tests/src/test/resources/org/jboss/weld/test/tomcat/lookup/web-listener-injection.xml Mon Mar 01 16:34:19 CET 2010
@@ -0,0 +1,32 @@
+
+
+
+
+ JBoss Test Harness
+
+
+ org.jboss.testharness.impl.runner.servlet.HarnessServletListener
+
+
+
+ org.jboss.weld.environment.servlet.Listener
+
+
+
+ org.jboss.weld.test.tomcat.lookup.BatListener
+
+
+
+ Bat Servlet
+ org.jboss.weld.test.tomcat.lookup.BatServlet
+
+
+
+ Bat Servlet
+ /bat
+
+
+
Index: tests/src/test/java/org/jboss/weld/test/tomcat/lookup/ListenerInjectionTest.java
===================================================================
--- tests/src/test/java/org/jboss/weld/test/tomcat/lookup/ListenerInjectionTest.java Mon Mar 01 16:37:40 CET 2010
+++ tests/src/test/java/org/jboss/weld/test/tomcat/lookup/ListenerInjectionTest.java Mon Mar 01 16:37:40 CET 2010
@@ -0,0 +1,55 @@
+package org.jboss.weld.test.tomcat.lookup;
+
+
+
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.commons.httpclient.HttpClient;
+import org.apache.commons.httpclient.HttpMethod;
+import org.apache.commons.httpclient.methods.GetMethod;
+import org.jboss.testharness.impl.packaging.Artifact;
+import org.jboss.testharness.impl.packaging.Classes;
+import org.jboss.testharness.impl.packaging.IntegrationTest;
+import org.jboss.testharness.impl.packaging.Resource;
+import org.jboss.testharness.impl.packaging.Resources;
+import org.jboss.weld.test.AbstractWeldTest;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.testng.annotations.BeforeClass;
+import org.testng.annotations.Test;
+
+@Artifact(addCurrentPackage=false)
+@IntegrationTest(runLocally=true)
+@Resources({
+ @Resource(source="context-servlet-injection.xml", destination="/META-INF/context.xml"),
+ @Resource(source="web-listener-injection.xml", destination="/WEB-INF/web.xml")
+})
+@Classes({
+ BatListener.class,
+ BatServlet.class,
+ Sewer.class
+})
+public class ListenerInjectionTest extends AbstractWeldTest
+{
+
+ private static final Logger log = LoggerFactory.getLogger(ListenerInjectionTest.class);
+
+ @Override
+ @BeforeClass
+ public void beforeClass() throws Throwable
+ {
+ log.info("To run the servlet listener injection test you must add tomcat-support.jar to $CATALINA_BASE/lib");
+ super.beforeClass();
+ }
+
+
+ @Test
+ public void testListenerInjection() throws Exception
+ {
+ HttpClient client = new HttpClient();
+ HttpMethod method = new GetMethod(getContextPath() + "/bat");
+ int sc = client.executeMethod(method);
+ System.out.println("sc = " + sc);
+ assert sc == HttpServletResponse.SC_OK;
+ }
+}
Index: tests/src/test/java/org/jboss/weld/test/tomcat/lookup/FilterInjectionTest.java
===================================================================
--- tests/src/test/java/org/jboss/weld/test/tomcat/lookup/FilterInjectionTest.java Mon Mar 01 16:22:46 CET 2010
+++ tests/src/test/java/org/jboss/weld/test/tomcat/lookup/FilterInjectionTest.java Mon Mar 01 16:22:46 CET 2010
@@ -0,0 +1,52 @@
+package org.jboss.weld.test.tomcat.lookup;
+
+
+
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.commons.httpclient.HttpClient;
+import org.apache.commons.httpclient.HttpMethod;
+import org.apache.commons.httpclient.methods.GetMethod;
+import org.jboss.testharness.impl.packaging.Artifact;
+import org.jboss.testharness.impl.packaging.Classes;
+import org.jboss.testharness.impl.packaging.IntegrationTest;
+import org.jboss.testharness.impl.packaging.Resource;
+import org.jboss.testharness.impl.packaging.Resources;
+import org.jboss.weld.test.AbstractWeldTest;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.testng.annotations.BeforeClass;
+import org.testng.annotations.Test;
+
+@Artifact(addCurrentPackage=false)
+@IntegrationTest(runLocally=true)
+@Resources({
+ @Resource(source="context-servlet-injection.xml", destination="/META-INF/context.xml"),
+ @Resource(source="web-filter-injection.xml", destination="/WEB-INF/web.xml")
+})
+@Classes({
+ CatFilter.class,
+ Sewer.class
+})
+public class FilterInjectionTest extends AbstractWeldTest
+{
+
+ private static final Logger log = LoggerFactory.getLogger(FilterInjectionTest.class);
+
+ @Override
+ @BeforeClass
+ public void beforeClass() throws Throwable
+ {
+ log.info("To run the servlet filter injection test you must add tomcat-support.jar to $CATALINA_BASE/lib");
+ super.beforeClass();
+ }
+
+
+ @Test
+ public void testFilterInjection() throws Exception
+ {
+ HttpClient client = new HttpClient();
+ HttpMethod method = new GetMethod(getContextPath() + "/cat");
+ assert client.executeMethod(method) == HttpServletResponse.SC_OK;
+ }
+}
Index: tests/src/test/java/org/jboss/weld/test/tomcat/lookup/BatListener.java
===================================================================
--- tests/src/test/java/org/jboss/weld/test/tomcat/lookup/BatListener.java Mon Mar 01 16:45:57 CET 2010
+++ tests/src/test/java/org/jboss/weld/test/tomcat/lookup/BatListener.java Mon Mar 01 16:45:57 CET 2010
@@ -0,0 +1,64 @@
+package org.jboss.weld.test.tomcat.lookup;
+
+import org.jboss.weld.servlet.api.ServletListener;
+
+import javax.inject.Inject;
+import javax.servlet.ServletContextEvent;
+import javax.servlet.ServletRequestEvent;
+import javax.servlet.http.HttpSessionEvent;
+
+public class BatListener implements ServletListener
+{
+ public static final String BAT_ATTRIBUTE_NAME = "batAttribute";
+
+ @Inject Sewer sewer;
+
+ public void contextInitialized(ServletContextEvent sce)
+ {
+ if (isSewerNameOk()) {
+ sce.getServletContext().setAttribute(BAT_ATTRIBUTE_NAME, Boolean.TRUE);
+ }
+ }
+
+ public void contextDestroyed(ServletContextEvent sce)
+ {
+ isSewerNameOk();
+ }
+
+ public void requestInitialized(ServletRequestEvent sre)
+ {
+ if (isSewerNameOk()) {
+ sre.getServletRequest().setAttribute(BAT_ATTRIBUTE_NAME, Boolean.TRUE);
+ }
+ }
+
+ public void requestDestroyed(ServletRequestEvent sre)
+ {
+ isSewerNameOk();
+ }
+
+ public void sessionCreated(HttpSessionEvent se)
+ {
+ if (isSewerNameOk()) {
+ se.getSession().setAttribute(BAT_ATTRIBUTE_NAME, Boolean.TRUE);
+ }
+ }
+
+ public void sessionDestroyed(HttpSessionEvent se)
+ {
+ isSewerNameOk();
+ }
+
+ private boolean isSewerNameOk() throws NullPointerException
+ {
+ try
+ {
+ return Sewer.NAME.equals(sewer.getName());
+ }
+ catch (NullPointerException e)
+ {
+ e.printStackTrace();
+ return false;
+ }
+ }
+}