protected JsRequest build(JsUri jsUri, String host, boolean inCache) { return new JsRequest(jsUri, host, inCache, registry); } }
@Test public void testCreateRequestNotInCache() throws Exception { EasyMock.expect(jsUriManager.processExternJsUri(EasyMock.isA(Uri.class))).andReturn(jsUri); EasyMock.expect(request.getHeader(HOST_HEADER_KEY)).andReturn(HOST); EasyMock.expect(request.getHeader(IMS_HEADER_KEY)).andReturn(null); control.replay(); JsRequest jsRequest = builder.build(request); control.verify(); assertSame(jsUri, jsRequest.getJsUri()); assertEquals(HOST, jsRequest.getHost()); assertFalse(jsRequest.isInCache()); }
private List<FeatureBundle> getSupportDeferBundles(FeatureRegistry registry, JsRequest jsRequest) { List<FeatureBundle> result = Lists.newArrayList(); LookupResult lookup = registry.getFeatureResources(context.get(), jsRequest.getNewFeatures(), null, false); for (FeatureBundle bundle : lookup.getBundles()) { if (bundle.isSupportDefer()) { result.add(bundle); } } return result; } }
control.replay(); JsRequest jsRequest = builder.build(request); assertSame(jsUri, jsRequest.getJsUri()); assertEquals(HOST, jsRequest.getHost()); assertEquals(allMatch, jsRequest.getAllFeatures()); assertEquals(loadedMatch, jsRequest.getLoadedFeatures()); assertEquals(newMatch, jsRequest.getNewFeatures());
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; }
private void checkNoMatchingFeaturesDoesNothing(RenderingContext ctx) throws Exception { JsResponseBuilder builder = prepareRequestReturnBuilder(ctx); Map<String, Object> baseConfig = Maps.newHashMap(); baseConfig.put("feature1", "config1"); Map<String, String> f2MapConfig = Maps.newHashMap(); f2MapConfig.put("key1", "val1"); f2MapConfig.put("key2", "val2"); baseConfig.put("feature2", f2MapConfig); expect(containerConfig.getMap(CONTAINER, ConfigInjectionProcessor.GADGETS_FEATURES_KEY)) .andReturn(baseConfig); List<String> libs = ImmutableList.of("lib1", "lib2"); expect(jsUri.getLibs()).andReturn(libs); expect(jsUri.getLoadedLibs()).andReturn(EMPTY_LIST); expect(registry.getFeatures(libs)).andReturn(libs); expect(request.getHost()).andReturn("host"); control.replay(); assertTrue(processor.process(request, builder)); control.verify(); assertEquals(BASE_CODE, builder.build().toJsString()); }
public boolean process(JsRequest request, JsResponseBuilder builder) throws JsException { JsUri jsUri = request.getJsUri(); GadgetContext ctx = new JsGadgetContext(jsUri); FeatureRegistry registry; try { registry = registryProvider.get(jsUri.getRepository()); } catch (GadgetException e) { throw new JsException(e.getHttpStatusCode(), e.getMessage()); } // Append gadgets.config initialization if not in standard gadget mode. if (ctx.getRenderingContext() != RenderingContext.GADGET) { List<String> allReq = registry.getFeatures(jsUri.getLibs()); Collection<String> loaded = jsUri.getLoadedLibs(); // Only inject config for features not already present and configured. List<String> newReq = subtractCollection(allReq, loaded); Map<String, Object> config = configProcessor.getConfig( ctx.getContainer(), newReq, request.getHost(), null); if (!config.isEmpty()) { String configJson = JsonSerializer.serialize(config); if (allReq.contains(CONFIG_FEATURE) || loaded.contains(CONFIG_FEATURE)) { // config lib is present: pass it data injectBaseConfig(configJson, builder); } else { // config lib not available: use global variable injectGlobalConfig(configJson, builder); } } } return true; }
@Test public void testDoesNothingAndContinuesProcessingWhenHeaderIsAbsent() throws Exception { EasyMock.expect(request.isInCache()).andReturn(false); control.replay(); assertTrue(processor.process(request, response)); control.verify(); }
/** * @return Features to be newly returned by this request (all - loaded), in dep order. */ public List<String> getNewFeatures() { initFeaturesLists(); return newFeatures; }
control.replay(); JsRequest jsRequest = builder.build(request); assertSame(jsUri, jsRequest.getJsUri()); assertEquals(HOST, jsRequest.getHost()); assertEquals(allMatch, jsRequest.getAllFeatures()); assertEquals(loadedMatch, jsRequest.getLoadedFeatures()); assertEquals(newMatch, jsRequest.getNewFeatures());
public boolean process(JsRequest jsRequest, JsResponseBuilder builder) { JsUri jsUri = jsRequest.getJsUri(); if (!jsUri.isNohint()) { String features = getFeatures(jsUri); builder.prependJs(String.format(FEATURES_HINT_TEMPLATE, features), CODE_ID, true); builder.prependJs(BASE_HINT_TEMPLATE, CODE_ID); } return true; }
@Test public void testDoesNothingAndContinuesProcessingWhenNotVersioned() throws Exception { EasyMock.expect(request.isInCache()).andReturn(true); EasyMock.expect(request.getJsUri()).andReturn(jsUri); EasyMock.expect(jsUri.getStatus()).andReturn(UriStatus.VALID_UNVERSIONED); control.replay(); assertTrue(processor.process(request, response)); control.verify(); }
private void checkNoMatchingFeaturesDoesNothing(RenderingContext ctx) throws Exception { JsResponseBuilder builder = prepareRequestReturnBuilder(ctx); Map<String, Object> baseConfig = Maps.newHashMap(); baseConfig.put("feature1", "config1"); Map<String, String> f2MapConfig = Maps.newHashMap(); f2MapConfig.put("key1", "val1"); f2MapConfig.put("key2", "val2"); baseConfig.put("feature2", f2MapConfig); expect(containerConfig.getMap(CONTAINER, ConfigInjectionProcessor.GADGETS_FEATURES_KEY)) .andReturn(baseConfig); List<String> libs = ImmutableList.of("lib1", "lib2"); expect(jsUri.getLibs()).andReturn(libs); expect(jsUri.getLoadedLibs()).andReturn(EMPTY_LIST); expect(registry.getFeatures(libs)).andReturn(libs); expect(request.getHost()).andReturn("host"); control.replay(); assertTrue(processor.process(request, builder)); control.verify(); assertEquals(BASE_CODE, builder.build().toJsString()); }
@Test public void testDoesNothingAndContinuesProcessingWhenHeaderIsAbsent() throws Exception { EasyMock.expect(request.isInCache()).andReturn(false); control.replay(); assertTrue(processor.process(request, response)); control.verify(); }
/** * @return Full list of all features previously loaded before this request, in dep order. */ public List<String> getLoadedFeatures() { initFeaturesLists(); return loadedFeatures; }
@Test public void testCreateRequestInCache() throws Exception { EasyMock.expect(jsUriManager.processExternJsUri(EasyMock.isA(Uri.class))).andReturn(jsUri); EasyMock.expect(request.getHeader(HOST_HEADER_KEY)).andReturn(HOST); EasyMock.expect(request.getHeader(IMS_HEADER_KEY)).andReturn("today"); control.replay(); JsRequest jsRequest = builder.build(request); control.verify(); assertSame(jsUri, jsRequest.getJsUri()); assertEquals(HOST, jsRequest.getHost()); assertTrue(jsRequest.isInCache()); }
public boolean process(JsRequest jsRequest, JsResponseBuilder builder) throws JsException { if (jsRequest.getJsUri().getCompileMode() != JsCompileMode.COMPILE_CONCAT) { builder.prependJs("(function(){", "[js-anon-wrapper]"); builder.appendJs("})();", "[js-anon-wrapper]"); } return true; } }
@Test public void testDoesNothingAndContinuesProcessingWhenNotVersioned() throws Exception { EasyMock.expect(request.isInCache()).andReturn(true); EasyMock.expect(request.getJsUri()).andReturn(jsUri); EasyMock.expect(jsUri.getStatus()).andReturn(UriStatus.VALID_UNVERSIONED); control.replay(); assertTrue(processor.process(request, response)); control.verify(); }
@Test public void processWithOneNonEmptyFeatureDeferred() throws Exception { JsUri jsUri = mockJsUri(JsCompileMode.CONCAT_COMPILE_EXPORT_ALL, true, LIBS_WITH_DEFER); JsRequest jsRequest = new JsRequest(jsUri, null, false, featureRegistry); JsResponseBuilder jsBuilder = new JsResponseBuilder(); boolean actualReturnCode = processor.process(jsRequest, jsBuilder); assertTrue(actualReturnCode); assertEquals( DEFER_JS_DEB + EXPORT_STRING_1_DEFER, jsBuilder.build().toJsString()); }