/** * 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 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()); }
@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()); }