private FileWatcher register(final Function<Config, Path> provider, final Throwing.Function<Path, FileEventOptions> handler, final Consumer<FileEventOptions> configurer) { bindings.add((conf, binder) -> { Path path = provider.apply(conf); FileEventOptions options = handler.apply(path); configurer.accept(options); return register(binder, options); }); return this; }
/** * Generate a CSS rule, it reads the width and height attributes of the svg element or fallback to * viewBox attribute. * * @param id ID to use. * @param svg Svg element to convert. * @return A css rule. */ private CharSequence css(final String id, final Element svg) { Throwing.Function<String, Tuple<Tuple<Number, String>, Tuple<Number, String>>> viewBox = Throwing .<String, Tuple<Tuple<Number, String>, Tuple<Number, String>>>throwingFunction(name -> { String vbox = svg.attr(name); String[] dimension = vbox.split("\\s+"); return new Tuple(parse(dimension[2]), parse(dimension[_3])); }).memoized(); Tuple<Number, String> w = Optional.ofNullable(Strings.emptyToNull(svg.attr("width"))) .map(this::parse) .orElseGet(() -> viewBox.apply("viewBox")._1); Tuple<Number, String> h = Optional.ofNullable(Strings.emptyToNull(svg.attr("height"))) .map(this::parse) .orElseGet(() -> viewBox.apply("viewBox")._2); StringBuilder css = new StringBuilder(); css.append(get("css.prefix").toString()).append(".").append(id) .append(" {\n width: ").append(w._1).append(w._2).append(";\n") .append(" height: ").append(h._1).append(h._2).append(";\n}"); return css; }
public static void forceConverter(final AsyncRepository repo, final JacksonMapper converter) { Try.run(() -> FIELD.apply(repo.getClass()).set(repo, converter)) .onFailure(x -> log.warn("Set converter resulted in error", x)); } }
Swagger base = Json.mapper().convertValue(hash, Swagger.class); Swagger swagger = new SwaggerBuilder(options.tagger) .build(base, provider.apply(req.require(M))); boolean json = req.path().endsWith(".json"); if (configurer != null) {
Map<String, Object> hash = conf.getConfig("raml").root().unwrapped(); Raml base = Json.mapper().convertValue(hash, Raml.class); Raml raml = Raml.build(base, provider.apply(req.require(M))); if (configurer != null) { configurer.accept(raml);
.orElse(ConfigFactory.empty()); Config $hikari = dbconf.apply(key + ".hikari") .withFallback(dbconf.apply("db." + db + ".hikari")) .withFallback(dbconf.apply("hikari")); .entrySet().forEach(entry -> dumper.accept("", entry))); dbconf.apply(key) .withoutPath("hikari") .entrySet().forEach(entry -> dumper.accept("dataSource.", entry));
@Override public void handle(final Request req, final Response rsp) { compiler.fileset().forEach(asset -> { /** Styles */ List<String> css = this.styles.apply(asset); String styles = css.stream().reduce(new StringBuilder(), (buff, it) -> buff.append("<link href=\"") .append(cpath) .append(it) .append("\" rel=\"stylesheet\">\n"), StringBuilder::append) .toString(); req.set(asset + "_css", css); req.set(asset + "_styles", styles); /** Scripts */ List<String> js = this.scripts.apply(asset); String scripts = js.stream().reduce(new StringBuilder(), (buff, it) -> buff.append("<script src=\"") .append(cpath) .append(it) .append("\"></script>\n"), StringBuilder::append) .toString(); req.set(asset + "_js", js); req.set(asset + "_scripts", scripts); }); }
@Override public Session get(final Builder builder) { ResultSet rs = session .execute(new BoundStatement(selectSQL.apply(tableName)).bind(builder.sessionId())); return Optional.ofNullable(rs.one()) .map(row -> { long createdAt = row.getTimestamp(CREATED_AT).getTime(); long accessedAt = row.getTimestamp(ACCESSED_AT).getTime(); long savedAt = row.getTimestamp(SAVED_AT).getTime(); Map<String, String> attributes = row.getMap(ATTRIBUTES, String.class, String.class); Session session = builder .accessedAt(accessedAt) .createdAt(createdAt) .savedAt(savedAt) .set(attributes) .build(); // touch ttl if (timeout > 0) { save(session); } return session; }) .orElse(null); }
public Object newBean(final Throwing.Function<RequestParam, Object> lookup, final Set<String> params) throws Throwable { log.debug("instantiating object {}", constructor); Object[] args = new Object[parameters.size()]; List<String> names = new ArrayList<>(params); // remove constructor injected params for (int i = 0; i < args.length; i++) { RequestParam param = parameters.get(i); args[i] = lookup.apply(param); // skip constructor injected param (don't override) names.remove(param.name); } Object bean = constructor.newInstance(args); List<BeanPath> paths = compile(names.stream().sorted().iterator(), beanType); for (BeanPath path : paths) { String rawpath = path.toString(); log.debug(" setting {}", rawpath); path.set(bean, lookup.apply(new RequestParam(path.setelem(), rawpath, path.settype()))); } return bean; }
@Override public Object handle(final Request req) throws Throwable { Set<Route.Definition> routes = req.require(Route.KEY); WebPageProvider provider = req.require(name, WebPageProvider.class); List<WebPage> pages = routes.stream() .filter(filter) .flatMap(r -> provider.apply(r).stream()) .peek(page -> { String name = page.getName(); if (name.startsWith("/")) { name = name.substring(1); } page.setName(name); }).collect(Collectors.toList()); return Results.ok(gen.apply(pages)).type(MediaType.xml); }
@Override public void delete(final String id) { session.execute(new BoundStatement(deleteSQL.apply(tableName)).bind(id)); }
@Override public Scheduler getNewThreadScheduler() { return schedulers.apply("newThread"); }
@SuppressWarnings("rawtypes") private <T> T find(final ClientFinder finder, final Clients clients, final WebContext ctx, final Class<? extends Client<?, ?>> clientType, final String clientName, final Throwing.Function<Client, T> fn) throws Throwable { List<Client> result = finder.find(clients, ctx, clientName); for (Client client : result) { T value = fn.apply(client); if (value != null) { return value; } } return null; }
@Override public Scheduler getIOScheduler() { return schedulers.apply("io"); }
@Override public <T> T apply(final Throwing.Function<Session, T> callback) throws Throwable { log.debug("using session: {}", oid(session)); return callback.apply(session); }
@Override public Scheduler getComputationScheduler() { return schedulers.apply("computation"); }
@Override public <T> T apply(final Throwing.Function<Session, T> callback) throws Throwable { try { begin(); T value = callback.apply(session); return value; } catch (Throwable x) { rollbackOnly = true; throw x; } finally { end(); } }
@Override public Object map(final T value) throws Throwable { return fn.apply(value); }
@Override public void save(final Session session) { this.session.execute(new BoundStatement(insertSQL.apply(tableName)) .bind( session.id(), new Date(session.createdAt()), new Date(session.accessedAt()), new Date(session.savedAt()), session.attributes())); }
private void init(final String pattern, final Path basedir, final ClassLoader loader) { requireNonNull(loader, "Resource loader is required."); this.fn = pattern.equals("/") ? (req, p) -> prefix.apply(p) : (req, p) -> MessageFormat.format(prefix.apply(pattern), vars(req)); this.loader = loader(basedir, loader); }