@Override public long length() { return asset.length(); }
/** * @return Generate a weak Etag using the {@link #path()}, {@link #lastModified()} and * {@link #length()}. */ @Nonnull default String etag() { try { StringBuilder b = new StringBuilder(32); b.append("W/\""); BaseEncoding b64 = BaseEncoding.base64(); int lhash = resource().toURI().hashCode(); b.append(b64.encode(Longs.toByteArray(lastModified() ^ lhash))); b.append(b64.encode(Longs.toByteArray(length() ^ lhash))); b.append('"'); return b.toString(); } catch (URISyntaxException x) { throw Throwing.sneakyThrow(x); } }
@Override public void render(final Object value, final Context ctx) throws Exception { if (value instanceof Asset) { Asset resource = ((Asset) value); ctx.type(resource.type()) .length(resource.length()) .send(resource.stream()); } } },
@Override public long length() { return asset.length(); }
/** * @return Generate a weak Etag using the {@link #path()}, {@link #lastModified()} and * {@link #length()}. */ @Nonnull default String etag() { try { StringBuilder b = new StringBuilder(32); b.append("W/\""); BaseEncoding b64 = BaseEncoding.base64(); int lhash = resource().toURI().hashCode(); b.append(b64.encode(Longs.toByteArray(lastModified() ^ lhash))); b.append(b64.encode(Longs.toByteArray(length() ^ lhash))); b.append('"'); return b.toString(); } catch (URISyntaxException x) { throw Throwing.sneakyThrow(x); } }
@Override public void render(final Object value, final Context ctx) throws Exception { if (value instanceof Asset) { Asset resource = ((Asset) value); ctx.type(resource.type()) .length(resource.length()) .send(resource.stream()); } } },