@Inject public void setRenderer(Renderer renderer) { checkInitialized(); this.renderer = renderer; }
@Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException { render(req, resp, getUrlStatus(req)); }
/** * Implementations that extend this class are strongly discouraged from overriding this method. * To customize the behavior please override the hook methods for each of the * RenderingResults.Status enum values instead. */ protected void postGadgetRendering(PostGadgetRenderingParams params) throws IOException { switch (params.getResults().getStatus()) { case OK: onOkRenderingResultsStatus(params); break; case ERROR: onErrorRenderingResultsStatus(params); break; case MUST_REDIRECT: onMustRedirectRenderingResultsStatus(params); break; } }
@Test public void refreshParameter_specified() throws Exception { servlet.setRenderer(renderer); expect(request.getParameter("refresh")).andReturn("1000"); expect(renderer.render(isA(GadgetContext.class))) .andReturn(RenderingResults.ok("working")); control.replay(); servlet.doGet(request, recorder); assertEquals("private,max-age=1000", recorder.getHeader("Cache-Control")); }
@Test public void dosHeaderRejected() throws Exception { expect(request.getHeader(HttpRequest.DOS_PREVENTION_HEADER)).andReturn("foo"); control.replay(); servlet.doGet(request, recorder); assertEquals(HttpServletResponse.SC_FORBIDDEN, recorder.getHttpStatusCode()); }
@Before public void setUpUrlGenerator() { expect(iframeUriManager.validateRenderingUri(isA(Uri.class))).andReturn(UriStatus.VALID_UNVERSIONED); expect(request.getRequestURL()).andReturn(new StringBuffer("http://foo.com")); expect(request.getQueryString()).andReturn("?q=a"); servlet.setIframeUriManager(iframeUriManager); }
private void render(HttpServletRequest req, HttpServletResponse resp, UriStatus urlstatus) throws IOException { if (req.getHeader(HttpRequest.DOS_PREVENTION_HEADER) != null) { // Refuse to render for any request that came from us. // TODO: Is this necessary for any other type of request? Rendering seems to be the only one // that can potentially result in an infinite loop. resp.sendError(HttpServletResponse.SC_FORBIDDEN); return; } resp.setContentType("text/html"); resp.setCharacterEncoding("UTF-8"); GadgetContext context = new HttpGadgetContext(req); RenderingResults results = renderer.render(context); // process the rendering results postGadgetRendering(new PostGadgetRenderingParams(req, resp, urlstatus, context, results)); }
@Test public void refreshParameter_specified() throws Exception { servlet.setRenderer(renderer); expect(request.getParameter("refresh")).andReturn("1000"); expect(renderer.render(isA(GadgetContext.class))) .andReturn(RenderingResults.ok("working")); control.replay(); servlet.doGet(request, recorder); assertEquals("private,max-age=1000", recorder.getHeader("Cache-Control")); }
@Test public void dosHeaderRejected() throws Exception { expect(request.getHeader(HttpRequest.DOS_PREVENTION_HEADER)).andReturn("foo"); control.replay(); servlet.doGet(request, recorder); assertEquals(HttpServletResponse.SC_FORBIDDEN, recorder.getHttpStatusCode()); }
@Before public void setUpUrlGenerator() { expect(iframeUriManager.validateRenderingUri(isA(Uri.class))).andReturn(UriStatus.VALID_UNVERSIONED); expect(request.getRequestURL()).andReturn(new StringBuffer("http://foo.com")); expect(request.getQueryString()).andReturn("?q=a"); servlet.setIframeUriManager(iframeUriManager); }
private void render(HttpServletRequest req, HttpServletResponse resp, UriStatus urlstatus) throws IOException { if (req.getHeader(HttpRequest.DOS_PREVENTION_HEADER) != null) { // Refuse to render for any request that came from us. // TODO: Is this necessary for any other type of request? Rendering seems to be the only one // that can potentially result in an infinite loop. resp.sendError(HttpServletResponse.SC_FORBIDDEN); return; } resp.setContentType("text/html"); resp.setCharacterEncoding("UTF-8"); GadgetContext context = new HttpGadgetContext(req); RenderingResults results = renderer.render(context); // process the rendering results postGadgetRendering(new PostGadgetRenderingParams(req, resp, urlstatus, context, results)); }
@Test public void refreshParameter_specified() throws Exception { servlet.setRenderer(renderer); expect(request.getParameter("refresh")).andReturn("1000"); expect(renderer.render(isA(GadgetContext.class))) .andReturn(RenderingResults.ok("working")); control.replay(); servlet.doGet(request, recorder); assertEquals("private,max-age=1000", recorder.getHeader("Cache-Control")); }
/** * Implementations that extend this class are strongly discouraged from overriding this method. * To customize the behavior please override the hook methods for each of the * RenderingResults.Status enum values instead. */ protected void postGadgetRendering(PostGadgetRenderingParams params) throws IOException { switch (params.getResults().getStatus()) { case OK: onOkRenderingResultsStatus(params); break; case ERROR: onErrorRenderingResultsStatus(params); break; case MUST_REDIRECT: onMustRedirectRenderingResultsStatus(params); break; } }
@Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException { render(req, resp, getUrlStatus(req)); }
@Inject public void setIframeUriManager(IframeUriManager iframeUriManager) { checkInitialized(); this.iframeUriManager = iframeUriManager; }
@Test public void dosHeaderRejected() throws Exception { expect(request.getHeader(HttpRequest.DOS_PREVENTION_HEADER)).andReturn("foo"); control.replay(); servlet.doGet(request, recorder); assertEquals(HttpServletResponse.SC_FORBIDDEN, recorder.getHttpStatusCode()); }
@Before public void setUpUrlGenerator() { expect(iframeUriManager.validateRenderingUri(isA(Uri.class))).andReturn(UriStatus.VALID_UNVERSIONED); expect(request.getRequestURL()).andReturn(new StringBuffer("http://foo.com")); expect(request.getQueryString()).andReturn("?q=a"); servlet.setIframeUriManager(iframeUriManager); }
private void render(HttpServletRequest req, HttpServletResponse resp, UriStatus urlstatus) throws IOException { if (req.getHeader(HttpRequest.DOS_PREVENTION_HEADER) != null) { // Refuse to render for any request that came from us. // TODO: Is this necessary for any other type of request? Rendering seems to be the only one // that can potentially result in an infinite loop. resp.sendError(HttpServletResponse.SC_FORBIDDEN); return; } resp.setContentType("text/html"); resp.setCharacterEncoding("UTF-8"); GadgetContext context = new HttpGadgetContext(req); RenderingResults results = renderer.render(context); // process the rendering results postGadgetRendering(new PostGadgetRenderingParams(req, resp, urlstatus, context, results)); }
@Test public void renderWithTtl() throws Exception { servlet.setRenderer(renderer); expect(renderer.render(isA(GadgetContext.class))) .andReturn(RenderingResults.ok("working")); expect(request.getParameter(Param.REFRESH.getKey())).andReturn("120"); control.replay(); servlet.doGet(request, recorder); assertEquals("private,max-age=120", recorder.getHeader("Cache-Control")); }
/** * Implementations that extend this class are strongly discouraged from overriding this method. * To customize the behavior please override the hook methods for each of the * RenderingResults.Status enum values instead. */ protected void postGadgetRendering(PostGadgetRenderingParams params) throws IOException { switch (params.getResults().getStatus()) { case OK: onOkRenderingResultsStatus(params); break; case ERROR: onErrorRenderingResultsStatus(params); break; case MUST_REDIRECT: onMustRedirectRenderingResultsStatus(params); break; } }