⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 filterstest.java

📁 这是远程web服务调用的一个包,可以将JSP直接作为服务
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
    /**     * Verifies that the filter chain invokes the servlet.     */    public void testFilterChain() throws Exception {        WebXMLString wxs = new WebXMLString();        wxs.addServlet( "Simple", "/SimpleServlet", SimpleGetServlet.class );        wxs.addFilterForServlet( "Trivial", TrivialFilter.class, "Simple" );        ServletRunner sr = new ServletRunner( wxs.asInputStream() );        ServletUnitClient wc = sr.newClient();        InvocationContext ic = wc.newInvocation( "http://localhost/SimpleServlet" );        _servletCalled = false;        HttpServletResponse originalResponse = ic.getResponse();        HttpServletResponseWrapper responseWrapper = new HttpServletResponseWrapper( originalResponse );        ic.getFilterChain().doFilter( ic.getRequest(), responseWrapper );        assertTrue( "Servlet was not called", _servletCalled );        assertTrue( "Filter marked as active", ic.isFilterActive() );        assertSame( "Response object after doFilter", originalResponse, ic.getResponse() );    }    /**     * Verifies that filters are automatically called.     */    public void testFilterInvocation() throws Exception {        WebXMLString wxs = new WebXMLString();        wxs.addServlet( "Simple", "/SimpleServlet", SimpleGetServlet.class );        wxs.addFilterForServlet( "Attribute", AttributeFilter.class, "Simple" );        ServletRunner sr = new ServletRunner( wxs.asInputStream() );        ServletUnitClient wc = sr.newClient();        WebResponse wr = wc.getResponse( "http://localhost/SimpleServlet" );        assertEquals( "Filtered response ", "by-filter", wr.getText().trim() );    }    /**     * Verifies that a simple filter is associated with a url pattern.     */    public void testUrlFilterAssociation() throws Exception {        WebXMLString wxs = new WebXMLString();        wxs.addServlet( "Simple", "/helpMe/SimpleServlet", SimpleGetServlet.class );        wxs.addFilterForUrl( "Trivial", TrivialFilter.class, "/helpMe/*" );        wxs.addFilterForUrl( "Other", AttributeFilter.class, "/Simple" );        WebApplication application = new WebApplication( HttpUnitUtils.newParser().parse( new InputSource( wxs.asInputStream() ) ), null );        ServletMetaData metaData = application.getServletRequest( new URL( "http://localhost/helpMe/SimpleServlet" ) );        FilterMetaData[] filters = metaData.getFilters();        assertEquals( "number of associated filters", 1, filters.length );        assertEquals( "filter class", TrivialFilter.class, filters[0].getFilter().getClass() );    }    public void testFilterMapping() throws Exception {        FilterUrlMap map = new FilterUrlMap();        map.put( "/foo/bar/*", FILTER1 );        map.put( "/baz/*",     FILTER2 );        map.put( "/catalog",   FILTER3 );        map.put( "*.bop",      FILTER4 );        map.put( "/foo/bar/*", FILTER5 );        map.put( "/foo/*",     FILTER6 );        checkMapping( map, "/catalog",             new FilterMetaData[] { FILTER3 } );        checkMapping( map, "/catalog/racecar.bop", new FilterMetaData[] { FILTER4 }  );        checkMapping( map, "/index.bop",           new FilterMetaData[] { FILTER4 }  );        checkMapping( map, "/foo/bar/index.html",  new FilterMetaData[] { FILTER1, FILTER5, FILTER6 } );        checkMapping( map, "/foo/index.bop",       new FilterMetaData[] { FILTER4, FILTER6 }  );        checkMapping( map, "/baz",                 new FilterMetaData[] { FILTER2 }  );        checkMapping( map, "/bazel",               new FilterMetaData[0] );        checkMapping( map, "/baz/index.html",      new FilterMetaData[] { FILTER2 }  );        checkMapping( map, "/something/else",      new FilterMetaData[0] );    }    private void checkMapping( FilterUrlMap map, String urlString, FilterMetaData[] expectedFilters ) {        assertEquals( "Filters selected for '" + urlString + "'",                      Arrays.asList( expectedFilters),                      Arrays.asList( map.getMatchingFilters( urlString ) ) );    }    public void testFilterInitialization() throws Exception {        WebXMLString wxs = new WebXMLString();        wxs.addServlet( "Simple", "/SimpleServlet", SimpleGetServlet.class );        Properties params = new Properties();        params.setProperty( "color", "red" );        params.setProperty( "age", "12" );        wxs.addFilterForServlet( "Config", AttributeFilter.class, "Simple", params );        ServletRunner sr = new ServletRunner( wxs.asInputStream() );        ServletUnitClient wc = sr.newClient();        InvocationContext ic = wc.newInvocation( "http://localhost/SimpleServlet" );        AttributeFilter filter = (AttributeFilter) ic.getFilter();        FilterConfig filterConfig = filter._filterConfig;        assertNotNull( "Filter was not initialized", filterConfig );        assertEquals( "Filter name", "Config", filterConfig.getFilterName() );        assertNotNull( "No servlet context provided", filterConfig.getServletContext() );        assertNull( "init parameter 'gender' should be null", filterConfig.getInitParameter( "gender" ) );        assertEquals( "init parameter 'red'", "red", filterConfig.getInitParameter( "color" ) );        ArrayList names = new ArrayList();        for (Enumeration e = filterConfig.getInitParameterNames(); e.hasMoreElements(); ) {            String name = (String) e.nextElement();            names.add( name );        }        assertEquals( "Number of names in enumeration", 2, names.size() );        assertTrue( "'color' not found in enumeration", names.contains( "color" ) );        assertTrue( "'age' not found in enumeration", names.contains( "age" ) );    }    // TODO combination of named and url filters (url filters go first)    // TODO filter shutdown    // TODO filters with request dispatchers    // TODO filters throwing UnavailableException    static class AttributeFilter implements Filter {        private FilterConfig _filterConfig;        public void init( FilterConfig filterConfig ) throws ServletException {            _filterConfig = filterConfig;        }        public void destroy() {}        public void doFilter( ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain ) throws IOException, ServletException {            servletRequest.setAttribute( "called", "by-filter" );            filterChain.doFilter( servletRequest, servletResponse );        }    }    static class TrivialFilter implements Filter {        public void init( FilterConfig filterConfig ) throws ServletException {}        public void destroy() {}        public void doFilter( ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain ) throws IOException, ServletException {            servletRequest.setAttribute( "called", "trivially" );            filterChain.doFilter( servletRequest, servletResponse );        }    }    static class SimpleGetServlet extends HttpServlet {        protected void doGet( HttpServletRequest req, HttpServletResponse resp ) throws ServletException, IOException {            resp.setContentType( "text/html" );            PrintWriter pw = resp.getWriter();            pw.print( req.getAttribute( "called" ) );            pw.close();            _servletCalled = true;        }    }    static class FilterMetaDataImpl implements FilterMetaData {        private int _index;        public FilterMetaDataImpl( int index ) {            _index = index;        }        public Filter getFilter() throws ServletException {            return null;        }        public String toString() {            return "Filter" + _index;        }    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -