Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- * Copy response body data (the entity) from the proxy to the servlet client.
- * TODO: CACHE entity here for retrieval in filter
- */
- protected void copyResponseEntity( HttpResponse proxyResponse, HttpServletResponse servletResponse,
- HttpRequest proxyRequest, HttpServletRequest servletRequest ) throws IOException
- {
- HttpEntity entity = proxyResponse.getEntity();
- if ( entity != null )
- {
- String key = getCurrentUrlFromRequest( servletRequest ); // 1
- basicCache.getCache().put( key, proxyResponse.getEntity() ); // 2
- OutputStream servletOutputStream = servletResponse.getOutputStream();
- entity.writeTo( servletOutputStream );
- }
- }
- private FilterConfig filterConfig;
- @Autowired BasicCache basicCache;
- @Override
- public void doFilter( ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain )
- throws IOException, ServletException
- {
- String url = getCurrentUrlFromRequest( servletRequest ); // 1
- HttpEntity page = (HttpEntity) basicCache.getCache().get( url ); //2
- if ( null != page ) // 3
- {
- OutputStream servletOutputStream = servletResponse.getOutputStream(); // 4
- page.writeTo( servletOutputStream ); // 5 stream closed :(
- }
- else
- {
- filterChain.doFilter( servletRequest, servletResponse );
- }
- }
- public String getCurrentUrlFromRequest( ServletRequest request )
- {
- if ( !( request instanceof HttpServletRequest ) ) return null;
- return getCurrentUrlFromRequest( (HttpServletRequest) request );
- }
- public String getCurrentUrlFromRequest( HttpServletRequest request )
- {
- StringBuffer requestURL = request.getRequestURL();
- String queryString = request.getQueryString();
- if ( queryString == null ) return requestURL.toString();
- return requestURL.append( '?' ).append( queryString ).toString();
- }
- @Override
- public void destroy()
- {
- }
- @Override
- public void init( FilterConfig filterConfig ) throws ServletException
- {
- this.filterConfig = filterConfig;
- }
- private UserManagedCache<String, HttpEntity> userManagedCache;
- public BasicCache()
- {
- userManagedCache = UserManagedCacheBuilder.newUserManagedCacheBuilder( String.class, HttpEntity.class )
- .build( true );
- }
- public UserManagedCache getCache()
- {
- return userManagedCache;
- }
- public void destroy()
- {
- if ( null != userManagedCache )
- {
- userManagedCache.close();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement