@Override public String path() { return route.path(); }
/** * Escape the path using {@link UrlEscapers#urlFragmentEscaper()}. * * Given: * * <pre>{@code * http://domain.com/404<h1>X</h1> {@literal ->} /404%3Ch1%3EX%3C/h1%3E * }</pre> * * @param escape True if we want to escape this path. * @return The request URL pathname. */ @Nonnull default String path(final boolean escape) { String path = route().path(); return escape ? UrlEscapers.urlFragmentEscaper().escape(path) : path; }
/** * Print route information like: method, path, source, etc... Useful for debugging. * * @param indent Indent level * @return Output. */ @Nonnull default String print(final int indent) { StringBuilder buff = new StringBuilder(); String[] header = {"Method", "Path", "Source", "Name", "Pattern", "Consumes", "Produces"}; String[] values = {method(), path(), source().toString(), name(), pattern(), consumes().toString(), produces().toString()}; BiConsumer<Function<Integer, String>, Character> format = (v, s) -> { buff.append(Strings.padEnd("", indent, ' ')) .append("|").append(s); for (int i = 0; i < header.length; i++) { buff .append(Strings.padEnd(v.apply(i), Math.max(header[i].length(), values[i].length()), s)) .append(s).append("|").append(s); } buff.setLength(buff.length() - 1); }; format.accept(i -> header[i], ' '); buff.append("\n"); format.accept(i -> "-", '-'); buff.append("\n"); format.accept(i -> values[i], ' '); return buff.toString(); }
@Override public boolean matches(final String pattern) { RoutePattern p = new RoutePattern("*", pattern); return p.matcher(route.path()).matches(); }
return map .put("method", route.method()) .put("path", route.path()) .put("path vars", route.vars()) .put("pattern", route.pattern())
@Override public String path() { return route.path(); }
Class<?> controllerType = Class.forName("some.package"+controllers.getString(i)); MethodHandles.Lookup lookup=MethodHandles.lookup(); Method[] methods = controllerType.getMethods(); Object instance = null; for (Method m : methods) { Route annotation = m.getAnnotation(Route.class); if (annotation != null) { if(instance == null) instance = controllerType.newInstance(); Handler<RoutingContext> handler =createHandler(lookup, instance, m, RoutingContext.class); router.get(annotation.path()).handler(handler); } }
/** * Escape the path using {@link UrlEscapers#urlFragmentEscaper()}. * * Given: * * <pre>{@code * http://domain.com/404<h1>X</h1> {@literal ->} /404%3Ch1%3EX%3C/h1%3E * }</pre> * * @param escape True if we want to escape this path. * @return The request URL pathname. */ @Nonnull default String path(final boolean escape) { String path = route().path(); return escape ? UrlEscapers.urlFragmentEscaper().escape(path) : path; }
/** * Print route information like: method, path, source, etc... Useful for debugging. * * @param indent Indent level * @return Output. */ @Nonnull default String print(final int indent) { StringBuilder buff = new StringBuilder(); String[] header = {"Method", "Path", "Source", "Name", "Pattern", "Consumes", "Produces"}; String[] values = {method(), path(), source().toString(), name(), pattern(), consumes().toString(), produces().toString()}; BiConsumer<Function<Integer, String>, Character> format = (v, s) -> { buff.append(Strings.padEnd("", indent, ' ')) .append("|").append(s); for (int i = 0; i < header.length; i++) { buff .append(Strings.padEnd(v.apply(i), Math.max(header[i].length(), values[i].length()), s)) .append(s).append("|").append(s); } buff.setLength(buff.length() - 1); }; format.accept(i -> header[i], ' '); buff.append("\n"); format.accept(i -> "-", '-'); buff.append("\n"); format.accept(i -> values[i], ' '); return buff.toString(); }
@Override public boolean matches(final String pattern) { RoutePattern p = new RoutePattern("*", pattern); return p.matcher(route.path()).matches(); }
return map .put("method", route.method()) .put("path", route.path()) .put("path vars", route.vars()) .put("pattern", route.pattern())