@Override public Collection<Import> apply(final String url, final Import previous) { String fname = nameWithExtension(url); List<String> segments = Splitter.on('/').trimResults().omitEmptyStrings() .splitToList(previous.getAbsoluteUri().toString()); String relative = segments.subList(0, segments.size() - 1).stream() .collect(Collectors.joining("/", "/", "")); return Arrays.asList(relative + fname, fname) .stream() .map(resolver::apply) .filter(it -> it != null) .findFirst() .map(throwingFunction(it -> Try.with(it.toURL()::openStream) .apply(in -> new String(ByteStreams.toByteArray(in), StandardCharsets.UTF_8)) .map(content -> Arrays.asList(new Import(it, it, content))) .get() )) .orElse(null); }
static String readString(final ClassLoader loader, final String path) { return Try.with(() -> loader.getResourceAsStream("whoops/" + path)) .apply(stream -> new String(ByteStreams.toByteArray(stream), StandardCharsets.UTF_8)) .get(); }
static String readString(final ClassLoader loader, final String path) { return Try.with(() -> loader.getResourceAsStream("whoops/" + path)) .apply(stream -> new String(ByteStreams.toByteArray(stream), StandardCharsets.UTF_8)) .get(); }