@Override public void doFilter( final ServletRequest request, final ServletResponse response, final FilterChain chain) throws IOException, ServletException { HttpServletRequest httpRequest = ((HttpServletRequest) request); StringBuffer sourceUrl = httpRequest.getRequestURL(); String queryString = httpRequest.getQueryString(); if (queryString != null) { sourceUrl.append("?"); sourceUrl.append(queryString); } try { request.setAttribute( AbstractGatewayFilter.SOURCE_REQUEST_URL_ATTRIBUTE_NAME, Parser.parse(sourceUrl.toString())); } catch (URISyntaxException e) { throw new ServletException(e); } try { Subject.doAs( subject, new PrivilegedExceptionAction<Void>() { @Override public Void run() throws Exception { chain.doFilter(request, response); return null; } }); } catch (PrivilegedActionException e) { throw new ServletException(e); } }
private String rewriteValue(UrlRewriter rewriter, String value, String rule) { try { Template input = Parser.parse(value); Template output = rewriter.rewrite(this, input, UrlRewriter.Direction.IN, rule); value = output.toString(); } catch (URISyntaxException e) { LOG.failedToParseValueForUrlRewrite(value); } return value; }
private Template getSourceUrl() { Template urlTemplate = null; StringBuffer urlString = super.getRequestURL(); String queryString = super.getQueryString(); if (queryString != null) { urlString.append('?'); urlString.append(queryString); } try { urlTemplate = Parser.parse(urlString.toString()); } catch (URISyntaxException e) { LOG.failedToParseValueForUrlRewrite(urlString.toString()); // Shouldn't be possible given that the URL is constructed from parts of an existing URL. urlTemplate = null; } return urlTemplate; }