private void initFeaturesLists() { if (allFeatures == null) { // Lazy-initialize these, to avoid computation where not needed. allFeatures = registry.getFeatures(jsUri.getLibs()); loadedFeatures = registry.getFeatures(jsUri.getLoadedLibs()); newFeatures = Lists.newLinkedList(); for (String candidate : allFeatures) { if (!loadedFeatures.contains(candidate)) { newFeatures.add(candidate); } } } } }
private JsUri mockJsUri(JsCompileMode mode, boolean isJsload, List<String> libs) { JsUri result = createMock(JsUri.class); expect(result.getCompileMode()).andStubReturn(mode); expect(result.getRepository()).andStubReturn(null); expect(result.isJsload()).andReturn(isJsload).anyTimes(); expect(result.getLibs()).andReturn(libs).anyTimes(); expect(result.getLoadedLibs()).andReturn(LOADED).anyTimes(); replay(result); return result; }
protected final List<String> getExports(FeatureBundle bundle, JsUri jsUri) { // Add exports of bundle, regardless. if (jsUri.getCompileMode() == JsCompileMode.CONCAT_COMPILE_EXPORT_ALL) { return bundle.getApis(ApiDirective.Type.JS, true); // Add exports of bundle if it is an explicitly-specified feature. } else if (jsUri.getCompileMode() == JsCompileMode.CONCAT_COMPILE_EXPORT_EXPLICIT) { if (jsUri.getLibs().contains(bundle.getName())) { return bundle.getApis(ApiDirective.Type.JS, true); } } return Lists.newArrayList(); }
@Test public void processValidUnversionedNoParam() throws GadgetException { String targetHost = "target-host.org"; ContainerConfig config = mockConfig("http://" + targetHost, "/gadgets/js"); List<String> extern = Lists.newArrayList("feature", "another"); String version = "verstring"; JsUri ctx = mockGadgetContext(false, false, extern); Versioner versioner = mockVersioner(ctx, version, version); TestDefaultJsUriManager manager = makeManager(config, versioner); Uri testUri = Uri.parse("http://target-host.org/gadgets/js/" + addJsLibs(extern) + JS_SUFFIX + '?' + Param.CONTAINER.getKey() + '=' + CONTAINER); JsUri jsUri = manager.processExternJsUri(testUri); assertFalse(manager.hadError()); assertEquals(jsUri.getStatus(), UriStatus.VALID_UNVERSIONED); assertCollectionEquals(jsUri.getLibs(), extern); }
@Test public void processValidUnversionedNoVersioner() throws GadgetException { String targetHost = "target-host.org"; ContainerConfig config = mockConfig("http://" + targetHost, "/gadgets/js"); List<String> extern = Lists.newArrayList("feature", "another"); String version = "verstring"; TestDefaultJsUriManager manager = makeManager(config, null); Uri testUri = Uri.parse("http://target-host.org/gadgets/js/" + addJsLibs(extern) + JS_SUFFIX + '?' + Param.CONTAINER.getKey() + '=' + CONTAINER + '&' + Param.VERSION.getKey() + '=' + version); JsUri jsUri = manager.processExternJsUri(testUri); assertFalse(manager.hadError()); assertEquals(jsUri.getStatus(), UriStatus.VALID_UNVERSIONED); assertCollectionEquals(jsUri.getLibs(), extern); }
@Test public void processValidVersioned() throws GadgetException { String targetHost = "target-host.org"; ContainerConfig config = mockConfig("http://" + targetHost, "/gadgets/js"); List<String> extern = Lists.newArrayList("feature", "another"); String version = "verstring"; Versioner versioner = mockVersioner(extern, version, version); TestDefaultJsUriManager manager = makeManager(config, versioner); Uri testUri = Uri.parse("http://target-host.org/gadgets/js/" + addJsLibs(extern) + JS_SUFFIX + '?' + Param.CONTAINER.getKey() + '=' + CONTAINER + '&' + Param.VERSION.getKey() + '=' + version); JsUri jsUri = manager.processExternJsUri(testUri); assertFalse(manager.hadError()); assertEquals(jsUri.getStatus(), UriStatus.VALID_VERSIONED); assertCollectionEquals(jsUri.getLibs(), extern); }
@Test public void processPathWithLoadedJs() throws GadgetException { ContainerConfig config = mockConfig("http://host", "/gadgets/js"); TestDefaultJsUriManager manager = makeManager(config, null); Uri testUri = Uri.parse("http://host/gadgets/js/feature:another!load1:load2.js?" + Param.LOADED.getKey() + "=load3:load4&" + Param.CONTAINER.getKey() + '=' + CONTAINER); JsUri jsUri = manager.processExternJsUri(testUri); assertFalse(manager.hadError()); List<String> extern = Lists.newArrayList("feature", "another"); assertCollectionEquals(jsUri.getLibs(), extern); assertCollectionEquals(jsUri.getLoadedLibs(), Lists.newArrayList( "load1", "load2", "load3", "load4")); }
private void checkNoFeaturesDoesNothing(RenderingContext ctx) throws Exception { JsResponseBuilder builder = prepareRequestReturnBuilder(ctx); expect(containerConfig.getMap(CONTAINER, ConfigInjectionProcessor.GADGETS_FEATURES_KEY)) .andReturn(null); List<String> libs = ImmutableList.of(); 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 processValidUnversionedNoParam() throws GadgetException { String targetHost = "target-host.org"; ContainerConfig config = mockConfig("http://" + targetHost, "/gadgets/js"); List<String> extern = Lists.newArrayList("feature", "another"); String version = "verstring"; Versioner versioner = mockVersioner(extern, version, version); TestDefaultJsUriManager manager = makeManager(config, versioner); Uri testUri = Uri.parse("http://target-host.org/gadgets/js/" + addJsLibs(extern) + JS_SUFFIX + '?' + Param.CONTAINER.getKey() + '=' + CONTAINER); JsUri jsUri = manager.processExternJsUri(testUri); assertFalse(manager.hadError()); assertEquals(jsUri.getStatus(), UriStatus.VALID_UNVERSIONED); assertCollectionEquals(jsUri.getLibs(), extern); }
@Test public void processValidUnversionedNoVersioner() throws GadgetException { String targetHost = "target-host.org"; ContainerConfig config = mockConfig("http://" + targetHost, "/gadgets/js"); List<String> extern = Lists.newArrayList("feature", "another"); String version = "verstring"; TestDefaultJsUriManager manager = makeManager(config, null); Uri testUri = Uri.parse("http://target-host.org/gadgets/js/" + addJsLibs(extern) + JS_SUFFIX + '?' + Param.CONTAINER.getKey() + '=' + CONTAINER + '&' + Param.VERSION.getKey() + '=' + version); JsUri jsUri = manager.processExternJsUri(testUri); assertFalse(manager.hadError()); assertEquals(jsUri.getStatus(), UriStatus.VALID_UNVERSIONED); assertCollectionEquals(jsUri.getLibs(), extern); }
@Test public void processPathWithLoadedJs() throws GadgetException { ContainerConfig config = mockConfig("http://host", "/gadgets/js"); TestDefaultJsUriManager manager = makeManager(config, null); Uri testUri = Uri.parse("http://host/gadgets/js/feature:another!load1:load2.js?" + Param.LOADED.getKey() + "=load3:load4&" + Param.CONTAINER.getKey() + '=' + CONTAINER); JsUri jsUri = manager.processExternJsUri(testUri); assertFalse(manager.hadError()); List<String> extern = Lists.newArrayList("feature", "another"); assertCollectionEquals(jsUri.getLibs(), extern); assertCollectionEquals(jsUri.getLoadedLibs(), Lists.newArrayList( "load1", "load2", "load3", "load4")); }
public Uri makeExternJsUri(JsUri ctx) { return Uri.parse("/js/" + Joiner.on(':').join(ctx.getLibs())); }
@Test public void processPathSuffixNoJs() throws GadgetException { String targetHost = "target-host.org"; ContainerConfig config = mockConfig("http://" + targetHost, "/gadgets/js"); TestDefaultJsUriManager manager = makeManager(config, null); Uri testUri = Uri.parse("http://target-host.org/gadgets/js/feature:another?" + Param.CONTAINER.getKey() + '=' + CONTAINER); JsUri jsUri = manager.processExternJsUri(testUri); assertFalse(manager.hadError()); assertEquals(jsUri.getStatus(), UriStatus.VALID_UNVERSIONED); List<String> extern = Lists.newArrayList("feature", "another"); assertCollectionEquals(jsUri.getLibs(), extern); }
@Test public void processPathWithEncodedSeparator() throws GadgetException { String targetHost = "target-host.org"; ContainerConfig config = mockConfig("http://" + targetHost, "/gadgets/js"); TestDefaultJsUriManager manager = makeManager(config, null); Uri testUri = Uri.parse("http://target-host.org/gadgets/js/feature%3Aanother?" + Param.CONTAINER.getKey() + '=' + CONTAINER); JsUri jsUri = manager.processExternJsUri(testUri); assertFalse(manager.hadError()); assertEquals(jsUri.getStatus(), UriStatus.VALID_UNVERSIONED); List<String> extern = Lists.newArrayList("feature", "another"); assertCollectionEquals(jsUri.getLibs(), extern); }
@Test public void processPathWithEncodedSeparator() throws GadgetException { String targetHost = "target-host.org"; ContainerConfig config = mockConfig("http://" + targetHost, "/gadgets/js"); TestDefaultJsUriManager manager = makeManager(config, null); Uri testUri = Uri.parse("http://target-host.org/gadgets/js/feature%3Aanother?" + Param.CONTAINER.getKey() + '=' + CONTAINER); JsUri jsUri = manager.processExternJsUri(testUri); assertFalse(manager.hadError()); assertEquals(jsUri.getStatus(), UriStatus.VALID_UNVERSIONED); List<String> extern = Lists.newArrayList("feature", "another"); assertCollectionEquals(jsUri.getLibs(), extern); }
private void checkNoFeaturesDoesNothing(RenderingContext ctx) throws Exception { JsResponseBuilder builder = prepareRequestReturnBuilder(ctx); expect(containerConfig.getMap(CONTAINER, ConfigInjectionProcessor.GADGETS_FEATURES_KEY)) .andReturn(null); List<String> libs = ImmutableList.of(); 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 Uri makeExternJsUri(JsUri ctx) { return Uri.parse("/js/" + Joiner.on(':').join(ctx.getLibs())); }
@Test public void processPathSuffixNoJs() throws GadgetException { String targetHost = "target-host.org"; ContainerConfig config = mockConfig("http://" + targetHost, "/gadgets/js"); TestDefaultJsUriManager manager = makeManager(config, null); Uri testUri = Uri.parse("http://target-host.org/gadgets/js/feature:another?" + Param.CONTAINER.getKey() + '=' + CONTAINER); JsUri jsUri = manager.processExternJsUri(testUri); assertFalse(manager.hadError()); assertEquals(jsUri.getStatus(), UriStatus.VALID_UNVERSIONED); List<String> extern = Lists.newArrayList("feature", "another"); assertCollectionEquals(jsUri.getLibs(), extern); }
@Test public void processPathSuffixNoJs() throws GadgetException { String targetHost = "target-host.org"; ContainerConfig config = mockConfig("http://" + targetHost, "/gadgets/js"); TestDefaultJsUriManager manager = makeManager(config, null); Uri testUri = Uri.parse("http://target-host.org/gadgets/js/feature:another?" + Param.CONTAINER.getKey() + '=' + CONTAINER); JsUri jsUri = manager.processExternJsUri(testUri); assertFalse(manager.hadError()); assertEquals(jsUri.getStatus(), UriStatus.VALID_UNVERSIONED); List<String> extern = Lists.newArrayList("feature", "another"); assertCollectionEquals(jsUri.getLibs(), extern); }
private JsUri mockJsUri(JsCompileMode mode, boolean isJsload, List<String> libs) { JsUri result = createMock(JsUri.class); expect(result.getCompileMode()).andStubReturn(mode); expect(result.getRepository()).andStubReturn(null); expect(result.isJsload()).andReturn(isJsload).anyTimes(); expect(result.getLibs()).andReturn(libs).anyTimes(); expect(result.getLoadedLibs()).andReturn(LOADED).anyTimes(); replay(result); return result; }