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(); }
private void checkResponse(boolean proxyCacheable, int expectedTtl, String jsString, String... externs) { assertEquals(proxyCacheable, response.isProxyCacheable()); assertEquals(expectedTtl, response.getCacheTtlSecs()); assertEquals(jsString, response.build().toJsString()); for (String extern : externs) { assertTrue(response.build().getExterns().contains(extern)); } } }
private void checkResponse(boolean proxyCacheable, int expectedTtl, String jsString, String... externs) { assertEquals(proxyCacheable, response.isProxyCacheable()); assertEquals(expectedTtl, response.getCacheTtlSecs()); assertEquals(jsString, response.build().toJsString()); for (String extern : externs) { assertTrue(response.build().getExterns().contains(extern)); } } }
@Test public void testExterns() throws Exception { builder.appendExtern("b"); builder.appendExtern("b"); builder.appendExtern("c.d"); builder.appendExtern("c.d"); builder.appendExtern("e.prototype.f"); builder.appendExtern("e.prototype.f"); builder.appendRawExtern("var a"); String eee = builder.build().getExterns(); assertEquals( "var a;\n" + "var b = {};\n" + "var c = {};\nc.d = {};\n" + "var e = {};\ne.prototype.f = {};\n", builder.build().getExterns()); }
@Test public void testExterns() throws Exception { builder.appendExtern("b"); builder.appendExtern("b"); builder.appendExtern("c.d"); builder.appendExtern("c.d"); builder.appendExtern("e.prototype.f"); builder.appendExtern("e.prototype.f"); builder.appendRawExtern("var a"); String eee = builder.build().getExterns(); assertEquals( "var a;\n" + "var b = {};\n" + "var c = {};\nc.d = {};\n" + "var e = {};\ne.prototype.f = {};\n", builder.build().getExterns()); }
/** * Compile content in the inbound JsResponseBuilder. * TODO: Convert JsCompiler to take JsResponseBuilder directly rather than Iterable<JsContent> * @throws JsException */ public boolean process(JsRequest request, JsResponseBuilder builder) throws JsException { Iterable<JsContent> jsContents = builder.build().getAllJsContent(); for (JsContent jsc : jsContents) { FeatureBundle bundle = jsc.getFeatureBundle(); if (bundle != null) { builder.appendExterns(bundle.getApis(ApiDirective.Type.JS, true)); } } JsResponse result = compiler.compile(request.getJsUri(), jsContents, builder.build().getExterns()); builder.clearJs().appendAllJs(result.getAllJsContent()); builder.setStatusCode(result.getStatusCode()); builder.addErrors(result.getErrors()); int refresh = result.getCacheTtlSecs(); if (refresh > 0) { // Allow ttl overwrite by compiler builder.setCacheTtlSecs(refresh); } return true; }