/** * Construct. * * @param settings the webjars settings to use */ public WebjarsResourceFinder(IWebjarsSettings settings) { this.settings = settings; this.locator = newFullPathProvider(); this.resourceStreamProvider = settings.resourceStreamProvider().newInstance(settings.classLoaders()); int _hashCode = locator != null ? locator.hashCode() : 0; this.hashCode = 31 * (_hashCode + settings.hashCode()); }
/** * Looks for a given path name along the webjars root path * * @param clazz The class requesting the resource stream * @param pathName The filename with possible path * @return The resource stream */ @Override public IResourceStream find(final Class<?> clazz, final String pathName) { IResourceStream stream = null; if (clazz != null && IWebjarsResourceReference.class.isAssignableFrom(clazz)) { final int pos = pathName != null ? pathName.lastIndexOf(Helper.PATH_PREFIX) : -1; if (pos > -1) { try { final String webjarsPath = locator.getFullPath(pathName.substring(pos)); LOG.debug("webjars path: {}", webjarsPath); stream = newResourceStream(webjarsPath); } catch (Exception e) { LOG.debug("can't locate resource for: {}; {}", pathName, e.getMessage()); } if (stream == null) { LOG.debug("there is no webjars resource for: {}", pathName); } } } return stream; }
public static void reindex(final WebApplication application) { final List<IResourceFinder> resourceFinders = application.getResourceSettings().getResourceFinders(); for (IResourceFinder resourceFinder : resourceFinders) { if (resourceFinder instanceof WebjarsResourceFinder) { WebjarsVersion.reset(); WebjarsResourceFinder webjarsResourceFinder = (WebjarsResourceFinder) resourceFinder; webjarsResourceFinder.reindex(); break; } } }
/** * https://github.com/l0rdn1kk0n/wicket-webjars/issues/20 * * Return {@code null} for missing resources */ @Test public void findWithNullScope() { WebjarsResourceFinder finder = new WebjarsResourceFinder(WicketWebjars.settings()); assertNull(finder.find(null, "non existing")); }
/** * installs the webjars resource finder * * @param app the wicket application * @param settings the settings to use */ public static void install(WebApplication app, IWebjarsSettings settings) { final IWebjarsSettings existingSettings = settings(app); if (existingSettings == null) { if (settings == null) { settings = new WebjarsSettings(); } app.setMetaData(WEBJARS_SETTINGS_METADATA_KEY, settings); if (settings.useCdnResources()) { mountCDNMapper(app, settings.cdnUrl()); } final List<IResourceFinder> finders = app.getResourceSettings().getResourceFinders(); final WebjarsResourceFinder finder = new WebjarsResourceFinder(settings); if (!finders.contains(finder)) { finders.add(finder); } LOG.info("initialize wicket webjars with given settings: {}", settings); } }
/** * https://github.com/l0rdn1kk0n/wicket-bootstrap/issues/280 * * Return {@code null} for missing resources */ @Test public void findNonExistingFile() { WebjarsResourceFinder finder = new WebjarsResourceFinder(WicketWebjars.settings()); assertNull(finder.find(String.class, "non existing")); }
/** * installs the webjars resource finder * * @param app the wicket application * @param settings the settings to use */ public static void install(WebApplication app, IWebjarsSettings settings) { final IWebjarsSettings existingSettings = settings(app); if (existingSettings == null) { if (settings == null) { settings = new WebjarsSettings(); } app.setMetaData(WEBJARS_SETTINGS_METADATA_KEY, settings); if (settings.useCdnResources()) { mountCDNMapper(app, settings.cdnUrl()); } final List<IResourceFinder> finders = app.getResourceSettings().getResourceFinders(); final WebjarsResourceFinder finder = new WebjarsResourceFinder(settings); if (!finders.contains(finder)) { finders.add(finder); } LOG.info("initialize wicket webjars with given settings: {}", settings); } }
@Test public void findOnGAE() throws ResourceStreamNotFoundException, IOException { System.setProperty("com.google.appengine.runtime.environment", "Production"); WebjarsResourceFinder finder = new WebjarsResourceFinder(WicketWebjars.settings()); IResourceStream stream = finder.find(IWebjarsResourceReference.class, "/webjars/jquery/2.2.1/jquery.min.js"); System.setProperty("com.google.appengine.runtime.environment", ""); assertThat(stream, is(not(nullValue()))); assertThat(IOUtils.toString(stream.getInputStream()), startsWith("/*! jQuery v2.2.1")); }
public static void reindex(final WebApplication application) { final List<IResourceFinder> resourceFinders = application.getResourceSettings().getResourceFinders(); for (IResourceFinder resourceFinder : resourceFinders) { if (resourceFinder instanceof WebjarsResourceFinder) { WebjarsVersion.reset(); WebjarsResourceFinder webjarsResourceFinder = (WebjarsResourceFinder) resourceFinder; webjarsResourceFinder.reindex(); break; } } }
/** * Construct. * * @param settings the webjars settings to use */ public WebjarsResourceFinder(IWebjarsSettings settings) { this.settings = settings; this.locator = newFullPathProvider(); this.resourceStreamProvider = settings.resourceStreamProvider().newInstance(settings.classLoaders()); int _hashCode = locator != null ? locator.hashCode() : 0; this.hashCode = 31 * (_hashCode + settings.hashCode()); }
/** * Looks for a given path name along the webjars root path * * @param clazz The class requesting the resource stream * @param pathName The filename with possible path * @return The resource stream */ @Override public IResourceStream find(final Class<?> clazz, final String pathName) { IResourceStream stream = null; if (clazz != null && IWebjarsResourceReference.class.isAssignableFrom(clazz)) { String versionnedName = WebjarsVersion.useRecent(pathName); final int pos = versionnedName != null ? versionnedName.lastIndexOf(Helper.PATH_PREFIX) : -1; if (pos > -1) { try { final String webjarsPath = locator.getFullPath(versionnedName.substring(pos)); LOG.debug("webjars path: {}", webjarsPath); stream = newResourceStream(webjarsPath); } catch (Exception e) { LOG.debug("can't locate resource for: {} (actual name {}); {}", pathName, versionnedName, e.getMessage()); } if (stream == null) { LOG.debug("there is no webjars resource for: {} (actual name {})", pathName, versionnedName); } } } return stream; }
@Test public void findFile() throws ResourceStreamNotFoundException, IOException { WebjarsResourceFinder finder = new WebjarsResourceFinder(WicketWebjars.settings()); IResourceStream stream = finder.find(IWebjarsResourceReference.class, "/webjars/jquery/2.2.1/jquery.min.js"); assertThat(stream, is(not(nullValue()))); assertThat(IOUtils.toString(stream.getInputStream()), startsWith("/*! jQuery v2.2.1")); }
@Test public void findFileWithoutVersion() throws ResourceStreamNotFoundException, IOException { WebjarsResourceFinder finder = new WebjarsResourceFinder(WicketWebjars.settings()); IResourceStream stream = finder.find(IWebjarsResourceReference.class, useRecent("/webjars/jquery/current/jquery.min.js")); assertThat(stream, is(not(nullValue()))); assertThat(IOUtils.toString(stream.getInputStream()), startsWith("/*! jQuery v2.2.1")); }