diff options
author | Raymond Auge | 2015-05-19 18:16:02 +0000 |
---|---|---|
committer | Raymond Auge | 2015-05-19 18:16:02 +0000 |
commit | d7debf557115ea7bcd3d0ba131c8577104c37020 (patch) | |
tree | d9f563e3d70658bc734414f21017ab27e312aeaa /bundles/org.eclipse.equinox.http.servlet.tests | |
parent | edfa59af6642f57bfd45a87cc0b7e63602ea3a09 (diff) | |
download | rt.equinox.bundles-d7debf557115ea7bcd3d0ba131c8577104c37020.tar.gz rt.equinox.bundles-d7debf557115ea7bcd3d0ba131c8577104c37020.tar.xz rt.equinox.bundles-d7debf557115ea7bcd3d0ba131c8577104c37020.zip |
Bug 467413 - [http whiteboard] Using HttpServletRequestWrapper in filter implementation causes StackOverflowErrorI20150531-2000I20150529-2000I20150528-0700I20150527-2010I20150526-2010I20150525-2000I20150524-2000I20150522-2000I20150521-1715I20150521-1400I20150521-1100I20150520-2000I20150519-2000
Signed-off-by: Raymond Auge <raymond.auge@liferay.com>
Diffstat (limited to 'bundles/org.eclipse.equinox.http.servlet.tests')
-rw-r--r-- | bundles/org.eclipse.equinox.http.servlet.tests/src/org/eclipse/equinox/http/servlet/tests/ServletTest.java | 91 |
1 files changed, 91 insertions, 0 deletions
diff --git a/bundles/org.eclipse.equinox.http.servlet.tests/src/org/eclipse/equinox/http/servlet/tests/ServletTest.java b/bundles/org.eclipse.equinox.http.servlet.tests/src/org/eclipse/equinox/http/servlet/tests/ServletTest.java index 16442a714..29628cf08 100644 --- a/bundles/org.eclipse.equinox.http.servlet.tests/src/org/eclipse/equinox/http/servlet/tests/ServletTest.java +++ b/bundles/org.eclipse.equinox.http.servlet.tests/src/org/eclipse/equinox/http/servlet/tests/ServletTest.java @@ -50,7 +50,9 @@ import javax.servlet.ServletRequestListener; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletRequestWrapper; import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpServletResponseWrapper; import javax.servlet.http.HttpSession; import javax.servlet.http.HttpSessionAttributeListener; import javax.servlet.http.HttpSessionBindingEvent; @@ -771,6 +773,95 @@ public class ServletTest extends TestCase { Assert.assertFalse("testFilter1 got called.", testFilter1.getCalled()); Assert.assertTrue("testFilter2 did not get called.", testFilter2.getCalled()); } + + + + public void basicFilterTest22( String servlet1Pattern, String servlet2Pattern, String filterPattern, String expected, String[] dispatchers ) throws Exception { + Servlet servlet1 = new BaseServlet() { + private static final long serialVersionUID = 1L; + + @Override + protected void service(HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException { + request.getRequestDispatcher("/f22/index.jsp").forward(request, response); + } + }; + + Servlet servlet2 = new BaseServlet("a"); + + Filter filter = new TestFilter() { + + @Override + public void doFilter( + ServletRequest request, ServletResponse response, FilterChain chain) + throws IOException, ServletException { + + response.getWriter().write('b'); + + chain.doFilter( + new HttpServletRequestWrapper((HttpServletRequest) request), + new HttpServletResponseWrapper((HttpServletResponse) response)); + + response.getWriter().write('b'); + } + + }; + + Dictionary<String, Object> props = new Hashtable<String, Object>(); + props.put(HttpWhiteboardConstants.HTTP_WHITEBOARD_SERVLET_PATTERN, servlet1Pattern); + registrations.add(getBundleContext().registerService(Servlet.class, servlet1, props)); + + props = new Hashtable<String, Object>(); + props.put(HttpWhiteboardConstants.HTTP_WHITEBOARD_SERVLET_PATTERN, servlet2Pattern); + registrations.add(getBundleContext().registerService(Servlet.class, servlet2, props)); + + props = new Hashtable<String, Object>(); + props.put(HttpWhiteboardConstants.HTTP_WHITEBOARD_FILTER_NAME, "F22"); + props.put(HttpWhiteboardConstants.HTTP_WHITEBOARD_FILTER_DISPATCHER, dispatchers); + props.put(HttpWhiteboardConstants.HTTP_WHITEBOARD_FILTER_PATTERN, filterPattern); + registrations.add(getBundleContext().registerService(Filter.class, filter, props)); + + String response = requestAdvisor.request("f22/a"); + + Assert.assertEquals(expected, response); + } + + public void test_Filter22a() throws Exception { + basicFilterTest22 ( "/f22/*", "*.jsp", "/f22/*", "a", new String[] {"REQUEST"} ); + } + + public void test_Filter22b() throws Exception { + basicFilterTest22 ( "/*", "*.jsp", "/*", "a", new String[] {"REQUEST"} ); + } + + public void test_Filter22c() throws Exception { + basicFilterTest22 ( "/f22/*", "*.jsp", "*.jsp", "a", new String[] {"REQUEST"} ); + } + + public void test_Filter22d() throws Exception { + basicFilterTest22 ( "/f22/*", "*.jsp", "/f22/*", "bab", new String[] {"FORWARD"} ); + } + + public void test_Filter22e() throws Exception { + basicFilterTest22 ( "/*", "*.jsp", "/*", "bab", new String[] {"FORWARD"} ); + } + + public void test_Filter22f() throws Exception { + basicFilterTest22 ( "/f22/*", "*.jsp", "*.jsp", "bab", new String[] {"FORWARD"} ); + } + + public void test_Filter22g() throws Exception { + basicFilterTest22 ( "/f22/*", "*.jsp", "/f22/*", "bab", new String[] {"REQUEST", "FORWARD"} ); + } + + public void test_Filter22h() throws Exception { + basicFilterTest22 ( "/*", "*.jsp", "/*", "bab", new String[] {"REQUEST", "FORWARD"} ); + } + + public void test_Filter22i() throws Exception { + basicFilterTest22 ( "/f22/*", "*.jsp", "*.jsp", "bab", new String[] {"REQUEST", "FORWARD"} ); + } + public void test_Registration1() throws Exception { String expected = "Alias cannot be null"; try { |