/** * Returns the JavaScript code to serve. */ public String toJsString() { if (codeString == null) { StringBuilder sb = new StringBuilder(); for (JsContent js : getAllJsContent()) { sb.append(js.get()); } codeString = sb.toString(); } return codeString; }
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 boolean process(JsRequest jsRequest, JsResponseBuilder builder) { if (!jsRequest.getJsUri().cajoleContent()) { ImmutableList.Builder<JsContent> listBuilder = ImmutableList.builder(); for (JsContent js : builder.build().getAllJsContent()) { if (!isCajole(js)) { listBuilder.add(js); } } builder.clearJs().appendAllJs(listBuilder.build()); } return true; }
public boolean process(JsRequest jsRequest, JsResponseBuilder builder) { ImmutableList.Builder<JsContent> jsBuilder = ImmutableList.builder(); FeatureBundle lastFeature = null; for (JsContent js : builder.build().getAllJsContent()) { FeatureBundle feature = js.getFeatureBundle(); // Entering a new feature, from none/text. if (lastFeature == null && feature != null) { jsBuilder.add(newComment(feature, true)); // Entering a new feature, from another feature. } else if (lastFeature != null && feature != null && lastFeature != feature) { jsBuilder.add(newComment(lastFeature, false)); jsBuilder.add(newComment(feature, true)); // Entering a text, from a feature } else if (lastFeature != null && feature == null) { jsBuilder.add(newComment(lastFeature, false)); } jsBuilder.add(js); lastFeature = feature; } // If there is a last feature. if (lastFeature != null) { jsBuilder.add(newComment(lastFeature, false)); } builder.clearJs().appendAllJs(jsBuilder.build()); return true; }
public Boolean answer() throws Throwable { JsResponseBuilder builder = (JsResponseBuilder)getCurrentArguments()[1]; builder.appendAllJs(response.getAllJsContent()); return true; } });
private JsResponse mockJsResponse(String content) { JsResponse result = createMock(JsResponse.class); expect(result.toJsString()).andReturn(content).anyTimes(); expect(result.getAllJsContent()).andReturn(newJsContents(content)).anyTimes(); replay(result); return result; }
private JsResponse mockJsResponse(String content) { JsResponse result = createMock(JsResponse.class); expect(result.toJsString()).andReturn(content).anyTimes(); expect(result.getAllJsContent()).andReturn(newJsContents(content)).anyTimes(); replay(result); return result; }
public Boolean answer() throws Throwable { JsResponseBuilder builder = (JsResponseBuilder)getCurrentArguments()[1]; builder.appendAllJs(response.getAllJsContent()); return true; } });
public boolean process(JsRequest jsRequest, JsResponseBuilder builder) throws JsException { JsUri jsUri = jsRequest.getJsUri(); ImmutableList.Builder<JsContent> resp = ImmutableList.builder(); FeatureRegistry featureRegistry = getFeatureRegistry(jsUri); boolean needExports = false; FeatureBundle last = null; if (!jsUri.isJsload()) { for (JsContent jsc : builder.build().getAllJsContent()) { FeatureBundle current = jsc.getFeatureBundle(); if (last != null && current != last) { needExports |= appendExportJsStatements(resp, jsUri, last); } resp.add(jsc); last = current; } if (last != null) { needExports |= appendExportJsStatements(resp, jsUri, last); } } builder.clearJs(); if (needExports) { builder.appendAllJs(getSurfaceJsContents(featureRegistry, FEATURE_NAME)); } builder.appendAllJs(resp.build()); return true; }
@Test public void skipsEmptyContent() throws Exception { builder.appendJs("number 1", "num1"); builder.appendJs("", "num2"); builder.appendJs("number 3", "num3"); builder.prependJs("number 4", "num4"); builder.prependJs("", "num5"); Iterator<JsContent> allJsContent = builder.build().getAllJsContent().iterator(); assertEquals("num4", allJsContent.next().getSource()); assertEquals("num1", allJsContent.next().getSource()); assertEquals("num3", allJsContent.next().getSource()); assertFalse(allJsContent.hasNext()); } }
/** * 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; }
@Test public void skipsEmptyContent() throws Exception { builder.appendJs("number 1", "num1"); builder.appendJs("", "num2"); builder.appendJs("number 3", "num3"); builder.prependJs("number 4", "num4"); builder.prependJs("", "num5"); Iterator<JsContent> allJsContent = builder.build().getAllJsContent().iterator(); assertEquals("num4", allJsContent.next().getSource()); assertEquals("num1", allJsContent.next().getSource()); assertEquals("num3", allJsContent.next().getSource()); assertFalse(allJsContent.hasNext()); } }
@Test public void compilerIsRun() throws Exception { JsUri jsUri = control.createMock(JsUri.class); JsResponseBuilder builder = new JsResponseBuilder().setCacheTtlSecs(1234).setStatusCode(200) .appendJs("content1:", "source1") .appendJs("content2", "source2") .appendJs(JsContent.fromFeature("content3:", "source3", mockBundle("extern3"), null)) .appendJs(JsContent.fromFeature("content4:", "source4", mockBundle("extern4"), null)); JsResponse outputResponse = new JsResponseBuilder().appendJs("content3", "s3").build(); JsRequest request = control.createMock(JsRequest.class); expect(request.getJsUri()).andReturn(jsUri); expect(compiler.compile(same(jsUri), eq(builder.build().getAllJsContent()), isA(String.class))).andReturn(outputResponse); control.replay(); boolean status = processor.process(request, builder); control.verify(); assertTrue(status); JsResponse compResult = builder.build(); assertEquals(200, compResult.getStatusCode()); assertEquals(1234, compResult.getCacheTtlSecs()); assertEquals("content3", compResult.toJsString()); Iterator<JsContent> outIterator = compResult.getAllJsContent().iterator(); JsContent firstOut = outIterator.next(); assertEquals("content3", firstOut.get()); assertEquals("s3", firstOut.getSource()); assertFalse(outIterator.hasNext()); }
@Test public void compilerIsRun() throws Exception { JsUri jsUri = control.createMock(JsUri.class); JsResponseBuilder builder = new JsResponseBuilder().setCacheTtlSecs(1234).setStatusCode(200) .appendJs("content1:", "source1") .appendJs("content2", "source2") .appendJs(JsContent.fromFeature("content3:", "source3", mockBundle("extern3"), null)) .appendJs(JsContent.fromFeature("content4:", "source4", mockBundle("extern4"), null)); JsResponse outputResponse = new JsResponseBuilder().appendJs("content3", "s3").build(); JsRequest request = control.createMock(JsRequest.class); expect(request.getJsUri()).andReturn(jsUri); expect(compiler.compile(same(jsUri), eq(builder.build().getAllJsContent()), isA(String.class))).andReturn(outputResponse); control.replay(); boolean status = processor.process(request, builder); control.verify(); assertTrue(status); JsResponse compResult = builder.build(); assertEquals(200, compResult.getStatusCode()); assertEquals(1234, compResult.getCacheTtlSecs()); assertEquals("content3", compResult.toJsString()); Iterator<JsContent> outIterator = compResult.getAllJsContent().iterator(); JsContent firstOut = outIterator.next(); assertEquals("content3", firstOut.get()); assertEquals("s3", firstOut.getSource()); assertFalse(outIterator.hasNext()); }
@Test public void compilerTtlIsUsed() throws Exception { JsUri jsUri = control.createMock(JsUri.class); JsResponseBuilder builder = new JsResponseBuilder().setCacheTtlSecs(1234).setStatusCode(200) .appendJs("content1:", "source1"); JsResponse outputResponse = new JsResponseBuilder().setCacheTtlSecs(789) .appendJs("content3", "s3").build(); JsRequest request = control.createMock(JsRequest.class); expect(request.getJsUri()).andReturn(jsUri); expect(compiler.compile(same(jsUri), eq(builder.build().getAllJsContent()), isA(String.class))).andReturn(outputResponse); control.replay(); boolean status = processor.process(request, builder); control.verify(); JsResponse compResult = builder.build(); assertEquals(200, compResult.getStatusCode()); assertEquals(789, compResult.getCacheTtlSecs()); }
@Test public void compilerTtlIsUsed() throws Exception { JsUri jsUri = control.createMock(JsUri.class); JsResponseBuilder builder = new JsResponseBuilder().setCacheTtlSecs(1234).setStatusCode(200) .appendJs("content1:", "source1"); JsResponse outputResponse = new JsResponseBuilder().setCacheTtlSecs(789) .appendJs("content3", "s3").build(); JsRequest request = control.createMock(JsRequest.class); expect(request.getJsUri()).andReturn(jsUri); expect(compiler.compile(same(jsUri), eq(builder.build().getAllJsContent()), isA(String.class))).andReturn(outputResponse); control.replay(); boolean status = processor.process(request, builder); control.verify(); JsResponse compResult = builder.build(); assertEquals(200, compResult.getStatusCode()); assertEquals(789, compResult.getCacheTtlSecs()); }