protected void emitJsResponse(JsResponse jsResponse, HttpServletRequest req, HttpServletResponse resp) throws IOException { if (jsResponse.getStatusCode() == HttpServletResponse.SC_NOT_MODIFIED) { resp.setStatus(HttpServletResponse.SC_NOT_MODIFIED); cachingSetter.setCachingHeaders( resp, jsResponse.getCacheTtlSecs(), !jsResponse.isProxyCacheable()); return; } if (jsResponse.getStatusCode() == HttpServletResponse.SC_OK && jsResponse.toJsString().length() == 0) { resp.setStatus(HttpServletResponse.SC_NOT_FOUND); return; } cachingSetter.setCachingHeaders( resp, jsResponse.getCacheTtlSecs(), !jsResponse.isProxyCacheable()); resp.setStatus(jsResponse.getStatusCode()); resp.setContentType("text/javascript; charset=utf-8"); byte[] response = CharsetUtil.getUtf8Bytes(jsResponse.toJsString()); resp.setContentLength(response.length); resp.getOutputStream().write(response); } }
public JsResponseBuilder(JsResponse response) { this(); if (response.getAllJsContent() != null) { jsCode.addAll(Lists.newArrayList(response.getAllJsContent())); } if (response.getErrors() != null) { errors.addAll(Lists.newArrayList(response.getErrors())); } if (response.getExterns() != null) { rawExterns.append(response.getExterns()); } statusCode = response.getStatusCode(); cacheTtlSecs = response.getCacheTtlSecs(); proxyCacheable = response.isProxyCacheable(); }
public GadgetsHandlerApi.JsResponse getJs(GadgetsHandlerApi.JsRequest request) throws ProcessingException { verifyBaseParams(request, false); Set<String> fields = beanFilter.processBeanFields(request.getFields()); JsUri jsUri = createJsUri(request); Uri servedUri = jsUriManager.makeExternJsUri(jsUri); String content = null; Long expireMs = null; if (isFieldIncluded(fields, "jsContent")) { JsResponse response; try { response = jsPipeline.execute(jsRequestBuilder.build(jsUri, servedUri.getAuthority())); } catch (JsException e) { throw new ProcessingException(e.getMessage(), e.getStatusCode()); } content = response.toJsString(); if (response.isProxyCacheable()) { expireMs = getDefaultExpiration(); } } else { expireMs = getDefaultExpiration(); } return createJsResponse(request.getUrl(), servedUri, content, fields, expireMs); }