private Route getRoute(Class<? extends ResourceHandler> resourceHandlerClass) { List<Route> routes = getRoutes(); for (Route route : routes) { RouteHandler routeHandler = route.getRouteHandler(); if (resourceHandlerClass.isAssignableFrom(routeHandler.getClass())) { ClasspathResourceHandler resourceHandler = (ClasspathResourceHandler) routeHandler; if (resourceHandlerClass == resourceHandler.getClass()) { return route; } } } return null; }
@Override protected String getPathParameterValue(String uriPattern, String parameterName, Object parameterValue) { String value = super.getPathParameterValue(uriPattern, parameterName, parameterValue); // retrieve the compiled route for uriPattern Route compiledRoute = compiledRoutes.stream() .filter(route -> uriPattern.equals(route.getUriPattern())) .findAny() .orElseThrow(() -> new PippoRuntimeException("Cannot find a compiled route for '{}'", uriPattern)); RouteHandler handler = compiledRoute.getRouteHandler(); boolean isResourceRoute = ResourceHandler.class.isAssignableFrom(handler.getClass()); // inject version for resource routes if (isResourceRoute && ResourceHandler.PATH_PARAMETER.equals(parameterName)) { ResourceHandler resourceHandler = (ResourceHandler) compiledRoute.getRouteHandler(); if (resourceHandler.isVersioned()) { value = resourceHandler.injectVersion(value); } } return value; }
/** * Register the controller methods as routes. * * @param controllerMethods * @param controller */ private void registerControllerMethods(Map<Method, Class<? extends Annotation>> controllerMethods, Controller controller) { List<Route> controllerRoutes = createControllerRoutes(controllerMethods); for (Route controllerRoute : controllerRoutes) { if (controller != null) { ((ControllerHandler) controllerRoute.getRouteHandler()).setController(controller); controllerRoute.bind("__controller", controller); } } this.routes.addAll(controllerRoutes); }
if (method == null) { try { method = route.getRouteHandler().getClass().getMethod("handle", RouteContext.class); } catch (NoSuchMethodException e) { throw new PippoRuntimeException(e); Metered metered = method.getAnnotation(Metered.class); String metricName = !metered.value().isEmpty() ? metered.value() : getMetricName(route, method); handler = new MeteredHandler(metricName, metricRegistry, route.getRouteHandler()); } else if (method.isAnnotationPresent(Timed.class)) { log.debug("Found '{}' annotation on method '{}'", Timed.class.getSimpleName(), LangUtils.toString(method)); Timed timed = method.getAnnotation(Timed.class); String metricName = !timed.value().isEmpty() ? timed.value() : getMetricName(route, method); handler = new TimedHandler(metricName, metricRegistry, route.getRouteHandler()); } else if (method.isAnnotationPresent(Counted.class)) { log.debug("Found '{}' annotation on method '{}'", Counted.class.getSimpleName(), LangUtils.toString(method)); Counted counted = method.getAnnotation(Counted.class); String metricName = !counted.value().isEmpty() ? counted.value() : getMetricName(route, method); handler = new CountedHandler(metricName, counted.active(), metricRegistry, route.getRouteHandler());
@SuppressWarnings("unchecked") protected void handleRoute(Route route) { if (StringUtils.isNullOrEmpty(route.getName())) { log.debug("Executing handler for {} '{}'", route.getRequestMethod(), route.getUriPattern()); } else { log.debug("Executing '{}' for {} '{}'", route.getName(), route.getRequestMethod(), route.getUriPattern()); } this.route = route; route.getRouteHandler().handle(this); }
protected void processRouteInterceptors(RouteContext routeContext) { if (interceptors.isEmpty()) { return; } List<RouteMatch> chain = new ArrayList<>(); for (RouteHandler interceptor : interceptors) { // create a route for interceptor Route route = new Route(routeContext.getRequestMethod(), routeContext.getRequestUri(), interceptor); route.setName(StringUtils.format("{}<{}>", Interceptor.class.getSimpleName(), route.getRouteHandler().getClass().getSimpleName())); route.bindAll(routeContext.getRoute().getAttributes()); // add route in chain RouteMatch match = new RouteMatch(route, null); chain.add(match); } // TODO DefaultRouteContext is hardcoded RouteContext context = new DefaultRouteContext(routeContext.getApplication(), routeContext.getRequest(), routeContext.getResponse(), chain); context.next(); }
/** * Register the controller methods as routes. * * @param controllerMethods * @param controller */ private void registerControllerMethods(Map<Method, Class<? extends Annotation>> controllerMethods, Controller controller) { List<Route> controllerRoutes = createControllerRoutes(controllerMethods); for (Route controllerRoute : controllerRoutes) { if (controller != null) { ((ControllerHandler) controllerRoute.getRouteHandler()).setController(controller); controllerRoute.bind("__controller", controller); } } this.routes.addAll(controllerRoutes); }
protected void processRouteInterceptors(Context context) { if (routeInterceptors.isEmpty()) { return; } List<RouteMatch> chain = new ArrayList<>(); for (RouteHandler<Context> interceptor : routeInterceptors) { Route route = new Route(context.getRequestMethod(), context.getRequestUri(), interceptor); route.setName(StringUtils.format("{}<{}>", RouteInterceptor.class.getSimpleName(), route.getRouteHandler().getClass().getSimpleName())); RouteMatch match = new RouteMatch(route, null); chain.add(match); } Context subContext = new Context(context, chain); subContext.next(); }
protected void processRouteInterceptors(Context context) { if (routeInterceptors.isEmpty()) { return; } List<RouteMatch> chain = new ArrayList<>(); for (RouteHandler<Context> interceptor : routeInterceptors) { Route route = new Route(context.getRequestMethod(), context.getRequestUri(), interceptor); route.setName(StringUtils.format("{}<{}>", RouteInterceptor.class.getSimpleName(), route.getRouteHandler().getClass().getSimpleName())); RouteMatch match = new RouteMatch(route, null); chain.add(match); } Context subContext = new Context(context, chain); subContext.next(); }
if (method == null) { try { method = route.getRouteHandler().getClass().getMethod("handle", RouteContext.class); } catch (NoSuchMethodException e) { throw new PippoRuntimeException(e); Metered metered = method.getAnnotation(Metered.class); String metricName = !metered.value().isEmpty() ? metered.value() : getMetricName(route, method); handler = new MeteredHandler(metricName, metricRegistry, route.getRouteHandler()); } else if (method.isAnnotationPresent(Timed.class)) { log.debug("Found '{}' annotation on method '{}'", Timed.class.getSimpleName(), LangUtils.toString(method)); Timed timed = method.getAnnotation(Timed.class); String metricName = !timed.value().isEmpty() ? timed.value() : getMetricName(route, method); handler = new TimedHandler(metricName, metricRegistry, route.getRouteHandler()); } else if (method.isAnnotationPresent(Counted.class)) { log.debug("Found '{}' annotation on method '{}'", Counted.class.getSimpleName(), LangUtils.toString(method)); Counted counted = method.getAnnotation(Counted.class); String metricName = !counted.value().isEmpty() ? counted.value() : getMetricName(route, method); handler = new CountedHandler(metricName, counted.active(), metricRegistry, route.getRouteHandler());
protected void processRouteInterceptors(RouteContext routeContext) { if (interceptors.isEmpty()) { return; } List<RouteMatch> chain = new ArrayList<>(); for (RouteHandler interceptor : interceptors) { // create a route for interceptor Route route = new Route(routeContext.getRequestMethod(), routeContext.getRequestUri(), interceptor); route.setName(StringUtils.format("{}<{}>", Interceptor.class.getSimpleName(), route.getRouteHandler().getClass().getSimpleName())); route.bindAll(routeContext.getRoute().getAttributes()); // add route in chain RouteMatch match = new RouteMatch(route, null); chain.add(match); } // TODO DefaultRouteContext is hardcoded RouteContext context = new DefaultRouteContext(routeContext.getApplication(), routeContext.getRequest(), routeContext.getResponse(), chain); context.next(); }
maxPathLen = Math.max(maxPathLen, route.getUriPattern().length()); if (route.getRouteHandler() instanceof ControllerHandler) { ControllerHandler handler = (ControllerHandler) route.getRouteHandler(); int controllerLen = Util.toString(handler.getControllerMethod()).length(); maxControllerLen = Math.max(maxControllerLen, controllerLen); if (route.getRouteHandler() instanceof ControllerHandler) { ControllerHandler handler = (ControllerHandler) route.getRouteHandler(); if (oneLine) { if (logHandlers) {
maxPathLen = Math.max(maxPathLen, route.getUriPattern().length()); if (route.getRouteHandler() instanceof ControllerHandler) { ControllerHandler handler = (ControllerHandler) route.getRouteHandler(); int controllerLen = Util.toString(handler.getControllerMethod()).length(); maxControllerLen = Math.max(maxControllerLen, controllerLen); if (route.getRouteHandler() instanceof ControllerHandler) { ControllerHandler handler = (ControllerHandler) route.getRouteHandler(); if (oneLine) { if (logHandlers) {
if (route.getRouteHandler() instanceof ControllerHandler) { ControllerHandler handler = (ControllerHandler) route.getRouteHandler(); if (canRegister(route, handler)) { registerOperation(swagger, route, handler);
if (route.getRouteHandler() instanceof ControllerHandler) { ControllerHandler handler = (ControllerHandler) route.getRouteHandler(); if (canRegister(route, handler)) { registerOperation(swagger, route, handler);