@Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { if (!(request instanceof HttpServletRequest)) { throw new ServletException( this.getClass().getSimpleName() + " can only handle HTTP requests."); } HttpServletRequest httpRequest = (HttpServletRequest) request; BladerunnerUri bladerunnerUri = servletUtils.createBladeRunnerUri(servletContext, httpRequest); boolean brjsPluginCanHandleRequest = servletUtils.getContentPluginForRequest(bladerunnerUri) != null; if (brjsPluginCanHandleRequest && !BladerunnerUri.isBrjsUriRequest(httpRequest)) { request .getRequestDispatcher("/brjs" + httpRequest.getRequestURI()) .forward(httpRequest, response); } else { chain.doFilter(httpRequest, response); } }
@Override public void init(ServletConfig config) throws ServletException { super.init(config); servletContext = config.getServletContext(); try { File brjsDir = new File(servletContext.getRealPath("/")); ThreadSafeStaticBRJSAccessor.initializeModel(brjsDir, brjsDir); } catch (InvalidSdkDirectoryException e) { throw new ServletException(e); } try { brjs = ThreadSafeStaticBRJSAccessor.aquireModel(); app = BRJSServletUtils.localeAppForContext(brjs, servletContext); } finally { ThreadSafeStaticBRJSAccessor.releaseModel(); } }